{"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/fetch-cards-tool/component.js","tt4/pods/components/fetch-cards-tool/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/survicate-survey/component.js","tt4/pods/components/survicate-survey/template.js","tt4/pods/components/tab-component/component.js","tt4/pods/components/tab-component/template.js","tt4/pods/components/term-inator/component.js","tt4/pods/components/term-inator/template.js","tt4/pods/components/test-typescript/component.ts","tt4/pods/components/test-typescript/template.js","tt4/pods/components/top-menu/component.js","tt4/pods/components/top-menu/template.js","tt4/pods/components/trial-period-icon/component.js","tt4/pods/components/trial-period-icon/template.js","tt4/pods/components/upgrade-icon/component.js","tt4/pods/components/upgrade-icon/template.js","tt4/pods/components/user-competences/card/component.js","tt4/pods/components/user-competences/card/template.js","tt4/pods/components/user-competences/component.js","tt4/pods/components/user-competences/template.js","tt4/pods/components/user-deletion/component.js","tt4/pods/components/user-deletion/template.js","tt4/pods/components/user-icon2/component.js","tt4/pods/components/user-icon2/template.js","tt4/pods/components/user-selector/component.js","tt4/pods/components/user-selector/template.js","tt4/pods/components/vismanet-signin/component.js","tt4/pods/components/vismanet-signin/template.js","tt4/pods/components/vismanet-sync/component.js","tt4/pods/components/vismanet-sync/template.js","tt4/pods/components/weather-component/component.js","tt4/pods/components/weather-component/template.js","tt4/pods/components/webhook-editor/component.js","tt4/pods/components/webhook-editor/template.js","tt4/pods/components/webhook-list/component.js","tt4/pods/components/webhook-list/template.js","tt4/pods/components/webhook-list/webhook/component.js","tt4/pods/components/webhook-list/webhook/template.js","tt4/pods/components/webhook-log/component.js","tt4/pods/components/webhook-log/row/component.js","tt4/pods/components/webhook-log/row/template.js","tt4/pods/components/webhook-log/template.js","tt4/pods/components/week-report2/component.js","tt4/pods/components/week-report2/template.js","tt4/pods/components/wizard-builder/billing/component.js","tt4/pods/components/wizard-builder/billing/page1/component.js","tt4/pods/components/wizard-builder/billing/page1/template.js","tt4/pods/components/wizard-builder/billing/page2/component.js","tt4/pods/components/wizard-builder/billing/page2/template.js","tt4/pods/components/wizard-builder/billing/template.js","tt4/pods/components/wizard-builder/component.js","tt4/pods/components/wizard-builder/dashboard-info-wizard/component.js","tt4/pods/components/wizard-builder/dashboard-info-wizard/page/component.js","tt4/pods/components/wizard-builder/dashboard-info-wizard/page/template.js","tt4/pods/components/wizard-builder/dashboard-info-wizard/template.js","tt4/pods/components/wizard-builder/help-wizard/component.js","tt4/pods/components/wizard-builder/help-wizard/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/radio-group/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/radio-group/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/setting-list/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/setting-list/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/setting-value-input/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/setting-value-input/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/header/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/header/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/row/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/row/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/info-button/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/info-button/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/text/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/text/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/toggle/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/toggle/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/header-icon/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/header-icon/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/header-text/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/header-text/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/header-title/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/header-title/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/flex-header/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/flex-header/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/mini-modal/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/mini-modal/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/onboarding-wizard-page/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/onboarding-wizard-page/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/summary/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/summary/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/template.js","tt4/pods/components/wizard-builder/template.js","tt4/pods/components/wizard-builder/test-wizard/component.js","tt4/pods/components/wizard-builder/test-wizard/page1/component.js","tt4/pods/components/wizard-builder/test-wizard/page1/template.js","tt4/pods/components/wizard-builder/test-wizard/page2/component.js","tt4/pods/components/wizard-builder/test-wizard/page2/template.js","tt4/pods/components/wizard-builder/test-wizard/template.js","tt4/pods/components/wizard-builder/vismanet-wizard/component.js","tt4/pods/components/wizard-builder/vismanet-wizard/page1/component.js","tt4/pods/components/wizard-builder/vismanet-wizard/page1/template.js","tt4/pods/components/wizard-builder/vismanet-wizard/page2/component.js","tt4/pods/components/wizard-builder/vismanet-wizard/page2/template.js","tt4/pods/components/wizard-builder/vismanet-wizard/page3/component.js","tt4/pods/components/wizard-builder/vismanet-wizard/page3/template.js","tt4/pods/components/wizard-builder/vismanet-wizard/template.js","tt4/pods/components/wizard-builder/welcome-wizard/component.js","tt4/pods/components/wizard-builder/welcome-wizard/template.js","tt4/pods/components/wizard-builder/wizard/buttons/component.js","tt4/pods/components/wizard-builder/wizard/buttons/template.js","tt4/pods/components/wizard-builder/wizard/centered-content/component.js","tt4/pods/components/wizard-builder/wizard/centered-content/template.js","tt4/pods/components/wizard-builder/wizard/component.js","tt4/pods/components/wizard-builder/wizard/content-header/component.js","tt4/pods/components/wizard-builder/wizard/content-header/template.js","tt4/pods/components/wizard-builder/wizard/content/component.js","tt4/pods/components/wizard-builder/wizard/content/template.js","tt4/pods/components/wizard-builder/wizard/steps/component.js","tt4/pods/components/wizard-builder/wizard/steps/template.js","tt4/pods/components/wizard-builder/wizard/template.js","tt4/pods/components/wootric-survey/component.js","tt4/pods/components/wootric-survey/template.js","tt4/pods/components/workday-days/component.js","tt4/pods/components/workday-days/template.js","tt4/pods/components/workday-summary/add-component/component.js","tt4/pods/components/workday-summary/add-component/template.js","tt4/pods/components/workday-summary/component.js","tt4/pods/components/workday-summary/copy-component/component.js","tt4/pods/components/workday-summary/copy-component/template.js","tt4/pods/components/workday-summary/copy-previous-day-component/component.js","tt4/pods/components/workday-summary/copy-previous-day-component/copy-previous-day-final-component/component.js","tt4/pods/components/workday-summary/copy-previous-day-component/copy-previous-day-final-component/template.js","tt4/pods/components/workday-summary/copy-previous-day-component/copy-previous-day-intermediate-component/component.js","tt4/pods/components/workday-summary/copy-previous-day-component/copy-previous-day-intermediate-component/template.js","tt4/pods/components/workday-summary/copy-previous-day-component/template.js","tt4/pods/components/workday-summary/edit-component/component.js","tt4/pods/components/workday-summary/edit-component/template.js","tt4/pods/components/workday-summary/template.js","tt4/pods/components/workpermit-modal/component.js","tt4/pods/components/workpermit-modal/template.js","tt4/pods/components/worksite-areas-report/logs/component.js","tt4/pods/components/worksite-areas-report/logs/template.js","tt4/pods/components/worksite-areas-report/passes/component.js","tt4/pods/components/worksite-areas-report/passes/template.js","tt4/pods/dashboard/controller.js","tt4/pods/dashboard/route.js","tt4/pods/dashboard/template.js","tt4/pods/development/cron/controller.js","tt4/pods/development/cron/route.js","tt4/pods/development/cron/template.js","tt4/pods/development/datacreator/route.js","tt4/pods/development/datacreator/template.js","tt4/pods/development/functions/controller.js","tt4/pods/development/functions/route.js","tt4/pods/development/functions/template.js","tt4/pods/development/import/controller.js","tt4/pods/development/import/create/controller.js","tt4/pods/development/import/create/route.js","tt4/pods/development/import/create/template.js","tt4/pods/development/import/field-mapper/component.js","tt4/pods/development/import/field-mapper/template.js","tt4/pods/development/import/file-reader/component.js","tt4/pods/development/import/file-reader/template.js","tt4/pods/development/import/index/controller.js","tt4/pods/development/import/index/route.js","tt4/pods/development/import/index/template.js","tt4/pods/development/import/map/controller.js","tt4/pods/development/import/map/route.js","tt4/pods/development/import/map/template.js","tt4/pods/development/import/route.js","tt4/pods/development/import/save/route.js","tt4/pods/development/import/save/template.js","tt4/pods/development/import/template.js","tt4/pods/development/import/value-mapper/component.js","tt4/pods/development/import/value-mapper/template.js","tt4/pods/development/index/controller.js","tt4/pods/development/index/route.js","tt4/pods/development/index/template.js","tt4/pods/development/integrations/controller.js","tt4/pods/development/integrations/route.js","tt4/pods/development/integrations/template.js","tt4/pods/development/notifications/component.js","tt4/pods/development/notifications/log-table/component.js","tt4/pods/development/notifications/log-table/template.js","tt4/pods/development/notifications/template.js","tt4/pods/development/ownreports/controller.js","tt4/pods/development/ownreports/route.js","tt4/pods/development/ownreports/template.js","tt4/pods/development/ownroles/controller.js","tt4/pods/development/ownroles/role/controller.js","tt4/pods/development/ownroles/role/route.js","tt4/pods/development/ownroles/role/template.js","tt4/pods/development/ownroles/route.js","tt4/pods/development/ownroles/template.js","tt4/pods/development/products/controller.js","tt4/pods/development/products/route.js","tt4/pods/development/products/template.js","tt4/pods/development/react/route.js","tt4/pods/development/react/template.js","tt4/pods/development/rollock/controller.js","tt4/pods/development/rollock/event-name/component.js","tt4/pods/development/rollock/event-name/template.js","tt4/pods/development/rollock/template.js","tt4/pods/development/route.js","tt4/pods/development/servicevalidator/controller.js","tt4/pods/development/servicevalidator/route.js","tt4/pods/development/servicevalidator/template.js","tt4/pods/development/smslogs/smslogs-table/component.js","tt4/pods/development/smslogs/smslogs-table/template.js","tt4/pods/development/smslogs/template.js","tt4/pods/development/template.js","tt4/pods/diary/calendar/controller.js","tt4/pods/diary/calendar/route.js","tt4/pods/diary/calendar/template.js","tt4/pods/diary/combo/controller.js","tt4/pods/diary/combo/route.js","tt4/pods/diary/combo/template.js","tt4/pods/diary/database-array/component.js","tt4/pods/diary/database-array/template.js","tt4/pods/diary/events/controller.js","tt4/pods/diary/events/route.js","tt4/pods/diary/events/template.js","tt4/pods/diary/index/controller.js","tt4/pods/diary/index/route.js","tt4/pods/diary/index/template.js","tt4/pods/diary/loading/template.js","tt4/pods/diary/report/controller.js","tt4/pods/diary/report/date/controller.js","tt4/pods/diary/report/date/loading/template.js","tt4/pods/diary/report/date/project/controller.js","tt4/pods/diary/report/date/project/route.js","tt4/pods/diary/report/date/project/template.js","tt4/pods/diary/report/date/route.js","tt4/pods/diary/report/date/template.js","tt4/pods/diary/report/route.js","tt4/pods/diary/report/template.js","tt4/pods/diary/route.js","tt4/pods/drivinglog/edit/controller.js","tt4/pods/drivinglog/edit/route.js","tt4/pods/drivinglog/edit/template.js","tt4/pods/drivinglog/index/controller.js","tt4/pods/drivinglog/index/route.js","tt4/pods/drivinglog/index/template.js","tt4/pods/drivinglog/toggle/confirm/controller.js","tt4/pods/drivinglog/toggle/confirm/template.js","tt4/pods/drivinglog/toggle/index/controller.js","tt4/pods/drivinglog/toggle/index/route.js","tt4/pods/drivinglog/toggle/index/template.js","tt4/pods/employers/add/controller.js","tt4/pods/employers/add/emp_id/template.js","tt4/pods/employers/add/emp_phone/template.js","tt4/pods/employers/add/route.js","tt4/pods/employers/add/template.js","tt4/pods/employers/add/tilaajavastuu/template.js","tt4/pods/employers/check/controller.js","tt4/pods/employers/check/route.js","tt4/pods/employers/check/template.js","tt4/pods/employers/edit/add-file/controller.js","tt4/pods/employers/edit/add-file/route.js","tt4/pods/employers/edit/add-file/template.js","tt4/pods/employers/edit/controller.js","tt4/pods/employers/edit/employer-files/controller.js","tt4/pods/employers/edit/employer-files/route.js","tt4/pods/employers/edit/employer-files/template.js","tt4/pods/employers/edit/index/controller.js","tt4/pods/employers/edit/index/route.js","tt4/pods/employers/edit/index/template.js","tt4/pods/employers/edit/route.js","tt4/pods/employers/edit/template.js","tt4/pods/employers/history/route.js","tt4/pods/employers/history/template.js","tt4/pods/employers/inactive/controller.js","tt4/pods/employers/inactive/route.js","tt4/pods/employers/inactive/template.js","tt4/pods/employers/index/controller.js","tt4/pods/employers/index/route.js","tt4/pods/employers/index/template.js","tt4/pods/employers/loading/template.js","tt4/pods/employers/removed/controller.js","tt4/pods/employers/removed/route.js","tt4/pods/employers/removed/template.js","tt4/pods/employers/route.js","tt4/pods/employers/saved/controller.js","tt4/pods/employers/saved/route.js","tt4/pods/employers/saved/template.js","tt4/pods/employers/tree/route.js","tt4/pods/employers/tree/template.js","tt4/pods/error/controller.js","tt4/pods/error/template.js","tt4/pods/firecards/add/controller.js","tt4/pods/firecards/add/route.js","tt4/pods/firecards/add/template.js","tt4/pods/firecards/edit/controller.js","tt4/pods/firecards/edit/route.js","tt4/pods/firecards/edit/template.js","tt4/pods/firecards/index/controller.js","tt4/pods/firecards/index/route.js","tt4/pods/firecards/index/template.js","tt4/pods/form-wizard/component.js","tt4/pods/form-wizard/custom-measurement/component.js","tt4/pods/form-wizard/custom-measurement/template.js","tt4/pods/form-wizard/template.js","tt4/pods/forms/controller.js","tt4/pods/forms/custom-report/route.js","tt4/pods/forms/custom-report/template.js","tt4/pods/forms/customer/edit/controller.js","tt4/pods/forms/customer/edit/route.js","tt4/pods/forms/customer/edit/template.js","tt4/pods/forms/customer/record-comp/component.js","tt4/pods/forms/form-add/controller.js","tt4/pods/forms/form-add/route.js","tt4/pods/forms/form-add/template.js","tt4/pods/forms/form-edit/controller.js","tt4/pods/forms/form-edit/route.js","tt4/pods/forms/form-edit/template.js","tt4/pods/forms/form-history/route.js","tt4/pods/forms/form-history/template.js","tt4/pods/forms/form-report/controller.js","tt4/pods/forms/form-report/route.js","tt4/pods/forms/form-report/template.js","tt4/pods/forms/form-view/controller.js","tt4/pods/forms/form-view/route.js","tt4/pods/forms/form-view/template.js","tt4/pods/forms/information/route.js","tt4/pods/forms/information/template.js","tt4/pods/forms/route.js","tt4/pods/forms/template.js","tt4/pods/gpslocation/controller.js","tt4/pods/gpslocation/route.js","tt4/pods/gpslocation/template.js","tt4/pods/groups/controller.js","tt4/pods/groups/route.js","tt4/pods/groups/template.js","tt4/pods/integrations/fondionerrors/route.js","tt4/pods/integrations/fondionerrors/template.js","tt4/pods/integrations/index/route.js","tt4/pods/integrations/index/template.js","tt4/pods/integrations/list/route.js","tt4/pods/integrations/list/template.js","tt4/pods/integrations/report/route.js","tt4/pods/integrations/report/template.js","tt4/pods/integrations/route.js","tt4/pods/integrations/template.js","tt4/pods/invite-users/controller.js","tt4/pods/invite-users/route.js","tt4/pods/invite-users/template.js","tt4/pods/logout/route.js","tt4/pods/logout/template.js","tt4/pods/machines/machine/controller.js","tt4/pods/machines/machine/route.js","tt4/pods/machines/machine/template.js","tt4/pods/machines/map/controller.js","tt4/pods/machines/map/route.js","tt4/pods/machines/map/template.js","tt4/pods/machines/prices/controller.js","tt4/pods/machines/prices/route.js","tt4/pods/machines/prices/template.js","tt4/pods/machines/route.js","tt4/pods/machines/transaction/add/controller.js","tt4/pods/machines/transaction/add/route.js","tt4/pods/machines/transaction/add/template.js","tt4/pods/machines/transaction/controller.js","tt4/pods/machines/transaction/move/controller.js","tt4/pods/machines/transaction/move/route.js","tt4/pods/machines/transaction/move/template.js","tt4/pods/machines/transaction/project/controller.js","tt4/pods/machines/transaction/project/selected/controller.js","tt4/pods/machines/transaction/project/selected/route.js","tt4/pods/machines/transaction/project/selected/template.js","tt4/pods/machines/transaction/project/selected/tool-group/component.js","tt4/pods/machines/transaction/project/selected/tool-group/template.js","tt4/pods/machines/transaction/project/selected/tool-item/component.js","tt4/pods/machines/transaction/project/selected/tool-item/template.js","tt4/pods/machines/transaction/project/template.js","tt4/pods/machines/transaction/template.js","tt4/pods/machines/transaction/tooltype/controller.js","tt4/pods/machines/transaction/tooltype/selected/controller.js","tt4/pods/machines/transaction/tooltype/selected/route.js","tt4/pods/machines/transaction/tooltype/selected/template.js","tt4/pods/machines/transaction/tooltype/template.js","tt4/pods/machines/transactions-history/controller.js","tt4/pods/machines/transactions-history/route.js","tt4/pods/machines/transactions-history/template.js","tt4/pods/machines/transactions/controller.js","tt4/pods/machines/transactions/route.js","tt4/pods/machines/transactions/template.js","tt4/pods/mapon/controller.js","tt4/pods/mapon/route.js","tt4/pods/mapon/template.js","tt4/pods/materiallog/groups/controller.js","tt4/pods/materiallog/groups/route.js","tt4/pods/materiallog/groups/template.js","tt4/pods/materiallog/list/controller.js","tt4/pods/materiallog/list/route.js","tt4/pods/materiallog/list/template.js","tt4/pods/materiallog/loading/template.js","tt4/pods/materiallog/report/controller.js","tt4/pods/materiallog/report/route.js","tt4/pods/materiallog/report/template.js","tt4/pods/materiallog/route.js","tt4/pods/mess-ages/component.ts","tt4/pods/mess-ages/template.js","tt4/pods/mess-ages/types/link-request/component.ts","tt4/pods/mess-ages/types/link-request/template.js","tt4/pods/mess-ages/types/message/component.ts","tt4/pods/mess-ages/types/message/template.js","tt4/pods/mess-ages/types/messageboard/component.ts","tt4/pods/mess-ages/types/messageboard/template.js","tt4/pods/mess-ages/types/promo/component.ts","tt4/pods/mess-ages/types/promo/template.js","tt4/pods/mess-ages/types/superior-replacement/component.ts","tt4/pods/mess-ages/types/superior-replacement/template.js","tt4/pods/mess-ages/types/taxman-validations/component.ts","tt4/pods/mess-ages/types/taxman-validations/template.js","tt4/pods/mess-ages/types/user-consent/component.ts","tt4/pods/mess-ages/types/user-consent/template.js","tt4/pods/messageboard/add/controller.js","tt4/pods/messageboard/add/template.js","tt4/pods/messageboard/history/route.js","tt4/pods/messageboard/history/template.js","tt4/pods/messageboard/index/controller.js","tt4/pods/messageboard/index/route.js","tt4/pods/messageboard/index/template.js","tt4/pods/messageboard/route.js","tt4/pods/messageboard/template.js","tt4/pods/messages/add/index/controller.js","tt4/pods/messages/add/index/route.js","tt4/pods/messages/add/index/template.js","tt4/pods/messages/add/message/controller.js","tt4/pods/messages/add/message/route.js","tt4/pods/messages/add/message/template.js","tt4/pods/messages/email-approvals/controller.js","tt4/pods/messages/email-approvals/route.js","tt4/pods/messages/email-approvals/template.js","tt4/pods/messages/list/controller.js","tt4/pods/messages/list/route.js","tt4/pods/messages/list/template.js","tt4/pods/messages/route.js","tt4/pods/multitask/loading/template.js","tt4/pods/multitask/report/controller.js","tt4/pods/multitask/report/route.js","tt4/pods/multitask/report/template.js","tt4/pods/multitask/route.js","tt4/pods/my-sites/add-image-component/component.js","tt4/pods/my-sites/add-image-component/template.js","tt4/pods/my-sites/controller.js","tt4/pods/my-sites/route.js","tt4/pods/my-sites/select-project/component.js","tt4/pods/my-sites/site-card/component.js","tt4/pods/my-sites/site-card/template.js","tt4/pods/my-sites/template.js","tt4/pods/nova-costcenters/route.js","tt4/pods/nova-costcenters/template.js","tt4/pods/orientations/add/add-passes/controller.js","tt4/pods/orientations/add/add-passes/template.js","tt4/pods/orientations/add/checkboxes/controller.js","tt4/pods/orientations/add/checkboxes/route.js","tt4/pods/orientations/add/checkboxes/template.js","tt4/pods/orientations/add/confirm/controller.js","tt4/pods/orientations/add/confirm/route.js","tt4/pods/orientations/add/confirm/template.js","tt4/pods/orientations/add/controller.js","tt4/pods/orientations/add/index/controller.js","tt4/pods/orientations/add/index/route.js","tt4/pods/orientations/add/index/template.js","tt4/pods/orientations/add/parent-selector/component.js","tt4/pods/orientations/add/parent-selector/template.js","tt4/pods/orientations/add/parent/controller.js","tt4/pods/orientations/add/parent/route.js","tt4/pods/orientations/add/parent/template.js","tt4/pods/orientations/add/route.js","tt4/pods/orientations/add/saved/controller.js","tt4/pods/orientations/add/saved/route.js","tt4/pods/orientations/add/saved/template.js","tt4/pods/orientations/add/signatures/controller.js","tt4/pods/orientations/add/signatures/route.js","tt4/pods/orientations/add/signatures/template.js","tt4/pods/orientations/add/sub/route.js","tt4/pods/orientations/add/template.js","tt4/pods/orientations/edit/route.js","tt4/pods/orientations/edit/template.js","tt4/pods/orientations/employeetree/controller.js","tt4/pods/orientations/employeetree/route.js","tt4/pods/orientations/employeetree/template.js","tt4/pods/orientations/history/route.js","tt4/pods/orientations/history/template.js","tt4/pods/orientations/inactive-passes/controller.js","tt4/pods/orientations/inactive-passes/route.js","tt4/pods/orientations/inactive-passes/template.js","tt4/pods/orientations/loading/template.js","tt4/pods/orientations/own-orientation/controller.js","tt4/pods/orientations/own-orientation/route.js","tt4/pods/orientations/own-orientation/template.js","tt4/pods/orientations/passes/controller.js","tt4/pods/orientations/passes/route.js","tt4/pods/orientations/passes/sync-timeclean-modal/component.js","tt4/pods/orientations/passes/sync-timeclean-modal/template.js","tt4/pods/orientations/passes/template.js","tt4/pods/orientations/reports/controller.js","tt4/pods/orientations/reports/route.js","tt4/pods/orientations/reports/template.js","tt4/pods/orientations/route.js","tt4/pods/orientations/template.js","tt4/pods/orientations/withoutori/controller.js","tt4/pods/orientations/withoutori/route.js","tt4/pods/orientations/withoutori/template.js","tt4/pods/pass/add/controller.js","tt4/pods/pass/add/route.js","tt4/pods/pass/add/template.js","tt4/pods/pass/index/controller.js","tt4/pods/pass/index/route.js","tt4/pods/pass/index/template.js","tt4/pods/pass/route.js","tt4/pods/password/index/controller.js","tt4/pods/password/index/route.js","tt4/pods/password/index/template.js","tt4/pods/password/recovery/controller.js","tt4/pods/password/recovery/route.js","tt4/pods/password/recovery/template.js","tt4/pods/password/route.js","tt4/pods/password/template.js","tt4/pods/presences/accident/controller.js","tt4/pods/presences/accident/route.js","tt4/pods/presences/accident/template.js","tt4/pods/presences/add/controller.js","tt4/pods/presences/add/route.js","tt4/pods/presences/add/template.js","tt4/pods/presences/avi/controller.js","tt4/pods/presences/avi/route.js","tt4/pods/presences/edit/controller.js","tt4/pods/presences/edit/route.js","tt4/pods/presences/edit/template.js","tt4/pods/presences/employer-sums/controller.js","tt4/pods/presences/employer-sums/route.js","tt4/pods/presences/employer-sums/template.js","tt4/pods/presences/history/route.js","tt4/pods/presences/history/template.js","tt4/pods/presences/index/controller.js","tt4/pods/presences/index/route.js","tt4/pods/presences/index/template.js","tt4/pods/presences/loading/template.js","tt4/pods/presences/location/controller.js","tt4/pods/presences/location/route.js","tt4/pods/presences/location/template.js","tt4/pods/presences/locationtree/controller.js","tt4/pods/presences/locationtree/route.js","tt4/pods/presences/locationtree/template.js","tt4/pods/presences/report/controller.js","tt4/pods/presences/report/route.js","tt4/pods/presences/report/template.js","tt4/pods/presences/route.js","tt4/pods/projects/add/controller.js","tt4/pods/projects/add/phone/template.js","tt4/pods/projects/add/route.js","tt4/pods/projects/add/skv_number/template.js","tt4/pods/projects/add/template.js","tt4/pods/projects/edit/add-file/controller.js","tt4/pods/projects/edit/add-file/route.js","tt4/pods/projects/edit/add-file/template.js","tt4/pods/projects/edit/card-list/controller.js","tt4/pods/projects/edit/card-list/route.js","tt4/pods/projects/edit/card-list/template.js","tt4/pods/projects/edit/contract_report/controller.js","tt4/pods/projects/edit/contract_report/template.js","tt4/pods/projects/edit/controller.js","tt4/pods/projects/edit/greenboxes/controller.js","tt4/pods/projects/edit/greenboxes/route.js","tt4/pods/projects/edit/greenboxes/template.js","tt4/pods/projects/edit/index/controller.js","tt4/pods/projects/edit/index/route.js","tt4/pods/projects/edit/index/template.js","tt4/pods/projects/edit/linked-users/controller.js","tt4/pods/projects/edit/linked-users/route.js","tt4/pods/projects/edit/linked-users/template.js","tt4/pods/projects/edit/loading/template.js","tt4/pods/projects/edit/notices/controller.js","tt4/pods/projects/edit/notices/route.js","tt4/pods/projects/edit/notices/template.js","tt4/pods/projects/edit/open-worktimes/controller.js","tt4/pods/projects/edit/open-worktimes/route.js","tt4/pods/projects/edit/open-worktimes/template.js","tt4/pods/projects/edit/overview/controller.js","tt4/pods/projects/edit/overview/route.js","tt4/pods/projects/edit/overview/template.js","tt4/pods/projects/edit/passes/controller.js","tt4/pods/projects/edit/passes/route.js","tt4/pods/projects/edit/passes/template.js","tt4/pods/projects/edit/project-files/controller.js","tt4/pods/projects/edit/project-files/route.js","tt4/pods/projects/edit/project-files/template.js","tt4/pods/projects/edit/project-users/controller.js","tt4/pods/projects/edit/project-users/route.js","tt4/pods/projects/edit/project-users/template.js","tt4/pods/projects/edit/rollocks/controller.js","tt4/pods/projects/edit/rollocks/route.js","tt4/pods/projects/edit/rollocks/template.js","tt4/pods/projects/edit/route.js","tt4/pods/projects/edit/subprojects/controller.js","tt4/pods/projects/edit/subprojects/route.js","tt4/pods/projects/edit/subprojects/template.js","tt4/pods/projects/edit/tasks/controller.js","tt4/pods/projects/edit/tasks/route.js","tt4/pods/projects/edit/tasks/template.js","tt4/pods/projects/edit/taxmanerrors/controller.js","tt4/pods/projects/edit/taxmanerrors/route.js","tt4/pods/projects/edit/taxmanerrors/template.js","tt4/pods/projects/edit/template.js","tt4/pods/projects/edit/trnotices/controller.js","tt4/pods/projects/edit/trnotices/route.js","tt4/pods/projects/edit/trnotices/template.js","tt4/pods/projects/edit/tv-status/controller.js","tt4/pods/projects/edit/tv-status/route.js","tt4/pods/projects/edit/tv-status/template.js","tt4/pods/projects/edit/working-now/controller.js","tt4/pods/projects/edit/working-now/route.js","tt4/pods/projects/edit/working-now/template.js","tt4/pods/projects/history/route.js","tt4/pods/projects/history/template.js","tt4/pods/projects/inactive-loading/template.js","tt4/pods/projects/inactive/controller.js","tt4/pods/projects/inactive/route.js","tt4/pods/projects/inactive/template.js","tt4/pods/projects/index/controller.js","tt4/pods/projects/index/route.js","tt4/pods/projects/index/template.js","tt4/pods/projects/loading/template.js","tt4/pods/projects/magickey/controller.js","tt4/pods/projects/magickey/route.js","tt4/pods/projects/magickey/template.js","tt4/pods/projects/removed/controller.js","tt4/pods/projects/removed/route.js","tt4/pods/projects/removed/template.js","tt4/pods/projects/report/controller.js","tt4/pods/projects/report/route.js","tt4/pods/projects/report/template.js","tt4/pods/projects/rfiddevices/controller.js","tt4/pods/projects/rfiddevices/route.js","tt4/pods/projects/rfiddevices/template.js","tt4/pods/projects/route.js","tt4/pods/projects/saved/controller.js","tt4/pods/projects/saved/route.js","tt4/pods/projects/saved/template.js","tt4/pods/projects/tasks/controller.js","tt4/pods/projects/tasks/route.js","tt4/pods/projects/tasks/template.js","tt4/pods/projects/template.js","tt4/pods/qrcode/controller.js","tt4/pods/qrcode/route.js","tt4/pods/qrcode/template.js","tt4/pods/register/controller.js","tt4/pods/register/index/route.js","tt4/pods/register/index/template.js","tt4/pods/register/route.js","tt4/pods/register/template.js","tt4/pods/register/user/code/route.js","tt4/pods/register/user/code/template.js","tt4/pods/register/user/company/controller.js","tt4/pods/register/user/company/route.js","tt4/pods/register/user/company/template.js","tt4/pods/register/user/confirm/controller.js","tt4/pods/register/user/confirm/route.js","tt4/pods/register/user/confirm/template.js","tt4/pods/register/user/controller.js","tt4/pods/register/user/done/controller.js","tt4/pods/register/user/done/route.js","tt4/pods/register/user/done/template.js","tt4/pods/register/user/id06/controller.js","tt4/pods/register/user/id06/route.js","tt4/pods/register/user/id06/template.js","tt4/pods/register/user/info/controller.js","tt4/pods/register/user/info/route.js","tt4/pods/register/user/info/template.js","tt4/pods/register/user/register-field-comp/component.js","tt4/pods/register/user/register-field-comp/template.js","tt4/pods/register/user/route.js","tt4/pods/register/user/sign-in/controller.js","tt4/pods/register/user/sign-in/route.js","tt4/pods/register/user/sign-in/template.js","tt4/pods/register/user/template.js","tt4/pods/resource-planning/gantt/template.js","tt4/pods/resource-planning/route.js","tt4/pods/resource-planning/week/template.js","tt4/pods/salary/controller.js","tt4/pods/salary/custom-export-ad/template.js","tt4/pods/salary/custom-export/route.js","tt4/pods/salary/custom-export/template.js","tt4/pods/salary/export-abcense/add/controller.js","tt4/pods/salary/export-abcense/add/route.js","tt4/pods/salary/export-abcense/add/template.js","tt4/pods/salary/export-abcense/index/controller.js","tt4/pods/salary/export-abcense/index/route.js","tt4/pods/salary/export-abcense/index/template.js","tt4/pods/salary/export-abcense/route.js","tt4/pods/salary/export-abcense/template.js","tt4/pods/salary/export-salary/add/controller.js","tt4/pods/salary/export-salary/add/route.js","tt4/pods/salary/export-salary/add/template.js","tt4/pods/salary/export-salary/index/controller.js","tt4/pods/salary/export-salary/index/route.js","tt4/pods/salary/export-salary/index/template.js","tt4/pods/salary/export-salary/route.js","tt4/pods/salary/export-salary/template.js","tt4/pods/salary/route.js","tt4/pods/salary/salaryperiods/controller.js","tt4/pods/salary/salaryperiods/route.js","tt4/pods/salary/salaryperiods/template.js","tt4/pods/salary/salarytypes/controller.js","tt4/pods/salary/salarytypes/route.js","tt4/pods/salary/salarytypes/template.js","tt4/pods/salary/template.js","tt4/pods/salary/workday-calendar/controller.js","tt4/pods/salary/workday-calendar/route.js","tt4/pods/salary/workday-calendar/template.js","tt4/pods/services/route.js","tt4/pods/services/template.js","tt4/pods/settings/activitylog/controller.js","tt4/pods/settings/activitylog/route.js","tt4/pods/settings/activitylog/template.js","tt4/pods/settings/billing/bill-comp/component.js","tt4/pods/settings/billing/bill-comp/template.js","tt4/pods/settings/billing/controller.js","tt4/pods/settings/billing/route.js","tt4/pods/settings/billing/template.js","tt4/pods/settings/company-profile/controller.js","tt4/pods/settings/company-profile/route.js","tt4/pods/settings/company-profile/template.js","tt4/pods/settings/controller.js","tt4/pods/settings/forms/controller.js","tt4/pods/settings/forms/form-activity-log/component.js","tt4/pods/settings/forms/form-activity-log/template.js","tt4/pods/settings/forms/form/controller.js","tt4/pods/settings/forms/form/field/controller.js","tt4/pods/settings/forms/form/field/route.js","tt4/pods/settings/forms/form/field/template.js","tt4/pods/settings/forms/form/removed-fields/controller.js","tt4/pods/settings/forms/form/removed-fields/route.js","tt4/pods/settings/forms/form/removed-fields/template.js","tt4/pods/settings/forms/form/route.js","tt4/pods/settings/forms/form/template.js","tt4/pods/settings/forms/route.js","tt4/pods/settings/forms/template.js","tt4/pods/settings/general-v2/components/auto-pause-setting/component.js","tt4/pods/settings/general-v2/components/auto-pause-setting/template.js","tt4/pods/settings/general-v2/components/autokm-setting/component.js","tt4/pods/settings/general-v2/components/autokm-setting/template.js","tt4/pods/settings/general-v2/components/company-info/address-comp/component.js","tt4/pods/settings/general-v2/components/company-info/address-comp/template.js","tt4/pods/settings/general-v2/components/company-info/billing-comp/component.js","tt4/pods/settings/general-v2/components/company-info/billing-comp/template.js","tt4/pods/settings/general-v2/components/company-info/info-comp/component.js","tt4/pods/settings/general-v2/components/company-info/info-comp/template.js","tt4/pods/settings/general-v2/components/company-info/logo-comp/component.js","tt4/pods/settings/general-v2/components/company-info/logo-comp/template.js","tt4/pods/settings/general-v2/components/edit-time-setting/component.js","tt4/pods/settings/general-v2/components/edit-time-setting/template.js","tt4/pods/settings/general-v2/components/holiday/component.js","tt4/pods/settings/general-v2/components/holiday/template.js","tt4/pods/settings/general-v2/components/km/component.js","tt4/pods/settings/general-v2/components/km/template.js","tt4/pods/settings/general-v2/components/notification-center/component.js","tt4/pods/settings/general-v2/components/notification-center/template.js","tt4/pods/settings/general-v2/components/number-field/component.js","tt4/pods/settings/general-v2/components/number-field/template.js","tt4/pods/settings/general-v2/components/overtime-comp/component.js","tt4/pods/settings/general-v2/components/overtime-comp/template.js","tt4/pods/settings/general-v2/components/pause-setting/component.js","tt4/pods/settings/general-v2/components/pause-setting/template.js","tt4/pods/settings/general-v2/components/perdiem/component.js","tt4/pods/settings/general-v2/components/perdiem/template.js","tt4/pods/settings/general-v2/components/postpopulated-worktimes/component.js","tt4/pods/settings/general-v2/components/postpopulated-worktimes/template.js","tt4/pods/settings/general-v2/components/salarytypes/absencetypes/component.js","tt4/pods/settings/general-v2/components/salarytypes/absencetypes/modal/template.js","tt4/pods/settings/general-v2/components/salarytypes/absencetypes/template.js","tt4/pods/settings/general-v2/components/salarytypes/component.js","tt4/pods/settings/general-v2/components/salarytypes/runAutomaticSalarytypes.js","tt4/pods/settings/general-v2/components/salarytypes/salaries/component.js","tt4/pods/settings/general-v2/components/salarytypes/salaries/modal/component.js","tt4/pods/settings/general-v2/components/salarytypes/salaries/modal/template.js","tt4/pods/settings/general-v2/components/salarytypes/salaries/template.js","tt4/pods/settings/general-v2/components/salarytypes/template.js","tt4/pods/settings/general-v2/components/salarytypes/worktypes/component.js","tt4/pods/settings/general-v2/components/salarytypes/worktypes/modal/component.js","tt4/pods/settings/general-v2/components/salarytypes/worktypes/modal/template.js","tt4/pods/settings/general-v2/components/salarytypes/worktypes/template.js","tt4/pods/settings/general-v2/components/saldo-setting/component.js","tt4/pods/settings/general-v2/components/saldo-setting/template.js","tt4/pods/settings/general-v2/components/terms-setting/component.js","tt4/pods/settings/general-v2/components/terms-setting/template.js","tt4/pods/settings/general-v2/components/time-setting/component.js","tt4/pods/settings/general-v2/components/time-setting/template.js","tt4/pods/settings/general-v2/components/vg-licenses/component.js","tt4/pods/settings/general-v2/components/vg-licenses/template.js","tt4/pods/settings/general-v2/components/worktimegroups/component.js","tt4/pods/settings/general-v2/components/worktimegroups/modal/component.js","tt4/pods/settings/general-v2/components/worktimegroups/modal/template.js","tt4/pods/settings/general-v2/components/worktimegroups/template.js","tt4/pods/settings/general-v2/container/component.js","tt4/pods/settings/general-v2/container/settings.js","tt4/pods/settings/general-v2/container/template.js","tt4/pods/settings/general-v2/controller.js","tt4/pods/settings/general-v2/helps/component.js","tt4/pods/settings/general-v2/helps/template.js","tt4/pods/settings/general-v2/main-settings/component.js","tt4/pods/settings/general-v2/main-settings/template.js","tt4/pods/settings/general-v2/radio-setting/component.js","tt4/pods/settings/general-v2/radio-setting/radio-button/template.js","tt4/pods/settings/general-v2/radio-setting/template.js","tt4/pods/settings/general-v2/setting-comp/component.js","tt4/pods/settings/general-v2/setting-comp/components/warnings/component.js","tt4/pods/settings/general-v2/setting-comp/components/warnings/template.js","tt4/pods/settings/general-v2/setting-comp/template.js","tt4/pods/settings/general-v2/sub-settings/component.js","tt4/pods/settings/general-v2/sub-settings/template.js","tt4/pods/settings/general-v2/template.js","tt4/pods/settings/history/controller.js","tt4/pods/settings/history/route.js","tt4/pods/settings/history/template.js","tt4/pods/settings/index/route.js","tt4/pods/settings/index/template.js","tt4/pods/settings/integrationcontroller/controller.js","tt4/pods/settings/integrationcontroller/route.js","tt4/pods/settings/integrationcontroller/template.js","tt4/pods/settings/integrations/controller.js","tt4/pods/settings/integrations/route.js","tt4/pods/settings/integrations/template.js","tt4/pods/settings/measurement_custom/controller.js","tt4/pods/settings/measurement_custom/route.js","tt4/pods/settings/measurement_custom/template.js","tt4/pods/settings/notificationpanel/controller.js","tt4/pods/settings/notificationpanel/notification-component/component.js","tt4/pods/settings/notificationpanel/notification-component/template.js","tt4/pods/settings/notificationpanel/route.js","tt4/pods/settings/notificationpanel/template.js","tt4/pods/settings/pl/controller.js","tt4/pods/settings/pl/route.js","tt4/pods/settings/pl/template.js","tt4/pods/settings/products/controller.js","tt4/pods/settings/products/disabled/component.js","tt4/pods/settings/products/disabled/template.js","tt4/pods/settings/products/route.js","tt4/pods/settings/products/template.js","tt4/pods/settings/route.js","tt4/pods/settings/template.js","tt4/pods/shift-planning/gantt/template.js","tt4/pods/shift-planning/route.js","tt4/pods/shift-planning/week/template.js","tt4/pods/site-safety/addnotice/index/controller.js","tt4/pods/site-safety/addnotice/index/route.js","tt4/pods/site-safety/addnotice/index/template.js","tt4/pods/site-safety/addnotice/mvr/controller.js","tt4/pods/site-safety/addnotice/mvr/route.js","tt4/pods/site-safety/addnotice/mvr/template.js","tt4/pods/site-safety/addnotice/template.js","tt4/pods/site-safety/addnotice/tr/controller.js","tt4/pods/site-safety/addnotice/tr/route.js","tt4/pods/site-safety/addnotice/tr/template.js","tt4/pods/site-safety/controller.js","tt4/pods/site-safety/loading/template.js","tt4/pods/site-safety/measurement/add/index/controller.js","tt4/pods/site-safety/measurement/add/index/route.js","tt4/pods/site-safety/measurement/add/index/template.js","tt4/pods/site-safety/measurement/add/measurement/controller.js","tt4/pods/site-safety/measurement/add/measurement/route.js","tt4/pods/site-safety/measurement/add/measurement/template.js","tt4/pods/site-safety/measurement/add/route.js","tt4/pods/site-safety/measurement/add/template.js","tt4/pods/site-safety/measurement/controller.js","tt4/pods/site-safety/measurement/data/controller.js","tt4/pods/site-safety/measurement/data/route.js","tt4/pods/site-safety/measurement/data/template.js","tt4/pods/site-safety/measurement/graphs/controller.js","tt4/pods/site-safety/measurement/graphs/route.js","tt4/pods/site-safety/measurement/graphs/template.js","tt4/pods/site-safety/measurement/loading/template.js","tt4/pods/site-safety/measurement/notice-component/component.js","tt4/pods/site-safety/measurement/notice-component/template.js","tt4/pods/site-safety/measurement/notices/controller.js","tt4/pods/site-safety/measurement/notices/route.js","tt4/pods/site-safety/measurement/notices/template.js","tt4/pods/site-safety/measurement/person-in-charge/component.js","tt4/pods/site-safety/measurement/route.js","tt4/pods/site-safety/measurement/row-component/component.js","tt4/pods/site-safety/measurement/row-component/template.js","tt4/pods/site-safety/measurement/template.js","tt4/pods/site-safety/observation/add/controller.js","tt4/pods/site-safety/observation/add/route.js","tt4/pods/site-safety/observation/add/template.js","tt4/pods/site-safety/observation/edit/controller.js","tt4/pods/site-safety/observation/edit/route.js","tt4/pods/site-safety/observation/edit/template.js","tt4/pods/site-safety/observation/template.js","tt4/pods/site-safety/report/event/controller.js","tt4/pods/site-safety/report/event/route.js","tt4/pods/site-safety/report/event/template.js","tt4/pods/site-safety/report/mvr/controller.js","tt4/pods/site-safety/report/mvr/data/controller.js","tt4/pods/site-safety/report/mvr/data/route.js","tt4/pods/site-safety/report/mvr/data/template.js","tt4/pods/site-safety/report/mvr/graphs/controller.js","tt4/pods/site-safety/report/mvr/graphs/route.js","tt4/pods/site-safety/report/mvr/graphs/template.js","tt4/pods/site-safety/report/mvr/notices/controller.js","tt4/pods/site-safety/report/mvr/notices/route.js","tt4/pods/site-safety/report/mvr/notices/template.js","tt4/pods/site-safety/report/observation/controller.js","tt4/pods/site-safety/report/observation/route.js","tt4/pods/site-safety/report/observation/template.js","tt4/pods/site-safety/report/tr/controller.js","tt4/pods/site-safety/report/tr/data/controller.js","tt4/pods/site-safety/report/tr/data/route.js","tt4/pods/site-safety/report/tr/data/template.js","tt4/pods/site-safety/report/tr/graphs/controller.js","tt4/pods/site-safety/report/tr/graphs/route.js","tt4/pods/site-safety/report/tr/graphs/template.js","tt4/pods/site-safety/report/tr/notices/controller.js","tt4/pods/site-safety/report/tr/notices/route.js","tt4/pods/site-safety/report/tr/notices/template.js","tt4/pods/site-safety/route.js","tt4/pods/site-safety/saved/controller.js","tt4/pods/site-safety/saved/route.js","tt4/pods/site-safety/saved/template.js","tt4/pods/site-safety/template.js","tt4/pods/skyddsronds/add/controller.js","tt4/pods/skyddsronds/add/route.js","tt4/pods/skyddsronds/add/template.js","tt4/pods/skyddsronds/dashboard/controller.js","tt4/pods/skyddsronds/dashboard/route.js","tt4/pods/skyddsronds/dashboard/template.js","tt4/pods/skyddsronds/notice-array/component.js","tt4/pods/skyddsronds/notice-array/template.js","tt4/pods/skyddsronds/notices/controller.js","tt4/pods/skyddsronds/notices/route.js","tt4/pods/skyddsronds/notices/template.js","tt4/pods/skyddsronds/report/controller.js","tt4/pods/skyddsronds/report/route.js","tt4/pods/skyddsronds/report/template.js","tt4/pods/skyddsronds/route.js","tt4/pods/skyddsronds/saved/controller.js","tt4/pods/skyddsronds/saved/route.js","tt4/pods/skyddsronds/saved/template.js","tt4/pods/taxman/archive/controller.js","tt4/pods/taxman/archive/route.js","tt4/pods/taxman/archive/template.js","tt4/pods/taxman/contract-list/add/controller.js","tt4/pods/taxman/contract-list/add/route.js","tt4/pods/taxman/contract-list/add/template.js","tt4/pods/taxman/contract-list/edit/controller.js","tt4/pods/taxman/contract-list/edit/route.js","tt4/pods/taxman/contract-list/edit/template.js","tt4/pods/taxman/contract-list/history/route.js","tt4/pods/taxman/contract-list/history/template.js","tt4/pods/taxman/contract-list/index/controller.js","tt4/pods/taxman/contract-list/index/route.js","tt4/pods/taxman/contract-list/index/template.js","tt4/pods/taxman/contract-list/loading/template.js","tt4/pods/taxman/route.js","tt4/pods/taxman/taxreport-component/component.js","tt4/pods/taxman/taxreport-component/template.js","tt4/pods/taxman/taxreport-contract/add/add-taxreport-comp/component.js","tt4/pods/taxman/taxreport-contract/add/controller.js","tt4/pods/taxman/taxreport-contract/add/route.js","tt4/pods/taxman/taxreport-contract/add/template.js","tt4/pods/taxman/taxreport-contract/index/controller.js","tt4/pods/taxman/taxreport-contract/index/route.js","tt4/pods/taxman/taxreport-contract/index/template.js","tt4/pods/taxman/taxreport-contract/route.js","tt4/pods/taxman/taxreport-contract/template.js","tt4/pods/taxman/taxreport/add/add-taxreport-comp/component.js","tt4/pods/taxman/taxreport/add/controller.js","tt4/pods/taxman/taxreport/add/route.js","tt4/pods/taxman/taxreport/add/template.js","tt4/pods/taxman/taxreport/index/controller.js","tt4/pods/taxman/taxreport/index/route.js","tt4/pods/taxman/taxreport/index/template.js","tt4/pods/taxman/taxreport/route.js","tt4/pods/taxman/taxreport/template.js","tt4/pods/taxman/template.js","tt4/pods/thereport/controller.js","tt4/pods/thereport/form-reporteditor/component.js","tt4/pods/thereport/form-reporteditor/template.js","tt4/pods/thereport/page/controller.js","tt4/pods/thereport/page/route.js","tt4/pods/thereport/page/template.js","tt4/pods/thereport/route.js","tt4/pods/thereport/settings/controller.js","tt4/pods/thereport/settings/route.js","tt4/pods/thereport/settings/template.js","tt4/pods/thereport/template.js","tt4/pods/timetracker/add/controller.js","tt4/pods/timetracker/add/gpsprojects/template.js","tt4/pods/timetracker/add/km_auto/template.js","tt4/pods/timetracker/add/project/template.js","tt4/pods/timetracker/add/route.js","tt4/pods/timetracker/add/template.js","tt4/pods/timetracker/addsaved/controller.js","tt4/pods/timetracker/addsaved/route.js","tt4/pods/timetracker/addsaved/template.js","tt4/pods/timetracker/aggregated/controller.js","tt4/pods/timetracker/aggregated/route.js","tt4/pods/timetracker/aggregated/rows/controller.js","tt4/pods/timetracker/aggregated/rows/loading/template.js","tt4/pods/timetracker/aggregated/rows/route.js","tt4/pods/timetracker/aggregated/rows/template.js","tt4/pods/timetracker/aggregated/template.js","tt4/pods/timetracker/anomalies/controller.js","tt4/pods/timetracker/anomalies/route.js","tt4/pods/timetracker/anomalies/settings-panel/component.js","tt4/pods/timetracker/anomalies/settings-panel/template.js","tt4/pods/timetracker/anomalies/template.js","tt4/pods/timetracker/approval/controller.js","tt4/pods/timetracker/approval/index/controller.js","tt4/pods/timetracker/approval/index/route.js","tt4/pods/timetracker/approval/index/template.js","tt4/pods/timetracker/approval/route.js","tt4/pods/timetracker/approval/site/controller.js","tt4/pods/timetracker/approval/site/route.js","tt4/pods/timetracker/approval/site/template.js","tt4/pods/timetracker/approval/site/user/controller.js","tt4/pods/timetracker/approval/site/user/route.js","tt4/pods/timetracker/approval/site/user/template.js","tt4/pods/timetracker/approval/template.js","tt4/pods/timetracker/avi/controller.js","tt4/pods/timetracker/avi/route.js","tt4/pods/timetracker/avi/template.js","tt4/pods/timetracker/bank/controller.js","tt4/pods/timetracker/bank/route.js","tt4/pods/timetracker/bank/settings-component/component.js","tt4/pods/timetracker/bank/settings-component/template.js","tt4/pods/timetracker/bank/template.js","tt4/pods/timetracker/bank_ad/template.js","tt4/pods/timetracker/calendar/controller.js","tt4/pods/timetracker/calendar/route.js","tt4/pods/timetracker/calendar/saldo-info/component.js","tt4/pods/timetracker/calendar/saldo-info/template.js","tt4/pods/timetracker/calendar/template.js","tt4/pods/timetracker/comp-report/controller.js","tt4/pods/timetracker/comp-report/route.js","tt4/pods/timetracker/comp-report/template.js","tt4/pods/timetracker/edit/controller.js","tt4/pods/timetracker/edit/route.js","tt4/pods/timetracker/edit/template.js","tt4/pods/timetracker/employer-sums/controller.js","tt4/pods/timetracker/employer-sums/route.js","tt4/pods/timetracker/employer-sums/template.js","tt4/pods/timetracker/history/route.js","tt4/pods/timetracker/history/template.js","tt4/pods/timetracker/loading/template.js","tt4/pods/timetracker/realtime/controller.js","tt4/pods/timetracker/realtime/route.js","tt4/pods/timetracker/realtime/template.js","tt4/pods/timetracker/route.js","tt4/pods/timetracker/salary-category/controller.js","tt4/pods/timetracker/salary-category/route.js","tt4/pods/timetracker/salary-category/template.js","tt4/pods/timetracker/saved/controller.js","tt4/pods/timetracker/saved/route.js","tt4/pods/timetracker/saved/template.js","tt4/pods/timetracker/timecard/add/controller.js","tt4/pods/timetracker/timecard/add/route.js","tt4/pods/timetracker/timecard/add/template.js","tt4/pods/timetracker/timecard/add/timecard-record-comp/component.js","tt4/pods/timetracker/timecard/template.js","tt4/pods/timetracker/week-report/controller.js","tt4/pods/timetracker/week-report/route.js","tt4/pods/timetracker/week-report/template.js","tt4/pods/timetracker/worktime-list/controller.js","tt4/pods/timetracker/worktime-list/route.js","tt4/pods/timetracker/worktime-list/template.js","tt4/pods/trnotices/edit/controller.js","tt4/pods/trnotices/edit/route.js","tt4/pods/trnotices/edit/template.js","tt4/pods/trnotices/history/route.js","tt4/pods/trnotices/history/template.js","tt4/pods/trnotices/route.js","tt4/pods/users/add/builder/controller.js","tt4/pods/users/add/builder/route.js","tt4/pods/users/add/builder/template.js","tt4/pods/users/add/controller.js","tt4/pods/users/add/id06/controller.js","tt4/pods/users/add/id06/route.js","tt4/pods/users/add/id06/template.js","tt4/pods/users/add/image/template.js","tt4/pods/users/add/index/controller.js","tt4/pods/users/add/index/route.js","tt4/pods/users/add/index/template.js","tt4/pods/users/add/phone/template.js","tt4/pods/users/add/route.js","tt4/pods/users/add/template.js","tt4/pods/users/card/controller.js","tt4/pods/users/card/route.js","tt4/pods/users/card/template.js","tt4/pods/users/cardregister/controller.js","tt4/pods/users/cardregister/route.js","tt4/pods/users/cardregister/template.js","tt4/pods/users/edit/activity/controller.js","tt4/pods/users/edit/activity/route.js","tt4/pods/users/edit/activity/template.js","tt4/pods/users/edit/changepassword/controller.js","tt4/pods/users/edit/changepassword/route.js","tt4/pods/users/edit/changepassword/template.js","tt4/pods/users/edit/changeusername/controller.js","tt4/pods/users/edit/changeusername/route.js","tt4/pods/users/edit/changeusername/template.js","tt4/pods/users/edit/competence/route.js","tt4/pods/users/edit/competence/template.js","tt4/pods/users/edit/controller.js","tt4/pods/users/edit/id06competence/controller.js","tt4/pods/users/edit/id06competence/route.js","tt4/pods/users/edit/id06competence/template.js","tt4/pods/users/edit/index/controller.js","tt4/pods/users/edit/index/route.js","tt4/pods/users/edit/index/template.js","tt4/pods/users/edit/loading/template.js","tt4/pods/users/edit/orientations/controller.js","tt4/pods/users/edit/orientations/route.js","tt4/pods/users/edit/orientations/template.js","tt4/pods/users/edit/permissions/route.js","tt4/pods/users/edit/permissions/template.js","tt4/pods/users/edit/route.js","tt4/pods/users/edit/saldo/calendar-card/component.js","tt4/pods/users/edit/saldo/calendar-card/template.js","tt4/pods/users/edit/saldo/controller.js","tt4/pods/users/edit/saldo/route.js","tt4/pods/users/edit/saldo/saldo-deducter/component.js","tt4/pods/users/edit/saldo/saldo-start/component.js","tt4/pods/users/edit/saldo/saldo-start/template.js","tt4/pods/users/edit/saldo/show-date/component.js","tt4/pods/users/edit/saldo/show-date/template.js","tt4/pods/users/edit/saldo/template.js","tt4/pods/users/edit/saldohistory/controller.js","tt4/pods/users/edit/saldohistory/route.js","tt4/pods/users/edit/saldohistory/template.js","tt4/pods/users/edit/saldos_ad/template.js","tt4/pods/users/edit/superior_replacements/template.js","tt4/pods/users/edit/template.js","tt4/pods/users/edit/userdata/controller.js","tt4/pods/users/edit/userdata/route.js","tt4/pods/users/edit/userdata/template.js","tt4/pods/users/history/route.js","tt4/pods/users/history/template.js","tt4/pods/users/inactive/controller.js","tt4/pods/users/inactive/route.js","tt4/pods/users/inactive/template.js","tt4/pods/users/index/controller.js","tt4/pods/users/index/route.js","tt4/pods/users/index/template.js","tt4/pods/users/linked/controller.js","tt4/pods/users/linked/route.js","tt4/pods/users/linked/template.js","tt4/pods/users/loading/template.js","tt4/pods/users/removed/controller.js","tt4/pods/users/removed/route.js","tt4/pods/users/removed/template.js","tt4/pods/users/route.js","tt4/pods/users/saldocalendar/controller.js","tt4/pods/users/saldocalendar/route.js","tt4/pods/users/saldocalendar/template.js","tt4/pods/users/saldohistory/controller.js","tt4/pods/users/saldohistory/route.js","tt4/pods/users/saldohistory/template.js","tt4/pods/users/saldos/controller.js","tt4/pods/users/saldos/route.js","tt4/pods/users/saldos/template.js","tt4/pods/users/saldos_ad/template.js","tt4/pods/users/saved/controller.js","tt4/pods/users/saved/route.js","tt4/pods/users/saved/template.js","tt4/pods/users/subcontractor/controller.js","tt4/pods/users/subcontractor/route.js","tt4/pods/users/subcontractor/template.js","tt4/pods/users/superior_replacements/template.js","tt4/pods/users/template.js","tt4/pods/users/worktimegroup_changes/controller.js","tt4/pods/users/worktimegroup_changes/template.js","tt4/pods/vismanetsignin/route.js","tt4/pods/vismanetsignin/template.js","tt4/pods/worksite-areas/log-report/template.js","tt4/pods/worksite-areas/report/template.js","tt4/pods/worksite-areas/template.js","tt4/pods/worksitediary/add/controller.js","tt4/pods/worksitediary/add/rating/template.js","tt4/pods/worksitediary/add/route.js","tt4/pods/worksitediary/add/template.js","tt4/pods/worksitediary/add/weather/template.js","tt4/pods/worksitediary/automation/controller.js","tt4/pods/worksitediary/automation/route.js","tt4/pods/worksitediary/automation/template.js","tt4/pods/worksitediary/calendar/controller.js","tt4/pods/worksitediary/calendar/diaryreport-calendar-item/component.js","tt4/pods/worksitediary/calendar/diaryreport-calendar-item/template.js","tt4/pods/worksitediary/calendar/route.js","tt4/pods/worksitediary/calendar/template.js","tt4/pods/worksitediary/edit/controller.js","tt4/pods/worksitediary/edit/route.js","tt4/pods/worksitediary/edit/template.js","tt4/pods/worksitediary/events/controller.js","tt4/pods/worksitediary/events/route.js","tt4/pods/worksitediary/events/template.js","tt4/pods/worksitediary/index/controller.js","tt4/pods/worksitediary/index/route.js","tt4/pods/worksitediary/index/template.js","tt4/pods/worksitediary/notes/controller.js","tt4/pods/worksitediary/notes/route.js","tt4/pods/worksitediary/notes/template.js","tt4/pods/worksitediary/offering-report/controller.js","tt4/pods/worksitediary/offering-report/route.js","tt4/pods/worksitediary/offering-report/template.js","tt4/pods/worksitediary/other-entries-report/controller.js","tt4/pods/worksitediary/other-entries-report/route.js","tt4/pods/worksitediary/other-entries-report/template.js","tt4/pods/worksitediary/report/add/at-site/controller.js","tt4/pods/worksitediary/report/add/at-site/route.js","tt4/pods/worksitediary/report/add/at-site/template.js","tt4/pods/worksitediary/report/add/base-route/route.js","tt4/pods/worksitediary/report/add/basic-info/controller.js","tt4/pods/worksitediary/report/add/basic-info/route.js","tt4/pods/worksitediary/report/add/basic-info/template.js","tt4/pods/worksitediary/report/add/completion-page/controller.js","tt4/pods/worksitediary/report/add/completion-page/route.js","tt4/pods/worksitediary/report/add/completion-page/template.js","tt4/pods/worksitediary/report/add/controller.js","tt4/pods/worksitediary/report/add/diary-events/controller.js","tt4/pods/worksitediary/report/add/diary-events/event-component/component.js","tt4/pods/worksitediary/report/add/diary-events/event-component/template.js","tt4/pods/worksitediary/report/add/diary-events/route.js","tt4/pods/worksitediary/report/add/diary-events/template.js","tt4/pods/worksitediary/report/add/diary-modal/component.js","tt4/pods/worksitediary/report/add/diary-modal/template.js","tt4/pods/worksitediary/report/add/extra/route.js","tt4/pods/worksitediary/report/add/extra/template.js","tt4/pods/worksitediary/report/add/material/controller.js","tt4/pods/worksitediary/report/add/material/route.js","tt4/pods/worksitediary/report/add/material/template.js","tt4/pods/worksitediary/report/add/notes-anmalan/controller.js","tt4/pods/worksitediary/report/add/notes-anmalan/route.js","tt4/pods/worksitediary/report/add/notes-besiktningar/controller.js","tt4/pods/worksitediary/report/add/notes-besiktningar/route.js","tt4/pods/worksitediary/report/add/notes-direktiv/controller.js","tt4/pods/worksitediary/report/add/notes-direktiv/route.js","tt4/pods/worksitediary/report/add/notes-direktiv/template.js","tt4/pods/worksitediary/report/add/notes-page-component/component.js","tt4/pods/worksitediary/report/add/notes-page-component/template.js","tt4/pods/worksitediary/report/add/notes-ritningar/controller.js","tt4/pods/worksitediary/report/add/notes-ritningar/route.js","tt4/pods/worksitediary/report/add/offering/controller.js","tt4/pods/worksitediary/report/add/offering/route.js","tt4/pods/worksitediary/report/add/offering/template.js","tt4/pods/worksitediary/report/add/ordered-changes/controller.js","tt4/pods/worksitediary/report/add/ordered-changes/route.js","tt4/pods/worksitediary/report/add/ordered-changes/template.js","tt4/pods/worksitediary/report/add/other-entries/controller.js","tt4/pods/worksitediary/report/add/other-entries/route.js","tt4/pods/worksitediary/report/add/other-entries/template.js","tt4/pods/worksitediary/report/add/required-extra/controller.js","tt4/pods/worksitediary/report/add/required-extra/route.js","tt4/pods/worksitediary/report/add/required-extra/template.js","tt4/pods/worksitediary/report/add/review-page/controller.js","tt4/pods/worksitediary/report/add/review-page/route.js","tt4/pods/worksitediary/report/add/review-page/template.js","tt4/pods/worksitediary/report/add/route.js","tt4/pods/worksitediary/report/add/signature/controller.js","tt4/pods/worksitediary/report/add/signature/route.js","tt4/pods/worksitediary/report/add/signature/template.js","tt4/pods/worksitediary/report/add/summary-page/controller.js","tt4/pods/worksitediary/report/add/summary-page/route.js","tt4/pods/worksitediary/report/add/summary-page/template.js","tt4/pods/worksitediary/report/add/supervisor-note/controller.js","tt4/pods/worksitediary/report/add/supervisor-note/route.js","tt4/pods/worksitediary/report/add/supervisor-note/template.js","tt4/pods/worksitediary/report/add/template.js","tt4/pods/worksitediary/report/first/controller.js","tt4/pods/worksitediary/report/first/template.js","tt4/pods/worksitediary/report/route.js","tt4/pods/worksitediary/report/template.js","tt4/pods/worksitediary/route.js","tt4/pods/worksitediary/supervisor-notes-report/controller.js","tt4/pods/worksitediary/supervisor-notes-report/route.js","tt4/pods/worksitediary/supervisor-notes-report/template.js","tt4/pods/worktasks/calendar/controller.js","tt4/pods/worktasks/calendar/route.js","tt4/pods/worktasks/calendar/template.js","tt4/pods/worktasks/confirm/controller.js","tt4/pods/worktasks/confirm/route.js","tt4/pods/worktasks/confirm/template.js","tt4/pods/worktasks/edit/controller.js","tt4/pods/worktasks/edit/route.js","tt4/pods/worktasks/edit/template.js","tt4/pods/worktasks/gantt/controller.js","tt4/pods/worktasks/gantt/route.js","tt4/pods/worktasks/gantt/template.js","tt4/pods/worktasks/history/template.js","tt4/pods/worktasks/list/controller.js","tt4/pods/worktasks/list/route.js","tt4/pods/worktasks/list/template.js","tt4/pods/worktasks/loading/template.js","tt4/pods/worktasks/report/controller.js","tt4/pods/worktasks/report/route.js","tt4/pods/worktasks/report/template.js","tt4/pods/worktasks/route.js","tt4/pods/worktasks/view/controller.js","tt4/pods/worktasks/view/route.js","tt4/pods/worktasks/view/template.js","tt4/router.js","tt4/routes/application.js","tt4/routes/changepassword.js","tt4/routes/general-add.js","tt4/routes/general-report.js","tt4/routes/index.js","tt4/routes/invalid.js","tt4/routes/login/register.js","tt4/routes/massedit.js","tt4/routes/my-sites.js","tt4/routes/register/service.js","tt4/routes/register/service/adddetails.js","tt4/routes/register/service/amounts.js","tt4/routes/register/service/done.js","tt4/routes/register/service/products.js","tt4/routes/saved.js","tt4/routes/send-skatteverket.js","tt4/routes/show.js","tt4/routes/token.js","tt4/sentry.js","tt4/serializers/-default.js","tt4/serializers/-json-api.js","tt4/serializers/-rest.js","tt4/serializers/application.js","tt4/serializers/beta-clockcard.js","tt4/serializers/card.js","tt4/serializers/ccbutton.js","tt4/serializers/ccbuttonexecution.js","tt4/serializers/custom-export.js","tt4/serializers/dashboard-mobile.js","tt4/serializers/dashboard.js","tt4/serializers/form-field-setting.js","tt4/serializers/form-field.js","tt4/serializers/form-report-template.js","tt4/serializers/form-setting.js","tt4/serializers/form.js","tt4/serializers/help.js","tt4/serializers/my-site.js","tt4/serializers/rollocklog.js","tt4/serializers/row-info.js","tt4/serializers/widget-anomalies-setting.js","tt4/services/-ensure-registered.js","tt4/services/-gestures.js","tt4/services/addon/collector.ts","tt4/services/admintool.js","tt4/services/ajax.js","tt4/services/analytics.ts","tt4/services/android-file.js","tt4/services/apiservice.ts","tt4/services/autopause-checker.js","tt4/services/aws.js","tt4/services/blocks.js","tt4/services/capi.js","tt4/services/cardregister.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/survicate-config.js","tt4/utils/validations.js","tt4/utils/version-info.js","tt4/utils/weather.js","tt4/utils/work-permit.js","vendor/ember-cli/app-config.js","vendor/ember-cli/app-boot.js"],"names":["define","_exports","_jsonApi","Object","defineProperty","value","enumerable","get","default","RESTAdapter","extend","DataAdapterMixin","onlineChecker","Ember","inject","service","dialogs","intl","session","flags","sessionhelper","init","this","_super","apply","arguments","handledErrors","ensureResponseAuthorized","status","headers","payload","requestData","error_description","expiredRecovery","concat","method","url","computed","isAuthenticated","data","authenticated","access_token","host","config","environment","test","collector","api_url","isSuccess","error","Array","from","includes","error_obj","responseText","statusText","error_msg","set","showErrorDialog","alert","t","normalizeErrorResponse","_typeof","run","throttle","errors","errorMeta","meta","isArray","title","details","generatedDetailedMessage","JSON","stringify","urlForQuery","query","modelName","form","field","endpoint","urlForUpdateRecord","id","snapshot","adapterOptions","validation","Capi3Adapter","DS","JSONAPIAdapter","APP","CAPI3","authorizer","namespace","TTAPI2","ApplicationAdapter","defaultSerializer","FormDefaultAdapter","ttapiBase","createNamespace","capi","find","_this","request","dataType","then","_data","TTAPI_HOST","message","path","TTAPI_FOLDER","slice","target","RSVP","resolve","_sentry","startSentry","App","modulePrefix","podModulePrefix","Resolver","TextSupport","reopen","attributeBindings","autocorrect","autocomplete","window","sessionStorage","getItem","app_override","parse","keys","forEach","key","Modernizr","localstorage","localStorage","devMode","dev","removeItem","console","info","setItem","Error","stackTraceLimit","_emberLoadInitializers","OAuth2PasswordGrantAuthenticator","serverTokenEndpoint","COLLECTOR_API_URL","clientId","makeRequest","client_id","restore","Promise","reject","response","typeOf","offline","trigger","later","location","href","rootURL","indexOf","create","forms_url","getFormSettings","createEmberModels","d","self","testing","createTestModels","$","Deferred","Authorization","ajax","datatype","tryCount","retryLimit","success","addCommonForms","create_models","reason","reload","promise","reparse_dropdown_options","forms","each","form_index","objects","obj_index","object","is_array","temp","type","options","prototype","toString","call","opt_index","option","empty_option","push","all_attributes","async_relations","rel_objects","updater","products","modules","tt3flag","index","form_name","model_attributes","classify","attribute_name","attributes_arr","attr","ref","ref1","relation","relation_fields","hasMany","async","belongsTo","inverse","toLowerCase","createWorkdayModels","models","attributes","name","Tt4","CollectorModel","CollectorValidationMixin","deleteModels","store","unloadAll","date","minutes","own","desc","country","absence_minutes","day","starttime","endtime","overtimerule","max_minutes","rules","workdayWeeks","worktimegroup","commonForms","rounding_rule","time_from","features","mandatory","time_to","time_result","privileges","add","edit","remove","logo","is_image","public","single_image","getPrivilege","privilege","getFormObjects","replace","getFormObject","obj","arr","obj_name","split","hasErrors","getErrors","localization","moment","updateLocale","weekdaysMin","weekdays","months","monthsShort","longDateFormat","L","LT","LL","llll","LTS","LLL","LLLL","l","ll","lll","week","dow","doy","formatHours","hours","format","real_hours","timeArr","parseInt","toLocaleString","locale","Math","sign","ceil","floor","abs","round","is","formatDaysAndHours","days","Helper","helper","_validate_unique","_defineProperty","_Ember$Object$create","validate_mandatory","model","_is_visible","ObjectProxy","ArrayProxy","isEmpty","i","is_visible","len","test_field","test_values","length","_value_is_in_list","list_string","found","list","negation","substring","validate_length","parsed","isJSON","validate_minLength","validate_maxLength","validate_number","isNaN","validate_forced_pause","diff","validate_multiPause","multipause","start","multiPauseStart","worktimeStart","worktimeEnd","worktimeGoesOvernight","isBefore","isBetween","end","multiPauseEnd","validate_multipleHours","formatMinutes","sameAs","row","formatted","leftover","sameas","validate_email","validate_birthdate","isAfter","subtract","returnAsPromise","validate_remote_email","changedAttributes","username","validate","contentType","validate_match","match","validate_digits","item","Number","validate_person_country","validate_employer_country","validate_PIN","nationality","toUpperCase","validate_id06_number","validate_username","check_username","back","validate_username_free","_this2","Em","error1","validate_password","attribute","hasChanged","isNew","disable_login","validate_positiveNumber","validate_date_not_past","validate_date_after","validate_date_correct","isValid","validate_phoneNumber","validate_skv_number","isFinite","regeneratorRuntime","mark","_callee","owner","form_plural","req","rows","wrap","_context","prev","next","abrupt","getOwner","lookup","constructor","_emberInflector","pluralize","camelize","_fetch","sent","json","count","getTranslationForColumn","stop","_x","_x2","_x3","_x4","_x5","pluralRuleFunction","n","ord","s","String","v0","t0","n10","n100","fields","year","displayName","relative","0","1","-1","relativeTime","future","one","other","past","year-short","month","month-short","day-short","hour","hour-short","minute","minute-short","second","second-short","numbers","decimal","long","short","2","-2","_emberComponentManager","Component","_rowWrapper","_simpleCheckbox","__COLOCATED_TEMPLATE__","HTMLBars","template","block","moduleName","_templateOnlyComponent","AccordionItemComponent","event","panel","nextElementSibling","active","style","maxHeight","scrollHeight","CollectorErrorMessageComponent","errorHandler","toError","args","errorToString","_this$parsedError","_this$parsedError$met","parsedError","hits","ids","join","sideload","_this$parsedError2","_this$parsedError2$me","_this$parsedError3","_this$parsedError3$me","_this$parsedError4","_ref2","userRestrictionsPrevent","projectRestrictionsPrevent","reasons","DateRangeComponent","_classCallCheck","_initializerDefineProperty","_assertThisInitialized","_descriptor","_descriptor2","_descriptor3","startDate","endDate","centerStart","Date","centerEnd","range","val","openEndDatePicker","queryRange","changeDate","changeEnd","picker","validInputValue","getInputAsDate","_moment","endRangeElement","document","querySelector","click","focus","select","keyCode","preventDefault","FieldContainerComponent","splitField","isPresent","prompt","_this$args$record","record","errorsFor","forceType","fieldType","component","componentExists","htmlSafe","sorts","componentName","hasRegistration","FieldsBigPriceComponent","FieldsPriceComponent","FieldsCheckboxComponent","showLabels","theme","size","disabled","fallback","primaryLocale","FieldsCheckboxgroupComponent","map","text","checked","box","ret","Set","has","delete","onChange","FieldsDatabaseGpsForceFieldComponent","_descriptor4","_descriptor5","_descriptor6","gps","evented","on","newPosition","lockedPosition","hasPositionChanged","reTriggerOptions","lastKnownLatitude","latitude","lastKnownLongitude","longitude","performSearch","_asyncToGenerator","_callee3","term","_this3","_context3","_get","_getPrototypeOf","_ref3","_callee2","normalProjects","forcedGpsProjects","_context2","getForcedGpsProjects","filter","project","getDistance","location_map","allowedDistance","groupName","toArray","undefined","params","force_location","limit","q","_i","_Object$keys","_callee4","_args4","_context4","DatabaseField","FieldsDatabaseComponent","setLastUsed","_this$args$features","lastUsed","_promisevalue","_promisevalue2","promisevalue","resolved","_this$args$setDisable","_this$args","_this$args$setDisable2","_this$args2","skipLastUsed","subform","do_not_preselect","firstObject","setDisabled","checkValueIsInOptions","debounce","peekRecord","saveLastUsed","createNew","showCreate","content","_this3$args$features","sortBy","_sort","subformFields","auto_select_only","getLastUsed","e","unshift","records","offset","_this$args$record2","hasDirtyAttributes","_this$args$setDisable4","_this$args4","_this$args$setDisable3","_this$args3","createQueryParams","useNormalDropdown","_gui","isMobile","forceNormalDropdown","useAsFilter","_callee5","_context5","recordIsDirty","opt","FieldsDatabasearrayComponent","_this$args$value","parentfields","fieldArray","findBy","taskname","_this$records","createRecord","autoSetHours","notifyPropertyChange","fieldName","deleteRecord","destroyRecord","work_hours","_this$args$record3","_this$args$record4","_this$args$record8","_this$args$record9","validate_check","_this$args$record5","_this$args$record6","_this$args$record7","_convertWorkHoursToMinutes","pause","addMinutes","sumBefore","lastOneMinutes","allAreTheSame","FieldsDateComponent","dateInterval","date_interval","splitted","dateOptions","sort","FieldsDatetimeComponent","_this$args$value2","time","FieldsDropdownCountryComponent","_countries","countries","_value","_dropdownValues","FieldsDropdownUserlevelComponent","dropdownOptions","parsedOptions","FieldsDropdownValuesComponent","getName","exists","realOptions","splitOptions","FieldsGpslocationComponent","sendLocationToForm","off","distance","distanceToProject","userLocation","setGpsDistanceToProject","projectLocation","findRecord","FieldsGpslocationmapComponent","FieldsHdfileComponent","isIE","isAndroid","capiURL","queueName","random","A","_this$args$features2","single_file","_this$args$features3","singleFile","isImageFile","file","fileObject","originalFile","name_on_hd","isImageType","s3thumb","base64ImageCache","previewFile","s3url","_file2","makeFileUrl","base64Cache","_file$name","fileExt","resizedImage","queue","resizedImageFile","notifications","autoClear","blackListFiles","FileQueue","files","removeObject","resizeImage","blob","File","fromDataURL","pushObject","uploadFile","vals","task","cancel","source","allowEdit","targetWidth","targetHeight","quality","destinationType","Camera","DestinationType","FILE_URI","sourceType","PictureSourceType","PHOTOLIBRARY","CAMERA","mediaType","MediaType","PICTURE","correctOrientation","encodingType","navigator","camera","getPicture","imageData","resolveLocalFileSystemURL","fileEntry","uploadImage","policyUrl","base64Url","_base64Url","_args2","isPublic","fetch","upload","inputs","createThumb","readAsDataURL","s3file","addFile","fileName","policyResponse","resized","thumb","imageTypes","FieldsHoursAndMinutesComponent","parseFloat","FieldsMultiselectComponent","loadInitialSelection","_this$args$options","_this$args$options2","isRecord","internalSelected","fetchOptions","groupOptions","bind","allRecords","selectedIds","mapBy","selected","unselected","groups","selectAllOption","isSelectAll","_toConsumableArray","queryLimit","filterValue","isBlank","v","trim","_records$meta","metaCount","moreCount","idsString","parseIdsFromValue","selectedRecords","some","selectAll","FieldsNumberComponent","FieldsPasswordComponent","showPassword","currentUser","company_info","FieldsSignatureComponent","canvas","createElement","width","className","signaturePad","SignaturePad","_this$signaturePad","clear","_this$signaturePad2","toDataURL","showModal","FieldsTagInputComponent","tags","tag","addTagToList","removeAt","currentInputValue","queryBackend","tagObj","tagName","_validations","validateEmail","showDropdown","result","_textarea","FieldsTextareaComponent","_touchMoving","moving","touchMoving","activeElement","blur","FieldsTextBoxComponent","FieldsTimeComponent","tryToGuessTime","str","mins","exploded","FieldsTimecleanImeiComponent","tagAsNumber","class","FieldsUsernameComponent","FieldsWeatherComponent","wspeed","percent","shouldAutomaticallyFetchNewWeather","weatherLoading","position","weather","_weather","fetchWeather","CollectorFieldsWorkPermitAttachmentComponent","FormAddComponent","_descriptor7","_descriptor8","_descriptor9","_descriptor10","_descriptor11","_descriptor12","_descriptor13","_descriptor14","_descriptor15","doTheseBeforeRenderingFields","setConditionalFieldProperties","setFilters","preserveRecordOnDestroy","rollbackAttributes","_field$features","_hide","stashed","_field$features2","onFieldChange","formAddFieldChanged","changeFilter","send","saveButtonDisabled","_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","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","_descriptor16","_descriptor17","_descriptor18","_descriptor19","_descriptor20","_descriptor21","_descriptor22","_descriptor23","_descriptor24","_descriptor25","_descriptor26","_descriptor27","_descriptor28","_descriptor29","_descriptor30","rowsPerPage","currentPage","rowActions","selectedRows","showRemoved","useMultiFilter","showFilters","showOnlySum","changeStatusForAllPagesParams","groupableColumns","columnSizes","filteredArr","defaultOrder","setVisibleColumns","fetchTemplates","activateTemplate","setDefaultLimit","setDefaultOrder","filterByValues","updateReport","oldTemplateFromLS","columnsChanged","allColumns","col","columns","external_type","metaRowCount","allPagesSelected","formFeatures","custom_queryparams","cachedRowCount","mergeFilters","jsonapi","setJsonapiParams","extraParams","skipCustomQueryParams","checkCustomQueryParams","createSortStringForJsonapi","order","createSortString","setParentFieldParamsAsArray","canEdit","testNeeds","savedSize","column","hide_column","hideCreatedColumn","valuePath","fieldOptions","only_options","statusTypes","showOverview","formaName","underscore","formattedValues","sums","sumType","userlevels","templateValues","setProperties","save","templateColumns","current","setTemplateValues","confirm","currentFormTemplate","deactivateTemplate","showLocationMap","setMapMarkers","cacheData","handleGroupBy","showForm","act","removeRow","restoreRow","copyRow","warning","lockOrUnlock","page","_callee6","_args6","_context6","layoutOption","fileExports","createPdfFull","selectedExportRows","createPdf","notify","finish","_callee7","_context7","queryParams","_callee8","_context8","getExportData","ext","createCsv","t1","_callee9","base64","includeAllPages","sumRow","excelJSON","_args9","_context9","addFiltersToPdf","addSumRow","getExcelSumRow","createExcelJSONFromForm","createBase64ExcelFromJSON","createExcelFromJSON","exportPdf","exportPdfFull","exportExcel","saveDirtyRecords","_callee10","reportElement","dirtyRecords","reloadPromises","newData","showInlineEdit","_context10","all","_callee11","closedToApprovedRows","_context11","setParamsForStatusChangeAllPages","setDatesForFastExporter","handleClosedToApprovedRows","statusChanged","showApprovalLink","_this7","_callee12","body","_iterator3","_step3","_row","_context12","unloadRecord","row_info.status","apiservice","_callee13","to","emailData","base64string","rowids","res","_context13","getPdfAttachmentForEmail","to_address","email","lang","includeApproval","header","dontAttachImages","ok","approvalLink","addHistoryForSentRows","RowsPerPage","localStorageWrapper","setUserSetting","defaultLimitKey","defaultSortKey","_callee14","_context14","saveColumnSizeForTemplate","existingSizeObject","_callee15","_iterator4","_step4","_context15","t2","newColumns","_this8","getOrder","selectedFields","sumData","_sumrow","getSums","sumValues","isHTMLSafe","string","formReportTemplates","filter[attributes.form]","_callee16","currentLsTemplate","dateRangeOptions","normalFilters","sumFields","_this9","_context16","currentSalaryPeriod","setCurrentPeriod","entries","returnDateValue","fIndex","p","sum","startOf","endOf","_callee17","salaryPeriods","currentDate","currentPeriods","_context17","peekAll","findAll","period","period_start_date","period_end_date","_callee18","projects","_context18","getProjectInfo","visibleRowIds","requestParams","rowCount","toStatus","showFastExporter","datesForFastExporter","_callee19","mode","columnsOnReport","settings","element","elements","filters_body","_args19","_context19","show_columns","createPdfElement","table","layout","_pdfExport","createPdfFromElements","cordova","openFile","_this10","filterKeys","filterValues","filterNameInPdf","setFilterNameInPdf","filterValueInPdf","_format_","_callee20","_context20","_this11","param","_this12","visibleList","reduce","acc","columnObject","limitfromLS","getUserSetting","sortfromLS","defaultSort","createSortArray","filterUnknownColumns","allowThese","merge","getIdifRecord","removeOrNot","_callee21","_context21","isDestroyed","_callee22","newRecord","_context22","copyRecord","privilege_edit","privilege_remove","unshiftObject","_callee23","answer","_context23","_callee24","_context24","_this13","getRowInfoSortString","isAscending","_this14","errorArray","errorObj","_callee26","savePromises","_this15","_context26","_callee25","_context25","saveRecordAndCatchErrors","_x32","_x33","createErrorInfoNotifications","_callee27","_context27","showOrHideRemoved","parentField","_callee29","locs","totalLength","_this16","_context29","defer","_callee28","locationMapInfo","loc","_context28","end_location","getLocationMapInfo","wStartLoc","wEndLoc","wLabel","user","_x38","_this17","rowid","_history","FormReportActionBarComponent","showActions","hideEditStatus","isEditable","isRemovable","overrideAction","actionClicked","FormReportActionsComponent","readonly","canChangeStatus","_this$args$additional","additionalMeta","trimmed_query","FormReportColumnSelectorComponent","templates","_setCurrentTemplate","mappedCols","dropped","moveElementInArray","saveToLS","dir","setRowsPerPage","accumulator","newIndex","insertAt","sumReport","FormReportExportMoreComponent","FormReportInfoComponent","setInfoText","fileUrl","infoText","FormReportMoreRowComponent","FormReportQrCode","urls","ownUrl","editUrls","returnUrl","asHTML","w","getEditRouteUrls","getOwnUrl","getEditUrls","open","write","urlArr","editRoute","OWN_URL","editUrl","qrImageUrl","_qrcodeGenerator","generateQrCode","FormReportReportTemplateSelector","isPending","FormReportRowComponent","FormReportTableComponent","selectable","actions","isFixed","actionBarIsFixed","maxwidth","isSortable","isResizable","setSelectedRows","refreshReport","deselectAll","changeStatus","handleLock","handleRemove","rowInfo","modified","created","utc","unix","duration","asDays","created_diff","hideRule","validator","reloads","getReloads","fieldReloads","GroupbyFilterComponent","valueArr","chosenFields","unchosenFields","savedFields","indexOfField","splice","applyFilters","chosenFieldNames","toggleModal","ModalComponent","outsideClick","PagiNateComponent","gt","pageCount","limiter","middle","midpoint","pages","ref2","results","results1","j","union","k","ref3","fillCaps","queryLimitFull","hasNextPage","array","break_indexes","last","reverse","arr1","arr2","onlyUnique","sortNumber","pageChange","PartyParrotComponent","newVal","dur","ReportTemplateWizardComponent","submenus","defaultFilters","getDefaultFilters","sel","voluntary","objArray","what","spliceIndex","indexOfDeleted","_Object$entries","_Object$entries$_i","_slicedToArray","filterName","filterNameIndex","filtersArr","movingArr","fromEntries","ReportTemplateWizardColumnSelectorComponent","groupableColumnsList","groupByColumnsList","valueType","allowColumnsInSums","index1","index2","whatObj","setValues","ReportTemplateWizardDraggableItemComponent","draggableName","draggablename","dragClass","dataTransfer","setData","getData","ReportTemplateWizardFilterBoxComponent","ReportTemplateWizardPage1Component","collectValuesToObject","ReportTemplateWizardPage4Component","isOpen","showAll","advancedMode","getFilterValues","filterThese","filterObj","r","disclude","mandatoryFilters","fil","translation","filteredArray","showFilter","filName","anotherObj","filterForm","fieldData","dateRanges","splitValue","updatedValue","_sel$id","removeValuesFromObject","filterArray","reorderFilters","ValueFormatComponent","_this$fieldObj","_this$fieldObj2","fieldObj","WizardComponent","WizardButtonsComponent","skipCloseOnDone","WizardStepsComponent","pageNames","steps","showTooltip","admintool","countryLists","street","zip","town","hasError","specifier","billingtype","pdfExport","csvExport","translationPrefix","initData","observer","c","ttapi","len1","object_data","query_str_arr","firstRow","translatedColumns","translated_columns","asPdfElement","createPdfTableElement","asCsvElement","createCsvElement","showPagination","hasPreviousPage","catchActions","func","sendAction","nextPage","previousPage","changePage","export_pdf","qPart","addHeader","export_csv","createCsvFromElements","_areaChart","makeArray","setValue","once","setAddText","setTimeout","input","placeholderObjects","obs","obsPlacehoder","saveText","_emberIntl","addText","_barChart","_basicDropdownContent","_basicDropdownOptionalTag","_basicDropdownTrigger","_basicDropdown","didInsertElement","_jquery","addClass","showEinvoiceOption","getEinvoicingOperators","invoicingAddress","save_company_info","modal","copy_fields","setBillingType","btype","data_arr","BootstrapDatepickerInlineComponent","BootstrapDatepickerComponent","_bsAccordion","_item","_body","_title","_bsButtonGroup","_button","_bsButton","_bsCollapse","_bsDropdown","_menu","_divider","_linkTo","_toggle","_bsModal","_dialog","_footer","_header","_close","sessionGlobals","isChart","refreshSettings","getSettings","new_value","observes","isHtml","dataFromCC","ccapi","createUrl","requestMethod","chart_type","getFormattedData","chartComp","usecontainer","image","getImageURI","asCsvArray","csv_data","newrow","getDefaultQuery","param_arr","html","layoutName","datapoint","two_series","showExport","exports","fetch_data","drawChart","filter_arr","container","raw_data","parse_data","draw_single_chart","google_data","drawMultipleCharts","empty","subcontainer","appendTo","chart","colors_arr","linecolors","multiple_series","series","cssClassNames","tableCell","google","visualization","Table","chartArea","height","PieChart","events","addListener","selectedItem","getSelection","BarChart","ColumnChart","OrgChart","Gauge","getNumberOfColumns","colors","vAxes","legend","textStyle","fontSize","left","top","LineChart","view","selectionHandler","DataView","setColumns","draw","animation","startup","hAxis","maxValue","minValue","vAxis","default_type","get_google_chart_data","parse_single_table","arrayToDataTable","dk","drow","len2","m","real_rows","DataTable","assert","addColumn","addRows","setProperty","willDestroyElement","clearChart","redraw","save_pdf","assetsfolder","docDefinition","pageSize","pageOrientation","pageMargins","_getScript","getAssetFolder","getScriptsInOrder","download","gui","userId","external_errors","cust_value","feature","fieldExt","merged_values","oneWay","setDefaultValue","defValue","storeDefaultValue","tmp_value","unit","valuePreview","dropdowns","popoverContents","update","isDestroying","static_content","month_count","new_option","real_options","useAjaxDropdown","gte","mainLayoutName","innerTemplateName","img_src","userlevelInfo","linkToCommunity","linkToCommunityOtta","getBrand","validatorClass","setting","hidden","_templateChanged","rerender","focusOut","focusIn","show","observeError","observeErrors","fieldRoute","map_visible","catch","_back$message","error_message","dateInputClicked","show_map","updatePopoverContents","getRecordArray","names","removeFile","check_id","isJson","item_arr","validator_key_arr","minLength","maxLength","number","birthdate","remote","date_after","digits","phoneNumber","positive","date_not_past","password","positiveNumber","fieldname","otherRows","duplicates","myValues","otherVal","otherValStrings","vStr","forced_pause","check","way","getCheckboxes","toggleProperty","bubbleChange","changeValue","customChangeValue","removeUserSetting","changeValueByDOMEvent","showSignModal","variable","becomeFocused","observeUsername","observeHomecountry","show_generated_password","password_observer","observeValue","checkboxes","options_arr","dropdown_date","_copyButton","DashBoardWidgetsTimecard2Component","TextField","isValueNull","inputtypes","showNativeControl","userAgent","nowDate","onChangeDate","startdate","getMonth","getDate","datepicker","language","autoclose","todayHighlight","clearBtn","disableTouchKeyboard","orientation","didReceiveAttrs","classNames","classNameBindings","dragLeave","dragOver","stopPropagation","dragEnter","drop","msie","setDataString","trident","draggable","dragStart","DropDownSearch","placeholder","showOptions","classes","_options","regexp","RegExp","touched","hasOption","autoclear","optionGroups","didRender","getElementsByTagName","showingRemoved","show_removed_arr","_positionedContainer","_basicDialog","_inPlaceDialog","_liquidDialog","_liquidTetherDialog","_tetherDialog","_emberPopover","_emberPopperTargetingParent","_emberPopper","_component","_emberTether","_emberTooltip","_emberWormhole","msg","translated","scrollTop","fadeOut","_exportSelectorOnselect","_exportSelector","renderOptions","optionid","first","append","prop","getContext","_empty","Image","onload","drawImage","src","fillStyle","fillRect","fieldSettings","report","editModal","dynamicEditParams","historyModal","showLock","canShow","canRemove","canRestore","rowColumns","cols","checkedClass","historyRoute","modified_class","modified_tooltip_format","clicked","openlock","con","form_camelcase","clickRowAction","_geoChart","_googleChart","markers","allMarkers","allCircles","allPaths","zoomLevel","skipPositionUpdate","insertMap","firstobj","lat","lng","styleArray","featureType","elementType","stylers","color","hue","saturation","lightness","geolocation","watchPosition","coords","maps","LatLng","panTo","setZoom","center","zoom","styles","disableDefaultUI","zoomControl","Map","placeMarkerAndPanTo","latLng","addWtMarkers","addProjectMarkers","observeMarkers","clearMarkers","clearCircles","clearPaths","observeProjectMarkers","setMap","objs","plat","platlng","plng","projectmarkers","placeMarkerWithDelay","endCoords","radius","wEndLat","wEndLatLng","wEndLng","wStartLat","wStartLatLng","wStartLng","wtmarkers","accuracy","placeLineWithDelay","delay","icon","marker","anchor","Point","Marker","Animation","DROP","Circle","strokeColor","strokeOpacity","strokeWeight","fillColor","fillOpacity","Polyline","geodesic","updateLocation","addressObserver","geocodeAddress","updateCenterPoint","pos","setCenter","locationObserver","geocoder","latlng","Geocoder","geocode","address","city","address_components","streetViewUrl","_fileUtil","getImageFromUrl","file_data","preview","GeocoderStatus","OK","geometry","notSupported","PromiseProxyMixin","projectCoords","lon","loadText","translation_key","show_help","removeModal","_lineChart","executing","recalculations","clearValueArray","die_signal","alldone","progress","progressStyle","locked_rows","acceptedFieldNames","acceptedFields","hideFields","remove_empty_selection","show_prompt","getChanges","execute_one","heap","changes","originals","popObject","goNext","serialize","recalculate","pushError","modelFields","clearValue","inModal","getback","valueChanged","_maybeInElement","LinkComponent","refreshMenu","role","menus","active_menu","menu_skeleton","menu_variables","variables","show_only_add","keyname","KIOSK","hide_leftmenu","comboreport","customLinks","links","hide_menus","link_param","sidebar","equal","sidr","closeSidr","editmode","invalidateSession","toggleMenuVisibility","saveMenuState","items","forcedArr","parseJSON","msgs","messageboards","tmp","forced","to_users","getNames","readed_users","getUserlevel","findByIds","user_obj","readed","closeAndMarkAsRead","_modalDialog","orderable","initValues","counter","updateValues","reorderButtons","button","btn","overdue","solved","pieHole","pieSliceTextStyle","pieSliceText","_notificationContainer","globals","NotificationMessage","icons","svgs","impersonate","substr","validateKeys","showCurrentpageOverLimit","_pieChart","menu","trackDropdownOpen","plusState","isAddPage","getAddLinks","addLinks","plusLinks","addLinksReversed","toggleplusMenu","closeplusMenu","toggleScroll","elmt","goToSkvLink","_powerCalendarMultiple","_days","_powerCalendarRange","_powerCalendar","_nav","_powerSelectMultipleWithCreate","_powerSelectMultiple","_trigger","_powerSelectWithCreate","_suggestedOption","_powerSelect","_beforeOptions","_noMatchesMessage","_placeholder","_powerSelectGroup","_searchMessage","helptext","projectidObs","processProjectChange","tr","testNeedsOne","tr_mean","mean","trs","calculateMean","getRatingColor","toFixed","mvr","mvr_mean","mvrs","total","event_fields","first_row","hasFields","openSkvLink","toggleMap","removeProjectModal","showMessage","router","promoMessages","checkmessages","closeModal","userlevel","getMessages","prods","new","read_msgs","subtle_msgs","ls_key","ls_sub_key","already_read","short_description","all_read","setItems","_radioButtonInput","_radioButton","timePicker","localeData","serverFormat","rangeText","opens","drops","separator","singleDatePicker","buttonClasses","applyClass","cancelClass","ranges","Today","Yesterday","Last 7 Days","Last 30 Days","This Month","Last Month","removeDropdownOnDestroy","cancelLabel","applyAction","cancelAction","customRangeLabel","momentEndDate","momentStartDate","autoUpdateInput","autoApply","linkedCalendars","dateLimit","alwaysShowCalendars","isEmptyObject","daterangepicker","ev","setStartDate","setEndDate","willDestroy","recordComp","cc","include_old_rows","callCC","queryParamsString","timeout","capi_url","ttapi_url","cc_url","token","exportName","getSalaryVersion","textStatus","jqXHR","downloadFile","file_url","appendChild","_errors","isTimeoutError","getFilename","default_name","given","given_arr","getResponseHeader","pdf_measurement_mixin","formatted_pdf_measurement_mixin","currentForm","export","this_fields","modelsArr","exportMeasurementPdf","createMeasurementPdf","_setLoaderFalse","filterFields","multi","amount","amount_options","period_options","promises","period_name","invoke","closeEditor","setmulti","recordSaved","_scatterChart","selectedIndex","selectedValue","objectAt","SelectList","skvReport","getAppVersion","getVersionNumber","version","skv_report","transition","saveLeftmenuHidings","logout","openLink","openFeedbackModal","sortableGroup","sortableHandle","sortableItem","spinIsLoading","saveButtonText","showDisable","showLoading","checkClass","rowAction","checkable","ch","noRows","_translatedColumns","lockedActions","filteredActions","actionSubString","notEditableActions","chk","defaultChangeStatus","btn_class","showDefaultChangeStatus","defaultChangeStatusAction","columnList","columnKey","subfields","_this$parseColumn2","parseColumn","_column$split2","canLock","showMassedit","getPdfFilters","pdf_filters_body","multisortColumns","columnClicked","sortColumns","currentOrder","checkAll","isNone","checkedActionClicked","mutateRows","mutation","lockRows","_tagInput","users","filterEmployer","previous","userid","nextUser","previousUser","gotoNextUser","gotoPreviousUser","setBreakpointObserver","removeBreakpointObserver","rowClicked","ENV","XToggle","defaultTheme","defaultOffLabel","defaultOnLabel","defaultShowLabels","defaultSize","staticMenus","needs","pdfHeaders","subroutes","showMobile","addLinkList","defaultFirstPages","route","savedCustomization","worktime","branding_needs","whitelist","product_page","blacklist","possibleFirstPages","generalSettings","productsOn","productsOff","secondary_setting","minVal","defaultVal","timetrackerSettings","groupEditable","groupEditableSettings","groupEditableIf","tt3valueOn","tt3valueOff","notGroupEditable","addition","tt3value","secondary_setting_name","taskSettings","drivingLogSettings","measurementSettings","pl_settings","admintoolSettings","saldoSettings","machineSettings","Controller","PushNotification","routing","initapp","welcomeTour","loadTranslations","trialClock","trialLength","useFormAdd","sessionOutDated","isSeasonTheme","modaltype","sideMenus","getMenus","sidemenuCheck","subMenus","getSubMenus","priceList","base","company","full_url","CDN_URL","communityLink","_communityLinkUtil","getCommunityLink","brand","initOnResume","showAppVersionWarning","initRequestNotificator","TRANSFORM_TYPES","jQuery","activeTransforms","ajaxSend","xhr","ajaxComplete","onbeforeunload","onfocus","onresume","addEventListener","tokenWillExpireIn","log","refresh","resumed","_browser","captureException","hide_sidebar","hide_topbar","userImage","img","ret_img","qrcoderead","code","transitionTo","buttonClicked","toggleSidebar","toggleHamburger","closeHamburger","closeBillingModal","transitionToRoute","bubbleTransition","guiAction","abort","reloadApp","removeTourModal","removeFeedbackModal","sendFeedback","sender","resp","closeAndRefresh","controller","changeLanguage","setTrialStatus","copyPartnerId","clipboard","writeText","isLoading","last_error","buttonText","showMySitesView","sublinks","toppath","additionalMainViewClasses","headerText","formName","routeObject","formExists","showBillingTypeSelection","billingtypeObs","test_passed","startTour","trialDaysLeft","billingInfo","trialMode","binfo","canSubscriptionBeCanceled","currentVersionTimeStamp","versions","version_timestamp","days_until_expires","brandLogo","_default","securedPassword","emailErrors","phoneErrors","showEmail","showPhone","showTitle","hideCross","history","saved","fieldtypes_not_to_show","error_types","parseFormErrors","observeExternalErrors","customization","setInitialFilters","submitted","setErrorMessage","setErrorMsg","detail","setOverlapMessage","setValidationMsg","worktimes","absences","validationMessage","custom_projects","stashed_fields","stashed_arr","reloadFields","setFiltersForField","setFilterOptionsByLinkings","reloadFieldName","reloadField","createFilterOptions","employerSelect","specialAction","show_stashed_fields","generalAddAction","FieldValueUpdated","reportmixin","initController","application","filterMode","init_functions","getFilterData","blackListFieldNames","whitelistMores","extra","ref4","ref5","ref6","dates","setAdditionalParamsForModel","additionalParamsForModel","foundItem","moreArr","filterChanged","sideload_field","LocalStorageWrapper","welcomeMessage","firstname","greeting","lastname","get_greeting","currentMobile","customerSettings","isTrackingAllowed","isIOS","askTrackingPermissions","isOtta","logoUrl","googlessourl","GOOGLESSOURL","vismassourl","VISMASSOURL","loginLink","showRegisterLink","showSavedUsername","getSavedUsername","observeIdentification","ls","setSavedUsername","mobile_devices","devices","re","mobile_links","device_identifier","isCordova","modal_title","fail","win","exec","create_account_link","userLanguage","vismassologin","authenticate","clearInit","getProperties","identification","responseJSON","setLowercased","testcaps","IS_MAC","capsLock","shiftKey","platform","originalEvent","initmixin","adddetailsController","productsController","applicationController","doneController","registerController","cdn","userinfo","selectedProducts","nextPageText","showBackButton","page_list","observePages","num","getProducts","continue","addDetailsController","setValidationErrors","hasOwnProperty","callServiceCreation","backFromServer","loginToService","updateAdmintool","partnerid","promocode","vatin","login_user_info_name","login_user_info_phone","login_user_info_email","no_trial_period","validationObject","promo_start","promo_end","setCountry","validations","remote_email","phone","validationstate","hide_all_buttons","modifyDomain","domain","domain_start","set_domain","skipThese","splitted_domain","splitted_email","setOKtoAllFields","hideCancelButton","text1","hide_title","text2","terms_url","termsAndConditions","fi","se","en","setValidationError","autofill","setFilled","validatePassword","clearErrors","observeAmounts","currency","price","product","product_list","getPlaceholder","pricetype","passwd","addWelcomeMessageForAdmin","setSetting","company_name","contact_person","email_content","email_country","email_header","receivers","login","obs_products","_products","pricetype_text","moreInfo","pdf_mixin","emailSent","customizations","configurations","obj2","customizeField","isHidden","temperature","windspeed","humidity","dew_point","getFieldName","afterSave","addPage","routeName","_routerMicrolib","recognizer","linkParam","showApprovalLinkSelection","getTtapiPdf","postParams","pdfExports","addSame","send_email","recipient","emails","export_fields","shownColumns","titles","pdf","GeneralAddController","_debug","Gesture","_tap","_verticalPan","_verticalSwipe","CollectorService","removed","getBestTranslation","testKeys","foundKey","jsonRecord","toJSON","_arr","eachRelationship","relationship","relKind","kind","hasManyArr","hasManyRecord","ErrorHandlerService","_capiError","_networkError","tryToTranslateMessage","strippedMessage","Service","Evented","FormsService","_forms","decamelize","formField","LocalstorageService","createKey","_this$session$current","currentuser","NeedsService","testOne","testUserlevel","testFormPrivilege","testFieldExistance","shortNordic","shortList","phoneList","startsWith","responseType","XMLHttpRequest","lastModifiedDate","onerror","keepAspectRatio","mime","reader","FileReader","dataURLtoBlob","onloadend","finalQuality","finalDownscaleFactor","scaleFactor","ctx","dataurl","filename","bstr","atob","u8arr","Uint8Array","charCodeAt","Blob","matchMedia","matches","device","modalUrl","encodeURIComponent","headerSize","exportParams","pdfContent","additionalHeaders","_iterator6","_step6","tableData","pdfDocGenerator","_pdfContent","getHeaders","putElementsInColumns","statusInfo","signature","widths","border","dateAndPlace","imgLocation","tryToExtractImages","footer","getFooter","tableHeader","bold","bigText","headertext","marginTop","margin","getStream","_maxWidth","sqrt","getBuffer","_ref","buffer","utf8","binaryArray","saveFile","_x7","getBase64","cell","fillingColumn","templateCols","additionalheaders","getLogo","fit","alignment","maxWidth","allImages","_el$firstObject","el","_step5","_iterator5","formsService","children","currentField","collectorService","child","fieldsInCommon","intersect","parentFields","childFields","isDeleted","commonField","saveRecordsInIsDeletedState","checkRowValidation","_internalModel","localeCompare","pdfSumrow","summableFieldTypes","summableFields","dropdownSums","isInteger","sumToFixed","visible","listString","valueIsInList","dewPoint","WEATHER_HISTORY_API","WEATHER_API","gestures","emberUseCapture","removeTracking","useFastPaths","EventDispatcher","useCapture","hhmmss","EUR","minimumFractionDigits","maximumFractionDigits","USD","or","_clearElement","_element","_and","and","apiImage","appVersion","_","hash","versionOnly","hideSha","shaOnly","hideVersion","showExtended","versionExtendedRegExp","versionRegExp","shaRegExp","_append","_assign","_await","_bsContains","bsContains","_bsEq","eq","_call","compute","canAddWorktime","_cancelAll","capitalizeTranslation","textToTranslate","charAt","_chunk","chunk","onlyTypes","_params$0$split2","fuckTheseImageModals","formatter","isImageModal","realField","realFieldForm","formatValue","include","recompute","empty_found","value_arr","subvalue","_compact","compare","isEqual","_compute","consoleLog","_contains","flag","currency_by_country","fieldRecord","date_diff","_dec","dec","devHelper","devModeOn","_drop","now","_momentTimezone","_emberPowerCalendarDayClasses","emberPowerCalendarDayClasses","_emberPowerSelectIsGroup","emberPowerSelectIsGroup","_emberPowerSelectIsSelected","emberPowerSelectIsSelected","_util","EnsureSafeComponentHelper","_entries","_equal","_fileQueue","_filterBy","_filter","_findBy","_flatten","flatten","_formatDate","negative","omitUnit","leadingZeros","fullHours","_formatMessage","showLeadingZeros","hideIcon","_formatNumber","formatOption","_formatRelative","_formatTime","_fromEntries","_groupBy","_gt","_gte","_hasNext","hasNext","hasPermission","check_levels","_hasPrevious","hasPrevious","_hrefTo","hrefTo","_ignoreChildren","ignoreChildren","inArray","_inc","inc","recordValue","lastIndexOf","_intersect","_invoke","_isAfter","_isArray","_isBefore","_isBetween","_isClipboardSupported","isClipboardSupported","isDuplicate","duplicateValues","_isEmpty","leftSide","rightSide","_isEqual","_isFulfilled","isLastElement","isNth","nth","_isPending","_isRejected","_isSameOrAfter","_isSameOrBefore","_isSame","isSunday","_date$","toLocaleDateString","weekday","isWeekend","isoWeekday","_join","_jsonStringify","jsonStringify","_keys","_lt","lt","_lte","lte","_mapBy","_map","_momentAdd","_momentCalendar","_momentDiff","_momentDuration","_momentFormat","_momentFromNow","_momentFrom","_momentSubtract","_momentToDate","_momentToNow","_momentTo","_unix","_need","_next","_noop","noop","_notEqual","notEq","_not","not","_now","NaN","_objectAt","_onDocument","_onWindow","_on","_optional","optional","_or","_perform","_pick","pick","_pipeAction","_pipe","pipe","_powerCalendarFormatDate","powerCalendarFormatDate","_previous","getProductByName","_promiseAll","_promiseHash","_promiseRejectedReason","getWithDefault","PurifyDOMHelper","_queue","randomizedColor","_range","_reduce","_rejectBy","_repeat","repeat","_reverse","formfield","shortFormat","showJson","showLinefeeds","_domPurify","sanitize","_shuffle","shuffle","singularize","_slice","_sortBy","sortIcon","sortClass","escaped","Handlebars","Utils","escapeExpression","_stringLength","stringLength","stringToArray","sumField","sumDropdownAndCheckbox","getInlineAsset","assetId","require","svgJar","svgAttrs","_makeSvg","_makeHelper","_t","_take","_task","_toggleAction","toggle","TranslateColumnHelper","_toArray","_union","inline","randomizeColor","fullname","getIcon","_utc","_values","_without","without","_xor","xor","initialize","_initializerFactory","StyleNamespacingExtras","app","register","ContainerDebugAdapter","_csv","timestamp","BUILD_TIMESTAMP","instantiate","singleton","_emberConcurrency","_setup","setupContainer","registry","baseURL","Configuration","load","_setupSession","_setupSessionService","_setupSessionRestoration","_excel","exportApplicationGlobal","theGlobal","global","globalName","GM_KEY","Config","_config$metricsAdapte","metricsAdapters","_config$environment","_userAgent","_analytics","_capi","_cdn","_collectorService","_collector","_errorHandler","_evented","_initapp","_needs","_sessionhelper","_surveys","_ttapi","initializeStoreService","instance","applicationInstance","FastBoot","hrefToClickHandler","closest","parentElement","closestLink","HrefTo","maybeHandle","removeEventListener","_routeStyles","pluralForm","rtl","general.offline","general.trynow","menu.users","BaseAdapter","toStringExtension","FirebasePlugin","logEvent","trackPage","setScreenName","Mixin","getAviData","getTable","len3","getTableFullFormat","col_ind","field_ind","tmpcell","getValidationRules","executeValidations","scope","getMessage","setError","validateThese","outsideClickHandler","onClickElsewhere","clickHandler","isDisabled","BaseValidator","defaultValidations","username_free","collectorFields","getFieldsToValidate","convertValidations","unique","multipleHours","hoursAndMinutes","baseExport","blobObj","csvString","csv_str","mapped_row","skip_headers","LocalFileSystem","requestFileSystem","PERSISTENT","fileSystem","root","getFile","entry","createWriter","writer","onwrite","evt","plugins","fileOpener2","toURL","msSaveOrOpenBlob","msSaveBlob","display","createMultiCsv","createMultiTableCsv","csv_multitable","mainHeader","exportFile","fullFileName","_exportLocalFile","_createExportLink","skip_params","filteredModel","filtered","_filterThese","all_ok","moreTestParam","testValue","remoteType","_filterModelTest","splitted_date","translatedName","camefrom","obsCameform","afterModel","init_already_run","_init_functions","setupController","staticMenu","staticMenuItems","dashboard","savedHideLeftMenus","translate","getOwnForms","needsOfArray","current_menu","normalizedRoute","matchRoutes","isMainMenuRoute","isSomeOfSubroutes","asAddingLinks","short_key","parseMeasurementName","access","totalPdfImages","pdf_content","_createDoc","spliced","headerRows","getWidths","createPdfTableElementRows","img_rows","row_ind","sub_ind","subrow","tables","text_rows","tmp_table","insertPageBreak","dontBreakRows","pageBreak","createPdfHeaderElement","getImageUriRotated","rotateImages","dataUrl","degrees","clearRect","rotate","PI","setAttribute","getImageUri","formatImagesToPdf","imgs","imgArr","formatImageToPdf","imageSize","imageObj","imageWidth","pdf_max_width","resize_factor","formatCollectorFieldsToPdfArray","return_fields","add_titles","whatAboutImages","tmpArr","incrementProperty","imgData","imgRow","imgTable","_formatDatabaseArray","_formatDatabaseCell","resolved_values","formatWeatherForPDF","exportCollectorPdf","localURL","createPdfListElements","postAddingMethods","adding_personalliggareandid06","main","emps","emp_id","adding_fivaldi_salary_csv","adding_nova_salary_csv","adding_fivaldi_salary_soap","adding_setting_absences","abcensetypes","activate","scrollTo","removeThese","removeObjects","saveParentRecord","arrayToTableFormat","row_data","row_index","extra_cols","extra_fields","extra_return_fields","formObjects","notice_ids","notices","translated_extra_cols","notice_data","row_array","notice","images","getHeaderLogo","currentModelNum","modelCount","lastModel","createPdfPage","tableMainHeader","tableSideHeader","bigTextOK","bigTextWarning","bigTextNotOk","smallTextOK","smallTextWarning","smallTextNotOk","minusArr","plusArr","uniqueFieldname","uniq","formatPdfPage","createNoticesTable","colSpan","createNoticeImages","getImageBase64","createSignaturesTable","signs","ind","sign_name","signatures","stack","createMainTable","dataArr","ext_base_arr","minus","partialIndex","plus","totalMin","totalPlus","partialIndexColor","ratingColor","rating","createMeasurementSumTable","addEmptySpace","createAveragePercentNumber","average","ratings","notice_images","createHeaders","headlineLevel","right_header","_styleNamespacingExtras","createWorksitediaryPdf","addCoverPage","addDiaryreportPages","getMinAndMaxDates","min","max","addDiaryReportPage","fetchNeededEventsFromBackend","getDiaryreportEvents","getDiaryreportMaterials","getDiaryreportTable","addDiaryreportBasicInfoSwe","addDiaryreportBasicInfo","getDiaryreportEventsOneType","getDiaryReportEvent","freetext","table_body","col1","col2","header_elems","texts","handleEventImage","imagedata","orders","getDiaryreportMaterial","order_elems","elem","subfield","translateField","boxedTable","hLineWidth","node","vLineWidth","hLineColor","vLineColor","Model","toggled","row_info","attrs","class_type","company_vatin","company_contact_person","company_phone","company_email","encoding","linebreak","quotes","integrationtype","absencetypes","onerowabsences","templateId","orderBy","absencesAfterWorktimes","Inflector","inflector","irregular","mobile","right","formSettings","editable","nro","schemaid","translatedType","disable","isLocked","dirtySettings","FormReportTemplateModel","_model","multirowlink","creatorid","last_logged","privilege_openlock","toid","owners","_didInsert","_didUpdate","_focusTrap","_recognizeGesture","_sortableGroup","_sortableHandle","_sortableItem","_style","_willDestroy","skip","modelAlias","Route","wtService","beforeModel","unlessOpenWt","showOpenWtError","retFields","fetchmultiday","fetchsingleday","_emberCopy","copy","fetchAbsenceDaysForMultiday","fecthWorkhoursForSingleDay","_fetchAbsenceDaysForMultiday","abcensesAlias","multipleDays","newRoute","GeneralAddRoute","controllerName","controllerFor","group","employer","superior","unFilteredModel","calendarRows","mapTeamData","mapAbsences","openAbsenceModal","enddate","openEditor","perDate","abcenses","_objectSpread","moment_date","new_date","refreshModel","userParams","allParams","queryString","showTeamCalendar","fetchTeamAbsences","userPromise","fetchAbsences","usersPromise","userIds","fetchBatch","allAbsences","startdate_enddate","batch","numberOfSeasons","userDetails","getUserDetails","showHistoryColumns","historyType","historyRowActions","showHolidayPayList","toggleAllSeasons","toggledSeasons","startYear","showDetailsForSeason","filterHistory","changeType","historyRowAction","_this4$removeRecord","_this4$editRecord","filteredHistoryData","removeRecord","editRecord","historyFilters","historydata","_historyData","historyData","holidayPays","getAbsenceRows","getHolidayPays","el1","el2","sortdate","absenceArr","absenceSeasonArray","abcensetype[usesholiday]","season","description","deducts","resFlag","newSeasons","years","rowR","_rowR$users$","_row$users$","holidayYear","historyrow","_Ember$get","oldArr","currentYear","currentArr","currentDays","oldDays","bookedOldDays","bookedCurrentDays","totalHolidays","totals","totalOldHolidays","totalCurrentHolidays","oldrow","currentRow","totals1","totals2","bookedSum1","bookedSum2","isHolidayReport","thisseason","lastseason","selectedYear","ignoreWhereNoDaysLeft","holidays","dateStart","nextHolidaySeason","asc","addHolidayPay","editHolidayPay","rec","removeHolidayPay","setSelectedYear","holidayPayRecord","deductsValue","checkedRows","selectedYears","importYear","selectedDelimiter","delimiterOptions","holidaysAlias","autoAssumedHolidays","showRecalculateButton","importField","usersWithHolidays","holiday","hideEmptyOnes","daysLeft","holidaySeasonChangeDate","isSameOrAfter","finalRet","perPage","recalculateHolidays","responses","setSelectedYears","editYear","currentHolidayRecord","openImportDialog","executeImport","import_file","has_header","delimiter","setFile","closeImportDialog","GeneralReportController","dateSelector","filter_fields","wagePeriods","bindto","rowSettings","massedit","sortByColumn","closeEditModal","GeneralReportRoute","excel","fetchBills","ADMINTOOLURL","bill","finally","AuthenticatedRouteMixin","resetController","isExiting","SettingsBillingBillCompComponent","getBillRows","customerid","bills","loading","products_fi","products_se","MAIN_TTAPI","setProducts","modelFor","defaultValues","init_stuff","customer","tcs","pcs","customerproduct","rfid_product","priceTypes","refreshListAndCloseModal","customerless_devices","save_and_add_bill","show_add_popup","select_device","add_device","addNewBill","changeCampaign","campaign","camp","edit_device","checkBilling","billtype","searchChanged","rcbillColumns","fixedlimitColumns","customercampaignColumns","customercampaign","fixedprice","fixedlimit","rcbill","tools","dirtyCustomer","customerSaving","price_disabled","calculated_from_promo","loginUserInfoId","loadingFixedPrices","fp","getAdminUsers","admins","getBillingStarted","billingStarted","salesmen","getCustomerProducts","customerProductsAll","customerProducts","getCampaigns","campaigns","getProductCampaigns","pCampaigns","currentCamp","getCustomersProductCampaigns","cpCampaigns","prodCamps","cp","cProd","def_camp","cmp","campaignTypes","allFixedLimits","fixedLimits","getAllProducts","camps","statuslist","contractTermOptions","billinginfo","recurringBillRows","billRows","tt3billing","tt3billRows","hasIntegrations","toggleFixedPrice","changedFixedPrice","saveFixedPrice","changeMainCampaign","found_camp","new_camp","changeContractTerm","clearCache","TT4CAPIURL","saveCampaigns","saveCustomer","changedSalesman","salesman","ENTRY_URL","forceBillingPopup","addRCBill","addFixedLimit","editBillinginfo","billingHash","btoa","tt3bills","oldMonths","showOldBills","searchObserver","doSearch","tt3service","tt3tott4","execute","report_saved_to","parent","rawoutput","ttapi2","imei","notInUse","registeredTo","commands","imeiOk","REALTTAPI","removeNow","notinuse","tagid","datetime","logs","_resolvePromise","stamps","parnterids","stamp","sendStamp","_showMessage","setRightType","cancelClicked","modalRecordSaved","returnField","taxnumber","_modal","storeRecord","recordCompComponent","addModal","currentHolidays","willInsertElement","hideMobileHeader","didDestroyElement","cleaningDone","showEmailModal","sendEmail","currentValues","updateMessage","tasks","filtered_tasks","record_id","formatted_hours","ori_site","ori_user","filterComp","_filters","types","getFilterObject","CollectorFieldCompComponent","currentValue","validated","_class","__class","_field","initValue","subFields","subForm","_useForcedProjectField","fieldComponent","observeValidationState","validateField","setModelAndValidate","wait","def","setModel","setComponent","reopenClass","positionalParams","CollectorFieldContainerComponent","fieldLabel","firstError","isMandatory","coordsString","checkSetting","no_back_forth","GetLocationByLatLng","_setAddress","saveSetting","full_address","GetLocationByAddress","_saveSettings","checkboxChanged","settingstr","checkboxChangedBackForth","settingObj","split1","split2","_successNotification","date_interval_setting","showSaveButton","configs","old_value","validateInput","servicehandler","fieldsToBeRemoved","salarytypes","stype","_overtime_types","daily_overtime","in_use","_50start","_100start","rule_creator","rule_parser","weekly_overtime","_week50start","_week100start","extrahours_overtime","_extrahours_start","_extrahours_end","time_based","_evening_start","_evening_end","_night_start","_night_end","do_not_calculate_if_overtime","_evening_checked","calculate_compensations_always","_calculate_compensations_always","_night_checked","time_based_se","alwaysOn","overtime_splitted","overtime_types","rejectBy","setRules","parseIfString","getGeneralRules","mixed","search_rule","stypes","types_arr","turnOn","setValuesForOvertimeType","getCustomFields","getCustomDayFields","daysArr","start_day","end_day","paths","paths_splitted","value_name","turnOff","updateNeededProducts","needed_products","unneeded_products","needed_product","addProduct","unneeded_product","removeProduct","searchFieldWithName","fieldKeys","onlyOneRuleForField","checkValues","value1","value2","addTimeBased","addDayBased","removeCustomTimeBased","removeCustomDayBased","createAndSaveRules","overtime_type","wt","wtypes","wtypesString","sameField","computerizeHumanInput","saveGeneralSettings","manipulateService","getSetting","setting_params","settingKey","projectSetting","projectField","changeProject","setting_default","use_missing_hours","utctime","skip_worktimegroups","minimum","maximum","dailymaximum","saldo_absence_id","auto_cut","split_basichours","isFiService","dirty","worktimegroupField","showAddSaldoAbsenceButton","createSaldoAbsence","recalculateOldSaldos","between","changeWorktimegroups","old_startdate","recalculationNeeded","changeSaldotype","terms","getTermsIndex","termsChanged","saveTermsIndex","settingSaved","second_time","field1Translation","field2Translation","collectorField","addModelObs","modelfield","updateValueFromModel","addObserver","modelChanged","modelfieldid","textInput","dropdownType","use_normal_dropdown_limit","ajax_search_limit","localStorage_size_limit","useBrowsersInternalDropdown","defaultValueForNormalDropdown","initAliases","initilizeDropdown","getSettingsFromLs","fetchFromDatabase","fetchRecordById","sendChange","use","setUseLocalStorage","loadMore","convertOptions","row_status","addFilterOptionsToParams","getText","getOptionsFromLocalStorage","setState","normalDropdownOptions","normalDropdownOptionsWithLastused","lastused","optionsForSearcheableDropdown","optionsForSearcheableDropdownWithLastused","ObserveSearch","obsValue","loadedValuesBy","modifyDatabaseItems","query_field","query_key","user_selected","add_option","_router","currentPath","modelfieldtext","option_id","option_text","orig_value","getRealOptionText","textArr","parsedid","pushToStore","saveSettingsToLs","addToLastused","used","removeFromLastUsed","setSessionRemoved","state","show_removed","clearOptions","touchMove","touchStart","touchEnd","closeOptions","normalSelect","toggleRemoved","fetchProjects","forced_params","projLoc","withinAcceptedDistance","normal_projects","parentform","show_fields","showFields","createAddRow","addRow","helperRow","loadValues","databaseField","addValue","baseField","updateDate","datevalue","timevalue","changeTime","tmpValue","fieldoptions","_Ember$Component$exte","is_image_file","base64imageCache","testQueue","fileObj","policyurl","_file","resizeImageToThumbnail","resizeMainImage","EncodingType","JPEG","Google","calcDist","user_address","calculateProjectDist","projectid","office_dist","project_address","project_dist","hasAddressSetting","calculateAddressSettingDist","routeDistanceAndTime","dist","finaldist","finaltime","showDistanceError","shortestFound","errorMsg","error_arr","fetchLocation","enableHighAccuracy","maximumAge","proj_loc","calculateDistance","errorKey","PERMISSION_DENIED","POSITION_UNAVAILABLE","TIMEOUT","removeWatch","clearWatch","locObs","projectObserver","distanceObs","loc1","loc2","loc1_latlng","loc1_parsed","loc2_latlng","loc2_parsed","spherical","computeDistanceBetween","project_loc","present_loc","dist_txt","pres_latlng","pres_loc","proj_latlng","_hours","_minutes","valarr","minute_options","hour_options","setHours","setMins","_labels","removeLabel","addLabel","selectedMonth","montharr","CollectorFieldsDropdownFieldComponent","selected_options","selected_option_ids","sel_ids","create_id_array","unselected_options","deselect","select_all","all_options","show_generated","changeFieldType","isopen","subformfields","_performSearch","_isDisabled","changeId","onchange","showOrHideCreate","createGroups","optionsUpdated","_createQueryParams","clearFieldIfResolvesEmpty","_this$model","_this$model2","offsetWidth","valueObserver","signature_pad","sig","signatureSrc","didinsert","addTag","removeTagAtIndex","queryForUser","tagListChanged","timefy","onInit","_record","_isRunning","_isStopped","giveFormattedDifference","_ticker","toggleButton","ms","asHours","onLabel","offLabel","fallbackOnLabel","getLocale","fallbackOffLabel","translations","gpsWeather","fetchByGPS","CollectorFieldsWorkPermitAttachmentModalComponent","attachments","initAttachments","valid_until","podNames","filePreviewCache","name_on_s3","formFields","allowedFields","permitTypeFields","permitType","viewOnly","shouldAbortCancel","onClose","downloadUrl","cache","URL","createObjectURL","removeChild","revokeObjectURL","_error$message","androidFile","captureImage","presignedUrls","workpermitid","reasoning","addFilePreviewToCache","every","permitTypes","initRecords","no_certificate_required","ori_employer","work_permit_type","noCertificateRequired","isLoadingRecords","loadRecords","Boolean","_this$user","workpermit_owner","_this$Collector","_this$Collector$copyR","editingOriginal","workingCopy","_record$attachments","id_type","document_number","editingType","createNewRecord","_this$workingCopy$unl","_this$workingCopy","_this$workingCopy$unl2","_this$workingCopy2","applyWorkingCopyChanges","markAsModified","hasUnsavedChanges","vastuuGroupId","isPrivilegedUser","shouldDisplayViewOnly","startEdit","isModalOpen","isConfirmModalOpen","cancelEdit","doneEdit","makeWorkingCopy","documents","doc","attachment","s3_object","_get2","discardUnsavedAttachments","_this$workingCopy$unl3","_this$workingCopy3","ConfirmModalComponent","getReasonFromLs","saveReasonToLs","onConfirm","OldReason","recordID","reasonObj","toISOString","VgButtonComponent","loadEmployer","_this$args$model","_this$args$model2","employerData","employerId","missing","emp_id_type","emp_homecountry","disabledReasonKeys","_this$args$existingRe","_this$args$existingRe2","_this$employer","_this$employer2","_this$user2","_response$documents","existingAttachments","successMessage","noDocumentsMessage","noNewDocumentsMessage","errorMessage","_e$payload","_e$payload$error","_errorMessage","_errorMessage2","existingRecords","org_id","org_id_country","homecountry","person_id","person_id_type","person_id_country","existing_attachments","onSuccess","refreshValues","sessionFilters","filter_field","itemArr","rangesPromise","use_index","periods","setDropdownFilterings","changeInField","setFilter","saveTheChildren","onlyArr","conditionalHides","setRecordDefaults","t3","t4","t5","setLsDefaults","setConditionalHides","addNew","fieldChanged","defaults","depends","fieldNameClass","fieldForFieldContainer","setFieldValue","formtype","fetchAbsenceDays","selectedComponent","customForms","abcense","wage_period","diary","worktask","worksitediary","presence","site_safety_observation","tooltype","preserveRecord","currentRouteName","retBanks","bank","CollectorFormAddFormsDiaryComponent","setWorkdayStrength","rowsForDate","strength","getWorkdayStrength","workforce_foremen","workforce_subcontractor","workforce_workers","presences","maincontractorId","foremen","subStrength","foremenStrength","workerStrength","uniqBy","maincontractor","CollectorFormAddFormsEmployerComponent","createEmployerRecord","businessIDError","_businessid_validation","validateBusinessId","hetuvalidation","empId","vastuuGroup","getReliablePartnerStatus","getFoundStatusMessage","getNotFoundStatusMessage","getFailedMessage","tvText","showInviteModal","showTvModal","emp_country","tv_status","messageClass","showTvReport","statusDescription","showInviteButton","loadingTvReport","getReliablePartnerHtmlreport","TvReport","CollectorFormAddFormsOrientationComponent","CollectorFormAddFormsPresenceComponent","presence_project","CollectorFormAddFormsProjectComponent","allProjects","getAllProjects","createProjectRecord","getDefaults","_defaults","biggestNumber","projectNumbers","maxNumber","CollectorFormAddFormsSiteSafetyObservationComponent","CollectorFormAddTooltypeComponent","generatePassword","workPermitUtils","getDefaultWorkPermitType","addUser","userInfo","addDefaults","generateUsername","getEmployerSuffix","t6","emp_relation","chars","generated_password","rnum","generatedName","employerSuffix","found_employers","not_found_employers","empArr","no_employers","userAlreadyExists","messageStatus","noEmployer","activeUser","fetchTax","_message","checkIfUserExists","id-country","id-type","id-value","handleRequestMessage","createUser","employers","employment_periods","address_in_home_country","post_code","post_area","contract_type","workpass","documentation_of_sent_employee","gov_org_ids","gov_org_id","addEmployer","emp_obj","emp","emp_firstname","employers_contact_person","contact_first_name","emp_lastname","contact_last_name","emp_phone","contact_phone","emp_email","contact_email","emp_address","emp_zip","emp_city","addUserToGroup","_post","setUserTaxnumber","setUserData","user_record","given_names","surnames","date_of_birth","gov_ids","gov_id","residences","getImage","setUserInfo","accessError","not_found","changeWorktimeGroup","saved_records","CollectorFormAddFormsWorksitediaryComponent","CollectorFormAddFormsWorktaskComponent","messageBox","est_hours","hoursAdding","pauseField","getStarttime","affects_overtime","currentMySite","endtimeField","_this$store$peekAll","sendWorktimeAdded","alertMissingOrientation","newRecords","descriptionSpecialValidation","storeEndtime","isSame","lastObject","CollectorFormAddFormsWorktimegroupChangeComponent","checkIfCanEdit","isSameOrBefore","destination","validationErrors","CollectorFormAddFormsWorktimegroupChangeHelpComponent","help","getHelp","Notification","requestPermission","helpText","CollectorFormAddFormsWorktimegroupChangePage3Component","worktypes","getWorktimegroupWorktypes","destinationWorktypes","getDestinationWorktypes","shouldShowMappings","getShouldShowMappings","mappedWorktypes","worktype","fieldsByName","closed","showHelp","showActionList","closeClicked","showHistory","showEdit","showRemove","showCopy","rowIsRemoved","showRestore","hiddenColumns","columnDropped","moveCol","hideColumn","showColumn","disabledClass","toggleInlineEdit","exportCsv","openExportModal","saveRows","transitionToMassedit","mappedIds","filtermodel","sortKey","updateOnDidReceiveAttrs","openGpsMap","updateSorts","filterDefaultValues","convertFilterToDefaultValues","_arguments","createExcel","handleExportActions","decrementProperty","closeShowChangeStatusForAllPages","_arguments2","_this18","_arguments3","_this19","_this20","_this21","_this22","_this23","_this24","_this25","_this26","_this27","dasherize","_this28","_ref4","_this29","allSelected","_columns","tableWidthConstraint","idsStr","_sumrowUtil","toggleSelectAll","custom_field","famoco","timeclean","getRows","formatted_data","crow","formatted_rows","parser","user_agent","user_agent_obj","UAParser","setUA","getResult","browser","engine","os","vendor","splittedMessage","old","toggleChanges","splittedUrl","whiteListUrls","getLinker","getLinks","linkIds","link_records","projField","store_records","pushPayload","linkto","showButtons","orig","removeAllLinks","link_form","recs","addLink","removeLink","saveLinks","projectChanged","link_ids","saved_links","schema_map_to_type","schema_map_to_exttype","nfcIsOn","rfid_device_id","raw_forms","hide_these_types","raw_fields","raw_form","skip_externals","tmp_types","buttonTypeChanged","buttonRow","raw_field","updateModel","buttonValueChanged","row_setting","actionBubblerA","actionBubblerB","actionBubblerC","actionBubblerD","actionBubblerE","actionBubblerF","changeButtonValueA","changeButtonValueB","changeButtonValueC","changeButtonValueD","changeButtonValueE","changeButtonValueF","projectSelected","buttons","letter","saveTheChildrenRawErrors","modalScroller","_mapFields","addNeededObservers","getFieldsToObserve","observe_field","conditions","setFieldVisibility","condition_array","areTheseMet","recordSetter","willClearRender","removeObserver","scrollIfErrors","scrollVertical","_fields","checked_rows","hide_columns","imagePromises","summableTypes","groupableColumnList","datefieldname","use_default_even_without_index","_this$getProperties","transformQuery","special_queryParams","getSideload","add_limits","pArr","newParams","formatData","pdf_formatted_data","csv_formatted_data","xls_formatted_data","calendar_formatted_data","asXlsArray","pdf_data_with_column_names","innerPromiseArray","resolved_pdf_arr","pdfRow","asPdfElementFull","pdfRows","isFulfilled","unformatted_row","date_is_set","formObj","formattedImages","formatted_cell","_this6$parseColumn2","database_value","imgPromise","getStatusChangedInfo","formatted_sumRow","formatSumRow","pdf_formatted_sumRow","field_arr","hide_columns_arr","show_columns_arr","_this$pdfSettings","pdfSettings","ret_arr","_this$getProperties2","subitem","_item$split2","_this$parseColumn4","_column$split4","formatSubfield","dateRange","rowId","statusrow","statusInfoRows","deleteChecked","restoreChecked","export_pdf_full","columnClickedMulti","colArr","sortCol","removeFieldFromOrder","rowHistory","removeHistoryModal","statusField","statusUtilRes","statusUtil","accepted","rejected","checkRow","parent_form","parent_rowid","parent_field","reloadChilds","modalHeader","main_columns","all_columns","typeIsArray","preformatted","addOptions","summableAbsenceFields","abFields","absencesByType","typeId","daySum","hideColumnFields","skipSumFields","sendFilterChange","worktimeColumns","absenceColumns","sendto","nameField","error_negative","showCustomField","showNameField","sendto_options","roles","_getProjectOwnerRole","alarmValue","_setAlarms","alarmOptions","alarm","before","saveAlarm","fieldTranslation","_delete","send_to","setDays","validateAndSetCustomDays","sendTo","projectFieldName","AppVersionDialogComponent","openModal","blocks","toDate","_setData","end_field","day_index","showRemoveIcon","css","hideRemoveIcon","boldArray","_Ember$get$split2","getRangeOfDates","fixedCellWidths","toDay","_dates","startDateField","endDateField","colorString","colorFields","hasRows","notEmpty","blockWidth","dayCount","widthInPixels","isFirst","onAdd","editRow","onEdit","isTopMenu","clickelsewhere","addableOptions","toggleOptions","addRecord","isToday","utcday","dateString","_dateString$split2","weekdayNames","_extractDates","startDay","endDay","weekNumbers","isoWeek","weekArrays","weekArray","_day","shift","formattedWeekArrays","weekObject","lastWeekNumber","weekNumber","fullScreen","toggleCustomFullScreen","togglefullScreen","toggleHideWeekend","CcbuttonComponent","integrations","running","attributes.state","started","ccbutton","_field$split2","blocking","rowHeap","fullHeapSize","numericalProgress","setStatusForAll","changeData","reqParams","array_row_ids","handled","row_ids","insert_history","changeStatusForAll","ClockcardComponent","cleanNewWorktimes","siteTooFar","getWorktimes","setMySite","_this$newWorktime","_this$openWorktime","newWorktime","openWorktime","validateFields","hide_field_on_clockcard_start","_this$worktimes$filte","seconds","_this$openWorktime2","pausesWithoutEnd","openPause","neverShow","neverShowType","neverShowFeature","hasDesiredFeature","show_field_on_clockcard_start","_this$newWorktime2","getLocation","checkIfSiteTooFar","updateWorktimes","saveAction","toStringAsyncHTML","pauseParams","pauseRecord","enforce_forced","_args5","overRideEditModalTitle","startNext","oldWorktime","createNewWorktime","closeNext","openNext","showNext","nextContainerOnTop","descriptionTooLong","setDefaultPause","force","_worktime$multipause","lockedLatitude","lockedLongitude","lockedAccuracy","_this$openWorktime3","_this$newWorktime3","positionFromWatch","ClockcardEndComponent","showWorktimeRoundedPopup","worktimeRoundedInfoText","ClockCardComponent","formOnchange","showAdminMode","refreshNeeded","valid","CustomExportComponent","latin1","lf","lfcr","showIntegration","loadExportList","createTemplateList","defaultsForCustomExport","absenceTypes","getAbsenceTypes","createColumnList","firstSave","isSaving","checkValidations","direction","originalIndex","dateFormatList","filterPreview","previewHasBeenLoaded","updatePreview","isLoadingPreview","fetchExport","isLoadingFile","periodDate","existing","somethingIsMissing","templateList","dateformat","static","whiteListTypes","absenceWhiteListTypes","blackListFields","dateField","getVersion","debug","debugShowIntegration","data-name","widgetPath","helpBubbleText","betaValue","removeMe","onremove","helpClicked","property","draggedWidgetType","itemType","_event$target$getBoun","getBoundingClientRect","y","pageY","scrollY","userSettings","widgets","wide","hidden_widgets","allWidgets","shownWidgets","widget_columns","isMobileOrEditingMobile","widget","dashboardMobile","mapWidgetsAndFilter","default_widgets","rawList","variation","hideList","visibleWidgets","narrow_widgets","slice_from","dashboardView","autorefresh","doTheseBeforeRender","loadDashboard","projectFilterChange","dashboardProjectChanged","toggleEdit","editingDashboard","resetSidebar","widgetStrings","moveWidgets","saveDashboard","widgetDropped","dropTargetName","dropWidgetName","dropPlacement","changeView","refreshDebounce","moveWidget","currentWidget","currentIndex","widgetNames","disableScrolling","enableScrolling","addWidget","hasSaldos","setUserSettings","onResumed","getOntime","dashboards","storeDashboards","storeBoard","move","moveAt","lsWidgets","mobileLsWidgets","mapWidgetsToString","indexMove","x","scrollX","onscroll","translated_headers","GanttComponent","_this$args$range$spli2","containerWidth","getElementsByClassName","RowCellComponent","nonFixedMode","skeletonRows","firstLoad","didUpdateAttrs","getAbsences","onStoreEvent","absencetype","abcensetype","AbsenteesComponent","getFilter","hasMore","formattedData","setDateRanges","fetchAllAbsencesInBatches","formatAbsences","ganttData","absencesByuser","setFilterToLS","lsRange","getDateRanges","LSFilter","formatganttData","showOkAlso","tableLayout","missingWorktimesPerUser","anomalities","missing_dates","saldo","taxman_errors","loadAnomalities","setEditableSetting","closeCurrentSetting","changeLayout","gotoAnomality","anomality","query_params","saveSettings","saveSettingsAndReloadAnomalities","closeSettings","toggleCheckAll","toggleCheckRow","missingWorktimes","isEvery","sendNotificationToCheckedUsers","sendBy","getSendBySetting","getNoticeContent","sendNotice","showSettings","messageid","userids","hasSettings","isChecked","pass_end:pass_end","getDaterange","hideUserIds","selectedDateRange","unapproved_worktimes","ending_passes","missing_worktimes","recordShowOk","anomalitiesSettings","_params$project","own_settings","unSelectedUsers","showAddModal","over","under","saldos","toHoursAndMinutes","minutesLeft","_common","storeValue","settingsComponent","currentSetting","setCurrentSetting","sendMethods","showUsers","hiddenUsers","loadUsers","selectUser","deselectUser","loadProjects","projectSums","errorsByProject","addProtocol","totalDaysLeft","getHolidays","holidaySeason","isStartOfYear","totalDays","newGetHolidays","getMultiSeasonHolidays","daysleft","allDays","availableHolidayPays","yearsWithDaysLeft","siteCards","getMySites","mysites","addMysitesToCards","canWeUseThisWidget","getOpenWorktime","notifySiteCards","setRemovableIndexNull","onResumeEvent","mySitesArr","openWorktimes","proj","confirmPage","pausePage","commentPage","selectNew","isDashed","skipForcedGPS","worktimeOn","startDateAndTime","startWork","mysite","createWorktime","setEndtime","endWork","showPausePage","addPauseToWorktime","showCommentPage","addCommentToWorktime","addMySite","siteCardAlreadyAdded","removeMySite","site","cardData","WorkingNowComponent","subtle_key","selectedType","getFiltersFromLS","getUnreadMessages","markMessageAsRead","messageModalcontent","showMessageModal","setFiltersToLS","messages","formatMessageData","badgeText","subject","unReadMessages","LSfilters","readMessages","formattedSalaryData","total_hours","sortedArr","getSalarytypes","salaryData","calculateTotalHours","salarytype","accrual","percentA","percentB","userField","useSalarytypeV2","getPeriods","getSalaryData","_this6$date","allowEmptySalaryCodes","temptypes","getFieldType","salary","typeName","control","handleComp","dropdown","worktimeHours","getSaldoData","userSaldo","DashBoardWidgetsTimecardComponent","alwaysVisible","getLockedPosition","TvStatusComponent","pieData","getPieData","pieOptions","_response$employers","statusCounts","chartHeader","chartData","statuses","normalizedStatus","setHeaders","_this$data","in","workweek","capitalize","hoursToday","hourSum","loadWorktimeData","notifySaved","showWorktimeModal","minDate","getFullYear","maxDate","startOfMonth","endOfMonth","modalDate","navMonth","formattedDate","setAllData","changeCenter","changeMonth","newCenter","setMonth","selectDate","dayToBeCopied","getSpecialDays","getweekNumbersForMonth","absence","_absence$abcensetype","dayamount","exporttype","workdays","firstOfMonth","lastOfMonth","lastDate","weeksInMonth","weeks","mySites","linked_fields","show_deleted","salaryTypeFields","valueObs","filter_ids","promise_arr","selected_rows","filter_id","sel_opt","findFormRelations","rowobj","currentMySites","loadFromLocalStorage","projectFields","other_filter","real_field","mySitesPromise","findMysites","getEach","getOptionsWithSubheaders","optionsPromise","randomId","hide_deleted","orderedOptions","filterOptionsArr","findRows","showIEPlaceholder","selectRow","searchRows","loader","closeDropdown","preventEnter","screenLimit","maximumDateIntervalInYears","datesArr","innerWidth","calendarWeeks","weekStart","startDateElement","endDateElement","changeDates","excludedField","setWagePeriods","formattedPeriods","currentPeriod","dateToday","periodEndDate","periodStartDate","lastPeriod","periodDates","setPeriod","today","dayOfWeek","lastMonday","lastWeeksMonday","color2","strokeWidth","styleStr","styleFill","styleFillColor2","viewBox","errorService","hittingWorktimes","hittingAbsences","hittingComps","pdfmixin","_pluralize","_this$get$t","formNameTranslation","_form","_pluralize2","hideTemplates","refreshRoute","recipients","useraddr","validRecipients","recipientsChanged","commandsUrl","COMMANDS_URL","reloadModules","clearBuffer","reloadEmber","getDebug","getLastToConsole","clearDevice","initial","getValue","persistValues","isChanged","tasksfield","pending","getState","setField","useTasks","loggedin","useform","getRefreshToken","clientid","addCommand","refresh_token","tasksChanged","selectedtasks","clearStorage","toggleTasks","onoff","sendCommands","projectId","getlast","notifyStarted","niceDate","export_description","export_name","exportid","throwErrors","triggerIntegration","notifyError","clearAll","notifyDone","FetchCardsToolComponent","_this$users","processed","cardregister","loadEmployers","fetchForUser","toView","UserlevelHelp","h","readFile","acceptedTypes","resize_data","api_format","queueObj","defaultColumns","extraColumns","globalHide","showColumnsFromLS","static_fields","supportForOldFormat","row_info.created","getTranslation","setLocalStorageColumns","clearModal","removeSetting","fullValue","isNegative","over100","tick","indexOf1","twentyfive","fifty","hundred","statusName","selectStatus","toggleClass","isEmptyArray","limitWasPassed","valuefromLS","filteredColumns","possiblyCalculateSumRow","unformatted_sumrow","customQueryparams","customQueryparamsKey","showShareLink","showPdfExport","showPdfExportFull","_currentTemplate","uses_mongo","groupObjects","_this$getGroupColumns2","getGroupColumns","columnsToExtra","columnsToShow","defaultColumnsToShow","compact","all_objects","sortByDate","unformatted_sumRow","calculateSumRow","hideFirstCheckbox","defaultfields","gpsfound","creator","setWorktimeMarkers","setProjectMarkers","topHeader","pdf_filters","get_status_info","pdf_output","pdf_output_last","report_name_text","templateColumnsNotInDefault","title_row","status_last_changed","title_text","clickable","statuspromise","statusrows","output","output_last","allRowsForExport","rowidList","sumTheseRows","sumrows","cb","export_special_pdf","littleBitUglyPdfExportMethod","exclude","getRawFilters","rawFilters","bubbleAction","_getParamsForFetchingRows","error_string","ownExportAction","show_error","sendColumns","sortDown","export_excel","csv_output","obj_columns","minus_field","output_row","getExportCols","format_export","export_share","toDataUrl","dataURL","showRemovedRows","showLockedRows","showNormalRows","showEmailDialog","filtersString","_addHistoryForSentRows","shareInputFocus","copy_success","copy_error","unsaved","last_promise","thereWereChangedRows","save_record_and_catch_errors","new_record","codes","mapMarkers","setMarker","setMarkers","setAccuracyCircle","setPosition","setRadius","mrk","bindTo","observeCenter","getClassNames","toolTipPosition","addField","removeField","HamburgerMenuComponent","mobileMenu","skvReportLink","closeHamburgerMenu","HelpBubbleIconComponent","vismaIcon","getInfoText","HorizontalFieldComponent","editing","findInput","modelValue","canAdd","mouseEnter","mouseLeave","sortedFields","cols2","cols2_ext","cols_ext","shown","reportComp","_setModalInfo","infoLink","nova_web_service","nova_salary_csv","netvisor_salary_rest","fivaldi_salary_soap","custom_export","infoButton","sendModalData","emailContent","basicContent","contentRow","emailContentForCustomer","productExists","integration","followupIDs","fivaldiSaveSettings","businessid","followupID","row1","row2","schema","setting_businessid","setting_followupID","setting_schema","netvisorSaveSettings","cid","customerID","setting_cid","setting_customerID","FondionSettingsComponent","nonblocking","fondion_client_id","setRecord","fondion_client_secret","fondion_tenant_id","NovaSettingsComponent","nova_url","nova_hash","customerIntegration","materialIntegration","taskIntegration","projectIntegration","costcenter","PayrollSettingsComponent","dim1","dim2","dim3","dim4","dim5","IntegrationsReportComponent","refreshRate","addMachines","getLatLng","machine","observeModel","biggest_amount","smallest_amount","scaleMultiplier","fontWeight","SymbolPath","CIRCLE","scale","currentStep","currentStepText","totalSteps","first_step","last_step","current_step_text","current_step_image","stepTexts","stepImages","go","current_step","initialMouseX","initialMouseY","initialElementX","initialElementY","scrollable","shouldShowHeaderOptions","toggleHeaderOptions","grabModal","pageX","draggedElement","offsetLeft","offsetTop","bindedHandleMouseMove","handleMouseMove","releaseModal","tryAgain","reconnecting","setTimer","reduceSeconds","reconnect","increaseTryAgain","reconnectNow","selected_users","lockPermissionField","selectedProject","unselectedUsers","selectedEmployer","preSelectedUsers","selectedUsers","PermissionsAdderAction","lockgroup","changeLockgroup","updateDateFields","pass_start","pass_end","updateUsers","confirmDiscardUnsavedChanges","alreadyOrientated","usersChanged","setupUserModel","changeUser","userEdited","userAdded","newUser","removeUserFromList","updateUserList","activateCardregister","activateCardRegister","numberCheckPattern","isInvalid","canBeEmpty","onValidate","setCountryCode","newValue","PresenceClockcardComponent","initPresence","out","inActive","outActive","checkPresenceOver16h","inoutLoading","saveRow","apiError","inDateTime","handleAutomaticCheckout","updateSecs","getIn","getOut","ProfileModalComponent","_versionInfo","initializeVersionInfo","trackAnalyticsEvent","devModeClicks","currentLanguage","dd","profileImg","setProject","image_url","shortText","noProject","PromoAdComponent","promoText","getPromoText","mail","sending","debug_email","more_info","email_message_sent","generate","own_url","editurls","urlParts","querySelectorAll","domrow","urlFor","_urls","qrUrl","return_url","video","stream","mediaDevices","getUserMedia","facingMode","_setStream","stopCamera","drawLine","begin","beginPath","moveTo","lineTo","lineWidth","strokeStyle","stroke","canvasElement","getElementById","readyState","HAVE_ENOUGH_DATA","imageBoxSize","ratio","videoWidth","videoHeight","crop","getImageData","_jsqr","inversionAttempts","parseCode","drawARbox","codeFound","getTime","requestAnimationFrame","drawScanner","topLeftCorner","topRightCorner","bottomRightCorner","bottomLeftCorner","middleTop","getMiddlePoint","middleBottom","shortLineTop","changeLength","p1","p2","shortLineBottom","middleLeft","middleRight","shortLineLeft","shortLineRight","multiplier","srcObject","getTracks","play","unmountMethod","reactComponents","render","comp","ollector","_mainDateFilter","groupByBox","showClickHere","novalues","toggleFilter","mainDateChanged","dateChanged","resetFilter","clearFilter","dateObs","onClearFilters","isDefaultOrder","orderFields","endsWith","placeholderIcon","formTemplates","templateAddingIsDisabled","saveTemplate","_setTemplate","openTemplateModal","closeTemplateModal","removeTemplate","_removeTemplate","selectTemplate","noSalarytypes","approveBtnDisabled","hiddenSalarytypes","defaultSalarytypes","getSalaryTypes","expandAll","acceptedRows","rejectedRows","userChanged","hideSalarytype","setLSsalarytypes","showSalarytype","salarytypeDropped","moveSalarytype","getSalarytypesFromLS","typesFromLS","newTypes","seen","getFormFields","setDefaultSalarytypes","selectorTypes","reportTypes","getSalaryTypesForSelector","typesList","newList","typeValue","minimizeAll","openEditModal","formattedDay","anomaly","sumHours","sumHoursAlldays","toggleOpen","toggleChecked","shouldShow","sumValuesAlldays","showAdd","_PeriodsSaved","getRecord","saldoInsightsComponent","shownDetailsArr","showAllRows","insightsData","getInsightsData","dataStructure","saldodeducter","joined","deducters","absence_hours","item_order","order_arr","dataRows","manualEdits","datarow","shortage","dailymaxCut","cumulativeMaxCut","dataLoaded","getAllDataRows","getRowType","addhours","sortDetailsForWorktimes","hasSaldo","cut","workday_list","workday_length","saldoInsightsRowComponent","showDetails","saldoTotal","calsSaldoSum","hourFields","saldoInsightsDetailsComponent","toggleRowDetails","searchBarWidth","progressStyles","removeSearch","triggerSearchAction","incrementLoader","SignatureModalComponent","rowOrder","popperOptions","modifiers","preventOverflow","escapeWithReference","preventDropdownClose","showNotificationBadge","displayNotification","checkPromoMessages","dropdownOpen","toggleDropdown","openMessage","preventDropdownClosing","closeMessage","closeNotificationCard","markAsRead","clearAllMessages","ls_subtle_key","allowDropdownClosing","checkProps","summedRows","rowObj","summedRowsTotals","columnField","initSurvicate","_window","bo","userOS","traits","_survicateConfig","shouldInitSurvicate","showSurveyFlag","surveyTraits","user_platform","user_OS","user_device","_sva","forcedLanguage","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","browserString","wootric_survey_immediately","wootric_no_surveyed_cookie","wootricSettings","created_at","dashboard_language","modal_footprint","disclaimer","link_word","properties","surveyType","WootricSurvey","account_token","wootric_recommend_target","product_name","customMessages","followup_questions_list","detractor_question","passive_question","promoter_question","placeholder_texts_list","detractor_text","passive_text","promoter_text","event_name","workdayDays","midweekHolidayPayOn","filteredDays","specialDays","dayObj","selectDay","dayRule","showDayRule","changeYear","disableAdding","updateData","addClicked","needsForForms","permittedAddForms","addForms","selectedDayIsAllowedForCopy","selectedDayIsRestrictedForCopy","popupData","wtparams","abparams","_returnData","_notifyError","CopyComponent","findPreviousWorktime","worktimesArray","newestWorktime","canCopy","CopyPreviousDayComponent","selectedDay","showCopyPreviousDayModal","showCopyPreviousDayFinalModal","CopyPreviousDayFinalComponent","headerTitleFormatted","weekdayName","headerTitle","copiedWorktime","editableWorktimes","failed","CopyPreviousDayIntermediateComponent","selectedDate","getPreviousWorkingDay","daySelected","dayLabel","previousWorkingDay","selectedWorktimes","_this$session","selectedWorktimesTemp","selectedDateJS","selectedDayChanged","datePicked","disableEditing","WorkpermitModalComponent","loadRecord","recordId","parentRecordId","parentForm","parentRecord","showConfirmModal","showAttachmentModal","showOnlyErrorRows","filteredPermissions","showOnlyValid","currentLockGroup","lockgroups","filteredLocksPermission","locks","lock","endPass","toggleValidPasses","deleteLockGroup","lockgroupid","PermissionsEditAction","clearValues","endPermissions","editPermissions","changeCurrentLockGroup","deactivate","scripts","script","dateMemory","createProjects","createPLProjects","skv_number","createTasks","createWorktimes","starttimes","endtimes","getRandom","lastdate","createUsers","getRandomArbitrary","function","turnon","turnedon","functions","mappers","mainController","dontValidate","hasHeaderRow","_mappers$filterBy","pkMapper","shiftObject","mapper","rq","returnPromise","returnRecords","saveRecords","validateRecords","errorstr","setRecordValues","useAsPK","_schemaFields","schemaFields","_targetFields","targetFields","needle","usedFields","pkObserver","valueChangedTo","valueChangedFrom","valueChangedPk","obsSplitter","rawFile","splitname","filetype","processFile","readAsText","allTextLines","lines","_Array$from","line","splitter","tarr","_i2","_Array$from2","showFile","formOptions","headerRow","cfields","cf","froms","pk","addMapper","needle1","valueChangedMaps","removeMapper","overrideFlags","clearConsole","flagFilter","currentFlags","overrides","isDirty","allFlags","isOverriden","oldval","copyAccessToken","copyRefreshToken","overrideFlag","setAppOverride","clearAppOverride","sendToken","resetFlags","showToasts","getForms","getMe","capiFlags","getNeededSchema","getCurrentSchema","getCurrentUser","$E","storeToConsole","sessionToConsole","sessionhelperToConsole","collectorFormsObject","clearMemcache","clearPartnerMemcache","clearUserMemcache","redisInfo","redisDumpUser","redisDump","testAlarms","getFcmid","fcmid","export_salary_on","export_absence_on","export_salary_integrations","export_absence_integrations","turn_export_salary","turn","turn_export_absence","add_new_integration","save_integrations","cleanLogs","getLogsFromTtapi","channel","saveReport","removeReport","addNewReport","_refreshNeeded","userlevel_record","dropdown_options","selected_role","addOwnRole","nextUserLevel","renameRole","removeRole","hideDenyAccess","privilegeTypes","deny_access","deny_add","deny_edit","deny_remove","deny_approving","ownrows","link_to","ownrows_user","load_profile","formSettingsForRole","formFieldSettingsForRole","formFieldSettings","privilegeArray","isPrivilegeOn","setPrivilege","isFormPrivilegeOn","isFormFieldSettingOn","possible_fields","field_settings","_setPrivilege","setFormPrivilege","setFormFieldSettings","field_record","form_record","form_settings","willTransition","targetName","addproduct","productname","addproductname","removeproduct","selectProduct","reloadModel","eventCodesValue","eventCodeOptions","eventCodes","serials","filteredLogs","selectProject","rollocks","smslogsTableComponent","getLogs","filterModel","filteredEvents","eventFields","col_arr","addDiary","eventDropped","dropped_record","_event$split2","initRoute","diary_date","more","hideExports","hideActions","showColumnsWorktime","showColumnsPresence","linkedReports","mappedFilters","diaryFields","print","_print","wtPage","prPage","dorder","dpar","o","porder","ppar","worder","wpar","specialFormat","filteredItems","selectedItems","addItem","fullPdfSettings","dynamic","isWeatherLoading","weatherStringToObject","fetchNewWeather","transitionToEditRoute","dateController","projectController","GpsLocator","ownWeather","workforce_fields","workforce_by_names","getJSON","recordAdded","setWorkforceValue","parentParams","paramsFor","deviations","works","PromiseObject","presencePromise","worktimePromise","redirect","transitionToRightPage","drivinglog","hideColumns","toggleController","openDrive","distField","routeField","gaugeField","privateField","descField","setRoute","privateDrive","toggleRoute","toggleComment","gps_value","refresh_available","gps_error","directionsDisplay","directionsService","whenAvailable","callback","DirectionsRenderer","DirectionsService","positionChanged","showGauge","gauge_start","showProject","showPrivate","licenseField","startDrive","confirmDrive","end_m","start_m","endDrive","updateRoute","start_location","origin","travelMode","setDirections","routes","legs","start_address","end_address","create_new","location_end","onDriveQueried","drive","_getReliablePartnerData","VastuuGroup","modalTitle","showInviteDialog","messageButtonText","tilaajavastuuText","tilaajavastuuHiddenAddition","vgIsDisabled","reportRead","setNotChecked","setParentEmployer","setCustomization","date_checked","archive_code","codesByNumber","companyCountry","changeCountry","countrycode","getReliablePartnerData","iHaveReadIt","pdfReport","messageButtonAction","sendInviteTilaajavastuuEmail","showMessageButton","getReliablePartnerStatusAndReport","handleSuccessfulResponse","handleNotFoundResponse","handleErrorResponse","pdf_report","clearModelErrors","setMessageStatusByStatus","buildStatusMessage","showTVReport","errorFields","modelErrors","Ok","Seis","base64Report","getReliablePartnerPdfLink","tilaajavastuu_report","savedRoute","indexController","showLoader","filteredEmployers","updateReliablePartnerData","syncReliablePartnerData","AddController","employerFilesObserver","hideEdit","hideHistory","cancelRoute","_forceFetchTvPdf","_updateReliablePartnerData","_showSaveErrorNotification","_syncReliablePartnerData","emp_users_given","emp_users_given_options","autoChecked","prompt_text","_self","cdn_url","updateReliablePartnerStatusesAndReports","showSaveErrorNotification","prefix","rowIdentifier","fullMessage","forceFetchTvPdf","validItems","updateReliablePartnerPdfReport","showStatus","savedController","SavedRoute","templateName","gdata","promarr","getEventId","technicalErrorString","technicalError","insertLabel","configureScope","setTag","lastEventId","addPdfGenerate","_action","user_employer","customMeasurements","createBaseForm","base_fields","getMeasurementNumber","getSchemaidFor","fieldValues","removedMeasurement","addMeasurement","extClash","modelCreator","measurement_fields","makeid","possible","beforeSave","newName","rand","field_prefix","saveForm","removeForm","nopaginate","paginate","FormsFormAddController","FormsFormEditController","refreshQueries","initColSelecter","hasClass","removeClass","showMassEdit","showFiltersArr","ls_columns","saveColumnsToLS","hidden_columns","columnString","moreLinksClass","statusOptions","createComponent","formReport","renderer","_export_pdf","exportJoinedATReport","billing_columns","customer_columns","joined_columns","csvArr","setStatus","historyRow","viewRow","previewRow","lskey","loginToCustomer","thereIsCheckedRows","formContainsApprovedStatus","didTransition","toggleShowFields","errorState","searching","retry","IntegrationsReportRoute","IntegrationsIndexRoute","IntegrationsListRoute","IntegrationsRoute","pdfMixin","emailSending","smsSending","codeObs","projectObs","createInvitePDF","sms_placeholder","sms_number","email_address","smsnumObs","emailObs","currenturl","getLongUrl","writtenForm","longurl","ascii","character","characters","fromCharCode","projectname","longUrl","retarr","getTinyUrl","codeBlock","pdfElements","qr","getPDF","sendSms","titleid","setInviteType","unregister","invalidate","getDropdownValue","ownFields","export_print","exportData","sheetName","pojo","typeSelected","changeAddValue","savePojo","tooltypeRecord","save_these","old_row","new_amount","transaction","moveMachines","pojo_amount","old_project","found_project","old_amount","new_project","getSideloads","qp","transactions","to_fields","_this3$project","new_item","transactionid","amounts","machines","statusSearch","_resolveTransactions","tooltypes","toolgroup","_resolveTooltypes","freeAmount","handleButtons","handleInput","hideRemove","MaponController","maponPoC","unitInfo","since","lastUpdate","lastPosition","mapon_unit_id","getUnitData","unitdata","units","mileage","last_update","MaponRoute","unit_id","date_parsed","refreshRows","formReportDate","MessAgesComponent","appReady","fetchMessagesLoop","messageStack","currentMessage","local","fetchMessages","tokenHasExpired","MessAgesTypesLinkRequestComponent","MessAgesTypesMessageComponent","MessAgesTypesMessageboardComponent","_this$args$message","MessAgesTypesPromoComponent","external_height","MessAgesTypesSuperiorReplacementComponent","MessAgesTypesTaxmanValidationsComponent","MessAgesTypesUserConsentComponent","userform","popupArr","read","rowActionsObs","removeMessage","tab","selected_users_arr","selected_employer_count","selected_users_arr_formated","showColumnsUsersearch","translated_columns_userSearch","rowActionsUsersearch","showGroup","showEmployer","changeTab","userObject","addUserToList","addObject","addUsersToList","arrangedContent","addObjects","sendToAll","clearReceivers","addIndexController","users_without_phone","users_without_email","recobj","parseReceivers","recArr","receiver","message_length","multiple_sms","fillData","addController","send_sms","sticky_message","resetData","creator_name","created_date","appCtrl","hideSort","sticky","read_count","receiver_count","editMessage","autoFillData","sms_sent","true","email_sent","unstick","messageData","showRow","users_notread","users_read","receiver_row","project_image_observer","projectImage","updateImage","ersized","showAddSiteButton","serviceList","currentService","selectProjectField","isMySitesStored","showGpsButton","setNumberOfWorkersAtProjects","tmp_dict","project_ids_observer","updateSites","saveMySitesToLocalStorage","sites","getMySiteObject","addOwnedProjectsToMySites","add_these","loadEverythingToMySites","tmp_projects","saveToLocalStorage","changeService","change_service","setCurrentMySite","siteRecord","modelsite","doTransition","filteredSites","partnerids","services","linkings","currentlySelectedProjectForAddingMysite","openOverview","openFilesview","removeFilesModal","openAddSiteModalOn","addNewSiteFromMySites","mySitesProjects","found_projects","removeSiteFromMySites","removeAllSites","projectClicked","imageUpdated","site_id","addSiteNow","newsite","updateMySitesPicture","toggleEditMode","fetchNearest","getCurrentPosition","dialog_text","shortestDist","shortestProject","project_name","removeAll","localStorageId","all_sites","not_own_sites","own_sites","par","updated_own_projects","projs","proj_obj","getItemWithBackend","backend","more_sites","totalPlaceholderImgs","showEditLink","companyName","mySite","NovaCostcentersRoute","worksite","passesToBeSaved","firstGroup","lastGroup","previousGroup","nextGroup","toggleCheckbox","OrientationsSubRoute","group_key","_getPassDatesFromProject","_addNewPassPanel","_checkTVEmployerStatus","passBlockLoading","validPassBlocks","passDatesAlreadySet","fileField","placeHolder","userArray","areThereUnselectedUsers","areUserPassesValid","extras","extras_tmp","passStart","unvalid","setPassDates","setPassDatesTo","clearPassDates","checkTVEmployerStatus","removePassBlock","block_id","startDateChanged","endDateChanged","addNewPassPanel","getPassDatesFromProject","extra_info","addUserToPassBlock","dummy","oriuser","passData","queriedUsers","usersWithUniqueEmployers","getPassDataForUser","_result","oriProjId","contract_employer","reverseObjects","any","contract","contrProjId","u","_step7","_iterator7","skipZeroCheck","blocksWithoutUsers","userCount","signaturesController","checkbox_groups","selected_parents","place","disableLinks","projectHasLocks","hasLocks","mandatoryArr","showButtonNext","skip_users","userSelected","userAlreadyAdded","changeSelectedProject","orientations","users_oriented","users_oriented_obj","oris","ori","checkAllBoxes","_discardConfirmed","confirmed","parentChanged","parentSelected","selectedParentsStates","continueSaving","currentObj","oriWorkPermits","errorContext","savePasses","copyWorkPermits","passes","pass","workPermits","permit","permitCopy","unsavedRecords","sigController","signaturesMissing","checked_amount","extraFields","pdf_export","showSignatureModal","checkBoxes","subArr","addPhoto","openSignatureModal","changeSignature","ResetScrollMixin","parentName","isFoundAlready","dataWithoutLoops","nestedData","convertToNestedArray","lastindex","level","levelAsRange","trees","iteratedRows","loopParents","tempRows","levels","rowsCopied","iterate","levelsIterated","tree","nestRows","flattenStructure","breadCrumps","breadCrumpsArray","hasChildren","childrenCount","OrientationsInactivePassesController","singleselect","_this$model$count","_this$model3","rawData","passive_users","user_id","ori_id","_row$rows","yesterdayStr","oriIds","selectedRow","OrientationsInactivePassesRoute","has_errors","validate_fields","signatureField","ori_place","setSignature","addRoute","ori_date","special_warning","img_url","ActiveXObject","pass_ends_range","rollockIntegration","showMegaflexSyncDetails","limitedSyncFailedDetails","failedDetails","remainingErrorCount","syncModalHeader","syncType","syncExecutingMessage","timecleanProjects","showTimecleanModal","syncRollock","_initializeSync","accessToken","incrementProgress","syncMegaflex","processMegaflexSync","toggleErrorDetails","errorMessageKey","filteredRows","_showMegaflexSyncSummary","orientationId","orientation_id","_handlePersonSyncSuccess","_handlePersonSyncError","reason_key","message_key","rowAmount","successCount","failedCount","skipped","clearDuration","firstProject","syncTimeclean","completeSyncing","handleError","useAddonFormReport","daysBack","_this$flags$test","checkedActions","ids_array","lastprojectid","tmp_rows","userObjs","chooseUser","no_orientation","no_orientation_error","pass_start_error","pass_end_error","save_disabled","oriUserField","oriProjectField","overlap","handleData","updateDisabledButton","contracts","loadingMessage","okMessage","sendLink","callback_url","password_recovery_callbackurl","showPasswordChange","paramObs","checkHash","passwordObs","changePassword","showTable","mySiteSelected","projectDisabled","errorCode","translationKey","in_datetime","showEndLocation","worksitePresence","date_range","OrientationsAviController","OrientationsAviRoute","disableFields","cust","hideCheckbox","cget","exportShare","qParams","retArr","backendurl","beaconDataArr","user_params","usrs","wirepas","phone_imei","maxpause","scanlevel","resolution","beaconData","ownExports","export_skatteverket","contact_person_name","setContactPersonInfo","sharedAfterSave","ctrl","isUniqueAddress","isPromiseResolved","currentModel","ProjectCardListController","getTaxnumbers","showReport","_projectUsersCount","projectUsers","_taxnumbers","taxnumbers","ProjectCardListRoute","contract_project","showInfo","toggleInfo","updatePath","hiddenDashboardObjects","dashboardObjects","lsDbHide","tmp_hidden","pie_options","sensors","fetchSensorData","sensorList","core","selectedCores","selectedSensor","all_sensors","cores","getChartOptionsByType","chart_options","yellowFrom","yellowTo","redFrom","redTo","greenFrom","greenTo","transitionWithParams","targetRoute","removeDashboardObject","restoreDashboardObject","worktasks","pie_done","pie_overdue","pie_upcoming","worktask_pie","openWorktasks","fixedWorktasks","worktaskFields","pie_approved","pie_open","worktime_pie","approvedWorktimes","pie_total","presence_pie","taxmanerrors","contacts","contact","taxman_pie","contractTaxmanerrors","pie_alert","pie_check","pie_not_found","pie_ok","pie_stop","pie_waiting","tv_status_pie","as","projectFilesObserver","show_link","avi","queryObject","filterTypes","_afterSave","serialNumber","searchTerm","hasDirtyRecords","subproject","_subprojects","_setSavingFalse","changeNewSubprojectName","addSubproject","_refresh","confirm_text","_removeRecord","subprojectparams","recordid","subprojects","allSubProjects","show_linker_modal","hide_linker","tmp_links","all_links","openDialog","taxmanerror","taxmanKey","taxmanOptions","contactSet","moment_month","fetchErrors","statusFilter","formattedRows","formatTvStatus","tv_pdf","queryparams","sendMessage","prparams","getTypes","typesArr","contact_user","addSelfRegisteringHelp","addSmsHelp","addSafetyNoticeUrlCreation","safetyNoticeUrlCreationAction","projArr","projectids","qrCodeDataUrls","originalUrls","selfRegisteringHelp","smsHelpFunction","projectnumber","selfregister_url","createNewUserAndLogin","person_country","id06card","person_code","relative_name","relative_phone","id06valid","addSiteWithJustId","changeuser","change_user","add_project_with_magickey","magickey","addSite","hasRequiredFilters","absenceParams","showRemoteControl","magicKeyInit","getMagicKey","usersObs","preselected_users","groupusers","groupuser","tmpobj","forward","gotoProjectTasks","toggleUser","projectlink","cancelLinks","projecttask","coderead","RegisterServiceController","RegisterUserController","goToRegisterUrl","encoded_url","SELFONBOARDURL","registerUserController","gotoNextPage","isCompanyChanged","registerUser","replaceWith","setPersonInfo","toSignIn","toID06","registerUserId06Controller","registerUserInfoController","registerUserId06CompanyController","validate_all","allOk","verifyUser","applicationIndexController","forwardingStraightToService","customEmployer","employer_id","employer_name","employer_country","id06_number","setUserCountryByLang","schedule","countryByLang","setParams","verifyFromApi","card_id","emp_nationality","ID06_VERIFY_URL","personid","fetchCard","ID06_CARD_URL","status_code","card_holder_nationality","company_nationality","valueChangedPersonCountry","valueChangedCompanyCountry","changeEmployer","showRaksa","fetchUserWithTaxnumber","fetchUserWithBarcode","validateDuplicateTaxnumber","keyup","selectEmployer","resourcePlanningRoute","publishStartDate","CustomExportRoute","selectableIntegrations","selectedIntegration","fileCreated","toggleRowStatus","checkSettings","mapped","_integrations","getStandardIntegrations","custom","fivaldi_salary_csv","lon600_salary_xml","payroll_worktime_rest","payroll_worktime_csv","payroll_absence_csv","vismanet","showIntegrationModal","showAd","showTheseProducts","productsArr","post_add_actions","ShowSettings","addSingleButton","periodAdded","removeCheckedRows","preventUsage","devText","salarytypesText","absenceSettings","sortedModel","id_a","id_b","index_a","index_b","sortOrder","shortcuts","selectable_count","removeDuplicateFields","keysByName","useField","useName","plainFieldName","showSave","changedWorktimegroup","daily_checked","time_based_checked","customTimeBased","showDailyOvertime","sortedWeekdays","overtimeColumns","ownOvertimeColumns","worktimegroupfield","calculateSum","max_sum","calculateDayLength","asMinutes","getPause","fiveDayVacationWeekIsOn","mainSettingOn","vacation_week_length","defaultDayLength","midweek_holiday_pay","midweek_holiday_length","midwdeek_holiday_pay","closeWeekModal","editWeekRule","weekend","showOvertimeModal","closeOvertimeModal","saveOvertimeRule","weekRule","newYearParams","overtimeRules","rulejson","removeWeekRow","removeDayRow","insertRow","updateRow","ownerField","changeOwner","_creator","changeAction","billrows","showCurrency","last_month","billdate","fullPrice","currencyByCountry","_billrows","formatted_snapshot","formatSnapshot","snapshot_str","decodeURIComponent","csv","billing_desc","settingsController","updateLogo","saveLogo","currentLogo","formJson","settingsFormsFormController","adminMode","tt3Service","acceptedForms","callImportForm","import","something_was_added","formChanged","formid","exportForm","json_string","importForm","createForm","mappedLogs","modifiedData","showData","_id","field_info","formFieldController","formsController","selectedField","fieldController","hasCCFunction","ccfunctionload","hideWithExternal","hideWithSetting","hideWithType","filteredFormSettings","filteredFieldSettings","fieldIds","unsavedChanges","dirtyFields","generateExternalType","checkDuplicates","ret_name","saveField","saveDirtyForm","validateRecord","formSettingOptions","tt3ServiceAndDevMode","saveFields","toggleShowFormInfo","addSetting","reorderFields","itemModels","draggedModel","saveCCFunction","toggleSave","addCCFunctions","formController","fieldTypes","fieldSelectorFields","filteredSettings","nameDisabled","showRawOptions","EmberOptions","fieldString","splitOption","settableSettings","settingRecord","hdfile","hasDirtySettings","databaseFieldSelections","firstOption","formExternal_type","typesWhitelist","databaseFieldSelectionValues","observeDatabaseFieldSelectionValues","initDatabaseFieldSelectionValues","formFieldSettingOptions","selectedWorktimegroups","worktimegroups","turnOnSetting","turnOffSetting","saveMandatorySetting","mandatorySetting","saveFieldName","saveOptions","optionsString","hideForWorktimegroup","isAny","createSetting","removedField","productFields","customerFields","restoreField","markNotEditable","_restore","resetScroll","row_info_removed","_dec2","_dec3","_dec4","_dec5","_dec6","_applyDecoratedDescriptor","_obj","autoPauseOptions","pause_start_time","pause_length","min_workday_length","min_workday_length_hours","min_workday_length_minutes","oldPauseStartTime","oldPauseLength","oldMinWorkdayLength","_Ember$getProperties","newPauseStartTime","newPauseLength","newMinWorkdayLength","isValueCustom","pauseLengthAsString","fetchPauseSettings","_settings$pause_lengt","_settings$min_workday","extractHours","extractMinutes","changeHours","changeMinutes","savePromise","isCustom","getOwnPropertyDescriptor","GetFullObjectByAddress","_checkAndSave","_showError","formatted_address","_success","AddressCompComponent","validationErrorsFound","companyData","use_company_address","popup","getdata","BillingCompComponent","customerData","billingType","clearFields","checkMandatoryFields","getDataArray","addressInfo","InfoCompComponent","setCompanyInfo","LogoCompComponent","logoImage","saveButtonVisible","logoField","firstValue","secondValue","HolidayComponent","initvalue","isOn","loadingData","Content-Type","saveStartdate","post","NotificationCenterComponent","notificationSettings","getNotificationSettings","updateThese","channels","push_time","extraSettings","customTime","getNotificationChannels","getCustomTime","unaprrovedSetting","setCustomTime","saveNotification","notification","validationErrorTexts","settingType","customDayBased_saturday","customDayBased_sunday","customDayBased_normal","useNewOvertimeSettings","_50multiplier","_100multiplier","_50saldotype","_100saldotype","product_50saldotype","product_100saldotype","saldotype","dailymax","_week50multiplier","_week100multiplier","_week50saldotype","_week100saldotype","product_week50saldotype","product_week100saldotype","weeklyOverTimeStartsFrom","_extrahours_week_max","productsaldotype","week_max","_eveningmultiplier","_nightmultiplier","_eveningsaldotype","_nightsaldotype","product_eveningsaldotype","product_nightsaldotype","_evening_calculate_compensations_always","_night_calculate_compensations_always","overtime_period","_periodstart","_periodlength","_period50calculate_after_hours","_period100calculate_after_hours","_period50multiplier","_period100multiplier","_period50saldotype","_period100saldotype","product_period50saldotype","product_period100saldotype","period_length","calculate_after_hours","setAllSettings","toggleWeekend","bool","toggleCompCheck","rulename","toggleCustomCompCheck","saldoProductsNeeds","_i3","_Array$from3","foundRule","checkSaldoProductsNeeds","needed","unneeded","validateInputs","mid_week_holiday","customRule","validateInputsAction","disableComp","nightEnabled","eveningEnabled","allSettings","add_saturday","add_sunday","_i4","_i5","hasSplittedOvertimeRule","timeBasedNoRules","_i6","_Array$from4","_i7","pauseOptions","SalarytypesAbsencetypesComponent","showPassive","_runAutomaticSalarytypes","wtgroup","SalarytypesComponent","checkOldSalarytypes","ttapiPromise","allowrun","SalarytypesSalariesComponent","createTypes","_runAutomaticSalarytypes2","showTypes","cond","autoSalaryTypes","blackList","subcategory","getAutoSalarytypes","typesWithSaldo","mappedTypes","fieldtype","unformatted","salaryTypeNameError","worktimegroupError","isValidRecord","wortimeGroups","wg","SettingsGeneralV2ComponentsSalarytypesSalariesModalComponent","worktimeGroupLocked","SalarytypesWorktypesComponent","updateSalaryCalculationTypes","rawValues","calculations","recordToBeSavedAlso","validateSliders","foundRecord","loadingDefault","from_type","modelContentElement","scroller","animateElement","calculationTypes","cal","loadingCalculationTypes","_value$name$split2","isSaldoField","calculationsIncludesOvertimeSaldos","overlappingCalculation","calculation","translateOverlapCalc","calc","overlappingCalc","_calc$text$split2","SettingsGeneralV2ComponentsSalarytypesWorktypesModalComponent","saveCalled","VgLicensesComponent","_onStoreEvent","licenses","hasCustomerId","customerId","getCustomerId","getCustomerLicenses","license","hasUsage","usage_amount","usage_tier_cap","percentage","WorktimeGroupSettingsComponent","selectedWorktimegroup","usersStillInGroup","showRemovingModal","removeWorktimegroupProducts","worktimegroupProducts","SettingsGeneralV2ComponentsWorktimeGroupModalComponent","autopauseChecker","isHelpContainerVisible","shouldHideHelp","currentSettingsPage","settingGroups","removedSettings","filteredGroups","currentSettings","mainGroups","subsettings","settingsJSON","_mainGroups","addGroup","subsettingTranslations","subgroupIndex","_filteredGroups","maingroup","subsetting","settingsPageSettings","allSettingsForThisPage","isActive","checkIfSettingIsOn","isThisSettingAvailable","isEditingDisabled","translatedSettings","cat","neededHelpTexts","worktimeGroupsOn","disableOnlyText","gotoSetting","toggleHelpContainerVisibility","showSavedNotice","toggleActive","_Ember$get2","_Ember$get3","handleMidweekHolidayPaySalarytype","callAutomaticSalarytypes","checkAndSetAutopause","donotRefreshAgain","searchSettings","setOpenSettingsPage","worktimegroupChanged","worktimegroupsettings","setCustomerSetting","isCustomerSettingOn","available","_unused","customTestNeeds","loadForms","_iterator8","_step8","is_addition_type","allok","isok","refreshAll","editingDisabledRules","_step9","_iterator9","checkWorktimegroupWarnings","hideSettingsFromWorktimegroups","dummySetting","hideHeader","hasReport","optionsForComponent","secondary_setting_on","setQParams","settingsPage","getFileData","toggleHelp","helpTexts","splittedTextArr","lastKeyOfArray","t7","t8","activeSetting","openSettings","dropdownSettings","optionGroupOptions","wtgroups","changeWorktimegroup","changeDropdownSetting","_value$split2","mainSetting","subSetting","clearSearch","resumeSearch","searchvalue","closeSearchResults","toggleSetting","settingname","openSubSettingsPage","settingsName","subsettingsName","refreshWarnings","settingIsLoading","filterByWorktimegroup","showSettingOptions","loadingState","showPlaceholder","showOverlay","showFormReport","showDisabledNotification","shouldShowOnlyDisable","editingDisabled","shouldCheckWarnings","getWarnings","fetchWarnings","filterSettingNeeds","negativeNeeds","WarningsComponent","hideAlertContent","hasSplitLabel","hasNonSplitLabel","settingsTitle","donotreload","formattedModel","getProductName","formList","getListOfProducts","subheader","productSettings","setting_name","option_name","worktime_fields","control_values","addrow","callIntegration","sendFile","notificationpanel","notificationGroups","saveCustomTime","service_has_products","inverseNeeds","toggleSettingShow","productPostAddMixin","number_of_boxes","delivery_street","delivery_city","delivery_zip","orderButtonArray","buyrent_options_rfid","buyrent_options_famoco","activeLevel","isSweService","servicetype","productCanBeTurnedOnNeeds","allProductNeedsAreMet","productNeedsArr","timetracker","rakentajanpaketti","rfid","productCanBeTurnedOn","fondion","rfid_modal_title","showRfidModal","sendInfoToCustomerService","updateExternal","PRODUCT_UPDATES_URL","serviceid","orderButton","c_info","rental","saveRfidData","customer_address","selectLevel","DisabledComponent","target_arr","force_refresh","projectString","userString","pic","project_obj","oldMeasurement","measurementName","measurements","_resolveMeasurement","measurementController","savedNotices","disableAutosave","eventListener","autosave","mc","parseFields","recalculateTotal","signatureFields","extrafields","skip_these","textClass","mval","pval","saveNotice","handleRequestError","timer","req_fields","autoSavePromise","markAsApproved","addToSavedNotices","cancelExtrainfoModal","saveExtrainfoModal","addParams","_setTransition","measurement","working","scaffolding","fall","electricity","garbage","dust","equipment","protection","road","helper_notices","key_arr","formattedMixin","addRowActions","createSpecialPdf","_Ember$Controller$ext","project_filter","data_rating","exportNewestPdf","customMeasurement","newest","isSaved","showDesc","fieldsObject","validateDesc","removeNotice","setUser","statusSelector","ObservePrompt","hasInfo","minusObserver","plusObserver","toggleNotice","addNotice","tmpRows","ntc","openInfo","disableStatus","mvrController","dataSetter","data_rating_pie","pie_over90under95","pie_over95","pie_under90","idx","tr_minus","tr_plus","handleSelection","charts","monthAgo","noticesSelected","not_solved","emailValid","emailNotValid","sentToEmails","extraData","self2","emailAction","emailsArr","pics","tmp_file","add_link","removeEmailModal","sendEmailAction","trController","average_rating","field_rating","totrating","trfieldkeys","trfields","toTop","sendNoticeEmail","userRecord","emailAddress","link_text","fixbydate","addToNoticeArray","closeNotice","destroy","default_values","transitionToSaved","by_date","date_obj","$utan_anm","$med_anm","$ej_akt","eachAttribute","pie_colors","skyddsrond","showNotices","export_month","launchProjectUpdate","field_obj","tmp_fields","flipped_options","contract_type_options","okToAdd","contractNumberSet","monthSet","projectSet","updateContract","contract_number","all_records","getLatestRecordEndDate","addNewContract","flipped_tax","first_worker","total_price","contract_start","contract_end","billed","missingFields","contract_record","currentContractMissingFields","contract_end_date","contract_first_worker","contract_flipped","contract_month","contract_total_price","contract_billed","contract_start_date","contract_description","removeContract","setEmployer","ccrep","rowsOnPage","errorPage","dataPage","_error","startswith","startsas","chartDataOnPage","validationsOnPage","datapages","errorpages","tzOffset","sendTaxmanFile","getApiUrl","deliveryId","projectFilter","contactNotSet","employerField","maincontractorChanged","refreshPreview","getTaxmanFile","date_start","generatingPdf","ownerChanged","rowsPerPageOptions","supportedForms","groupingIsOn","groupByColumns","saveValues","calendar","editorMode","half","columnsObserver","groupObserver","rowsPerPageObserver","group_columns","filterFieldTypes","allowedMoreFilters","baseForm","pageid","selectableFilters","moreFilterArr","field_key","queryDefinitions","addReport","date_field_found","field_name","form_fields","report_field","report_fields","reports","tmp_field","showAddReportButton","error_in_report","hideFullExportLink","useRowInfo","loadFilters","_showFilters","updateShowFilters","editorOn","editorOff","editFilters","excelArray","export_excel_page","getReportData","rep","createAdditionalPdfHeaders","headerElement","MAX_SAFE_INTEGER","addDefaultReport","defaultReport","newReport","checkedRowsChanged","report_index","ccReport","filtername","tmpFilter","defaultReports","report_prefix","_reports","allInUse","_userlevels","getUserlevels","onlyIcanSee","createdByCurrentuser","lvl","lvls","savedUserlevels","tmp_lvls","saveComboSettings","viewPermissions","rename","created_by_currentuser","useNewVersion","addNewLink","editNewLink","date_newer_warning","model_observer","date_observer","goBack","rowSaved","showSelfOrientationLink","absenceColorFrom","worktimeFields","absenceFields","dailyWorktimeSums","worktimeSums","absence_settings","showWarning","eventName","showRows","printAll","mappedData","raw","worktimeRows","showAllRowsByUser","absenceRows","printableData","_removerecord","aparams","split_date","worktime_page","absence_page","worktime_limit","absence_limit","aggregatedrows","form_status","absence_order","worktimeParams","parentFilters","setAfterSave","tests","tolerance","anomalies","showEditModal","updateTests","_reloadModel","toggleSettingsPanel","testParams","setTolerance","userSelector2","approvalController","dateinterval","project_id","userController","approvalIndexController","currentSite","previousSite","nextSite","_GeneralReportControl","sortByDates","parentModel","pushIndex","format_data","formatExport","make_pdf_export","make_csv_export","showWorkingNowRows","checked_data","use_checked_rows","showWorkingNow","avidata","FormatUtil","hideEmptyRows","historyDataLoading","newDeducterRecord","bankfields","historyOldestDate","historyAllLoaded","loadOlderHistory","accounts","userRows","usersWithBanks","reformatUserRow","account","banks","translated_columns2","earliestDate","clearAllFilters","deducterAdded","_queryParams","_queryParams2","closeEditManualEntry","onFilterHistoryChange","showDeducterModal","setBankDate","setAddhours","changeColumn","setDesc","showWorkBankHistoryModal","absencetypes_ids","existingHistoryData","reservedData","getBankdeducter","getBankName","getWorkTime","getbanks","_banks","tomorrow","reservedEndDate","summaryMap","sortedNewData","combinedData","fromDate","targetArray","bankf","absencetype_f","hours_raw","absencetype_id","_x6","ar","columnName","queryObj","worktimerows","accountcolumn","bankName","workrow","hoursInAccount","bankrow","_x8","_x9","closeHistoryModal","deleteBank","createNewBank","editBank","saveBank","excelHeaders","exportRows","newExportRows","reMigrateBanks","toggleHideEmptyRows","checkIfAbsenceTypeBelongsToBank","reservedFiltered","absensetype_id","bankwithAbsenceType","_loadModel","rawParams","hasFilter","queryParts","newDate","firstDate","absencetypefield","skipsaldo","showAdder","changeName","columnAlreadyInUse","editableBank","columnFound","columnError","userSelectorLimit","gantt","multiDayAbsenceFields","oneDayAbsenceFields","filteredAbsences","filteredAbsencesOneDay","filteredAbsencesManyDays","sumsByUser","absentDays","sumArray","workDays","_this$get$split2","workLog","ab","elementsIterated","absenceLog","absentdays","userSums","fetchSums","skipSumFieldsWorktimes","skipSumFieldsAbsences","saldoList","saldoEnddate","saldoStartdate","filteredStartDate","_getSideloadsWithExtras","_dateUtil","currentParams","positiveornegative","day_saldo","saldoHours","aborder","ab_row_info_status","abcenseSettings","abFilters","copy_filter","showColumnsWorktimes","showColumnsAbsences","tmp_users","filterToggler","filterVals","pdfColumns","setNewColumns","ab_params","general_params","worktime_params","timecardController","commentSaved","saveComment","clock","currentTime","isTogglerVisible","validForm","refreshing","dayStart","totalWorkRaw","resume","on_worksite","worktimeDuration","clockedTime","calculateTotalWorkingTime","tmp_totalwork","tmp_totalwork_hours","tmp_totalwork_mins","setMySitesProject","currentMySiteTooFar","sortProperties","WorkHoursObs","sorted_model","isForcedAndNotCloseEnough","projectMarker","projectMissing","calcAutoKm","showTasks","taskField","commentField","showExtrainfoModal","modalFields","db_record","value_from_ls","routeDistance","stopWorkAndSave","fieldValue","new_rec","new_worktime","change_task","emptyMySites","changeWeek","queryParam","currentWeek","sideloaded","worktimesArr","combined","filterReport","inlineEdit","typeofwork","project_owner","userSelector","_fetchTax","_fetchCardWithUID","veroApiInfoExists","birthday","birthdateField","rfid_tag_id","queryVeroApi","isNumber","InfoExists","TaxNumberMatchBirthday","CC_TVCARDIMAGE","setMessage","messageKey","setInitialValue","fetchPersonFromTaxApi","fetchCardWithUID","uid","CC_TVPERAPI","found_employer","veroApiUser","FirstName","LastName","call_cc","search_user_with_id06card","create_user_with_id06card","employerid","id06kortErrors","personidErrors","homecountryErrors","employerErrors","transitionToUserform","fetchID06Card","_getImage","_generalAddAction","addGetImageTilaajavastuu","hide_preview","getStatusFieldDefaultValue","statusDefaultValue","_statusFieldSettings$","statusFieldSettings","setting_wap_font_size","ea1card","ea2card","firecard","safetycard","onclick_default_value","disable_username_generation","username_observer","email_observer","employerPromise","generatedUsername","removeCompanyType","convertAccentedCharacters","validateAndGenerateUsername","pop","conversions","userResult","showCard","_this3$user","_this3$employer","activitycontroller","ago","fromNow","ChangePasswordController","password_changed","ChangePasswordRoute","username_changed","old_username","editingCurrentUser","change_username","new_username","replaceRoute","userIsNotAdmin","user_created","usersImage","refreshSaldo","sendTestNotification","errorText","id06kort","companyid","personalcode","showResetDialog","resetSent","resetSentFailed","anySent","UsersAddIndexController","hasEmail","hasPhone","resetPsw","reset_and_send","psw","email_title","by_email","by_sms","i_am_this_person","own_profile","orientations_on","showOriButton","orientate","filteredLinks","_forms$form$features","use_linker","returnLinkableFields","custom_name","linkers","linkableFields","_fields$field$feature","show_in_linker","profileImgClicked","scrollToAnchor","_this$paramsFor","emptyday","notStarted","notStartedText","notCalculatedYet","day_saldo_over_max","dailySaldoCut","saldo_settings","workday_hours","cumulative","cumulative_under_min","cumulative_over_max","dayClicked","openSaldostartModal","closeSaldostartModal","saveSaldostart","showError","_refreshRoute","bankDeducerColumns","_v","absences_for_date","fullday_absences","halfday_absences","saldo_absences","bankDeductionsSum","mark_sum_zero","max_saldo_over","tmp_sum","totalsum","bank_deductions","affects_overtime_info","reportFilter","showUserDataRemover","showUserRemover","userdata","get_data","all_forms","loopYearByYear","formDateFields","loopOnce","endYear","formUserFields","formname","_loopOnce","_setFormObject","_loop2","_loopYearByYear","outer_promise","columnsObject","formObject","formData","_setFormObjectData","_createCsv","recordArr","csvFull","csvHeaders","UsersInactiveController","UsersInactiveRoute","_fetchImagesFromTv","userStatuses","showUserSmsModal","showUserEmailModal","userSmsValidPhones","userSmsNotValidPhones","userEmailValid","userEmailNotValid","showId06Checker","cardFetchUsers","showCardFetchTool","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","openCardFetcher","closeCardFetcher","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","CardregisterService","cardFetchError","CC_URL","_clock","ttapiService","addProducts","service/product","old_prod","prods_now","moduleExists","module","split_need","need_array","debugText","addLoadProfilesForUserlevels","testFormFeature","testModuleControl","testFlag","testCurrentUserField","testServiceCountry","_need$split2","_fieldandsetting$spli2","addThese","trimmed","needed_module","module_controls","company_country","invertNeeds","preLoad","getRecords","child_ext","correctFields","div","endHTML","exe_types","filethumb","fileurl","formattedHours","formattedStatus","group_by_materialgroup","image_types","len4","len5","new_val","ref7","return_str","right_ext","startHTML","statusIcon","storeData","target_field","thisIsSignature","thumburl","translatedStatus","donotaddHTML","fuckTheseEmptyDivs","innerHTML","typeKey","Type","formattedValidUntilDate","validUntil","hoursWithClock","_row$get","subTask","materialgroup","formatDropdownSums","formatCheckboxSums","isImage","fullSrc","getModalUrl","thumbUrl","sub_value","addthis","minifyLong","formattedSums","pdfSums","translatedValue","parseDropdownSums","is_summing","summing_object","temp_arr","HTMLElement","crossOrigin","paramStr","column_name","subset","subsets","asObj","PromiseArray","formatParentFormResponse","error_name","found_key","test_keys","interval_arr","skip_levels","json_record","edit_mode","json_str","CookiesService","fullList","settingsArr","setContext","dap","setLanguageMethod","setUserContext","setCompanyContext","getCustomerProduct","get_language","getProduct","userParsedData","userCreated","valueOf","customProducts","companyParsedData","serviceType","serviceCreated","product_objects","_confirm","alertify","okBtn","cancelBtn","resolvedValue","addPossibleHitsToMessage","_vastuuGroupError","stripped_message","_error$payload","response_body","errorPrefix","product_family_id","product_plan_id","lastTimeResumed","isOffline","ontime","gpsLockedPositionChanged","formatAsNumbers","excelColumns","numFmt","formatModelToJSON","formattedRow","exportFormatted","createExportFromJSON","compressed","compressAndEncodeBase64","handleResponse","jsonString","encoder","uint8Array","compressionStream","compressedStream","chunks","_yield$reader$read","compressedArray","_chunks","binary","base64String","TextEncoder","encode","CompressionStream","pipeThrough","getReader","subarray","_arguments4","includeAllRows","formattedSumrow","getStatusInfoRows","_arguments5","testFlagFilters","isBetaService","isABtesting","production","getENV","_this2$_config","clientSideId","_this2$_config$stream","streaming","NullClient","userrow","context","_config","LDClient","_initialize","resolveRegistration","launchDarkly","client","bootstrap","nonExistantFlagValue","_validateErrors","form_array","json_array","_getForm","_importForm","existing_form_array","this_is_a_new_form","_getNeededChanges","_getConfirmMessage","_addNeededRecords","_normalizeForm","_saveAllDirtyFormRecords","save_order","save_next_index","new_form","addChanges","new_features","new_fields","_testType","adds","_createRecordParams","feature_name","old_form","normalizedCurrent","normalizedNeeded","_array_diff","field_object","normalized","_encodeOptions","_getFormFields","_getFormFeatures","field_json","_getFormFieldFeatures","_decodeOptions","lenght","all_form_fields","field_ids","feature_json","formFeature","formFieldFeatures","formFieldFeature","_googleCharts","getMetadata","metadata","provideRouteAlternatives","minDist","drivingOptions","departureTime","lockAccuracy","inUse","startIfGpsIsOn","setLastError","showPosition","positionError","searchingLocation","lastError","currentLatitude","currentLongitude","currentAccuracy","resetPosition","showErrorTooltip","lastErrorHeader","lastErrorMessage","tryToLockLocation","isMapsLoaded","checkLocationChange","gloc1","gloc2","haversine","R","dLat","dLon","lat1","lat2","lon1","radians","_len","_key","deg","sin","cos","asin","iconClass","GpsService","lockLocation","mapsLoaded","errorShown","errorTooltipText","_window$google","_lastError","partialFullScreen","overlay_loader","breakpoints","md","stickyValue","showStickyNote","bp","breakPointGetter","documentElement","clientWidth","isBelowMd","isSafari","isAndroidBrowser","isMobileComputed","_format","isLogged","me2Promise","setDefaultLang","loadLangs","getMe2","createFromsAndSetInformation","initFlags","getCustomerSettings","configureSentry","configureChatBot","configureSnowPlow","allDoneMarkAppReady","addStonly","_snowplowinit","me2","zendesk_key","ZENDESK_KEY","_chatBot","_stonly","STONLY_WID","setExtra","handleAppLinks","globalInitAppServiceGotoRoute","gotoRoute","globalInitAppServiceGotoUrl","urlString","protocol","pathParts","createForms","pushCurrentUser","pushCompanyInfo","setSessionVariables","setAnalyticsContext","updateCachedUserOnSave","setTimezone","checkCompanyInfo","unsetStorage","createModels","alreadyResolved","getStorage","prevent_caching","_resolveGetMe2","updateDataFromMe2","includeId","setStorage","companyInfo","changeTimeZone","fetchSavedLanguageFromTtapi","acceptedLangs","setLang","setLocale","setAnalyticsCollectionEnabled","setUserProperty","_intl","lang_cache","use_cache","trans","makeWordChanges","makeBrandingWordChanges","formatTranslations","_addTranslations","termsSettingStr","termList","startsWithUppercase","newStr","addTranslations","syncing","hashed","getHashedKey","_namespacedKey","createId","setItemsWithBackend","obj_key","return_items","findBelongsTo","belongsToId","new_items","remove_flag","stringified","getBelongsToId","synchronize","promiseArray","synchronizeItem","when","data_to_server","sync","isFilter","resolveBelongsTo","belongsToItem","filter_array","isOneFilter","getId","json_data","realdata","MenuService","regenerateMenu","visibleItems","hiddenItems","elementSizeWithWithPaddingAndMargin","restToHidden","menuObject","getMenuObject","menuWidth","moreWidth","getTextWidth","moreIsActive","allItems","newMenuOrder","ottaMenuOrder","moveMenuOrder","reorderedItems","orderId","menuItems","font","measureText","mappedMenu","_item$link","menuItem","MetaService","metaDescription","textContent","_metrics","computedFromConfig","hasEmberTether","hasLiquidWormhole","hasLiquidTether","destinationElementId","Scroller","relationFields","asyncRelations","attributeNamesWithoutInverse","allAttributes","relationObjects","modelAttributes","attributeName","MomentService","defaultFormat","mySitesArray","loadFromLocalStorageWithBackend","hasMySites","projectimage","setToDefault","addSiteObject","setCurrentSite","_notifications","is_online","hasBeenCalled","StatusBar","backgroundColorByHexString","statusBarColor","overlaysWebView","styleLightContent","checkAppVersion","createFolder","InAppBrowser","fileSys","getDirectory","exclusive","directory","appDir","fileWrite","retWriter","onwriteend","truncate","conf","Android","img_alt","testFlags","msgFlags","permission","grantPermission","onTokenRefresh","onMessageReceived","tap","redirectRoute","redirectParams","getToken","animate","ease","getScrollableTop","getVerticalCoord","opts","fieldList","keyList","traverseList","firstKey","_modify","_getKeyType","_parseKey","_cleanKey","_isKeyNegation","fieldobj","isKeyOn","isFieldSettingOn","_turnOff","_turnOn","_turnOn_field","_turnOff_field","_turnOn_fieldSetting","_turnOff_fieldSetting","SessionService","refreshPromise","expiredRecoveryStarted","makeTokenOld","expiresIn","expiredRequest","currentRoute","captureMessage","SettingsService","clearCacheAndRefreshNeeded","SkvReport","_store","SurveysService","modules_array","_textMeasurer","Clock","interval","siteid","cleanUnneededQueryParams","_tour","TTAPI","clientv","_request","checkIfUserHasSaldos","userWorktimegroup","getSaldoSettings","linkToPdf","linkText","businessId","inviteCreator","vgCustomerId","formatUrl","customer-identifier","getVgCustomerId","customerIdentifier","tour","plusButton","createTourSteps","showCancelLink","attachTo","highlightClass","copyStyles","addSteps","openWt","Adaptive","_private","BooleanTransform","DateTransform","NumberTransform","Transform","serialized","deserialized","StringTransform","hetu","uniquenum","checknum","concatted","checknumClaculated","nums","$1","checksum","$2","_calculatePosition","_canUseDom","_me2$userrow$user$","chat","lvchtarr","data-chat-id","zESettings","webWidget","departments","zE","readOnly","_country","invoices","comissions","activity","billinginfomissing","tos","invoicesat2Netvisor","invoicesat2","invoicesat1","invoicesat2legacy","invoicesat1legacy","shouldFormatHours","loadedScripts","head","applicationDirectory","locales","_objectTransforms","addData","make","createDataURL","_removeFromDom","_renderClassicChart","_renderMaterialChart","PLATFORM","context_customer","context_product","context_user","contexts","contextGenerator","g","GlobalSnowplowNamespace","parentNode","insertBefore","appId","snowPlow","app_id","webPage","performanceTiming","customer_name","organization_no","countryiso","business_unit","customfield_customer1","r12","user_type","registration_date","eventType","pseudoClicks","trackContent","minimumVisitLength","heartbeatDelay","notEditable","onlyOption","StonlyWidget","_api","scriptPath","apiPath","sPath","onreadystatechange","SKIP_INIT_USERLEVELS","signed_up","user_role_functional","userRoleFunctional","user_role_persona","userRolePersona","mandatory_visma_reporting_user_is_professional_user","PROFESSIONAL_USERLEVELS","mandatory_visma_reporting_user_works_in_accounting_office","user_country","USER_ROLE_FUNCTIONAL","5","4","3","6","9","USER_ROLE_PERSONA","7","8","metaName","rawConfig","getAttribute","runningTests","defaultLocale","BEACONBACKENDURL","CC_TVEMP","CC_TVREP","CC_URL_TVPER","CC_URL_TVCARD"],"mappings":"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gF,MAAM;AAC1B,IAAKF,EAAK,OAAO;AAMjB,IALA,IAAM4/E,EAAO5/E,EAAI,GAAGwG,MAAM,WAAY,GAChC+5E,EAAOC,KAAKxgF,EAAI,IAClBoK,EAAIm2E,EAAK58E,OACP88E,EAAQ,IAAIC,WAAWt2E,GAEtBA,KACHq2E,EAAMr2E,GAAKm2E,EAAKI,WAAWv2E;AAE/B,IAAM4U,EAAO,IAAI4hE,KAAK,CAACH,GAAQ,CAAEtlF,KAAMykF;AAGvC,OAFA5gE,EAAK1hB,KAAOgjF,EACZthE,EAAKygE,iBAAmB,IAAIhwE,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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","file":"tt4.js","sourcesContent":["'use strict';\n\n\n","define(\"tt4/adapters/-json-api\", [\"exports\", \"@ember-data/adapter/json-api\"], function (_exports, _jsonApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _jsonApi.default;\n    }\n  });\n});\n","/*\n * decaffeinate suggestions:\n * DS101: Remove unnecessary use of Array.from\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nimport { isArray } from '@ember/array';\nimport { computed } from '@ember/object';\n\nimport { throttle } from '@ember/runloop';\nimport { inject as service } from '@ember/service';\nimport RESTAdapter from 'ember-data/adapters/rest';\nimport collector from '../classes/collector';\nimport DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';\nimport { get, set } from '@ember/object';\nimport config from 'tt4/config/environment';\n\nexport default RESTAdapter.extend(DataAdapterMixin, {\n    onlineChecker: service(),\n    dialogs: service(),\n    intl: service(),\n    session: service(),\n    flags: service(),\n    sessionhelper: service(),\n\n    // list of all errors that are handled somewhere else so error popup is not needed\n    init() {\n        this._super(...arguments);\n        this.handledErrors = [\n            'overlap',\n            'validation_error',\n            'not_allowed',\n            'mandatory_field_missing',\n        ];\n    },\n\n    ensureResponseAuthorized(status, headers, payload, requestData) {\n        if (\n            status === 401 &&\n            payload.error_description === 'The access token provided has expired'\n        ) {\n            this.sessionhelper.expiredRecovery(`${requestData.method} ${requestData.url}`);\n        } else {\n            return this._super(...arguments);\n        }\n    },\n\n    headers: computed('session.data.authenticated.access_token', function () {\n        let headers = {};\n        if (this.session.isAuthenticated) {\n            // OAuth 2\n            headers['Authorization'] = `Bearer ${this.session.data.authenticated.access_token}`;\n        }\n        return headers;\n    }),\n\n    host: computed('session.currentUser.partnerid', function () {\n        if (config.environment !== 'development' && get(this, 'flags').test('capi_url'))\n            return get(this, 'flags').test('capi_url');\n        else return collector.api_url();\n    }),\n\n    isSuccess(status, headers, payload) {\n        const handledErrors = get(this, 'handledErrors');\n\n        if (payload && payload.error && !Array.from(handledErrors).includes(payload.error)) {\n            const error_obj = {};\n            error_obj.responseText = payload.error;\n            error_obj.status = status;\n            error_obj.statusText = payload.error_msg;\n            set(this, 'last_error', error_obj);\n        }\n\n        return this._super(status, headers, payload);\n    },\n\n    showErrorDialog() {\n        return get(this, 'dialogs').alert(get(this, 'intl').t('general.error.too_many_calls'));\n    },\n\n    normalizeErrorResponse(status, headers, payload) {\n        if (payload && typeof payload === 'object' && payload.error) {\n            if (payload.error === 'too_many_calls') {\n                throttle(this, 'showErrorDialog', 10000);\n            }\n            payload.errors = {\n                error: payload.error,\n                error_msg: payload.error_msg,\n                errorMeta: payload.meta,\n            };\n            delete payload.error;\n            delete payload.error_msg;\n            delete payload.meta;\n        }\n        if (payload && typeof payload === 'object' && isArray(payload.errors)) {\n            payload.errors = {\n                error: payload.errors[0].title,\n                error_msg: payload.errors[0].details,\n            };\n        }\n\n        payload.errors = [payload.errors];\n\n        return this._super(status, headers, payload);\n    },\n\n    generatedDetailedMessage(status, headers, payload, requestData) {\n        return this._super(status, headers, JSON.stringify(payload.errors), requestData);\n    },\n\n    urlForQuery(query, modelName) {\n        if (query.form && query.field) {\n            modelName = query.form + '/' + query.field;\n            delete query.form;\n            delete query.field;\n        }\n\n        if (query.endpoint) {\n            const endpoint = query.endpoint;\n            delete query.endpoint;\n            return endpoint;\n        }\n\n        return this._super(query, modelName);\n    },\n\n    urlForUpdateRecord(id, modelName, snapshot) {\n        let url = this._super(id, modelName, snapshot);\n        if (snapshot.adapterOptions && snapshot.adapterOptions.validation === 'off') {\n            url += '?validation=off';\n        }\n        return url;\n    },\n});\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import DS from 'ember-data';\nimport DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';\nimport config from 'tt4/config/environment';\nimport { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default DS.JSONAPIAdapter.extend(DataAdapterMixin, {\n    sessionhelper: service(),\n    flags: service(),\n\n    headers: computed('session.data.authenticated.access_token', function () {\n        let headers = {};\n        if (this.session.isAuthenticated) {\n            // OAuth 2\n            headers['Authorization'] = `Bearer ${this.session.data.authenticated.access_token}`;\n        }\n        return headers;\n    }),\n\n    host: config.APP.CAPI3,\n\n    ensureResponseAuthorized(status, headers, payload, requestData) {\n        if (status === 401 && payload.error === 'jwt expired') {\n            this.sessionhelper.expiredRecovery(`${requestData.method} ${requestData.url}`);\n        } else {\n            return this._super(...arguments);\n        }\n    },\n});\n","import DS from 'ember-data';\nimport DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';\nimport config from 'tt4/config/environment';\nimport { computed } from '@ember/object';\n\nexport default DS.JSONAPIAdapter.extend(DataAdapterMixin, {\n    headers: computed('session.data.authenticated.access_token', function () {\n        let headers = {};\n        if (this.session.isAuthenticated) {\n            // OAuth 2\n            headers['Authorization'] = `Bearer ${this.session.data.authenticated.access_token}`;\n        }\n        return headers;\n    }),\n\n    authorizer: 'authorizer:application',\n    namespace: 'cardregister',\n    host: config.APP.TTAPI2,\n});\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import ApplicationAdapter from './application';\n\nexport default ApplicationAdapter.extend({\n    namespace: 'service',\n    defaultSerializer: 'form-serializer',\n});\n","import FormDefaultAdapter from './form-adapter';\n\nexport default FormDefaultAdapter.extend();\n","import FormDefaultAdapter from './form-adapter';\n\nexport default FormDefaultAdapter.extend();\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import FormDefaultAdapter from './form-adapter';\n\nexport default FormDefaultAdapter.extend();\n","import FormDefaultAdapter from './form-adapter';\n\nexport default FormDefaultAdapter.extend();\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import { computed } from '@ember/object';\nimport ttapiBase from './ttapi-base';\n\nexport default ttapiBase.extend({\n    namespace: computed(function () {\n        return this.createNamespace() + 'api';\n    }),\n});\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import FormDefaultAdapter from './form-adapter';\n\nexport default FormDefaultAdapter.extend();\n","import { inject as service } from '@ember/service';\nimport EmberObject, { get } from '@ember/object';\n\nexport default EmberObject.extend({\n    capi: service(),\n\n    find() {\n        return get(this, 'capi')\n            .request('/settings/gui/menu', {\n                dataType: 'json',\n            })\n            .then(() => this._data());\n    },\n    _data(data) {\n        return data;\n    },\n});\n","import { assert } from '@ember/debug';\nimport { computed } from '@ember/object';\nimport DS from 'ember-data';\nimport config from 'tt4/config/environment';\nimport DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';\nimport { resolve } from 'rsvp';\nimport { inject as service } from '@ember/service';\n\nexport default DS.RESTAdapter.extend(DataAdapterMixin, {\n    flags: service(),\n    sessionhelper: service(),\n\n    headers: computed('session.data.authenticated.access_token', function () {\n        let headers = {};\n        if (this.session.isAuthenticated) {\n            // OAuth 2\n            headers['Authorization'] = `Bearer ${this.session.data.authenticated.access_token}`;\n        }\n        return headers;\n    }),\n    host: computed('session.currentUser.partnerid', 'flags._client', function () {\n        if (config.environment !== 'development' && this.flags.test('ttapi_url')) {\n            return this.flags.test('ttapi_url');\n        }\n        assert(\n            'TTAPI_HOST must be set in environment.js to use ttapi adapter',\n            config.APP.TTAPI_HOST,\n        );\n        return config.APP.TTAPI_HOST;\n    }),\n    namespace: computed(function () {\n        assert(\n            'TTAPI_FOLDER must be set in environment.js to use ttapi adapter',\n            config.APP.TTAPI_FOLDER,\n        );\n        return this.createNamespace();\n    }),\n\n    ensureResponseAuthorized(status, headers, payload, requestData) {\n        if (status === 401 && payload.message === 'The access token provided has expired') {\n            this.sessionhelper.expiredRecovery(`${requestData.method} ${requestData.url}`);\n        } else {\n            return this._super(...arguments);\n        }\n    },\n\n    createNamespace() {\n        let path = config.APP.TTAPI_FOLDER;\n        if (path.slice(0, 1) === '/') {\n            path = path.slice(1);\n        }\n        return path;\n    },\n\n    query() {\n        //skip ttapi requests if at2\n        if (config.target === 'at2') {\n            return resolve([]);\n        }\n        return this._super(...arguments);\n    },\n});\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import { computed } from '@ember/object';\nimport ttapiBase from './ttapi-base';\n\nexport default ttapiBase.extend({\n    namespace: computed(function () {\n        return this.createNamespace() + 'workdayCalendar';\n    }),\n});\n","import { computed } from '@ember/object';\nimport ttapiBase from './ttapi-base';\n\nexport default ttapiBase.extend({\n    namespace: computed(function () {\n        return this.createNamespace() + 'workdayCalendar';\n    }),\n});\n","import { computed } from '@ember/object';\nimport ttapiBase from './ttapi-base';\n\nexport default ttapiBase.extend({\n    namespace: computed(function () {\n        return this.createNamespace() + 'workdayCalendar';\n    }),\n});\n","import Ember from 'ember';\nimport Application from '@ember/application';\nimport Resolver from 'ember-resolver';\nimport loadInitializers from 'ember-load-initializers';\nimport config from './config/environment';\nimport './models/custom-inflector-rules';\nimport { set, get } from '@ember/object';\nimport { startSentry } from './sentry';\n\nstartSentry();\n\nexport default class App extends Application {\n    modulePrefix = config.modulePrefix;\n    podModulePrefix = config.podModulePrefix;\n    Resolver = Resolver;\n}\n\nEmber.TextSupport.reopen({\n    // These are not needed if we don't want to give them in templates..\n    attributeBindings: ['autocapitalize'],\n    //    autocapitalize: \"off\",\n    autocorrect: 'off',\n    autocomplete: 'off',\n});\n\nif (window.sessionStorage && sessionStorage.getItem('APP')) {\n    let app_override = JSON.parse(sessionStorage.getItem('APP'));\n    Object.keys(app_override).forEach(function (key) {\n        config.APP[key] = app_override[key];\n    });\n}\n\nif (Modernizr.localstorage && localStorage.getItem('devModeOn')) {\n    set(Ember, 'devModeOn', true);\n}\n\nif (config.APP.devMode) {\n    set(Ember, 'devModeOn', true);\n}\n\nEmber.dev = function () {\n    if (get(Ember, 'devModeOn') === true) {\n        if (Modernizr.localstorage) {\n            localStorage.removeItem('devModeOn');\n        }\n        console.info('Development mode is now turned off!'); //eslint-disable-line\n        set(Ember, 'devModeOn', false);\n    } else {\n        if (Modernizr.localstorage) {\n            localStorage.setItem('devModeOn', 'on');\n        }\n        console.info('Development mode is now turned on!'); //eslint-disable-line\n        set(Ember, 'devModeOn', true);\n    }\n};\n\nError.stackTraceLimit = 100;\n\nloadInitializers(App, config.modulePrefix);\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nimport { Promise as EmberPromise } from 'rsvp';\nimport OAuth2PasswordGrantAuthenticator from 'ember-simple-auth/authenticators/oauth2-password-grant';\nimport config from 'tt4/config/environment';\nimport { warn } from '@ember/debug';\nimport { later } from '@ember/runloop';\nimport { typeOf } from '@ember/utils';\nimport { get } from '@ember/object';\n\nexport default OAuth2PasswordGrantAuthenticator.extend({\n    serverTokenEndpoint: config.APP.COLLECTOR_API_URL + '/login',\n    clientId: config.clientId,\n    makeRequest(url, data) {\n        data.client_id = get(this, 'clientId');\n        return this._super(url, data);\n    },\n\n    restore(data) {\n        return new EmberPromise((resolve, reject) => {\n            return this._super(data).then(resolve, (response) => {\n                warn('Restore failed. Goto to /offline', { id: 'collector-auth-warn' });\n\n                if (typeOf(response) === 'error') {\n                    // couldn't get any response\n                    data.offline = true;\n                    this.trigger('sessionDataUpdated', data);\n\n                    resolve(data);\n                } else {\n                    reject();\n                    later(this, () => (location.href = config.rootURL), 1000);\n                }\n            });\n        });\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/classes/collector.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar collector,\n    indexOf = [].indexOf;\n\nimport config from '../config/environment';\n\nimport DS from 'ember-data';\n\nimport CollectorModel from '../models/collector';\n\nimport localization from '../classes/localization';\n\nimport CollectorValidationMixin from '../mixins/collector-validation';\n\nimport $ from 'jquery';\n\ncollector = Ember.Object.create({\n    //this.api_url = 'http://p.movenium.com/collector-4.0_dev';\n    // testing url for new api version\n    api_url: function () {\n        return config.APP.COLLECTOR_API_URL;\n    },\n    forms_url: '/forms',\n    getFormSettings: function () {\n        var formSettings, jsonParse;\n        formSettings = '[{\"date_interval\":\"2\"}]';\n        jsonParse = JSON.parse(formSettings);\n        return jsonParse;\n    },\n\n    //    This method should create all the needed models for ember.\n\n    //    this is done when application initialization is ready\n    //    basically we get json-formatted data of forms\n    //    and create ember DS models from those\n\n    createEmberModels: function (access_token) {\n        var d, headers, self;\n        if (this.testing) {\n            return this.createTestModels();\n        }\n        //this function returns promise\n        d = new $.Deferred();\n        self = this;\n        headers = null;\n        if (access_token) {\n            headers = {\n                Authorization: 'Bearer ' + access_token,\n            };\n        }\n        $.ajax({\n            url: self.api_url() + self.forms_url,\n            datatype: 'json',\n            headers: headers,\n            //if something failed\n            tryCount: 0,\n            retryLimit: 1,\n            //error: (response, textStatus, errorThrown) ->\n            success: function (data) {\n                //put data to localstorage\n                //            localStorage.forms = JSON.stringify(data);\n                data = self.addCommonForms(data);\n                self.create_models(data, self);\n                return d.resolve();\n            },\n            error: function (reason) {\n                localStorage.removeItem('ember_simple_auth-session');\n                location.reload();\n                return d.reject(reason);\n            },\n        });\n        return d.promise();\n    },\n    // change dropdown options from object to array .. handlebers each requires this\n    reparse_dropdown_options: function (forms) {\n        $.each(forms, function (form_index, form) {\n            return $.each(form.objects, function (obj_index, object) {\n                var is_array, temp;\n                if (\n                    (object.type === 'dropdown_values' || object.type === 'dropdown_options') &&\n                    typeof object.options === 'object'\n                ) {\n                    temp = new Array(0);\n                    is_array = Object.prototype.toString.call(object.options) === '[object Array]';\n                    $.each(object.options, function (opt_index, option) {\n                        var id;\n                        if (opt_index === 0 && option === '') {\n                            return (forms[form_index].objects[obj_index].empty_option = true);\n                        } else {\n                            id = is_array ? option : opt_index;\n                            return temp.push({\n                                id: id,\n                                value: option,\n                            });\n                        }\n                    });\n                    return (forms[form_index].objects[obj_index].options = temp);\n                }\n            });\n        });\n        return forms;\n    },\n    create_models: function (data, self) {\n        var all_attributes, async_relations, rel_objects;\n        self = this;\n        self.set('forms', self.reparse_dropdown_options(data.forms));\n        if (data.updater != null) {\n            self.set('products', data.updater.products);\n        }\n        if (data.updater != null) {\n            self.set('modules', data.updater.modules);\n        }\n        self.set('tt3flag', data.tt3flag);\n        //object for storing all model information\n        //because models can be defined only once, so we do that in the\n        //end of this script\n        all_attributes = {};\n        rel_objects = {};\n        async_relations = [\n            'materiallog.type',\n            'multitask.taskname',\n            'user.employer',\n            'urakkalog.type',\n            'customlog.type',\n            'worktask.project',\n            'holiday.user',\n        ];\n        //iterate every form\n        $.each(data.forms, function (index, value) {\n            var form_name, model_attributes;\n            //form name must be \"classified\",\n            //because ember model names are like that\n            //e.g. wage_periods => WagePeriods\n            form_name = index.classify();\n            model_attributes = {};\n            //iterate every attribute of the form\n            $.each(value.objects, function (attribute_name, attributes_arr) {\n                var attr, ref, ref1, relation, relation_fields;\n                //put attribute to the object\n                attr = null;\n                relation_fields = ['database', 'databasearray', 'timerlink', 'work_permit_attachment'];\n                if (\n                    ((ref = attributes_arr.type), indexOf.call(relation_fields, ref) >= 0) &&\n                    attributes_arr.options\n                ) {\n                    relation = attributes_arr.options.form;\n                    //if array does not exist, create empty array so that push method works\n                    if (typeof rel_objects[relation] === 'undefined') {\n                        rel_objects[relation] = [];\n                    }\n                    //put relations to helper array\n                    rel_objects[relation].push(form_name);\n                    if (attributes_arr.type === 'databasearray' || attributes_arr.type === 'work_permit_attachment') {\n                        attr = DS.hasMany(relation, {\n                            async: true,\n                        });\n                    } else if (attribute_name === 'parent') {\n                        attr = DS.belongsTo(relation, {\n                            inverse: null,\n                            async: false,\n                        });\n                    } else if (attribute_name === 'superior') {\n                        attr = DS.belongsTo(relation, {\n                            inverse: null,\n                            async: false,\n                        });\n                    } else if (attributes_arr.async != null && attributes_arr.async) {\n                        attr = DS.belongsTo(relation, {\n                            async: true,\n                        });\n                    } else if (\n                        ((ref1 = form_name.toLowerCase() + '.' + attribute_name),\n                        indexOf.call(async_relations, ref1) >= 0)\n                    ) {\n                        attr = DS.belongsTo(relation, {\n                            async: true,\n                        });\n                    } else {\n                        attr = DS.belongsTo(relation, {\n                            async: false,\n                        });\n                    }\n                } else {\n                    //otherwise just create normal attribute\n                    attr = DS.attr();\n                }\n                //create the attribute object\n                return (model_attributes[attribute_name] = attr);\n            });\n            //put model attributes to helper object\n            return (all_attributes[form_name] = model_attributes);\n        });\n        all_attributes = this.createWorkdayModels(all_attributes, data.forms);\n        //iterate over relations array\n        $.each(rel_objects, function (form_name, models) {\n            var attributes;\n            form_name = form_name.classify();\n            if (!all_attributes[form_name]) {\n                //create only name field for empty model\n                attributes = {};\n                attributes.name = DS.attr();\n                return (all_attributes[form_name] = attributes);\n            }\n        });\n        //create hasMany-relations\n        // do we really need this? commented by veikko 14.8.2015 so parent relations could work\n        //            $.each models, (index, value) ->\n        //                attributes = {}\n        //                value = value.decamelize()\n        //                attributes[value] = DS.hasMany(value)\n        //                $.extend(all_attributes[form_name], attributes)\n        //iterate attributes helper object and create Ember Models from there\n        return $.each(all_attributes, function (form_name, attributes) {\n            return (Tt4[form_name] = CollectorModel.extend(CollectorValidationMixin, attributes));\n        });\n    },\n    deleteModels: function (store) {\n        //iterate every form\n        return $.each(this.forms, function (form_name, value) {\n            //unload model data\n            return store.unloadAll(form_name);\n        });\n    },\n    //delete Tt4[form_name]\n    createWorkdayModels: function (all_attributes, forms) {\n        all_attributes['WorkdayDay'] = {\n            date: DS.attr('string'),\n            minutes: DS.attr('number'),\n            own: DS.attr('boolean'),\n            desc: DS.attr('string'),\n            country: DS.attr('string'),\n            absence_minutes: DS.attr('number'),\n        };\n        all_attributes['WorkdayWeek'] = {\n            day: DS.attr('string'),\n            starttime: DS.attr('string'),\n            endtime: DS.attr('string'),\n            minutes: DS.attr('number'),\n            own: DS.attr('boolean'),\n            overtimerule: DS.belongsTo('WorkdayOvertimeRule'),\n            max_minutes: DS.attr('number'),\n            absence_minutes: DS.attr('number'),\n        };\n        all_attributes['WorkdayOvertimeRule'] = {\n            name: DS.attr('string'),\n            rules: DS.attr('string'),\n            workdayWeeks: DS.hasMany('WorkdayWeek'),\n        };\n        if (forms.worktimegroup) {\n            all_attributes['WorkdayDay'].worktimegroup = DS.belongsTo('worktimegroup');\n            all_attributes['WorkdayWeek'].worktimegroup = DS.belongsTo('worktimegroup');\n        }\n        return all_attributes;\n    },\n    addCommonForms: function (data) {\n        var commonForms, form, key;\n        // This is a bit stupid because we can't give privileges depending on userlevel\n        commonForms = this.get('commonForms');\n        for (key in commonForms) {\n            form = commonForms[key];\n            data['forms'][key] = form;\n        }\n        return data;\n    },\n    commonForms: {\n        rounding_rule: {\n            objects: {\n                time_from: {\n                    type: 'time_new',\n                    features: {\n                        mandatory: true,\n                    },\n                },\n                time_to: {\n                    type: 'time_new',\n                    features: {\n                        mandatory: true,\n                    },\n                },\n                time_result: {\n                    type: 'time_new',\n                    features: {\n                        mandatory: true,\n                    },\n                },\n            },\n            privileges: {\n                add: true,\n                edit: true,\n                remove: true,\n            },\n        },\n        logo: {\n            objects: {\n                logo: {\n                    type: 'hdfile',\n                    features: {\n                        is_image: true,\n                        public: true,\n                        single_image: true,\n                    },\n                },\n            },\n        },\n    },\n    createTestModels: function () {\n        var d, data;\n        d = new $.Deferred();\n        data = '';\n        this.create_models(JSON.parse(data), this);\n        //mark as resolved\n        d.resolve();\n        return d;\n    },\n    getPrivilege: function (form, privilege) {\n        if (!this.forms) {\n            return false;\n        }\n        if (privilege === 'show') {\n            if (this.forms[form]) {\n                return true;\n            } else {\n                return false;\n            }\n        }\n        if (!this.forms[form]) {\n            return false;\n        }\n        return this.forms[form].privileges[privilege];\n    },\n    getFormObjects: function (form) {\n        form = form.replace('-', '_');\n        if (!this.forms) {\n            return false;\n        }\n        if (!this.forms[form]) {\n            return false;\n        }\n        if (!this.forms[form].objects) {\n            return false;\n        }\n        return this.forms[form].objects;\n    },\n    getFormObject: function (obj) {\n        var arr, form, obj_name;\n        arr = obj.split('.');\n        form = arr[0].replace('-', '_');\n        obj_name = arr[1];\n        if (!this.forms) {\n            return false;\n        }\n        if (!this.forms[form]) {\n            return false;\n        }\n        if (!this.forms[form].objects) {\n            return false;\n        }\n        if (!this.forms[form].objects[obj_name]) {\n            return false;\n        }\n        return this.forms[form].objects[obj_name];\n    },\n    hasErrors: function (form) {\n        if (!this.forms) {\n            return false;\n        }\n        if (!this.forms[form]) {\n            return false;\n        }\n        if (this.forms[form].errors) {\n            return true;\n        }\n        return false;\n    },\n    getErrors: function (form) {\n        if (!this.forms) {\n            return false;\n        }\n        if (!this.forms[form]) {\n            return false;\n        }\n        if (this.forms[form].errors) {\n            return this.forms[form].errors;\n        }\n        return false;\n    },\n});\n\nexport default collector;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/classes/localization.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar localization;\n\nmoment.updateLocale('fi', {\n    weekdaysMin: 'Su_Ma_Ti_Ke_To_Pe_La'.split('_'),\n    weekdays: 'Sunnuntai_Maanantai_Tiistai_Keskiviikko_Torstai_Perjantai_Lauantai'.split('_'),\n    months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n        '_',\n    ),\n    monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n    longDateFormat: {\n        L: 'D.M.YYYY',\n        LT: 'HH:mm',\n        LL: 'D.M.YYYY HH:mm:ss',\n        llll: 'D.M.YYYY HH:mm:ss',\n        LTS: 'HH.mm.ss',\n        LLL: 'Do MMMM[ta] YYYY, [klo] LT',\n        LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] LT',\n        l: 'D.M.YYYY',\n        ll: 'Do MMM YYYY',\n        lll: 'Do MMM YYYY, [klo] LT',\n    },\n    week: {\n        dow: 1, // Monday is the first day of the week.\n        doy: 4, // The week that contains Jan 4th is the first week of the year.\n    },\n});\n\nmoment.updateLocale('sv', {\n    weekdaysMin: 'Sö_Må_Ti_On_To_Fr_Lö'.split('_'),\n    weekdays: 'Söndag_Måndag_Tisdag_Onsdag_Torsdag_Fredag_Lördag'.split('_'),\n    months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n        '_',\n    ),\n    monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n    longDateFormat: {\n        L: 'YYYY-MM-DD',\n        LT: 'HH:mm',\n        LL: 'YYYY-MM-DD HH:mm:ss',\n        llll: 'YYYY-MM-DD HH:mm:ss',\n        LTS: 'LT:ss',\n        LLL: 'D MMMM YYYY LT',\n        LLLL: 'dddd D MMMM YYYY LT',\n    },\n    week: {\n        dow: 1, // Monday is the first day of the week.\n        doy: 4, // The week that contains Jan 4th is the first week of the year.\n    },\n});\n\nlocalization = Ember.Object.create(\n    {\n        //    /**\n        //     * Format float or \"hh:mm\" string to hours, if format specified then returns number as a string with the right separator\n        //     * @param float hours variable or \"hh:mm\" string to be converted to hours\n        //     * @return string given float as hours string\n        //     */\n        formatHours: function (hours, format) {\n            var minutes, real_hours, timeArr;\n            if (typeof hours === 'string' && hours.indexOf(':') > -1) {\n                timeArr = hours.split(':');\n                hours = parseInt(timeArr[0], 10) + parseInt(timeArr[1], 10) / 60;\n            }\n            if (format === 'excel') {\n                return hours.toLocaleString(moment.locale());\n            }\n            if (format === 'serverlessexcel') {\n                return hours;\n            }\n            // Either use ceil or floor depending if positive or negative number\n            if (Math.sign(hours) === -1) {\n                real_hours = Math.ceil(hours);\n            } else {\n                real_hours = Math.floor(hours);\n            }\n            minutes = Math.abs(Math.round((hours - Math.floor(real_hours)) * 60));\n            if (minutes === 60) {\n                real_hours++;\n                minutes = 0;\n            }\n            return (\n                (Object.is(real_hours, -0) ? '-' : '') +\n                real_hours +\n                ':' +\n                (minutes < 10 ? '0' : '') +\n                minutes +\n                'h'\n            );\n        },\n        /*\n  if hours are over 24, put also days to string\n  */\n        formatDaysAndHours: function (hours) {\n            var days, minutes, timeArr;\n            if (typeof hours === 'string' && hours.indexOf(':') > -1) {\n                timeArr = hours.split(':');\n                hours = parseInt(timeArr[0], 10) + parseInt(timeArr[1], 10) / 60;\n            }\n            minutes = Math.round((hours - Math.floor(hours)) * 60);\n            if (hours > 24) {\n                days = Math.floor(hours / 24);\n                hours = hours - days * 24;\n                return (\n                    days +\n                    'd ' +\n                    Math.floor(hours) +\n                    ':' +\n                    (minutes < 10 ? '0' : '') +\n                    minutes +\n                    'h'\n                );\n            }\n            return Math.floor(hours) + ':' + (minutes < 10 ? '0' : '') + minutes + 'h';\n        },\n        //    // register formatHours as handlebar helper hours\n    },\n    Ember.Helper.helper('hours', function (hours) {\n        return localization.formatHours(hours);\n    }),\n);\n\nexport default localization;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/classes/validations.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Validator,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport { isEmpty } from '@ember/utils';\n\nimport config from '../config/environment';\n\nimport $ from 'jquery';\n\nimport { getOwner } from '@ember/application';\nimport fetch from 'fetch';\nimport { pluralize } from 'ember-inflector';\n\nValidator = Ember.Object.create({\n    /*\n  validate_mandatory: (model, value, options) ->\n      d = new $.Deferred()\n      if typeof options == 'object'\n          for obj in options\n              for k, v of obj\n                  v = v.toString()\n                  v_arr = v.split(',')\n                  compareVal = model.get(k)\n\n                  #fix for checkbox when checkbox is not set in init\n                  if v is \"true\" or v is \"false\"\n                      if compareVal == undefined\n                          compareVal = false\n\n                  if (compareVal is null || compareVal is \"\" || compareVal == undefined)\n                      d.resolve(true)\n                      continue\n                  compareVal = compareVal.toString()\n                  if v.substring(0,1) == \"!\"\n                      if compareVal != v.substring(1)\n                          mandatory = true\n                  else\n                      if compareVal in v_arr\n                          mandatory = true\n              if mandatory then d.resolve((value is null || value is \"\" || value is undefined)) else d.resolve()\n      else\n          d.resolve((value is null || value is \"\" || value is undefined))\n\n      return d\n   */\n    validate_mandatory: function (model, value, options) {\n        return new Ember.RSVP.Promise((resolve) => {\n            if (!this._is_visible(model, options)) {\n                resolve(false);\n            }\n            if (value instanceof Ember.ObjectProxy || value instanceof Ember.ArrayProxy) {\n                value = value.get('content');\n            }\n            return resolve(Ember.isEmpty(value));\n        });\n    },\n    _is_visible: function (model, options) {\n        var i, is_visible, len, test, test_field, test_values;\n        if (!(typeof options === 'object')) {\n            return true;\n        }\n        if (!model) {\n            return true;\n        }\n        is_visible = false;\n        for (i = 0, len = options.length; i < len; i++) {\n            test = options[i];\n            for (test_field in test) {\n                test_values = test[test_field];\n                if (this._value_is_in_list(model.get(test_field), test_values)) {\n                    is_visible = true;\n                }\n            }\n        }\n        return is_visible;\n    },\n    _value_is_in_list: function (value, list_string) {\n        var found, list, negation;\n        // make sure that list_string is string\n        list_string = list_string.toString();\n        // checkbox\n        if (list_string === 'true') {\n            if (value) {\n                return true;\n            } else {\n                return false;\n            }\n        }\n        if (list_string === 'false') {\n            if (value) {\n                return false;\n            } else {\n                return true;\n            }\n        }\n        negation = false;\n        if (list_string.substring(0, 1) === '!') {\n            list_string = list_string.substring(1);\n            negation = true;\n        }\n        list = list_string.split(',');\n        found = indexOf.call(list, value) >= 0;\n        if (indexOf.call(list, '(empty)') >= 0) {\n            found = isEmpty(value);\n        }\n        if (negation) {\n            return !found;\n        } else {\n            return found;\n        }\n    },\n    // Validate length of value\n\n    // value: |string|number|array| to validate length on, if array we validate each row of array\n    // options: |number| wanted length\n    validate_length: function (model, value, options) {\n        var d, error, i, item, len, parsed;\n        d = new $.Deferred();\n        error = false;\n        if (!value) {\n            error = false;\n        } else if (this.isJSON(value)) {\n            parsed = JSON.parse(value);\n            if (Array.isArray(parsed)) {\n                for (i = 0, len = parsed.length; i < len; i++) {\n                    item = parsed[i];\n                    if (item.toString().length !== options) {\n                        error = true;\n                    }\n                }\n            }\n        } else if (value.length !== options) {\n            error = true;\n        }\n        if (error) {\n            d.resolve({\n                length: options,\n            });\n        } else {\n            d.resolve();\n        }\n        return d;\n    },\n    validate_minLength: function (model, value, options) {\n        var d;\n        d = new $.Deferred();\n        if (value.length < options) {\n            d.resolve({\n                length: options,\n            });\n        } else {\n            d.resolve();\n        }\n        return d;\n    },\n    validate_maxLength: function (model, value, options) {\n        var d;\n        d = new $.Deferred();\n        if (value && value.length > options) {\n            d.resolve({\n                length: options,\n            });\n        } else {\n            d.resolve();\n        }\n        return d;\n    },\n    validate_number: function (model, value, options) {\n        var d;\n        d = new $.Deferred();\n        if (isNaN(value)) {\n            d.resolve(true);\n        } else {\n            d.resolve();\n        }\n        return d;\n    },\n    validate_forced_pause: function (model, value, options) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var minutes, split;\n            if (!model.get('pause')) {\n                resolve();\n            }\n            // check for start-end or work_hours\n            if (model.get('endtime')) {\n                minutes = moment(model.get('date') + ' ' + model.get('endtime')).diff(\n                    moment(model.get('date') + ' ' + model.get('starttime')),\n                    'minutes',\n                );\n                if (minutes < 0) {\n                    minutes += 1440;\n                }\n            } else {\n                split = model.get('work_hours').split(':');\n                minutes = parseInt(split[0], 10) * 60 + parseInt(split[1], 10);\n            }\n            if (minutes > 360 && model.get('pause') < 30) {\n                return resolve(true);\n            }\n            return resolve();\n        });\n    },\n    validate_multiPause: function (model, value, options) {\n        return new Ember.RSVP.Promise((resolve) => {\n            // If both starttime and endtime are empty, we don't need to validate multipauses (😁)\n            if (!model.get('endtime') && !model.get('starttime')) resolve(false);\n            // If no multipauses at all, no need to validate anything\n            if (isEmpty(model.get('multipause'))) resolve(false);\n\n            // Begin validating worktime multipauses one by one\n            model.get('multipause').forEach((multipause) => {\n                if (!multipause.start) return; // continue loop if multipause doesn't have start\n                let multiPauseStart = moment('01-01-01 ' + multipause.start, 'YY-MM-DD HH:mm');\n                let worktimeStart = moment('01-01-01 ' + model.get('starttime'), 'YY-MM-DD HH:mm');\n\n                if (model.get('endtime')) {\n                    let worktimeEnd = moment('01-01-01 ' + model.get('endtime'), 'YY-MM-DD HH:mm');\n                    const worktimeGoesOvernight = worktimeEnd.isBefore(worktimeStart);\n                    if (worktimeGoesOvernight) {\n                        if (\n                            multiPauseStart.isBefore(worktimeStart) &&\n                            multiPauseStart.isBefore(worktimeEnd)\n                        )\n                            multiPauseStart = moment(\n                                '01-01-02 ' + multipause.start,\n                                'YY-MM-DD HH:mm',\n                            );\n                        worktimeEnd = moment('01-01-02 ' + model.get('endtime'), 'YY-MM-DD HH:mm');\n                    }\n\n                    if (!multiPauseStart.isBetween(worktimeStart, worktimeEnd)) resolve(true);\n                    if (multipause.end) {\n                        let multiPauseEnd = moment('01-01-01 ' + multipause.end, 'YY-MM-DD HH:mm');\n                        if (\n                            worktimeGoesOvernight &&\n                            multiPauseEnd.isBefore(worktimeStart) &&\n                            multiPauseEnd.isBefore(\n                                moment('01-01-01 ' + model.get('endtime'), 'YY-MM-DD HH:mm'),\n                            )\n                        ) {\n                            multiPauseEnd = moment('01-01-02 ' + multipause.end, 'YY-MM-DD HH:mm');\n                        }\n                        if (!multiPauseEnd.isBetween(worktimeStart, worktimeEnd)) resolve(true);\n                    }\n                } else if (multiPauseStart.isBefore(worktimeStart)) {\n                    resolve(true);\n                }\n            });\n            return resolve(false);\n        });\n    },\n    validate_multipleHours: function (model, value, options) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var formatMinutes, minutes, sameAs;\n            if (!model.get('endtime')) {\n                resolve();\n            }\n            minutes = moment(model.get('date') + ' ' + model.get('endtime')).diff(\n                moment(model.get('date') + ' ' + model.get('starttime')),\n                'minutes',\n            );\n            if (model.get('pause')) {\n                minutes -= model.get('pause');\n            }\n            if (minutes < 0) {\n                minutes += 1440;\n            }\n            sameAs = 0;\n            value.forEach((row) => {\n                var split;\n                if (typeof row.get('hours') === 'string') {\n                    split = row.get('hours').split(':');\n                    return (sameAs += parseInt(split[0], 10) * 60 + parseInt(split[1], 10));\n                } else if (typeof row.get('hours') === 'number') {\n                    return (sameAs += row.get('hours') * 60);\n                }\n            });\n            formatMinutes = (minutes) => {\n                var formatted, leftover;\n                if (!minutes) {\n                    return 0;\n                }\n                formatted = Math.floor(minutes / 60);\n                leftover = Math.round(minutes - formatted * 60);\n                formatted += ':' + (leftover < 10 ? '0' : '') + leftover;\n                return formatted;\n            };\n            minutes = Math.round(minutes);\n            sameAs = Math.round(sameAs);\n            if (!minutes || sameAs === minutes) {\n                return resolve();\n            } else {\n                return resolve({\n                    hours: formatMinutes(minutes),\n                    sameas: formatMinutes(sameAs),\n                });\n            }\n        });\n    },\n    validate_email: function (model, value, options) {\n        var d;\n        d = new $.Deferred();\n        if (\n            value &&\n            !/^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i.test(\n                value,\n            )\n        ) {\n            d.resolve(true);\n        } else {\n            d.resolve();\n        }\n        return d;\n    },\n    //    if validator && validator.birthdate && moment(@get('value')).isAfter(moment().subtract(10, 'years'))\n    //        @set('error', @get('intl').t(\"field.error.birthdate\"))\n    validate_birthdate: function (model, value, options) {\n        if (moment(value).isAfter(moment().subtract(10, 'years'))) {\n            return this.returnAsPromise(true);\n        } else {\n            return this.returnAsPromise();\n        }\n    },\n    validate_remote_email: function (model, value, options) {\n        var d, data, url;\n        d = new $.Deferred();\n        if (typeof model.changedAttributes === 'function') {\n            if (Ember.isEmpty(model.changedAttributes().username)) {\n                d.resolve();\n                return d;\n            }\n        }\n        url = config.APP.COLLECTOR_API_URL + '/createService';\n        data = {\n            validate: true,\n        };\n        data['email'] = value;\n        $.ajax({\n            url: url,\n            data: JSON.stringify(data),\n            type: 'POST',\n            contentType: 'application/json',\n        }).then(\n            function () {\n                return d.resolve();\n            },\n            function (error) {\n                return d.resolve(true);\n            },\n        );\n        return d;\n    },\n    validate_match: function (model, value, options) {\n        var d;\n        d = new $.Deferred();\n        if (model.get(options.match) !== value) {\n            d.resolve(true);\n        } else {\n            d.resolve();\n        }\n        return d;\n    },\n    validate_digits: function (model, value, options) {\n        var d, error, i, item, len, ref;\n        d = new $.Deferred();\n        error = false;\n        if (value && Array.isArray(JSON.parse(value))) {\n            ref = JSON.parse(value);\n            for (i = 0, len = ref.length; i < len; i++) {\n                item = ref[i];\n                if (Number(item) !== parseInt(item, 10)) {\n                    error = true;\n                }\n            }\n        } else if (value && Number(value) !== parseInt(value, 10)) {\n            error = true;\n        }\n        if (error) {\n            d.resolve(true);\n        } else {\n            d.resolve();\n        }\n        return d;\n    },\n    validate_person_country: function (model, value, options) {\n        if (value === null || value === '' || value === void 0 || value === 'null') {\n            return this.returnAsPromise(true);\n        } else {\n            return this.returnAsPromise();\n        }\n    },\n    validate_employer_country: function (model, value, options) {\n        if (value === null || value === '' || value === void 0 || value === 'null') {\n            return this.returnAsPromise(true);\n        } else {\n            return this.returnAsPromise();\n        }\n    },\n    validate_PIN: function (model, value, options) {\n        var nationality;\n        nationality = model.get('homecountry');\n        // If PIN is empty then we say its valid\n        if (!value) {\n            return this.returnAsPromise();\n        }\n        // If we don't have the nationality we can't validate PIN\n        if (nationality) {\n            nationality = nationality.toUpperCase();\n        } else {\n            return this.returnAsPromise();\n        }\n        if (nationality === 'SE') {\n            if (value.length !== 13 && value.length !== 11) {\n                return this.returnAsPromise({\n                    country: 'SE',\n                });\n            }\n            if (\n                !/^(([\\d]{2})|([1-2][0|9][\\d]{2}))(0?[\\d]|1[012])(0[\\d]|[12]\\d|3[01])-[\\d]{3}[A-Z\\d]$/i.test(\n                    value,\n                )\n            ) {\n                return this.returnAsPromise({\n                    country: 'SE',\n                });\n            }\n        } else if (nationality === 'FI') {\n            if (!/^((0[\\d]|[12]\\d|3[01])(0?[\\d]|1[012])[\\d]{2}-[\\d]{3}[a-z\\d])$/i.test(value)) {\n                return this.returnAsPromise({\n                    country: 'FI',\n                });\n            }\n        }\n        return this.returnAsPromise();\n    },\n    validate_id06_number: function (model, value, options) {\n        // If value is empty then we say its valid\n        if (!value) {\n            return this.returnAsPromise();\n        }\n        if (!/^[a-z]{2}-[\\d]{2}(0?[\\d]|1[012])-[\\d]{6}$/i.test(value)) {\n            return this.returnAsPromise(true);\n        }\n        return this.returnAsPromise();\n    },\n    validate_username: function (model, value, options) {\n        // If value is empty then we say its valid\n        if (!value) {\n            return this.returnAsPromise();\n        }\n        if (!/^[a-z0-9_+@.-]+$/i.test(value)) {\n            return this.returnAsPromise(true);\n        }\n        return this.returnAsPromise();\n    },\n    check_username: function (model, value, resolve) {\n        var promise;\n        promise = this.validate_remote_email(model, value, null);\n        return promise.then((back) => {\n            return resolve(back);\n        });\n    },\n    validate_username_free: function (model, value, options) {\n        if (!value) {\n            return this.returnAsPromise();\n        }\n        if (\n            !model.get('isNew') &&\n            !model.get('hasDirtyAttributes') &&\n            value === model.get('username')\n        ) {\n            return this.returnAsPromise();\n        }\n        return new Em.RSVP.Promise((resolve, reject) => {\n            //@resolve = resolve\n            //@model = model\n            //@value = value\n            //console.log \"tryin\"\n            return this.check_username(model, value, resolve);\n        });\n    },\n    returnAsPromise: function (value) {\n        var d;\n        d = new $.Deferred();\n        d.resolve(value);\n        return d;\n    },\n    isJSON: function (value) {\n        var e;\n        if (!isNaN(value)) {\n            return false;\n        }\n        try {\n            JSON.parse(value);\n        } catch (error1) {\n            e = error1;\n            return false;\n        }\n        return true;\n    },\n    validate_password: function (model, value, options) {\n        var attribute, changed, hasChanged;\n        if (value === 'secured') {\n            return this.returnAsPromise();\n        }\n        if (model.isNew && value.length === 6) {\n            return this.returnAsPromise();\n        }\n        // Skip password validation for SSO-only users\n        if (model.disable_login) {\n            return this.returnAsPromise();\n        }\n\n        changed = model.changedAttributes();\n        hasChanged = false;\n        for (attribute in changed) {\n            if (attribute === 'password') {\n                hasChanged = true;\n                continue;\n            }\n        }\n        if (hasChanged) {\n            return this.validate_minLength(model, value, 8);\n        } else {\n            return this.returnAsPromise();\n        }\n    },\n    validate_positiveNumber: function (model, value, options) {\n        if (value < 0) {\n            return this.returnAsPromise(true);\n        }\n        return this.returnAsPromise();\n    },\n    validate_date_not_past: function (model, value, options) {\n        if (!model.get('isNew')) {\n            return this.returnAsPromise();\n        }\n        if (moment().isAfter(value, 'day')) {\n            return this.returnAsPromise(true);\n        }\n        return this.returnAsPromise();\n    },\n    validate_date_after: function (model, value, options) {\n        if (model.get(options) > value) {\n            return this.returnAsPromise(true);\n        }\n        return this.returnAsPromise();\n    },\n    validate_date_correct: function (model, value, options) {\n        let date = moment(model.get('date'), 'YYYY-MM-DD', true);\n        if (!date.isValid()) {\n            return this.returnAsPromise(true);\n        }\n        return this.returnAsPromise();\n    },\n    validate_phoneNumber: function (model, value, options) {\n        if (\n            !/^\\+(9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[^0]\\d{1,14}$/i.test(\n                value,\n            )\n        ) {\n            return this.returnAsPromise(true);\n        }\n        return this.returnAsPromise();\n    },\n    validate_skv_number: function (model, value, options) {\n        if (!/^([a-z\\d]{13})$/i.test(value)) {\n            return this.returnAsPromise(true);\n        }\n        return this.returnAsPromise();\n    },\n    validate_PIN: function (model, value, options) {\n        if (options === 'SE') {\n            if (value.length !== 13 && value.length !== 11) {\n                return this.returnAsPromise(true);\n            }\n            if (\n                !/^(([\\d]{2})|([1-2][0|9][\\d]{2}))(0[\\d]|1[012])(0[\\d]|[1-9]\\d)-[\\d]{3}[A-Z\\d]$/i.test(\n                    value,\n                )\n            ) {\n                return this.returnAsPromise(true);\n            }\n        } else if (options === 'FI') {\n            if (!/^((0[\\d]|[12]\\d|3[01])(0?[\\d]|1[012])[\\d]{2}-[\\d]{3}[a-z\\d])$/i.test(value)) {\n                return this.returnAsPromise(true);\n            }\n        }\n        return this.returnAsPromise();\n    },\n    validate_project_number: function (model, value, options) {\n        if (isFinite(value)) {\n            if (parseInt(value, 10) === 0) {\n                return this.returnAsPromise(true);\n            }\n        }\n        return this.returnAsPromise();\n    },\n    validate_unique: async function (model, value, options, field, owner) {\n        if (!value) return false;\n\n        const collector = getOwner(owner).lookup('service:collectorService'); // get collector service\n        const session = getOwner(owner).lookup('service:session'); // get session service (needed for auth)\n\n        const form = model.constructor.modelName;\n        const form_plural = pluralize(form).camelize();\n        // query for rows with the same value as the model we are validating\n        // use fetch instead of ember data because we don't want to update the store\n        const req = await fetch(\n            `${config.APP.COLLECTOR_API_URL}/${form_plural}?${field}=${value}`,\n            {\n                headers: {\n                    Authorization: 'Bearer ' + session.data.authenticated.access_token,\n                },\n            },\n        );\n        const rows = await req.json();\n        // if we have more than one row and the first row is not the same as the model we are validating then we have a duplicate value\n        if (rows.count > 0 && Number(rows[form_plural][0].id) !== Number(model.id)) {\n            const name = collector.getTranslationForColumn(form, field);\n            return { field: name }; // retun error with field name so we can show it in error message\n        }\n\n        return false;\n    },\n    // validate that hours and minutes are not more than 2 digits in time input\n    validate_hoursAndMinutes: function (model, value, options) {\n        // only validate value if it is a string and contains a colon\n        if (value && value.toString().includes(':')) {\n            // split value to hours and minutes\n            const split = value.split(':');\n            const hours = split[0];\n            const minutes = split[1];\n            // if hours or minutes have more than 2 digits it is a validation error\n            if (minutes.length > 2 || hours.length > 2) {\n                return this.returnAsPromise(true);\n            }\n        }\n\n        return this.returnAsPromise(false);\n    },\n});\n\nexport default Validator;\n","/*jslint eqeq: true*/\nexport default [{\"locale\":\"en\",\"pluralRuleFunction\":function(n,ord){var s=String(n).split(\".\"),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?\"one\":n10==2&&n100!=12?\"two\":n10==3&&n100!=13?\"few\":\"other\";return n==1&&v0?\"one\":\"other\"},\"fields\":{\"year\":{\"displayName\":\"year\",\"relative\":{\"0\":\"this year\",\"1\":\"next year\",\"-1\":\"last year\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} year\",\"other\":\"in {0} years\"},\"past\":{\"one\":\"{0} year ago\",\"other\":\"{0} years ago\"}}},\"year-short\":{\"displayName\":\"yr.\",\"relative\":{\"0\":\"this yr.\",\"1\":\"next yr.\",\"-1\":\"last yr.\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} yr.\",\"other\":\"in {0} yr.\"},\"past\":{\"one\":\"{0} yr. ago\",\"other\":\"{0} yr. ago\"}}},\"month\":{\"displayName\":\"month\",\"relative\":{\"0\":\"this month\",\"1\":\"next month\",\"-1\":\"last month\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} month\",\"other\":\"in {0} months\"},\"past\":{\"one\":\"{0} month ago\",\"other\":\"{0} months ago\"}}},\"month-short\":{\"displayName\":\"mo.\",\"relative\":{\"0\":\"this mo.\",\"1\":\"next mo.\",\"-1\":\"last mo.\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} mo.\",\"other\":\"in {0} mo.\"},\"past\":{\"one\":\"{0} mo. ago\",\"other\":\"{0} mo. ago\"}}},\"day\":{\"displayName\":\"day\",\"relative\":{\"0\":\"today\",\"1\":\"tomorrow\",\"-1\":\"yesterday\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} day\",\"other\":\"in {0} days\"},\"past\":{\"one\":\"{0} day ago\",\"other\":\"{0} days ago\"}}},\"day-short\":{\"displayName\":\"day\",\"relative\":{\"0\":\"today\",\"1\":\"tomorrow\",\"-1\":\"yesterday\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} day\",\"other\":\"in {0} days\"},\"past\":{\"one\":\"{0} day ago\",\"other\":\"{0} days ago\"}}},\"hour\":{\"displayName\":\"hour\",\"relative\":{\"0\":\"this hour\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} hour\",\"other\":\"in {0} hours\"},\"past\":{\"one\":\"{0} hour ago\",\"other\":\"{0} hours ago\"}}},\"hour-short\":{\"displayName\":\"hr.\",\"relative\":{\"0\":\"this hour\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} hr.\",\"other\":\"in {0} hr.\"},\"past\":{\"one\":\"{0} hr. ago\",\"other\":\"{0} hr. ago\"}}},\"minute\":{\"displayName\":\"minute\",\"relative\":{\"0\":\"this minute\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} minute\",\"other\":\"in {0} minutes\"},\"past\":{\"one\":\"{0} minute ago\",\"other\":\"{0} minutes ago\"}}},\"minute-short\":{\"displayName\":\"min.\",\"relative\":{\"0\":\"this minute\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} min.\",\"other\":\"in {0} min.\"},\"past\":{\"one\":\"{0} min. ago\",\"other\":\"{0} min. ago\"}}},\"second\":{\"displayName\":\"second\",\"relative\":{\"0\":\"now\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} second\",\"other\":\"in {0} seconds\"},\"past\":{\"one\":\"{0} second ago\",\"other\":\"{0} seconds ago\"}}},\"second-short\":{\"displayName\":\"sec.\",\"relative\":{\"0\":\"now\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} sec.\",\"other\":\"in {0} sec.\"},\"past\":{\"one\":\"{0} sec. ago\",\"other\":\"{0} sec. ago\"}}}},\"numbers\":{\"decimal\":{\"long\":[[1000,{\"one\":[\"0 thousand\",1],\"other\":[\"0 thousand\",1]}],[10000,{\"one\":[\"00 thousand\",2],\"other\":[\"00 thousand\",2]}],[100000,{\"one\":[\"000 thousand\",3],\"other\":[\"000 thousand\",3]}],[1000000,{\"one\":[\"0 million\",1],\"other\":[\"0 million\",1]}],[10000000,{\"one\":[\"00 million\",2],\"other\":[\"00 million\",2]}],[100000000,{\"one\":[\"000 million\",3],\"other\":[\"000 million\",3]}],[1000000000,{\"one\":[\"0 billion\",1],\"other\":[\"0 billion\",1]}],[10000000000,{\"one\":[\"00 billion\",2],\"other\":[\"00 billion\",2]}],[100000000000,{\"one\":[\"000 billion\",3],\"other\":[\"000 billion\",3]}],[1000000000000,{\"one\":[\"0 trillion\",1],\"other\":[\"0 trillion\",1]}],[10000000000000,{\"one\":[\"00 trillion\",2],\"other\":[\"00 trillion\",2]}],[100000000000000,{\"one\":[\"000 trillion\",3],\"other\":[\"000 trillion\",3]}]],\"short\":[[1000,{\"one\":[\"0K\",1],\"other\":[\"0K\",1]}],[10000,{\"one\":[\"00K\",2],\"other\":[\"00K\",2]}],[100000,{\"one\":[\"000K\",3],\"other\":[\"000K\",3]}],[1000000,{\"one\":[\"0M\",1],\"other\":[\"0M\",1]}],[10000000,{\"one\":[\"00M\",2],\"other\":[\"00M\",2]}],[100000000,{\"one\":[\"000M\",3],\"other\":[\"000M\",3]}],[1000000000,{\"one\":[\"0B\",1],\"other\":[\"0B\",1]}],[10000000000,{\"one\":[\"00B\",2],\"other\":[\"00B\",2]}],[100000000000,{\"one\":[\"000B\",3],\"other\":[\"000B\",3]}],[1000000000000,{\"one\":[\"0T\",1],\"other\":[\"0T\",1]}],[10000000000000,{\"one\":[\"00T\",2],\"other\":[\"00T\",2]}],[100000000000000,{\"one\":[\"000T\",3],\"other\":[\"000T\",3]}]]}}}];","/*jslint eqeq: true*/\nexport default [{\"locale\":\"fi\",\"pluralRuleFunction\":function(n,ord){var s=String(n).split(\".\"),v0=!s[1];if(ord)return\"other\";return n==1&&v0?\"one\":\"other\"},\"fields\":{\"year\":{\"displayName\":\"vuosi\",\"relative\":{\"0\":\"tänä vuonna\",\"1\":\"ensi vuonna\",\"-1\":\"viime vuonna\"},\"relativeTime\":{\"future\":{\"one\":\"{0} vuoden päästä\",\"other\":\"{0} vuoden päästä\"},\"past\":{\"one\":\"{0} vuosi sitten\",\"other\":\"{0} vuotta sitten\"}}},\"year-short\":{\"displayName\":\"v\",\"relative\":{\"0\":\"tänä v\",\"1\":\"ensi v\",\"-1\":\"viime v\"},\"relativeTime\":{\"future\":{\"one\":\"{0} v päästä\",\"other\":\"{0} v päästä\"},\"past\":{\"one\":\"{0} v sitten\",\"other\":\"{0} v sitten\"}}},\"month\":{\"displayName\":\"kuukausi\",\"relative\":{\"0\":\"tässä kuussa\",\"1\":\"ensi kuussa\",\"-1\":\"viime kuussa\"},\"relativeTime\":{\"future\":{\"one\":\"{0} kuukauden päästä\",\"other\":\"{0} kuukauden päästä\"},\"past\":{\"one\":\"{0} kuukausi sitten\",\"other\":\"{0} kuukautta sitten\"}}},\"month-short\":{\"displayName\":\"kk\",\"relative\":{\"0\":\"tässä kk\",\"1\":\"ensi kk\",\"-1\":\"viime kk\"},\"relativeTime\":{\"future\":{\"one\":\"{0} kk päästä\",\"other\":\"{0} kk päästä\"},\"past\":{\"one\":\"{0} kk sitten\",\"other\":\"{0} kk sitten\"}}},\"day\":{\"displayName\":\"päivä\",\"relative\":{\"0\":\"tänään\",\"1\":\"huomenna\",\"2\":\"ylihuomenna\",\"-2\":\"toissa päivänä\",\"-1\":\"eilen\"},\"relativeTime\":{\"future\":{\"one\":\"{0} päivän päästä\",\"other\":\"{0} päivän päästä\"},\"past\":{\"one\":\"{0} päivä sitten\",\"other\":\"{0} päivää sitten\"}}},\"day-short\":{\"displayName\":\"pv\",\"relative\":{\"0\":\"tänään\",\"1\":\"huom.\",\"2\":\"ylihuom.\",\"-2\":\"toissap.\",\"-1\":\"eilen\"},\"relativeTime\":{\"future\":{\"one\":\"{0} pv päästä\",\"other\":\"{0} pv päästä\"},\"past\":{\"one\":\"{0} pv sitten\",\"other\":\"{0} pv sitten\"}}},\"hour\":{\"displayName\":\"tunti\",\"relative\":{\"0\":\"tämän tunnin aikana\"},\"relativeTime\":{\"future\":{\"one\":\"{0} tunnin päästä\",\"other\":\"{0} tunnin päästä\"},\"past\":{\"one\":\"{0} tunti sitten\",\"other\":\"{0} tuntia sitten\"}}},\"hour-short\":{\"displayName\":\"t\",\"relative\":{\"0\":\"tunnin sisällä\"},\"relativeTime\":{\"future\":{\"one\":\"{0} t päästä\",\"other\":\"{0} t päästä\"},\"past\":{\"one\":\"{0} t sitten\",\"other\":\"{0} t sitten\"}}},\"minute\":{\"displayName\":\"minuutti\",\"relative\":{\"0\":\"tämän minuutin aikana\"},\"relativeTime\":{\"future\":{\"one\":\"{0} minuutin päästä\",\"other\":\"{0} minuutin päästä\"},\"past\":{\"one\":\"{0} minuutti sitten\",\"other\":\"{0} minuuttia sitten\"}}},\"minute-short\":{\"displayName\":\"min\",\"relative\":{\"0\":\"minuutin sisällä\"},\"relativeTime\":{\"future\":{\"one\":\"{0} min päästä\",\"other\":\"{0} min päästä\"},\"past\":{\"one\":\"{0} min sitten\",\"other\":\"{0} min sitten\"}}},\"second\":{\"displayName\":\"sekunti\",\"relative\":{\"0\":\"nyt\"},\"relativeTime\":{\"future\":{\"one\":\"{0} sekunnin päästä\",\"other\":\"{0} sekunnin päästä\"},\"past\":{\"one\":\"{0} sekunti sitten\",\"other\":\"{0} sekuntia sitten\"}}},\"second-short\":{\"displayName\":\"s\",\"relative\":{\"0\":\"nyt\"},\"relativeTime\":{\"future\":{\"one\":\"{0} s päästä\",\"other\":\"{0} s päästä\"},\"past\":{\"one\":\"{0} s sitten\",\"other\":\"{0} s sitten\"}}}},\"numbers\":{\"decimal\":{\"long\":[[1000,{\"one\":[\"0 tuhat\",1],\"other\":[\"0 tuhatta\",1]}],[10000,{\"one\":[\"00 tuhatta\",2],\"other\":[\"00 tuhatta\",2]}],[100000,{\"one\":[\"000 tuhatta\",3],\"other\":[\"000 tuhatta\",3]}],[1000000,{\"one\":[\"0 miljoona\",1],\"other\":[\"0 miljoonaa\",1]}],[10000000,{\"one\":[\"00 miljoonaa\",2],\"other\":[\"00 miljoonaa\",2]}],[100000000,{\"one\":[\"000 miljoonaa\",3],\"other\":[\"000 miljoonaa\",3]}],[1000000000,{\"one\":[\"0 miljardi\",1],\"other\":[\"0 miljardia\",1]}],[10000000000,{\"one\":[\"00 miljardia\",2],\"other\":[\"00 miljardia\",2]}],[100000000000,{\"one\":[\"000 miljardia\",3],\"other\":[\"000 miljardia\",3]}],[1000000000000,{\"one\":[\"0 biljoona\",1],\"other\":[\"0 biljoonaa\",1]}],[10000000000000,{\"one\":[\"00 biljoonaa\",2],\"other\":[\"00 biljoonaa\",2]}],[100000000000000,{\"one\":[\"000 biljoonaa\",3],\"other\":[\"000 biljoonaa\",3]}]],\"short\":[[1000,{\"one\":[\"0 t'.'\",1],\"other\":[\"0 t'.'\",1]}],[10000,{\"one\":[\"00 t'.'\",2],\"other\":[\"00 t'.'\",2]}],[100000,{\"one\":[\"000 t'.'\",3],\"other\":[\"000 t'.'\",3]}],[1000000,{\"one\":[\"0 milj'.'\",1],\"other\":[\"0 milj'.'\",1]}],[10000000,{\"one\":[\"00 milj'.'\",2],\"other\":[\"00 milj'.'\",2]}],[100000000,{\"one\":[\"000 milj'.'\",3],\"other\":[\"000 milj'.'\",3]}],[1000000000,{\"one\":[\"0 mrd'.'\",1],\"other\":[\"0 mrd'.'\",1]}],[10000000000,{\"one\":[\"00 mrd'.'\",2],\"other\":[\"00 mrd'.'\",2]}],[100000000000,{\"one\":[\"000 mrd'.'\",3],\"other\":[\"000 mrd'.'\",3]}],[1000000000000,{\"one\":[\"0 bilj'.'\",1],\"other\":[\"0 bilj'.'\",1]}],[10000000000000,{\"one\":[\"00 bilj'.'\",2],\"other\":[\"00 bilj'.'\",2]}],[100000000000000,{\"one\":[\"000 bilj'.'\",3],\"other\":[\"000 bilj'.'\",3]}]]}}}];","/*jslint eqeq: true*/\nexport default [{\"locale\":\"sv\",\"pluralRuleFunction\":function(n,ord){var s=String(n).split(\".\"),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return(n10==1||n10==2)&&n100!=11&&n100!=12?\"one\":\"other\";return n==1&&v0?\"one\":\"other\"},\"fields\":{\"year\":{\"displayName\":\"år\",\"relative\":{\"0\":\"i år\",\"1\":\"nästa år\",\"-1\":\"i fjol\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} år\",\"other\":\"om {0} år\"},\"past\":{\"one\":\"för {0} år sedan\",\"other\":\"för {0} år sedan\"}}},\"year-short\":{\"displayName\":\"år\",\"relative\":{\"0\":\"i år\",\"1\":\"nästa år\",\"-1\":\"i fjol\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} år\",\"other\":\"om {0} år\"},\"past\":{\"one\":\"för {0} år sen\",\"other\":\"för {0} år sen\"}}},\"month\":{\"displayName\":\"månad\",\"relative\":{\"0\":\"denna månad\",\"1\":\"nästa månad\",\"-1\":\"förra månaden\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} månad\",\"other\":\"om {0} månader\"},\"past\":{\"one\":\"för {0} månad sedan\",\"other\":\"för {0} månader sedan\"}}},\"month-short\":{\"displayName\":\"m\",\"relative\":{\"0\":\"denna mån.\",\"1\":\"nästa mån.\",\"-1\":\"förra mån.\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} mån.\",\"other\":\"om {0} mån.\"},\"past\":{\"one\":\"för {0} mån. sen\",\"other\":\"för {0} mån. sen\"}}},\"day\":{\"displayName\":\"dag\",\"relative\":{\"0\":\"i dag\",\"1\":\"i morgon\",\"2\":\"i övermorgon\",\"-2\":\"i förrgår\",\"-1\":\"i går\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} dag\",\"other\":\"om {0} dagar\"},\"past\":{\"one\":\"för {0} dag sedan\",\"other\":\"för {0} dagar sedan\"}}},\"day-short\":{\"displayName\":\"dag\",\"relative\":{\"0\":\"i dag\",\"1\":\"i morgon\",\"2\":\"i övermorgon\",\"-2\":\"i förrgår\",\"-1\":\"i går\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} d\",\"other\":\"om {0} d\"},\"past\":{\"one\":\"för {0} d sedan\",\"other\":\"för {0} d sedan\"}}},\"hour\":{\"displayName\":\"timme\",\"relative\":{\"0\":\"denna timme\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} timme\",\"other\":\"om {0} timmar\"},\"past\":{\"one\":\"för {0} timme sedan\",\"other\":\"för {0} timmar sedan\"}}},\"hour-short\":{\"displayName\":\"tim\",\"relative\":{\"0\":\"denna timme\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} tim\",\"other\":\"om {0} tim\"},\"past\":{\"one\":\"för {0} tim sedan\",\"other\":\"för {0} tim sedan\"}}},\"minute\":{\"displayName\":\"minut\",\"relative\":{\"0\":\"denna minut\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} minut\",\"other\":\"om {0} minuter\"},\"past\":{\"one\":\"för {0} minut sedan\",\"other\":\"för {0} minuter sedan\"}}},\"minute-short\":{\"displayName\":\"min\",\"relative\":{\"0\":\"denna minut\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} min\",\"other\":\"om {0} min\"},\"past\":{\"one\":\"för {0} min sen\",\"other\":\"för {0} min sen\"}}},\"second\":{\"displayName\":\"sekund\",\"relative\":{\"0\":\"nu\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} sekund\",\"other\":\"om {0} sekunder\"},\"past\":{\"one\":\"för {0} sekund sedan\",\"other\":\"för {0} sekunder sedan\"}}},\"second-short\":{\"displayName\":\"sek\",\"relative\":{\"0\":\"nu\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} sek\",\"other\":\"om {0} sek\"},\"past\":{\"one\":\"för {0} s sen\",\"other\":\"för {0} s sen\"}}}},\"numbers\":{\"decimal\":{\"long\":[[1000,{\"one\":[\"0 tusen\",1],\"other\":[\"0 tusen\",1]}],[10000,{\"one\":[\"00 tusen\",2],\"other\":[\"00 tusen\",2]}],[100000,{\"one\":[\"000 tusen\",3],\"other\":[\"000 tusen\",3]}],[1000000,{\"one\":[\"0 miljon\",1],\"other\":[\"0 miljoner\",1]}],[10000000,{\"one\":[\"00 miljon\",2],\"other\":[\"00 miljoner\",2]}],[100000000,{\"one\":[\"000 miljoner\",3],\"other\":[\"000 miljoner\",3]}],[1000000000,{\"one\":[\"0 miljard\",1],\"other\":[\"0 miljarder\",1]}],[10000000000,{\"one\":[\"00 miljarder\",2],\"other\":[\"00 miljarder\",2]}],[100000000000,{\"one\":[\"000 miljarder\",3],\"other\":[\"000 miljarder\",3]}],[1000000000000,{\"one\":[\"0 biljon\",1],\"other\":[\"0 biljoner\",1]}],[10000000000000,{\"one\":[\"00 biljoner\",2],\"other\":[\"00 biljoner\",2]}],[100000000000000,{\"one\":[\"000 biljoner\",3],\"other\":[\"000 biljoner\",3]}]],\"short\":[[1000,{\"one\":[\"0 tn\",1],\"other\":[\"0 tn\",1]}],[10000,{\"one\":[\"00 tn\",2],\"other\":[\"00 tn\",2]}],[100000,{\"one\":[\"000 tn\",3],\"other\":[\"000 tn\",3]}],[1000000,{\"one\":[\"0 mn\",1],\"other\":[\"0 mn\",1]}],[10000000,{\"one\":[\"00 mn\",2],\"other\":[\"00 mn\",2]}],[100000000,{\"one\":[\"000 mn\",3],\"other\":[\"000 mn\",3]}],[1000000000,{\"one\":[\"0 md\",1],\"other\":[\"0 md\",1]}],[10000000000,{\"one\":[\"00 md\",2],\"other\":[\"00 md\",2]}],[100000000000,{\"one\":[\"000 md\",3],\"other\":[\"000 md\",3]}],[1000000000000,{\"one\":[\"0 bn\",1],\"other\":[\"0 bn\",1]}],[10000000000000,{\"one\":[\"00 bn\",2],\"other\":[\"00 bn\",2]}],[100000000000000,{\"one\":[\"000 bn\",3],\"other\":[\"000 bn\",3]}]]}}}];","define(\"tt4/component-managers/glimmer\", [\"exports\", \"@glimmer/component/-private/ember-component-manager\"], function (_exports, _emberComponentManager) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberComponentManager.default;\n    }\n  });\n});\n","import Component from '@ember/component';\n\n// avoiding reexport directly here because in some circumstances (ember-engines\n// for example) a simple reexport is transformed to `define.alias`,\n// unfortunately at the moment (ember-source@3.13) there is no _actual_\n// `@ember/component` module to alias so this causes issues\n//\n// tldr; we can replace this with a simple reexport when we can rely on Ember\n// actually providing a `@ember/component` module\nexport default Component.extend();\n","import Component from '@ember/component';\n\n// avoiding reexport directly here because in some circumstances (ember-engines\n// for example) a simple reexport is transformed to `define.alias`,\n// unfortunately at the moment (ember-source@3.13) there is no _actual_\n// `@ember/component` module to alias so this causes issues\n//\n// tldr; we can replace this with a simple reexport when we can rely on Ember\n// actually providing a `@ember/component` module\nexport default Component.extend();\n","define(\"tt4/components/-ember-table-private/row-wrapper\", [\"exports\", \"ember-table/components/-private/row-wrapper\"], function (_exports, _rowWrapper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _rowWrapper.default;\n    }\n  });\n});\n","define(\"tt4/components/-ember-table-private/simple-checkbox\", [\"exports\", \"ember-table/components/-private/simple-checkbox\"], function (_exports, _simpleCheckbox) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _simpleCheckbox.default;\n    }\n  });\n});\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class={{concat \\\"ember-movenium-accordion \\\" @class}}>\\n    {{yield (hash Item=(component 'addon/accordion/item' title=@title content=@content))}}\\n</div>\\n\", {\"contents\":\"<div class={{concat \\\"ember-movenium-accordion \\\" @class}}>\\n    {{yield (hash Item=(component 'addon/accordion/item' title=@title content=@content))}}\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/accordion.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/accordion.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\" <div role=\\\"button\\\" class=\\\"ember-movenium-accordion-item {{if this.active \\\"active\\\"}}\\\" {{on 'click' this.toggle value=\\\"event\\\"}}>\\n\\n    {{#if @title}}\\n        {{@title}}\\n    {{else}}\\n        {{if this.active @hideTitle @showTitle}}\\n    {{/if}}\\n\\n    <span class=\\\"accordion-chevron\\\" ></span>\\n</div>\\n<div class=\\\"ember-movenium-accordion-panel {{if this.active \\\"active\\\"}}\\\">\\n    <div class=\\\"ember-movenium-accordion-panel-content\\\">\\n        {{yield}}\\n    </div>\\n</div>\\n\", {\"contents\":\" <div role=\\\"button\\\" class=\\\"ember-movenium-accordion-item {{if this.active \\\"active\\\"}}\\\" {{on 'click' this.toggle value=\\\"event\\\"}}>\\n\\n    {{#if @title}}\\n        {{@title}}\\n    {{else}}\\n        {{if this.active @hideTitle @showTitle}}\\n    {{/if}}\\n\\n    <span class=\\\"accordion-chevron\\\" ></span>\\n</div>\\n<div class=\\\"ember-movenium-accordion-panel {{if this.active \\\"active\\\"}}\\\">\\n    <div class=\\\"ember-movenium-accordion-panel-content\\\">\\n        {{yield}}\\n    </div>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/accordion/item.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/accordion/item.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\nexport default class AccordionItemComponent extends Component {\n    @tracked public active: boolean = false;\n\n    @action protected toggle(event: any): void {\n        const target = event.target;\n        const panel = target.nextElementSibling;\n        if (!panel) return;\n        this.active = !this.active;\n        if (panel.style.maxHeight) {\n            panel.style.maxHeight = null;\n        } else {\n            panel.style.maxHeight = panel.scrollHeight + 'px';\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-bootstrap-container {{if @error \\\"has-error has-feedback\\\"}} {{@class}}\\\" data-anchor={{if @anchorName @anchorName (concat @label '-field')}}>\\n    <label for={{@label}} class=\\\"title\\\">{{@text}}</label>\\n    {{#if @info}} <FieldInfoBubble @text={{@info}} />{{/if}}\\n    {{#if @mandatory}}<sup><span class=\\\"glyphicon glyphicon-asterisk field-icon\\\"></span></sup>{{/if}}\\n    <span class=\\\"text-danger pull-right\\\">{{@error}}</span>\\n    {{yield}}\\n    {{#if @error}}<span class=\\\"glyphicon glyphicon-remove form-control-feedback\\\" aria-hidden=\\\"true\\\"></span>{{/if}}\\n</div>\", {\"contents\":\"<div class=\\\"ember-movenium-bootstrap-container {{if @error \\\"has-error has-feedback\\\"}} {{@class}}\\\" data-anchor={{if @anchorName @anchorName (concat @label '-field')}}>\\n    <label for={{@label}} class=\\\"title\\\">{{@text}}</label>\\n    {{#if @info}} <FieldInfoBubble @text={{@info}} />{{/if}}\\n    {{#if @mandatory}}<sup><span class=\\\"glyphicon glyphicon-asterisk field-icon\\\"></span></sup>{{/if}}\\n    <span class=\\\"text-danger pull-right\\\">{{@error}}</span>\\n    {{yield}}\\n    {{#if @error}}<span class=\\\"glyphicon glyphicon-remove form-control-feedback\\\" aria-hidden=\\\"true\\\"></span>{{/if}}\\n</div>\",\"moduleName\":\"tt4/components/addon/bootstrap-container.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/bootstrap-container.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{yield}}\\n\\n{{this.message}}\\n\\n{{#if (await this.hittingWorktimes)}}\\n    {{#each this.hittingWorktimes as |worktime|}}\\n        <br /> - {{worktime.project.name}} {{worktime.starttime}} - {{worktime.endtime}}\\n    {{/each}}\\n{{/if}}\\n\\n{{#if (await this.hittingAbsences)}}\\n    {{#each this.hittingAbsences as |absence|}}\\n        <br /> - {{absence.abcensetype.name}} {{moment-format absence.startdate \\\"L\\\"}} - {{moment-format absence.enddate \\\"L\\\"}}\\n    {{/each}}\\n{{/if}}\\n\\n{{#if (await this.hittingComps)}}\\n    {{#each this.hittingComps as |worktime|}}\\n        <br /> - {{worktime.project.name}} {{moment-format worktime.date \\\"L\\\"}}\\n    {{/each}}\\n{{/if}}\\n\\n{{#if this.invalidTask}}\\n    {{#each this.invalidTask as |reason|}}\\n        <br /> - {{reason}}\\n    {{/each}}\\n{{/if}}\", {\"contents\":\"{{yield}}\\n\\n{{this.message}}\\n\\n{{#if (await this.hittingWorktimes)}}\\n    {{#each this.hittingWorktimes as |worktime|}}\\n        <br /> - {{worktime.project.name}} {{worktime.starttime}} - {{worktime.endtime}}\\n    {{/each}}\\n{{/if}}\\n\\n{{#if (await this.hittingAbsences)}}\\n    {{#each this.hittingAbsences as |absence|}}\\n        <br /> - {{absence.abcensetype.name}} {{moment-format absence.startdate \\\"L\\\"}} - {{moment-format absence.enddate \\\"L\\\"}}\\n    {{/each}}\\n{{/if}}\\n\\n{{#if (await this.hittingComps)}}\\n    {{#each this.hittingComps as |worktime|}}\\n        <br /> - {{worktime.project.name}} {{moment-format worktime.date \\\"L\\\"}}\\n    {{/each}}\\n{{/if}}\\n\\n{{#if this.invalidTask}}\\n    {{#each this.invalidTask as |reason|}}\\n        <br /> - {{reason}}\\n    {{/each}}\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/collector-error-message.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/collector-error-message.hbs\"}});\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { computed } from '@ember/object';\nimport ErrorHandler from 'tt4/injections/services/error-handler';\nimport DS from 'ember-data';\nimport { IError } from 'tt4/ember-movenium/interfaces/error';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\n\ninterface IErrorMessageComponent {\n    error: IError;\n}\n\nexport default class CollectorErrorMessageComponent extends Component<IErrorMessageComponent> {\n    @service private errorHandler!: ErrorHandler;\n    @service private store!: DS.Store;\n    @service private intl!: any;\n\n    get parsedError(): IError {\n        return this.errorHandler.toError(this.args.error) as IError;\n    }\n\n    get message(): string {\n        return this.errorHandler.errorToString(this.args.error);\n    }\n\n    // We use computeds here becuase we have to cache the ArrayPromiseProxy that the store query returns.\n    // If we don't, these getters will go into an infinite loop. This should be converted over to @cached if/when it is supported by Ember\n    @computed('parsedError')\n    get hittingWorktimes(): DS.PromiseArray<IRecord> | null {\n        if (this.parsedError?.meta?.hits === 'worktime') {\n            return this.store.query('worktime', {\n                id: this.parsedError!.meta.ids.join(','),\n                sideload: true,\n            });\n        } else {\n            return null;\n        }\n    }\n\n    @computed('parsedError')\n    get hittingAbsences(): DS.PromiseArray<IRecord> | null {\n        if (this.parsedError?.meta?.hits === 'absence') {\n            return this.store.query('abcense', {\n                id: this.parsedError!.meta.ids.join(','),\n                sideload: true,\n            });\n        } else {\n            return null;\n        }\n    }\n\n    @computed('parsedError')\n    get hittingComps(): DS.PromiseArray<IRecord> | null {\n        if (this.parsedError?.meta?.hits === 'comp') {\n            return this.store.query('worktime', {\n                id: this.parsedError!.meta.ids.join(','),\n                sideload: true,\n            });\n        } else {\n            return null;\n        }\n    }\n\n    @computed('parsedError')\n    get invalidTask():  boolean | string[] {\n        // get error reasons from error meta and return correct error message based on that\n        const { userRestrictionsPrevent, projectRestrictionsPrevent } = this.parsedError?.meta || {};\n\n        const reasons = [];\n\n        if (userRestrictionsPrevent) {\n            reasons.push(this.intl.t('error.invalidTask.userRestrictions'));\n        }\n        if (projectRestrictionsPrevent) {\n            reasons.push(this.intl.t('error.invalidTask.projectRestrictions'));\n        }\n        return reasons;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class='ember-movenium-date-picker'>\\n    <div class=\\\"ember-movenium-date-picker-start\\\">\\n        <PowerDatepicker @center={{this.centerStart}} @selected={{this.startDate}} @onSelect={{fn this.changeStart}} as |dp|>\\n            <dp.Trigger tabindex=\\\"-1\\\">\\n                <Input\\n                    @type=\\\"text\\\"\\n                    @maxlength='10'\\n                    @value={{if this.startDate (moment-format this.startDate 'DD.MM.YYYY') ''}}\\n                    @keyDown={{this.checkChars}}\\n                    @input={{fn this.validateAndChangeDate 'start'}}\\n                    {{on 'change' (fn this.openEndDatePicker)}}\\n                />\\n            </dp.Trigger>\\n\\n            <dp.Content class=\\\"ember-movenium-date-picker-content\\\">\\n                <dp.Nav />\\n                <dp.Days />\\n            </dp.Content>\\n        </PowerDatepicker>\\n    </div>\\n    -\\n    <div class=\\\"ember-movenium-date-picker-end\\\">\\n        <PowerDatepicker @center={{this.centerEnd}} @selected={{this.endDate}} @onSelect={{fn this.changeEnd}} as |dp|>\\n            <dp.Trigger tabindex=\\\"-1\\\">\\n                <Input\\n                    @type=\\\"text\\\"\\n                    @maxlength='10'\\n                    @value={{if this.endDate (moment-format this.endDate 'DD.MM.YYYY') ''}}\\n                    @keyDown={{this.checkChars}}\\n                    @input={{fn this.validateAndChangeDate 'end'}}\\n                    {{on 'change' (fn this.changeEndManually)}}\\n                />\\n            </dp.Trigger>\\n\\n            <dp.Content class=\\\"ember-movenium-date-picker-content\\\">\\n                <dp.Nav />\\n                <dp.Days />\\n            </dp.Content>\\n        </PowerDatepicker>\\n    </div>\\n    {{svg-jar \\\"Date\\\"}}\\n</div>\", {\"contents\":\"<div class='ember-movenium-date-picker'>\\n    <div class=\\\"ember-movenium-date-picker-start\\\">\\n        <PowerDatepicker @center={{this.centerStart}} @selected={{this.startDate}} @onSelect={{fn this.changeStart}} as |dp|>\\n            <dp.Trigger tabindex=\\\"-1\\\">\\n                <Input\\n                    @type=\\\"text\\\"\\n                    @maxlength='10'\\n                    @value={{if this.startDate (moment-format this.startDate 'DD.MM.YYYY') ''}}\\n                    @keyDown={{this.checkChars}}\\n                    @input={{fn this.validateAndChangeDate 'start'}}\\n                    {{on 'change' (fn this.openEndDatePicker)}}\\n                />\\n            </dp.Trigger>\\n\\n            <dp.Content class=\\\"ember-movenium-date-picker-content\\\">\\n                <dp.Nav />\\n                <dp.Days />\\n            </dp.Content>\\n        </PowerDatepicker>\\n    </div>\\n    -\\n    <div class=\\\"ember-movenium-date-picker-end\\\">\\n        <PowerDatepicker @center={{this.centerEnd}} @selected={{this.endDate}} @onSelect={{fn this.changeEnd}} as |dp|>\\n            <dp.Trigger tabindex=\\\"-1\\\">\\n                <Input\\n                    @type=\\\"text\\\"\\n                    @maxlength='10'\\n                    @value={{if this.endDate (moment-format this.endDate 'DD.MM.YYYY') ''}}\\n                    @keyDown={{this.checkChars}}\\n                    @input={{fn this.validateAndChangeDate 'end'}}\\n                    {{on 'change' (fn this.changeEndManually)}}\\n                />\\n            </dp.Trigger>\\n\\n            <dp.Content class=\\\"ember-movenium-date-picker-content\\\">\\n                <dp.Nav />\\n                <dp.Days />\\n            </dp.Content>\\n        </PowerDatepicker>\\n    </div>\\n    {{svg-jar \\\"Date\\\"}}\\n</div>\",\"moduleName\":\"tt4/components/addon/date-range.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/date-range.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport moment from 'moment';\n\ninterface IDateRange {\n    value?: string;\n    changeDate(args0: string): void;\n}\n\nexport default class DateRangeComponent extends Component<IDateRange> {\n    @tracked public centerStart: Date;\n    @tracked public centerEnd: Date;\n    @tracked public range: any = [];\n\n    constructor(owner: unknown, args: IDateRange) {\n        super(owner, args);\n        const startDate = this.args.value ? this.args.value.split('_')[0] : null;\n        const endDate = this.args.value ? this.args.value.split('_')[0] : null;\n        this.centerStart = startDate ? new Date(startDate) : new Date();\n        this.centerEnd = endDate ? new Date(endDate) : new Date();\n    }\n\n    get startDate(): Date | null {\n        let start = null;\n        if (this.args.value) start = this.args.value.split('_')[0];\n        if (this.range['startdate']) start = this.range['startdate'];\n        return start ? new Date(start) : null;\n    }\n\n    get endDate(): Date | null {\n        let end = null;\n        if (this.args.value) end = this.args.value.split('_')[1];\n        if (this.range['enddate']) end = this.range['enddate'];\n        return end ? new Date(end) : null;\n    }\n\n    @action\n    public changeStart(val: any): void {\n        this.range['startdate'] = val.id;\n        this.range = this.range;\n        this.openEndDatePicker();\n    }\n\n    @action\n    public changeEnd(val: any): void {\n        this.range['enddate'] =\n            this.range['startdate'] && this.range['startdate'] > val.id\n                ? this.range['startdate']\n                : val.id;\n        if (!this.range['startdate'])\n            this.range['startdate'] = this.args.value\n                ? this.args.value.split('_')[0]\n                : this.range['enddate'];\n        this.range = this.range;\n        const queryRange = this.range['startdate'] + '_' + this.range['enddate'];\n        assert(\n            'Date range picker needs @changeDate method because otherwise it is useless',\n            this.args.changeDate,\n        );\n        this.args.changeDate(queryRange);\n    }\n\n    @action\n    public changeEndManually() {\n        if (!this.range['enddate']) return;\n        this.changeEnd({ id: this.range['enddate'] });\n    }\n    /*\n        AI to allow only these type of dates:\n            09.01.2020\n            9.1.2020\n            09012020\n    */\n    @action\n    public validateAndChangeDate(picker: string, event: any) {\n        const value = event.target.value;\n        if (!this.validInputValue(value)) return;\n        if (picker === 'start') {\n            this.centerStart = this.getInputAsDate(value);\n            this.range['startdate'] = moment(this.centerStart).format('YYYY-MM-DD');\n        } else {\n            this.centerEnd = this.getInputAsDate(value);\n            this.range['enddate'] = moment(this.centerEnd).format('YYYY-MM-DD');\n        }\n        this.range = this.range;\n    }\n\n    @action\n    public openEndDatePicker() {\n        if (!this.range['startdate']) return;\n        const endRangeElement = document.querySelector(\n            '.ember-movenium-date-picker-end input',\n        ) as HTMLInputElement;\n        endRangeElement.click();\n        endRangeElement.focus();\n        endRangeElement.select();\n    }\n\n    @action\n    public checkChars(event: any) {\n        const allowedKeyCodes = [190, 188, 8, 13, 110, 37, 39]; // Dot, Comma, Backspace, Numpad decimal, Arrow right/left and Enter\n        if (allowedKeyCodes.includes(event.keyCode) || !isNaN(event.key)) return true;\n        return event.preventDefault();\n    }\n\n    public validInputValue(value: string): boolean {\n        if (value.includes('.') || value.includes(',')) {\n            const split = value.includes('.') ? value.split('.') : value.split(',');\n            return value.length >= 8 && value.length <= 10 && split[2].length === 4;\n        } else {\n            return value.length === 8;\n        }\n    }\n\n    private getInputAsDate(value: string): Date {\n        if (value.includes('.') || value.includes(',')) {\n            const split = value.includes('.') ? value.split('.') : value.split(',');\n            const day = parseInt(split[0], 10);\n            const month = parseInt(split[1], 10) - 1;\n            const year = parseInt(split[2], 10);\n            return new Date(year, month, day);\n        } else {\n            const day = parseInt(value.slice(0, 2), 10);\n            const month = parseInt(value.slice(2, 4), 10) - 1;\n            const year = parseInt(value.slice(-4), 10);\n            return new Date(year, month, day);\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"\\n{{#if hasBlock}}\\n    {{yield this @field @value}}\\n{{else}}\\n\\n    <Addon::BootstrapContainer\\n        @text={{this.fieldLabel}}\\n        @error={{this.errors.firstObject.message}}\\n        @mandatory={{@mandatory}}\\n        @class={{concat \\\"ember-movenium-field-\\\" this.field.name}}\\n        @label={{this.field.name}}\\n        @info={{@info}}\\n    >\\n        {{#let (component this.fieldComponent) as |FieldComponent|}}\\n            {{#if (get @filters this.field.name)}}\\n                <FieldComponent\\n                    @options={{this.field.options}}\\n                    @features={{this.field.features}}\\n                    @record={{readonly @record}}\\n                    @value={{@value}}\\n                    @form={{this.field.form}}\\n                    @name={{this.field.name}}\\n                    @onChange={{@onChange}}\\n                    @field={{this.field}}\\n                    @sortBy={{this.sorts}}\\n                    @filter={{get @filters this.field.name}}\\n                    @disabled={{@disabled}}\\n                    @setDisabled={{@setDisabled}}\\n                    @skipLastUsed={{@skipLastUsed}}\\n                    @prompt={{@prompt}}\\n                    @placeholder={{@placeholder}}\\n                />\\n            {{else}}\\n                <FieldComponent\\n                    @options={{this.field.options}}\\n                    @features={{this.field.features}}\\n                    @record={{readonly @record}}\\n                    @value={{@value}}\\n                    @form={{this.field.form}}\\n                    @name={{this.field.name}}\\n                    @onChange={{@onChange}}\\n                    @field={{this.field}}\\n                    @sortBy={{this.sorts}}\\n                    @disabled={{@disabled}}\\n                    @setDisabled={{@setDisabled}}\\n                    @skipLastUsed={{@skipLastUsed}}\\n                    @prompt={{@prompt}}\\n                    @placeholder={{@placeholder}}\\n                />\\n            {{/if}}\\n        {{/let}}\\n    </Addon::BootstrapContainer>\\n\\n\\n{{/if}}\\n\\n\", {\"contents\":\"\\n{{#if hasBlock}}\\n    {{yield this @field @value}}\\n{{else}}\\n\\n    <Addon::BootstrapContainer\\n        @text={{this.fieldLabel}}\\n        @error={{this.errors.firstObject.message}}\\n        @mandatory={{@mandatory}}\\n        @class={{concat \\\"ember-movenium-field-\\\" this.field.name}}\\n        @label={{this.field.name}}\\n        @info={{@info}}\\n    >\\n        {{#let (component this.fieldComponent) as |FieldComponent|}}\\n            {{#if (get @filters this.field.name)}}\\n                <FieldComponent\\n                    @options={{this.field.options}}\\n                    @features={{this.field.features}}\\n                    @record={{readonly @record}}\\n                    @value={{@value}}\\n                    @form={{this.field.form}}\\n                    @name={{this.field.name}}\\n                    @onChange={{@onChange}}\\n                    @field={{this.field}}\\n                    @sortBy={{this.sorts}}\\n                    @filter={{get @filters this.field.name}}\\n                    @disabled={{@disabled}}\\n                    @setDisabled={{@setDisabled}}\\n                    @skipLastUsed={{@skipLastUsed}}\\n                    @prompt={{@prompt}}\\n                    @placeholder={{@placeholder}}\\n                />\\n            {{else}}\\n                <FieldComponent\\n                    @options={{this.field.options}}\\n                    @features={{this.field.features}}\\n                    @record={{readonly @record}}\\n                    @value={{@value}}\\n                    @form={{this.field.form}}\\n                    @name={{this.field.name}}\\n                    @onChange={{@onChange}}\\n                    @field={{this.field}}\\n                    @sortBy={{this.sorts}}\\n                    @disabled={{@disabled}}\\n                    @setDisabled={{@setDisabled}}\\n                    @skipLastUsed={{@skipLastUsed}}\\n                    @prompt={{@prompt}}\\n                    @placeholder={{@placeholder}}\\n                />\\n            {{/if}}\\n        {{/let}}\\n    </Addon::BootstrapContainer>\\n\\n\\n{{/if}}\\n\\n\",\"moduleName\":\"tt4/components/addon/field-container.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/field-container.hbs\"}});\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { isPresent } from '@ember/utils';\nimport FormsService from 'tt4/injections/services/forms';\nimport { IFormField } from 'tt4/ember-movenium/interfaces/forms';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport { htmlSafe } from '@ember/template';\nimport CollectorService from 'tt4/injections/services/collector';\nimport { getOwner } from '@ember/application';\n\nexport interface IFieldContainerArgs {\n    form?: string;\n    value: any;\n    forceType?: string;\n    field: string;\n    filters: any;\n    record: IRecord;\n    prompt?: string | object;\n    errors: [];\n    class: string;\n    sorts?: {\n        [key: string]: string | number;\n    };\n    onChange(fieldname: string, value: any): void;\n}\n\n/**\n * Renders the appropriate field directly from a forms field object, or from a \"form.field\" type string\n * This also wraps error handling, mandatory checkm and provides basic css to display forms in the correct style\n * @class FieldContainerComponent\n * @constructor\n *\n */\nexport default class FieldContainerComponent extends Component<IFieldContainerArgs> {\n    @tracked public value: any = null;\n    @service private forms: any;\n    @service('addon/collector' as any) private collector: any;\n    private field: IFormField;\n\n    constructor(owner: unknown, args: IFieldContainerArgs) {\n        super(owner, args);\n\n        assert(\n            '<FieldContainer> requires an `@onChange` function',\n            this.args.onChange && typeof this.args.onChange === 'function',\n        );\n        assert(\n            \"<FieldContainer> requires a field param! Give it as 'form.field' or only the field name, in which case also give it the form\",\n            isPresent(this.args.field),\n        );\n\n        const splitField = this.args.field.split('.');\n        if (splitField.length < 2 && !isPresent(this.args.form)) {\n            assert(\n                \"You only gave the field to <FieldContainer>, but it needs the form as well: @form='user' @field='firstname'\",\n            );\n        }\n\n        let field = null;\n\n        if (this.args.field && !this.args.form) {\n            field = this.forms.field(splitField[0], splitField[1]);\n        } else if (this.args.form && this.args.field) {\n            field = this.forms.field(this.args.form, this.args.field as string);\n        } else {\n            throw new Error('Invalid field given to FieldContainer');\n        }\n\n        if (this.args.value) {\n            field.value = this.args.value;\n        }\n        if (this.args.prompt) {\n            field.prompt = this.args.prompt;\n        }\n\n        this.field = field;\n    }\n\n    /**\n     * If the record has errors, this will give you the errors pertaining to this field\n     * @property errors\n     * @type array\n     */\n    get errors(): [] {\n        const errors = (this.args.record?.errors as any) || null;\n        return errors?.errorsFor(this.field.name);\n    }\n\n    // /**\n    //  * Is this field mandatory? If so we render an asterisk in the template to indicate this\n    //  * @property isMandatory\n    //  * @type boolean\n    //  */\n    // get isMandatory(): boolean {\n    //     if (this.field.features?.mandatory && !isArray(this.field.features)) {\n    //         return true\n    //     } else if (isArray(this.field.features?.mandatory) && this.args.record) {\n    //         return isVisible(this.args.record, this.field.features!.mandatory as [{}])\n    //     }\n\n    //     return false\n    // }\n\n    /**\n     * The field component to be rendered, determined by the field's type that was given to the @field property\n     * Type of string calculated by: `'fields/' + field.type`\n     * @property fieldComponent\n     * @type string\n     */\n    get fieldComponent(): string | null {\n        if (!this.field) return null;\n        if (this.args.forceType) return 'addon/fields/' + this.args.forceType;\n        let fieldType = this.field.type.replace(/_/g, '-');\n        if (fieldType === 'time-new') fieldType = 'time';\n\n        const component = 'addon/fields/' + fieldType;\n\n        return this.componentExists(component) ? component : 'addon/fields/not-supported';\n    }\n\n    /**\n     * Checks the field object for a label to display, either the field's translated name or its name as a fallback\n     * @property fieldLabel\n     * @type string\n     */\n    get fieldLabel(): SafeString {\n        const field = this.field;\n        return htmlSafe(this.collector.getTranslationForColumn(field.form, field.name) as string);\n    }\n\n    get class() {\n        return 'ember-movenium-field-container';\n    }\n\n    get sorts() {\n        if (!this.args.sorts) return null;\n\n        const keys: any = Object.keys(this.args.sorts);\n        if (keys.includes(this.field.name)) {\n            return this.args.sorts[this.field.name];\n        }\n\n        return null;\n    }\n\n    componentExists(componentName: string) {\n        return getOwner(this).hasRegistration(`component:${componentName}`);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{this.unit}}</span>\\n</div>\\n\", {\"contents\":\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{this.unit}}</span>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/fields/big-price.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/big-price.hbs\"}});\nimport FieldsPriceComponent from './price';\n\nexport default class FieldsBigPriceComponent extends FieldsPriceComponent {}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<XToggle\\n    @theme={{this.theme}}\\n    @value={{@value}}\\n    @onToggle={{@onChange}}\\n    @showLabels={{this.showLabels}}\\n    @size={{this.size}}\\n    @onLabel={{this.onLabel}}\\n    @offLabel={{this.offLabel}}\\n    @disabled={{this.disabled}}\\n    @name={{@name}}\\n/>\", {\"contents\":\"<XToggle\\n    @theme={{this.theme}}\\n    @value={{@value}}\\n    @onToggle={{@onChange}}\\n    @showLabels={{this.showLabels}}\\n    @size={{this.size}}\\n    @onLabel={{this.onLabel}}\\n    @offLabel={{this.offLabel}}\\n    @disabled={{this.disabled}}\\n    @name={{@name}}\\n/>\",\"moduleName\":\"tt4/components/addon/fields/checkbox.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/checkbox.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\n/**\n    ```hbs\n    <Fields::Checkbox @value={{this.checkboxValue}} @onChange={{fn (mut this.checkboxValue)}}/>\n    ```\n    @class FieldsCheckboxComponent\n*/\n\ninterface ICheckbox {\n    form: string;\n    name: string;\n    showLabels: boolean;\n    disabled: boolean;\n    theme: string;\n    size: string;\n    onLabel: string;\n    offLabel: string;\n}\n\nexport default class FieldsCheckboxComponent extends Component<ICheckbox> implements ICheckbox {\n    @tracked public value: boolean = false;\n    @service private intl: any;\n\n    constructor(owner: unknown, args: ICheckbox) {\n        super(owner, args);\n    }\n\n    get form() {\n        return this.args.form;\n    }\n\n    get name() {\n        return this.args.name;\n    }\n\n    get showLabels() {\n        return this.args.showLabels === false ? false : true;\n    }\n\n    get theme() {\n        return this.args.theme || 'material';\n    }\n\n    get size() {\n        return this.args.size || 'large';\n    }\n\n    get disabled() {\n        return this.args.disabled || false;\n    }\n\n    get onLabel() {\n        const key = this.form + '.' + this.name + '.on';\n        const fallback = this.intl.primaryLocale === 'xy' ? key : 'general.yes';\n        return this.intl.t(key, { default: fallback });\n    }\n\n    get offLabel() {\n        const key = this.form + '.' + this.name + '.off';\n        const fallback = this.intl.primaryLocale === 'xy' ? key : 'general.no';\n        return this.intl.t(key, { default: fallback });\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<ul class=\\\"list-group\\\">\\n    <li class=\\\"list-group-item\\\">\\n        <ul class=\\\"list-unstyled\\\">\\n            {{#each this.checkboxes as |box|}}\\n                <label class=\\\"ember-movenium-checkbox\\\">\\n                <p class=\\\"ember-movenium-checboxgroup-text\\\">{{box.text}}</p>\\n                    <Input\\n                        @type=\\\"checkbox\\\"\\n                        @checked={{box.checked}}\\n                        {{on 'change' (fn this.handleChange box)}}\\n                    />\\n                    <span class=\\\"ember-movenium-checkmark\\\"></span>\\n                </label>\\n            {{/each}}\\n        </ul>\\n    </li>\\n</ul>\", {\"contents\":\"<ul class=\\\"list-group\\\">\\n    <li class=\\\"list-group-item\\\">\\n        <ul class=\\\"list-unstyled\\\">\\n            {{#each this.checkboxes as |box|}}\\n                <label class=\\\"ember-movenium-checkbox\\\">\\n                <p class=\\\"ember-movenium-checboxgroup-text\\\">{{box.text}}</p>\\n                    <Input\\n                        @type=\\\"checkbox\\\"\\n                        @checked={{box.checked}}\\n                        {{on 'change' (fn this.handleChange box)}}\\n                    />\\n                    <span class=\\\"ember-movenium-checkmark\\\"></span>\\n                </label>\\n            {{/each}}\\n        </ul>\\n    </li>\\n</ul>\",\"moduleName\":\"tt4/components/addon/fields/checkboxgroup.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/checkboxgroup.hbs\"}});\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\n\ninterface ICheckboxGroupField {\n    form: string;\n    name: string;\n    options: { [key: string]: string };\n    value: string[];\n    onChange(arg0: string[]): void;\n}\n\nexport default class FieldsCheckboxgroupComponent extends Component<ICheckboxGroupField> {\n    @service private intl: any;\n\n    get checkboxes() {\n        if (!this.args.options) return [];\n\n        const value = this.args.value || [];\n\n        return Object.keys(this.args.options).map((key: string) => {\n            let text = this.args.options[key];\n            if (text.substring(0, 1) === '$')\n                text = this.intl.t(this.args.form + 's.' + this.args.name + '.' + key);\n            return {\n                key,\n                text,\n                checked: value.includes(key.toString()),\n            };\n        });\n    }\n\n    @action\n    protected handleChange(box: any) {\n        const index = box.key.toString();\n        const ret = new Set(this.args.value);\n        if (ret.has(index)) ret.delete(index);\n        else ret.add(index);\n        this.args.onChange(Array.from(ret));\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<PowerSelectWithCreate\\n    @class={{this._class}}\\n    @name={{this.name}}\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @tagName=\\\"div\\\"\\n    @allowClear={{true}}\\n    @selected={{@value}}\\n    @preventScroll={{true}}\\n    @placeholder={{this.placeholder}}\\n    @options={{await this.options}}\\n    @loadingMessage={{t \\\"general.loading\\\"}}\\n    @disabled={{this.disabled}}\\n    @searchEnabled={{true}}\\n    @search={{fn this.search}}\\n    @onOpen={{fn (mut this.isopen) true}}\\n    @onClose={{fn (mut this.isopen) false}}\\n    @onCreate={{this.createNew}}\\n    @showCreateWhen={{this.showOrHideCreate}}\\n    @showCreatePosition=\\\"bottom\\\"\\n    @buildSuggestion={{this.customSuggestion}}\\n    @onChange={{this.onChange}} as |record|>\\n    {{#each this.subformFields as |field|}}\\n        {{get record field}}\\n    {{/each}}\\n</PowerSelectWithCreate>\", {\"contents\":\"<PowerSelectWithCreate\\n    @class={{this._class}}\\n    @name={{this.name}}\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @tagName=\\\"div\\\"\\n    @allowClear={{true}}\\n    @selected={{@value}}\\n    @preventScroll={{true}}\\n    @placeholder={{this.placeholder}}\\n    @options={{await this.options}}\\n    @loadingMessage={{t \\\"general.loading\\\"}}\\n    @disabled={{this.disabled}}\\n    @searchEnabled={{true}}\\n    @search={{fn this.search}}\\n    @onOpen={{fn (mut this.isopen) true}}\\n    @onClose={{fn (mut this.isopen) false}}\\n    @onCreate={{this.createNew}}\\n    @showCreateWhen={{this.showOrHideCreate}}\\n    @showCreatePosition=\\\"bottom\\\"\\n    @buildSuggestion={{this.customSuggestion}}\\n    @onChange={{this.onChange}} as |record|>\\n    {{#each this.subformFields as |field|}}\\n        {{get record field}}\\n    {{/each}}\\n</PowerSelectWithCreate>\",\"moduleName\":\"tt4/components/addon/fields/database-gps-force-field.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/database-gps-force-field.hbs\"}});\nimport DatabaseField from './database';\nimport { tracked } from '@glimmer/tracking';\nimport { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport GpsService from 'tt4/services/gps2';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport EventedService from 'tt4/injections/services/need';\nimport RSVP from 'rsvp';\n\ninterface IPosition {\n    longitude: string;\n    latitude: string;\n}\ninterface GpsPositionEvent {\n    lockedPosition: {\n        latitude: number;\n        longitude: number;\n    } | null;\n}\nexport default class FieldsDatabaseGpsForceFieldComponent extends DatabaseField {\n    @tracked protected gpsOptions: object[] | null = null;\n    @service('gps2' as any) declare gps: GpsService;\n    @service private evented: EventedService;\n\n    @tracked reTriggerOptions: boolean = false;\n    // Added properties to store the last known coordinates\n    @tracked private lastKnownLatitude: number | null = null;\n    @tracked private lastKnownLongitude: number | null = null;\n\n    constructor(owner: any, args: any) {\n        super(owner, args);\n        this.gps.start();\n        // when gps position changes, we have to re-fetch options so that those contain correct projects based on gps location..\n        this.evented.on('gpsLockedPositionChanged', this, (newPosition: GpsPositionEvent) => {\n            if (!newPosition.lockedPosition) return;\n            // ..but when the position has changed gps2 service will emit the event first with the old position so we need to check if the position has actually changed and only then retrigger the options\n            // this will prevent the options from being re-fetched twice when the position has changed\n            if (this.hasPositionChanged(newPosition.lockedPosition)) {\n                this.reTriggerOptions = !this.reTriggerOptions;\n                // Update the last known position\n                this.lastKnownLatitude = newPosition.lockedPosition.latitude;\n                this.lastKnownLongitude = newPosition.lockedPosition.longitude;\n            }\n        });\n    }\n\n    // Check if the new position is different from the last known position\n    private hasPositionChanged(newPosition: { latitude: number; longitude: number }): boolean {\n        return (\n            this.lastKnownLatitude !== newPosition.latitude ||\n            this.lastKnownLongitude !== newPosition.longitude\n        );\n    }\n\n    @computed('subform', 'subformFields', 'args.filter', 'reTriggerOptions')\n    public get options() {\n        return new RSVP.Promise((resolve) => {\n            this.performSearch(null, async (options: any) => {\n                return resolve(options);\n            });\n        });\n    }\n\n    protected async performSearch(term: any, resolve: (arg0: object[]) => Promise<void>) {\n        super.performSearch(term, async (normalProjects: IRecord) => {\n            let forcedGpsProjects = await this.getForcedGpsProjects(term);\n\n            if (forcedGpsProjects) {\n                forcedGpsProjects = forcedGpsProjects.filter((project: IRecord) => {\n                    return (\n                        this.gps.getDistance(\n                            this.gps.lockedPosition as IPosition,\n                            JSON.parse(project.location_map),\n                        ) < this.gps.allowedDistance\n                    );\n                });\n            }\n\n            resolve([\n                {\n                    groupName: this.intl.t('gps.forced_projects'),\n                    options: forcedGpsProjects ? forcedGpsProjects.toArray() : [],\n                },\n                {\n                    groupName: this.intl.t('gps.normal_projects'),\n                    options: normalProjects ? normalProjects.toArray() : [],\n                },\n            ]);\n        });\n    }\n\n    /**\n     * Create queryParams for options fetching from backend. This overrides DatabaseField's method and adds additional queryparams\n     * @method createQueryParams\n     * @param {String} term Search term given by user\n     * @param {String} id Parameter if you want to get only known record by id\n     * @return {object}\n     */\n    protected createQueryParams(term = null, id = null): object {\n        const params = {\n            form: this.form,\n            field: this.name,\n            force_location: 'off',\n            limit: '20',\n        } as any;\n\n        if (id) params.id = id;\n        if (term) params.q = term;\n\n        if (this.filter) {\n            for (const key of Object.keys(this.filter)) {\n                if (this.filter[key]) {\n                    params[key] = this.filter[key].id;\n                }\n            }\n        }\n\n        return params;\n    }\n\n    private async getForcedGpsProjects(term: string | null = null): Promise<any> {\n        if (!this.gps.lockedPosition) return null;\n        const params = {\n            force_location: 'on',\n            location_map: '!(empty)',\n            limit: 'all',\n        } as any;\n\n        if (term) params.q = term;\n\n        return this.store.query('project', params);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if this.useNormalDropdown}}\\n    <select class=\\\"ember-movenium-select-input\\\" disabled={{or @disabled this.disabled (is-pending this.options)}} {{on 'change' this.changeId}}>\\n        <option>{{t \\\"general.select_choose\\\"}}</option>\\n        {{#each (await this.options) as |opt|}}\\n            {{#if opt.groupName}}\\n                <optgroup label={{opt.groupName}}>\\n                    {{#each opt.options as |subopt|}}\\n                        <option value={{subopt.id}} selected={{eq subopt (call (fn this.getValue @value))}}>\\n                            {{#each this.subformfields as |field|}}\\n                                {{get subopt field}}\\n                            {{/each}}\\n                        </option>\\n                    {{/each}}\\n                </optgroup>\\n            {{else}}\\n                <option value={{opt.id}} selected={{eq opt (call (fn this.getValue @value))}}>\\n                    {{#each this.subformFields as |field|}}\\n                        {{get opt field}}\\n                    {{/each}}\\n                </option>\\n            {{/if}}\\n        {{/each}}\\n        {{#if @showEmptySelection}}\\n            <option value='(empty)' selected={{eq @value '(empty)'}}>{{t \\\"general.show_empty\\\"}}</option>\\n        {{/if}}\\n    </select>\\n{{else}}\\n    <PowerSelectWithCreate\\n        @class={{@class}}\\n        @name={{@name}}\\n        @dropdownClass=\\\"power-select-add-field\\\"\\n        @tagName=\\\"div\\\"\\n        @allowClear={{true}}\\n        @selected={{@value}}\\n        @preventScroll={{true}}\\n        @placeholder={{this.placeholder}}\\n        @options={{await this.options}}\\n        @loadingMessage={{t \\\"general.loading\\\"}}\\n        @disabled={{or @disabled this.disabled (is-pending this.options)}}\\n        @searchEnabled={{true}}\\n        @search={{fn this.search}}\\n        @searchMessage={{t \\\"select.search\\\"}}\\n        @noMatchesMessage={{t \\\"general.no_search_results\\\"}}\\n        @onOpen={{fn (mut this.isopen) true}}\\n        @onClose={{fn (mut this.isopen) false}}\\n        @onCreate={{this.createNew}}\\n        @showCreateWhen={{this.showOrHideCreate}}\\n        @showCreatePosition=\\\"bottom\\\"\\n        @buildSuggestion={{this.customSuggestion}}\\n        @onChange={{this.onChange}} as |record|>\\n        {{#each this.subformFields as |field|}}\\n            {{get record field}}\\n        {{/each}}\\n    </PowerSelectWithCreate>\\n    {{#if this.isopen}}\\n        <div class=\\\"overlay\\\"></div>\\n    {{/if}}\\n{{/if}}\", {\"contents\":\"{{#if this.useNormalDropdown}}\\n    <select class=\\\"ember-movenium-select-input\\\" disabled={{or @disabled this.disabled (is-pending this.options)}} {{on 'change' this.changeId}}>\\n        <option>{{t \\\"general.select_choose\\\"}}</option>\\n        {{#each (await this.options) as |opt|}}\\n            {{#if opt.groupName}}\\n                <optgroup label={{opt.groupName}}>\\n                    {{#each opt.options as |subopt|}}\\n                        <option value={{subopt.id}} selected={{eq subopt (call (fn this.getValue @value))}}>\\n                            {{#each this.subformfields as |field|}}\\n                                {{get subopt field}}\\n                            {{/each}}\\n                        </option>\\n                    {{/each}}\\n                </optgroup>\\n            {{else}}\\n                <option value={{opt.id}} selected={{eq opt (call (fn this.getValue @value))}}>\\n                    {{#each this.subformFields as |field|}}\\n                        {{get opt field}}\\n                    {{/each}}\\n                </option>\\n            {{/if}}\\n        {{/each}}\\n        {{#if @showEmptySelection}}\\n            <option value='(empty)' selected={{eq @value '(empty)'}}>{{t \\\"general.show_empty\\\"}}</option>\\n        {{/if}}\\n    </select>\\n{{else}}\\n    <PowerSelectWithCreate\\n        @class={{@class}}\\n        @name={{@name}}\\n        @dropdownClass=\\\"power-select-add-field\\\"\\n        @tagName=\\\"div\\\"\\n        @allowClear={{true}}\\n        @selected={{@value}}\\n        @preventScroll={{true}}\\n        @placeholder={{this.placeholder}}\\n        @options={{await this.options}}\\n        @loadingMessage={{t \\\"general.loading\\\"}}\\n        @disabled={{or @disabled this.disabled (is-pending this.options)}}\\n        @searchEnabled={{true}}\\n        @search={{fn this.search}}\\n        @searchMessage={{t \\\"select.search\\\"}}\\n        @noMatchesMessage={{t \\\"general.no_search_results\\\"}}\\n        @onOpen={{fn (mut this.isopen) true}}\\n        @onClose={{fn (mut this.isopen) false}}\\n        @onCreate={{this.createNew}}\\n        @showCreateWhen={{this.showOrHideCreate}}\\n        @showCreatePosition=\\\"bottom\\\"\\n        @buildSuggestion={{this.customSuggestion}}\\n        @onChange={{this.onChange}} as |record|>\\n        {{#each this.subformFields as |field|}}\\n            {{get record field}}\\n        {{/each}}\\n    </PowerSelectWithCreate>\\n    {{#if this.isopen}}\\n        <div class=\\\"overlay\\\"></div>\\n    {{/if}}\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/fields/database.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/database.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action, computed, get } from '@ember/object';\nimport { debounce } from '@ember/runloop';\nimport { inject as service } from '@ember/service';\nimport { isMobile } from 'tt4/ember-movenium/utils/gui';\nimport DS from 'ember-data';\nimport LocalstorageService from 'tt4/services/localstorage';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport { IFieldComponent } from 'tt4/ember-movenium/interfaces/fields';\nimport RSVP from 'rsvp';\nimport { IOptions } from 'tt4/ember-movenium/interfaces/forms';\nimport { sortBy } from 'tt4/ember-movenium/utils/sort';\nimport Ember from 'ember';\n\n/**\n    Database field\n\n    ```hbs\n    <Fields::Database\n        @form=worktime\n        @name=user\n        @options={{hash form=\"user\" fields=(array \"firstname\" \"lastname\")}}\n        @value={{this.databaseValue}}\n        @onChange={{fn (mut this.databaseValue)}}\n    />\n    ```\n    @class FieldsDatabaseComponent\n*/\n\ninterface IDatabaseField extends IFieldComponent {\n    filter?: null | IFilter;\n    prompt?: any;\n    model?: {\n        [key: string]: any;\n    };\n    value?: IRecord | null;\n    showCreate: boolean;\n    forceNormalDropdown?: boolean;\n    useAsFilter?: boolean; // true to render powerSelectMultiple for filters\n    record?: IRecord;\n    onChange(arg0: IRecord | null | string): void;\n    setDisabled?(arg0: boolean): void;\n    createNew(): void;\n}\n\ninterface IFilter {\n    [key: string]: any;\n}\n\nexport default class FieldsDatabaseComponent\n    extends Component<IDatabaseField>\n    implements IDatabaseField\n{\n    @tracked public disabled: boolean = false;\n    @tracked public useNormalDropdown: boolean = false;\n    public form: string | undefined;\n    public name: string | undefined;\n    public sortBy: string | undefined;\n    public filter?: null | IFilter;\n    @tracked public showCreate: boolean = false;\n    public modelValue: any;\n    // @tracked public options: any[] = []\n    @service public store: any;\n    @service protected intl: any;\n    @service public localstorage: any;\n\n    constructor(owner: unknown, args: IDatabaseField) {\n        super(owner, args);\n        this.setLastUsed();\n    }\n\n    public async setLastUsed() {\n        if (this.args.value) return; // if field already has a value ... do not override it\n        if (this.args.skipLastUsed) return;\n        if (this.args.record) {\n            // preselect is not used when editing row (record has id).. could cause changes on rows that you just click edit -> and then save\n            if (this.args.record.id) return;\n\n            if (!!(await this.args.record[this.subform]) || this.args.features?.do_not_preselect)\n                return;\n            const lastUsed: string[] = this.localstorage.getItem('lastused.' + this.subform);\n            if (lastUsed && lastUsed[0]) {\n                let promisevalue = (await this.store.query(this.subform, {\n                    id: lastUsed[0],\n                    form: this.args.form,\n                    field: this.args.name,\n                })) as any;\n                promisevalue = promisevalue?.firstObject;\n                if (promisevalue?.get('row_info.status') !== 'removed') {\n                    const resolved = await promisevalue;\n                    if (this.args.filter) {\n                        this.args.setDisabled?.(true);\n                        if (await this.checkValueIsInOptions(this.options, resolved))\n                            this.args.onChange(resolved);\n                        this.args.setDisabled?.(false);\n                    } else {\n                        this.args.onChange(resolved);\n                    }\n                }\n            }\n        }\n    }\n\n    /*PROPERTIES*/\n    public get subform() {\n        return (this.args.options! as IOptions).form!;\n    }\n\n    public get subformFields() {\n        return (this.args.options! as IOptions).fields!;\n    }\n\n    public get placeholder(): string | null {\n        return this.args.prompt ? this.intl.t(this.args.prompt) : null;\n    }\n\n    /*ACTIONS*/\n\n    @action public search(term: string) {\n        return new RSVP.Promise((resolve) => {\n            debounce(this, this.performSearch, term, resolve, 600);\n        });\n    }\n\n    @action public changeId(event: any) {\n        if (event.target.value === '(empty)') this.onChange(event.target.value);\n        else this.onChange(this.store.peekRecord(this.subform, event.target.value));\n    }\n\n    @action public onChange(value: IRecord | null | string) {\n        if (typeof value !== 'string') this.saveLastUsed(value);\n        if (this.args.model) this.args.model[this.name!] = value;\n        this.args.onChange(value);\n    }\n\n    @action public createNew() {\n        return this.args.createNew();\n    }\n\n    @action public showOrHideCreate() {\n        return this.args.showCreate;\n    }\n\n    @action public customSuggestion(term: string) {\n        return this.intl.t('general.add') + ' ' + term;\n    }\n\n    @action\n    protected getValue(value: any) {\n        if (value instanceof Ember.ObjectProxy || value instanceof Ember.ArrayProxy) {\n            return value.content;\n        }\n        return value;\n    }\n\n    /*FUNCTIONS*/\n\n    /**\n     * Computed because we need to cache the Promise, otherwise this will go into an infinite trigger loop\n     */\n    @computed('subform', 'subformFields', 'args.filter')\n    public get options(): Promise<any> {\n        try {\n            return new RSVP.Promise((resolve) => {\n                this.performSearch(null, async (options: any) => {\n                    if (this.args.sortBy) {\n                        options = sortBy(this.args.sortBy, options, this.subformFields);\n                    }\n\n                    if (this.args.features?.auto_select_only && options.length === 1)\n                        this.args.onChange(options.firstObject);\n                    if (this.args.filter || options.length < 20) return resolve(options);\n\n                    const lastUsed = await this.getLastUsed(options);\n\n                    if (lastUsed) return resolve(lastUsed);\n                    return resolve(options);\n                });\n            });\n        } catch (e) {\n            throw new Error(e);\n        }\n    }\n\n    protected saveLastUsed(record: IRecord | null): void {\n        const lastUsedCount = 10; // Number of 'last used' items to display\n        let lastUsed = this.localstorage.getItem('lastused.' + this.subform);\n        if (!lastUsed) lastUsed = [];\n\n        lastUsed.unshift(record ? record.id : '');\n        this.localstorage.setItem(\n            'lastused.' + this.subform,\n            Array.from(new Set(lastUsed)).slice(0, lastUsedCount),\n        );\n    }\n\n    protected async getLastUsed(options: any): Promise<any> {\n        const lastUsed = this.localstorage.getItem('lastused.' + this.subform);\n        if (!lastUsed) return false;\n\n        const records = await this.store.query(this.subform, {\n            id: lastUsed.filter((val: string) => val).join(','),\n            form: this.args.form,\n            field: this.args.name,\n        });\n\n        return [\n            { groupName: this.intl.t('select.last_selections'), options: records.toArray() },\n            { groupName: this.intl.t('select.all'), options: options.toArray() },\n        ];\n    }\n\n    /**\n     * Create queryParams for options fetching from backend\n     * @method createQueryParams\n     * @param {String} term Search term given by user\n     * @param {String} id Parameter if you want to get only known record by id\n     * @return {object}\n     */\n    protected createQueryParams(term: string | null = null, id: string | null = null): object {\n        const params = {\n            form: this.args.form,\n            field: this.args.name,\n            limit: 100,\n            offset: 0,\n        } as any;\n\n        if (id) params.id = id;\n        if (term) params.q = term;\n\n        if (this.args.filter) {\n            for (const key of Object.keys(this.args.filter)) {\n                if (this.args.filter[key]) {\n                    params[key] =\n                        typeof this.args.filter[key] === 'string'\n                            ? this.args.filter[key]\n                            : get(this.args.filter[key], 'id');\n                }\n            }\n        }\n\n        return params;\n    }\n\n    // Do not overwrite reloads when editing, only when we touch the reload fields\n    private get recordIsDirty(): boolean {\n        return !!this.args.record?.isNew || !!this.args.record?.hasDirtyAttributes;\n    }\n\n    protected async performSearch(term: any, resolve: any): Promise<any> {\n        if (this.args.filter && !term) {\n            this.disabled = true;\n            this.args.setDisabled?.(true);\n        }\n        const options = await this.store.query(this.subform, this.createQueryParams(term));\n\n        if (!term) {\n            this.useNormalDropdown =\n                (isMobile() && options.length < 20) ||\n                (this.args.forceNormalDropdown && !this.args.useAsFilter)\n                    ? true\n                    : false;\n        }\n\n        if (\n            this.args.filter &&\n            this.args.value &&\n            !(await this.checkValueIsInOptions(options, this.args.value))\n        )\n            this.args.onChange(null);\n        this.disabled = false;\n        this.args.setDisabled?.(false);\n        resolve(options);\n    }\n\n    protected async checkValueIsInOptions(options: any, value: IRecord | null | undefined) {\n        value = await value;\n        options = await options;\n        if (\n            this.recordIsDirty &&\n            value! &&\n            !options.find((opt: any) => opt.id === get(value as IRecord, 'id'))\n        ) {\n            // we still need to check from backend if value really is ok and just not in 20 first options\n            const subformQuery = await this.store.query(\n                this.subform,\n                this.createQueryParams(null, get(value as IRecord, 'id')),\n            );\n            if (subformQuery.length < 1) {\n                return false;\n            }\n        }\n        return true;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#each this.records as |row|}}\\n    <div class=\\\"databasearray-v2\\\">\\n        <div class=\\\"databasearray-v2-padding\\\"></div>\\n        <div class=\\\"databasearray-v2-container\\\">\\n            <Addon::FormAdd @form={{this.form}} @record={{row}} @only={{this.fields}} @onFieldChange={{fn this.onChange row}} as |Form|>\\n            <Form.Fields as |Fields FieldComponent|>\\n                {{#each Fields as |Field|}}\\n                    <div class=\\\"px-1\\\">\\n                        {{#if (get this.filters Field.name)}}\\n                            <FieldComponent\\n                                @field={{Field.name}}\\n                                @form={{Field.form}}\\n                                @value={{get row Field.name}}\\n                                @record={{row}}\\n                                @skipLastUsed={{true}}\\n                                @filters={{this.filters}}\\n                                @onChange={{fn Form.OnChange Field.name}}\\n                                @mandatory={{field.features.mandatory}}\\n                            />\\n                        {{else}}\\n                            <FieldComponent\\n                                @field={{Field.name}}\\n                                @form={{Field.form}}\\n                                @value={{get row Field.name}}\\n                                @record={{row}}\\n                                @skipLastUsed={{true}}\\n                                @onChange={{fn Form.OnChange Field.name}}\\n                                @mandatory={{field.features.mandatory}}\\n                            />\\n                        {{/if}}\\n                    </div>\\n                {{/each}}\\n            </Form.Fields>\\n        </Addon::FormAdd>\\n        </div>\\n        <div class=\\\"databasearray-v2-remove\\\">\\n            <span role=\\\"button\\\" {{on \\\"click\\\" (fn this.removeRow row)}} name=\\\"remove-button\\\" class=\\\"remove-button pr-2\\\" title=\\\"Poista\\\">\\n                <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"{{if this.gui.isMobileComputed 25 18}}px\\\" height=\\\"{{if this.gui.isMobileComputed 30 24}}px\\\" viewBox=\\\"0 0 26 26\\\">\\n                    <path style=\\\"text-indent:0;text-align:start;line-height:normal;text-transform:none;block-progression:tb;-inkscape-font-specification:Bitstream Vera Sans\\\" d=\\\"M11.5-.031c-1.958 0-3.531 1.627-3.531 3.594V4H4c-.551 0-1 .449-1 1v1H2v2h2v15c0 1.645 1.355 3 3 3h12c1.645 0 3-1.355 3-3V8h2V6h-1V5c0-.551-.449-1-1-1h-3.969v-.438c0-1.966-1.573-3.593-3.531-3.593h-3zm0 2.062h3c.804 0 1.469.656 1.469 1.531V4H10.03v-.438c0-.875.665-1.53 1.469-1.53zM6 8h5.125c.124.013.247.031.375.031h3c.128 0 .25-.018.375-.031H20v15c0 .563-.437 1-1 1H7c-.563 0-1-.437-1-1V8zm2 2v12h2V10H8zm4 0v12h2V10h-2zm4 0v12h2V10h-2z\\\" overflow=\\\"visible\\\" font-family=\\\"Bitstream Vera Sans\\\"></path>\\n                </svg>\\n            </span>\\n        </div>\\n   \\n    </div>\\n{{/each}}\\n<button class=\\\"btn databasearray-v2-button\\\" {{on \\\"click\\\" this.addNewRow}}>\\n    <span class=\\\"move move-Plus pr-4\\\"></span>{{t \\\"general.add\\\"}} {{collector-form-name this.form}}\\n</button>\", {\"contents\":\"{{#each this.records as |row|}}\\n    <div class=\\\"databasearray-v2\\\">\\n        <div class=\\\"databasearray-v2-padding\\\"></div>\\n        <div class=\\\"databasearray-v2-container\\\">\\n            <Addon::FormAdd @form={{this.form}} @record={{row}} @only={{this.fields}} @onFieldChange={{fn this.onChange row}} as |Form|>\\n            <Form.Fields as |Fields FieldComponent|>\\n                {{#each Fields as |Field|}}\\n                    <div class=\\\"px-1\\\">\\n                        {{#if (get this.filters Field.name)}}\\n                            <FieldComponent\\n                                @field={{Field.name}}\\n                                @form={{Field.form}}\\n                                @value={{get row Field.name}}\\n                                @record={{row}}\\n                                @skipLastUsed={{true}}\\n                                @filters={{this.filters}}\\n                                @onChange={{fn Form.OnChange Field.name}}\\n                                @mandatory={{field.features.mandatory}}\\n                            />\\n                        {{else}}\\n                            <FieldComponent\\n                                @field={{Field.name}}\\n                                @form={{Field.form}}\\n                                @value={{get row Field.name}}\\n                                @record={{row}}\\n                                @skipLastUsed={{true}}\\n                                @onChange={{fn Form.OnChange Field.name}}\\n                                @mandatory={{field.features.mandatory}}\\n                            />\\n                        {{/if}}\\n                    </div>\\n                {{/each}}\\n            </Form.Fields>\\n        </Addon::FormAdd>\\n        </div>\\n        <div class=\\\"databasearray-v2-remove\\\">\\n            <span role=\\\"button\\\" {{on \\\"click\\\" (fn this.removeRow row)}} name=\\\"remove-button\\\" class=\\\"remove-button pr-2\\\" title=\\\"Poista\\\">\\n                <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"{{if this.gui.isMobileComputed 25 18}}px\\\" height=\\\"{{if this.gui.isMobileComputed 30 24}}px\\\" viewBox=\\\"0 0 26 26\\\">\\n                    <path style=\\\"text-indent:0;text-align:start;line-height:normal;text-transform:none;block-progression:tb;-inkscape-font-specification:Bitstream Vera Sans\\\" d=\\\"M11.5-.031c-1.958 0-3.531 1.627-3.531 3.594V4H4c-.551 0-1 .449-1 1v1H2v2h2v15c0 1.645 1.355 3 3 3h12c1.645 0 3-1.355 3-3V8h2V6h-1V5c0-.551-.449-1-1-1h-3.969v-.438c0-1.966-1.573-3.593-3.531-3.593h-3zm0 2.062h3c.804 0 1.469.656 1.469 1.531V4H10.03v-.438c0-.875.665-1.53 1.469-1.53zM6 8h5.125c.124.013.247.031.375.031h3c.128 0 .25-.018.375-.031H20v15c0 .563-.437 1-1 1H7c-.563 0-1-.437-1-1V8zm2 2v12h2V10H8zm4 0v12h2V10h-2zm4 0v12h2V10h-2z\\\" overflow=\\\"visible\\\" font-family=\\\"Bitstream Vera Sans\\\"></path>\\n                </svg>\\n            </span>\\n        </div>\\n   \\n    </div>\\n{{/each}}\\n<button class=\\\"btn databasearray-v2-button\\\" {{on \\\"click\\\" this.addNewRow}}>\\n    <span class=\\\"move move-Plus pr-4\\\"></span>{{t \\\"general.add\\\"}} {{collector-form-name this.form}}\\n</button>\",\"moduleName\":\"tt4/components/addon/fields/databasearray.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/databasearray.hbs\"}});\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { action, notifyPropertyChange } from '@ember/object';\nimport moment from 'moment';\nimport { IFieldComponent } from 'tt4/ember-movenium/interfaces/fields';\nimport { IOptions, IField } from 'tt4/ember-movenium/interfaces/forms';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\n\nexport default class FieldsDatabasearrayComponent extends Component<IFieldComponent> {\n    @tracked protected records: IRecord[] = [];\n\n    @service private forms: any;\n    @service private store: any;\n    @service private gui: any;\n\n    private form: string;\n\n    constructor(owner: unknown, args: IFieldComponent) {\n        super(owner, args);\n        this.records = [];\n        if (this.args.value && (this.args.value as IRecord[])?.length) {\n            this.records = (this.args.value as IRecord[])\n                .filter((item) => {\n                    if (item.id === '0') return false; // sometimes database has rows with id \"0\" .. skip those because they are not real\n                    return true;\n                })\n                .toArray() as IRecord[];\n        }\n        this.form = (this.args.options! as IOptions).form!;\n    }\n\n    protected get fields(): string {\n        const parentfields = this.forms.fieldArray(this.args.form!);\n        return this.forms\n            .fieldArray(this.form!)\n            .filter((field: { name: any }) => !parentfields.findBy('name', field.name))\n            .map((field: { name: any }) => field.name)\n            .join(',');\n    }\n\n    // Is used to reload database fields (ie. task) inside databasearray (ie. multitask), when field that reloads (ie. project) is targeted to databasearray field in other form (ie. worktime)\n    protected get filters() {\n        if (this.args.filter) {\n            // Can't figure out the logic in this situation. Worktime form's project reloads multitask, which should onward the reload to its field taskname to reload task form data by that project\n            if (this.form === 'multitask' && Object.keys(this.args.filter).includes('project'))\n                return { taskname: this.args.filter };\n\n            // support also subproject filtering .. this is used in fondion integration .. if this listing possibilities is some day\n            // not enough, then we need to make this more dynamic\n            if (this.form === 'multitask' && Object.keys(this.args.filter).includes('subproject'))\n                return { taskname: this.args.filter };\n            else return {};\n        }\n        return {};\n    }\n\n    @action\n    protected addNewRow(): void {\n        const record = this.store.createRecord(this.form!);\n        this.records?.push(record);\n        this.autoSetHours();\n        notifyPropertyChange(this, 'records');\n    }\n\n    @action\n    protected onChange(record: IRecord, fieldName: string, value: any): void {\n        record[fieldName] = value;\n        this.args.onChange(this.records);\n    }\n\n    @action\n    protected removeRow(record: IRecord): void {\n        record.get('isNew') ? record.deleteRecord() : record.destroyRecord();\n        // remove row with filter so tracking works\n        this.records = this.records.filter((item) => item !== record);\n\n        this.args.onChange(this.records);\n    }\n\n    _convertWorkHoursToMinutes(work_hours: string | number): number {\n        if (typeof work_hours === 'number') {\n            return work_hours * 60;\n        } else {\n            const split = work_hours.split(':');\n            return parseInt(split[0], 10) * 60 + parseInt(split[1], 10);\n        }\n    }\n\n    autoSetHours() {\n        if (this.args.features?.validate_check !== 'multipleHours') return;\n\n        let minutes = 0;\n        let endtime = this.args.record?.endtime\n            ? this.args.record.endtime\n            : moment().format('HH:mm');\n\n        // In case we're dealing with only hours adding\n        if (\n            !this.args.record?.starttime &&\n            !this.args.record?.endtime &&\n            this.args.record?.work_hours\n        ) {\n            minutes = this._convertWorkHoursToMinutes(this.args.record.work_hours);\n        } else {\n            minutes = moment(this.args.record?.date + ' ' + endtime).diff(\n                moment(this.args.record?.date + ' ' + this.args.record?.starttime),\n                'minutes',\n            );\n        }\n\n        if (this.args.record?.pause) minutes -= this.args.record?.pause;\n\n        if (!minutes) return;\n\n        if (minutes < 0) minutes += 1440;\n\n        let sumBefore = 0;\n        let lastOneMinutes = 0;\n        let allAreTheSame = true;\n        let addMinutes;\n        this.records.forEach((row) => {\n            if (typeof row.hours === 'string') {\n                const split = row.hours.split(':');\n                addMinutes = parseInt(split[0], 10) * 60 + parseInt(split[1], 10);\n            } else if (typeof row.hours === 'number') {\n                addMinutes = row.hours * 60;\n            } else {\n                return;\n            }\n            if (lastOneMinutes && lastOneMinutes !== addMinutes) allAreTheSame = false;\n            lastOneMinutes = addMinutes;\n            sumBefore += addMinutes;\n        });\n\n        // if all hours is divided to rows and all rows are the same we change hours of every row\n        if (sumBefore === minutes && allAreTheSame) {\n            this.records.forEach((record) => (record.hours = minutes / this.records.length / 60));\n        }\n        // if rows have been edited and there is still minutes left add all of those minutes to new row\n        else if (minutes > sumBefore) {\n            this.records[this.records.length - 1].hours = (minutes - sumBefore) / 60;\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if (is-equal this.dateOptions 'locked') }}<br>\\n    <p class=\\\"date-field-locked-text\\\">\\n        {{this.today}}\\n    </p>\\n{{else}}\\n    <Input\\n        @type=\\\"date\\\"\\n        @min={{this.minDate}}\\n        @max={{this.maxDate}}\\n        @value={{@value}}\\n        @disabled={{@disabled}}\\n        @name={{this.name}}\\n        @class={{concat @class \\\" ember-movenium-date-field\\\"}}\\n        {{on 'change' (fn @onChange @value)}}\\n    />\\n{{/if}}\\n\", {\"contents\":\"{{#if (is-equal this.dateOptions 'locked') }}<br>\\n    <p class=\\\"date-field-locked-text\\\">\\n        {{this.today}}\\n    </p>\\n{{else}}\\n    <Input\\n        @type=\\\"date\\\"\\n        @min={{this.minDate}}\\n        @max={{this.maxDate}}\\n        @value={{@value}}\\n        @disabled={{@disabled}}\\n        @name={{this.name}}\\n        @class={{concat @class \\\" ember-movenium-date-field\\\"}}\\n        {{on 'change' (fn @onChange @value)}}\\n    />\\n{{/if}}\\n\",\"moduleName\":\"tt4/components/addon/fields/date.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/date.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport moment from 'moment';\n\ninterface IDateField {\n    dateInterval: string | null;\n    features?: {\n        [key: string]: string | number | object | boolean;\n    };\n}\nexport default class FieldsDateComponent extends Component<IDateField> {\n    public options: any;\n    @tracked public disabled: boolean = false;\n    @tracked protected selected: string | null = null;\n\n    get dateInterval() {\n        return this.args.dateInterval || this.args.features?.date_interval;\n    }\n\n    get dateOptions(): string[] | null | string {\n        const dateInterval = this.dateInterval;\n        if (!dateInterval) return null;\n        if (dateInterval === 'locked') return 'locked';\n\n        const arr: string[] = [];\n\n        const splitted: string[] = ('' + dateInterval).split(',');\n        let start: number = 0;\n        let end: number = 0;\n        if (splitted.length > 1) {\n            start = Number(splitted[1]) * -1;\n            end = Number(splitted[0]);\n        } else {\n            start = 0;\n            end = Number(dateInterval);\n        }\n        for (let i = start; i < end; i++) {\n            const date = moment().subtract(i, 'days');\n            arr.push(date.format('YYYY-MM-DD'));\n        }\n\n        return arr;\n    }\n\n    /**\n     * Maximum date for the date picker based on date options\n     */\n    get maxDate(): string {\n        if (!this.dateOptions || typeof this.dateOptions == 'string') return '9999-12-31';\n        return this.dateOptions.sort()[this.dateOptions.length - 1];\n    }\n\n    /**\n     * Minimum date for the date picker based on date options\n     */\n    get minDate(): string {\n        if (!this.dateOptions || typeof this.dateOptions == 'string') return '1900-01-01';\n        return this.dateOptions.sort()[0];\n    }\n\n    get today(): string {\n        return moment().format('dddd L');\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-datetime-field\\\">\\n    <Input @type=\\\"date\\\" @max=\\\"9999-12-31\\\" @value={{readonly this.date}} @focus-out={{fn this.changeDate}} />\\n    <Input @type=\\\"time\\\" @value={{readonly this.time}} @focus-out={{fn this.changeTime}}/>\\n</div>\", {\"contents\":\"<div class=\\\"ember-movenium-datetime-field\\\">\\n    <Input @type=\\\"date\\\" @max=\\\"9999-12-31\\\" @value={{readonly this.date}} @focus-out={{fn this.changeDate}} />\\n    <Input @type=\\\"time\\\" @value={{readonly this.time}} @focus-out={{fn this.changeTime}}/>\\n</div>\",\"moduleName\":\"tt4/components/addon/fields/datetime.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/datetime.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport moment from 'moment';\n// import { tracked } from '@glimmer/tracking';\n\ninterface IDateTimeField {\n    value: string;\n    onChange(arg0: string): void;\n}\n// \"2020-09-24 15:53\"\nexport default class FieldsDatetimeComponent extends Component<IDateTimeField> {\n    get time(): string | null {\n        return this.args.value?.split(' ')[1];\n    }\n\n    get date(): string | null {\n        return this.args.value?.split(' ')[0];\n    }\n\n    @action\n    protected changeDate(date: string): void {\n        const time = this.time || moment().format('HH:mm');\n        this.args.onChange(date + ' ' + time);\n    }\n\n    @action\n    protected changeTime(time: string): void {\n        const date = this.date || moment().format('YYYY-MM-DD');\n        this.args.onChange(date + ' ' + time);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\", {\"contents\":\"<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\",\"moduleName\":\"tt4/components/addon/fields/decimal.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/decimal.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<PowerSelect\\n    @options={{this.options}}\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @selected={{this.value}}\\n    @onChange={{this.handleSelect}}\\n    @searchEnabled={{true}}\\n    @searchField=\\\"name\\\"\\nas |opt|>\\n    {{opt.name}}\\n</PowerSelect>\", {\"contents\":\"<PowerSelect\\n    @options={{this.options}}\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @selected={{this.value}}\\n    @onChange={{this.handleSelect}}\\n    @searchEnabled={{true}}\\n    @searchField=\\\"name\\\"\\nas |opt|>\\n    {{opt.name}}\\n</PowerSelect>\",\"moduleName\":\"tt4/components/addon/fields/dropdown-country.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/dropdown-country.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { countries } from 'tt4/ember-movenium/utils/country';\nimport { sortBy } from 'tt4/ember-movenium/utils/sort';\nimport { IFieldComponent } from 'tt4/ember-movenium/interfaces/fields';\n\ninterface IOption {\n    id: string;\n    name: string;\n}\nexport default class FieldsDropdownCountryComponent extends Component<IFieldComponent> {\n    @tracked protected selected: string | null = null;\n    protected _value: { id: string; name: string } | null = null;\n\n    constructor(owner: unknown, args: IFieldComponent) {\n        super(owner, args);\n    }\n\n    get options() {\n        let _countries = countries;\n        if (this.args.sortBy) _countries = sortBy(this.args.sortBy, _countries);\n        return _countries;\n    }\n\n    get value(): IOption {\n        if (this.args.value)\n            return this.options.find((opt) => opt.id === this.args.value) as IOption;\n        else return (this._value as IOption) || null;\n    }\n\n    set value(value: IOption) {\n        this._value = value;\n    }\n\n    @action\n    public handleSelect(value: any) {\n        this.value = value;\n        this.args.onChange(value.id);\n    }\n}\n","define(\"tt4/components/addon/fields/dropdown-options\", [\"exports\", \"tt4/components/addon/fields/dropdown-values\"], function (_exports, _dropdownValues) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _dropdownValues.default;\n    }\n  });\n});\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<PowerSelect\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @options={{this.dropdownOptions}}\\n    @selected={{this.value}}\\n    @disabled={{or @disabled this.disabled}}\\n    @onChange={{this.onChange}}\\n    @searchEnabled={{false}}\\nas |opt|>\\n    {{opt.name}}\\n</PowerSelect>\", {\"contents\":\"<PowerSelect\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @options={{this.dropdownOptions}}\\n    @selected={{this.value}}\\n    @disabled={{or @disabled this.disabled}}\\n    @onChange={{this.onChange}}\\n    @searchEnabled={{false}}\\nas |opt|>\\n    {{opt.name}}\\n</PowerSelect>\",\"moduleName\":\"tt4/components/addon/fields/dropdown-userlevel.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/dropdown-userlevel.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { IFieldComponent } from 'tt4/ember-movenium/interfaces/fields';\nimport { sortBy } from 'tt4/ember-movenium/utils/sort';\n\ninterface IUserlevelOption {\n    id: string | number;\n    name: string;\n}\n\nexport default class FieldsDropdownUserlevelComponent extends Component<IFieldComponent> {\n    public options: any;\n    @service private intl: any;\n\n    constructor(owner: unknown, args: IFieldComponent) {\n        super(owner, args);\n        this.options = this.args.options;\n    }\n\n    get value(): IUserlevelOption | null {\n        if (this.args.value) {\n            return this.dropdownOptions.find(\n                (opt) => opt.id == this.args.value,\n            ) as IUserlevelOption;\n        }\n        return null;\n    }\n\n    get dropdownOptions(): IUserlevelOption[] {\n        const options = this.options as [];\n        const parsedOptions: IUserlevelOption[] = options.map((option: string) => {\n            if (parseInt(option, 10) > 9) {\n                return {\n                    id: parseInt(option as string, 10),\n                    name: option.substring(2),\n                } as IUserlevelOption;\n            } else {\n                const id = parseInt(option, 10);\n                return {\n                    id,\n                    name: this.intl.t(this.args.form + '.' + this.args.name + '.' + id, {\n                        default: option,\n                    }),\n                } as IUserlevelOption;\n            }\n        });\n\n        return this.args.sortBy ? sortBy(this.args.sortBy, parsedOptions) : parsedOptions;\n    }\n\n    @action\n    public onChange(value: any) {\n        this.args.onChange(value.id);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<PowerSelect\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @options={{this.options}}\\n    @selected={{this.value}}\\n    @disabled={{or @disabled this.disabled}}\\n    @onChange={{this.onChange}}\\n    @searchEnabled={{false}}\\n    @allowClear={{true}}\\n    @onOpen={{fn (mut this.isopen) true}}\\n    @onClose={{fn (mut this.isopen) false}}\\n    as |opt|\\n>\\n    {{opt.value}}\\n</PowerSelect>\\n{{#if this.isopen}}\\n    <div class=\\\"overlay\\\"></div>\\n{{/if}}\", {\"contents\":\"<PowerSelect\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @options={{this.options}}\\n    @selected={{this.value}}\\n    @disabled={{or @disabled this.disabled}}\\n    @onChange={{this.onChange}}\\n    @searchEnabled={{false}}\\n    @allowClear={{true}}\\n    @onOpen={{fn (mut this.isopen) true}}\\n    @onClose={{fn (mut this.isopen) false}}\\n    as |opt|\\n>\\n    {{opt.value}}\\n</PowerSelect>\\n{{#if this.isopen}}\\n    <div class=\\\"overlay\\\"></div>\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/fields/dropdown-values.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/dropdown-values.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { IOptions } from 'tt4/ember-movenium/interfaces/forms';\nimport { IFieldComponent } from 'tt4/ember-movenium/interfaces/fields';\nimport { sortBy } from 'tt4/ember-movenium/utils/sort';\n\ninterface IKeyValue {\n    id: string | number;\n    name: string;\n}\n\nexport default class FieldsDropdownValuesComponent extends Component<IFieldComponent> {\n    public form: string | undefined;\n    public name: string | undefined;\n    @service intl: any;\n    @tracked protected selected: string | number | boolean | null = null;\n    // private _options: string = ''\n\n    constructor(owner: unknown, args: IFieldComponent) {\n        super(owner, args);\n\n        this.name = this.args.name;\n        this.form = this.args.form;\n    }\n\n    @action\n    public onChange(value: any) {\n        this.args.onChange(value?.id);\n    }\n\n    get value(): IKeyValue | null {\n        if (this.args.value) {\n            return this.options.find((opt: IKeyValue) => opt.id === this.args.value) as IKeyValue;\n        }\n        return null;\n    }\n\n    // power select wants [{id:id, value:value}]\n    get options(): IOptions {\n        const options = this.args.options;\n        if (!options) return [];\n\n        const getName = (opt: any) => {\n            if (this.intl.exists(this.form + '.' + this.name + '.' + opt)) {\n                return this.intl.t(this.form + '.' + this.name + '.' + opt);\n            } else {\n                return opt;\n            }\n        };\n\n        let realOptions = [];\n\n        // we have legacy reporsed values from collector class\n        if ((options as IOptions[])[0].id) {\n            realOptions = (options as []).map((opt: any) => {\n                return { id: opt.id, value: getName(opt.value) };\n            });\n        } else {\n            const splitOptions = (options as string).split('\\n');\n\n            realOptions = splitOptions?.map((opt: any) => {\n                return { id: opt, value: getName(opt) };\n            });\n        }\n\n        return this.args.sortBy ? sortBy(this.args.sortBy, realOptions) : realOptions;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-gpslocation-field\\\">\\n    {{#if this.gps.lockedPosition}}\\n        {{t 'gps.location.found'}} {{#if this.distanceToProject}} ({{t 'gps.location.distance'}} {{this.formattedDistanceToProject}}) {{/if}} <span class=\\\"text-success\\\">{{standard-icon 'ok'}}</span>\\n    {{else if this.gps.notSupported}}\\n        {{t \\\"gps.not_supported\\\"}}\\n    {{else if this.gps.errorMsg}}\\n        {{this.gps.errorMsg}}\\n    {{else}}\\n        <img src=\\\"img/ajax-loader.gif\\\" alt=\\\"\\\" role=\\\"none\\\"/>\\n    {{/if}}\\n</div>\", {\"contents\":\"<div class=\\\"ember-movenium-gpslocation-field\\\">\\n    {{#if this.gps.lockedPosition}}\\n        {{t 'gps.location.found'}} {{#if this.distanceToProject}} ({{t 'gps.location.distance'}} {{this.formattedDistanceToProject}}) {{/if}} <span class=\\\"text-success\\\">{{standard-icon 'ok'}}</span>\\n    {{else if this.gps.notSupported}}\\n        {{t \\\"gps.not_supported\\\"}}\\n    {{else if this.gps.errorMsg}}\\n        {{this.gps.errorMsg}}\\n    {{else}}\\n        <img src=\\\"img/ajax-loader.gif\\\" alt=\\\"\\\" role=\\\"none\\\"/>\\n    {{/if}}\\n</div>\",\"moduleName\":\"tt4/components/addon/fields/gpslocation.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/gpslocation.hbs\"}});\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport GpsService from 'tt4/services/gps2';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport DS from 'ember-data';\nimport EventedService from 'tt4/injections/services/need';\nimport { tracked } from '@glimmer/tracking';\n\ninterface IGpslocation {\n    gps: GpsService;\n    onChange(args0: string | null): void;\n    record: IRecord;\n}\n\nexport default class FieldsGpslocationComponent extends Component<IGpslocation> {\n    @service('gps2' as any) declare gps: GpsService;\n    @service private store!: DS.Store;\n    @service private evented: EventedService;\n\n    @tracked public distanceToProject: number | null = null;\n\n    constructor(owner: any, args: IGpslocation) {\n        super(owner, args);\n        this.gps.start();\n        this.evented.on('formAddFieldChanged', this, 'onFormFieldChange');\n        this.evented.on('gpsLockedPositionChanged', this, 'onPositionChance');\n        //this is needed when user edits record and the gps is already initialized\n        //why? because in that case onFormFieldChange or onPositionChance is not called, so the location/distance is not updated\n        this.sendLocationToForm(this.gps.lockedPosition);\n    }\n\n    willDestroy() {\n        this.evented.off('formAddFieldChanged', this, 'onFormFieldChange');\n        this.evented.off('gpsLockedPositionChanged', this, 'onPositionChance');\n    }\n\n    get formattedDistanceToProject(): string {\n        const distance = this.distanceToProject as number;\n        if (distance > 1000) return Math.round(distance / 1000) + 'km';\n        else return Math.round(distance) + 'm';\n    }\n\n    onPositionChance() {\n        this.sendLocationToForm(this.gps.lockedPosition);\n    }\n\n    onFormFieldChange(params: any) {\n        if (params.fieldName === 'project') this.sendLocationToForm(this.gps.lockedPosition);\n    }\n\n    private async sendLocationToForm(userLocation: any): Promise<void> {\n        // do not send if the user's location is unknown\n        if (!this.gps.lockedPosition) return;\n\n        // set \"distance to project\" info to userLocation object\n        await this.setGpsDistanceToProject(userLocation);\n\n        // location is saved as string in form-add\n        if (typeof userLocation != 'string') userLocation = JSON.stringify(userLocation);\n\n        // send user location to form-add\n        return this.args.onChange(userLocation);\n    }\n\n    // try to inject \"distance to project\" to given userLocation object\n    private async setGpsDistanceToProject(userLocation: any): Promise<void> {\n        if (!this.args.record?.project) return;\n\n        if (typeof userLocation === 'string') userLocation = JSON.parse(userLocation);\n\n        const project = await this.store.findRecord('project', this.args.record.project.id, {\n            reload: true,\n        });\n        if (!project || !project.location_map) {\n            // if project has no location, remove possible distance from user location and from gps service\n            // why? because if user has selected a project with location and then selects a project without location, the distance to project will remain\n            this.distanceToProject = null;\n            delete userLocation.distance;\n        } else {\n            let projectLocation =\n                typeof project.location_map === 'string'\n                    ? JSON.parse(project.location_map)\n                    : project.location_map;\n\n            userLocation.distance = this.gps.getDistance(userLocation, projectLocation);\n            this.distanceToProject = userLocation.distance;\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"map_div_size\\\">\\n    <button type=\\\"button\\\" class=\\\"btn btn-m-link btn-block\\\" {{on \\\"click\\\" (fn (mut this.mapVisible))}}>{{t \\\"project.show_map\\\"}}</button>\\n</div>\\n\\n<div class=\\\"{{if this.mapVisible 'show_gps_map' 'hide_gps_map'}}\\\">\\n    <GpsLocationMap\\n        @locationChanged={{this.onChange}}\\n        @projectmode={{true}}\\n    />\\n    {{!-- {{gps-location-map value=value model=model projectmode=true}} --}}\\n</div>\\n\", {\"contents\":\"<div class=\\\"map_div_size\\\">\\n    <button type=\\\"button\\\" class=\\\"btn btn-m-link btn-block\\\" {{on \\\"click\\\" (fn (mut this.mapVisible))}}>{{t \\\"project.show_map\\\"}}</button>\\n</div>\\n\\n<div class=\\\"{{if this.mapVisible 'show_gps_map' 'hide_gps_map'}}\\\">\\n    <GpsLocationMap\\n        @locationChanged={{this.onChange}}\\n        @projectmode={{true}}\\n    />\\n    {{!-- {{gps-location-map value=value model=model projectmode=true}} --}}\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/fields/gpslocationmap.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/gpslocationmap.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\ninterface IGpsLocationMapField {\n    onChange(arg0: string): void;\n}\n\nexport default class FieldsGpslocationmapComponent extends Component<IGpsLocationMapField> {\n    @action protected onChange(location: JSON): void {\n        this.args.onChange(JSON.stringify(location));\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{!-- template-lint-disable no-bare-strings no-invalid-interactive--}}\\n{{!-- template-lint-disable no-bare-strings no-inline-styles--}}\\n{{!-- template-lint-disable simple-unless--}}\\n{{!-- template-lint-disable style-concatenation--}}\\n{{#if this.isIE}}\\n    <div class=\\\"alert alert-warning text-center\\\">\\n        <h3>{{t 'field.warning.ie_not_supported'}}</h3>\\n    </div>\\n{{/if}}\\n<div class=\\\"file-list ember-movenium-file-upload\\\">\\n    {{#each this.fileList as |file|}}\\n        <div class=\\\"file-container\\\">\\n                {{#if file.s3thumb}}\\n                    <div class=\\\"file-preview\\\" {{on 'click' (fn (mut this.modalPreviewFile) file.previewFile) }} {{on 'click' (fn (mut this.showModal))}} >\\n                        <div class=\\\"thumb-container\\\" style={{htmlsafe (concat \\\"background-image: url(\\\" file.s3thumb \\\")\\\")}}>\\n                            {{#unless @disabled}}<Addon::Icons::Close @onClick={{fn this.removeFile file.originalFile}} />{{/unless}}\\n                        </div>\\n                    </div>\\n                {{else}}\\n                    <a class=\\\"file-preview\\\" href=\\\"{{file.previewFile}}\\\" download=\\\"{{file.name}}\\\" target={{if this.isAndroid '_blank' ''}}>\\n                        <div class=\\\"thumb-container\\\">\\n                            {{#unless @disabled}}<Addon::Icons::Close @onClick={{fn this.removeFile file.originalFile}} />{{/unless}}\\n                            <div class=\\\"move move-Note file-icon\\\"></div>\\n                        </div>\\n                    </a>\\n                {{/if}}\\n\\n            <div class=\\\"queue-filename\\\" title=\\\"{{file.name}}\\\">{{file.name}}</div>\\n        </div>\\n    {{/each}}\\n</div>\\n\\n{{#if this.showModal}}\\n    <Addon::Modal @close={{fn (mut this.showModal) false}} @outsideClose={{true}} @classes=\\\"\\\">\\n        <img src={{this.modalPreviewFile}} alt=\\\"\\\" role=\\\"none\\\" style=\\\"max-width: 90vw;\\\">\\n    </Addon::Modal>\\n{{/if}}\\n\\n{{#with (file-queue name=this.queueName) as |queue|}}\\n    {{#if queue.files.length}}\\n        {{#each queue.files as |file|}}\\n            {{#if (eq file.state \\\"uploading\\\")}}\\n                <div class=\\\"row\\\">\\n                    <div class=\\\"col-xs-3 queue-filename\\\" title=\\\"{{file.name}}\\\">\\n                        {{file.name}}\\n                    </div>\\n                    <div class=\\\"col-xs-7\\\">\\n                        {{#unless (is-equal file.progress 100)}}\\n                            <div class=\\\"progress\\\">\\n                                <div class=\\\"progress-bar\\\" role=\\\"progressbar\\\" aria-valuenow=\\\"{{file.progress}}\\\"\\n                                     aria-valuemin=\\\"0\\\" aria-valuemax=\\\"100\\\" style={{htmlsafe (concat \\\"width: \\\" file.progress \\\"%;\\\")}}>\\n                                </div>\\n                            </div>\\n                        {{/unless}}\\n                    </div>\\n                    <div class=\\\"col-xs-2\\\">\\n                        <Addon::Icons::Close @onClick={{fn this.abort file}} />\\n                    </div>\\n                </div>\\n            {{/if}}\\n        {{/each}}\\n    {{/if}}\\n{{/with}}\\n{{#if this.showAddButton}}\\n\\n    {{#if (and this.isImageFile this.isAndroid)}}\\n        <button type=\\\"button\\\" {{on 'click' (fn this.addMobileFile 'gallery')}} class=\\\"btn btn-m-link inline-block\\\" disabled={{@disabled}}><span class=\\\"glyphicon glyphicon-picture\\\"></span> {{t \\\"field.fileupload.add_from_gallery\\\"}}</button>\\n        <button type=\\\"button\\\" {{on 'click' this.addMobileFile}} class=\\\"btn btn-m-link inline-block\\\" disabled={{@disabled}}><span class=\\\"glyphicon glyphicon-camera\\\"></span> {{this.addButtonText}}</button>\\n    {{else}}\\n        <FileUpload\\n            @name={{this.queueName}}\\n            @accept={{if this.isImageFile \\\"image/*\\\" \\\"*\\\"}}\\n            @onfileadd={{this.uploadImage}}\\n            @disabled={{@disabled}} >\\n\\n            <span class=\\\"btn btn-m-link {{if @disabled 'disabled' ''}}\\\">\\n                {{#if this.isImageFile}}\\n                    <span class=\\\"glyphicon glyphicon-camera\\\"></span>\\n                {{else}}\\n                    <span class=\\\"glyphicon glyphicon-file\\\"></span>\\n                {{/if}}\\n                {{this.addButtonText}}\\n            </span>\\n        </FileUpload>\\n    {{/if}}\\n{{/if}}\\n\", {\"contents\":\"{{!-- template-lint-disable no-bare-strings no-invalid-interactive--}}\\n{{!-- template-lint-disable no-bare-strings no-inline-styles--}}\\n{{!-- template-lint-disable simple-unless--}}\\n{{!-- template-lint-disable style-concatenation--}}\\n{{#if this.isIE}}\\n    <div class=\\\"alert alert-warning text-center\\\">\\n        <h3>{{t 'field.warning.ie_not_supported'}}</h3>\\n    </div>\\n{{/if}}\\n<div class=\\\"file-list ember-movenium-file-upload\\\">\\n    {{#each this.fileList as |file|}}\\n        <div class=\\\"file-container\\\">\\n                {{#if file.s3thumb}}\\n                    <div class=\\\"file-preview\\\" {{on 'click' (fn (mut this.modalPreviewFile) file.previewFile) }} {{on 'click' (fn (mut this.showModal))}} >\\n                        <div class=\\\"thumb-container\\\" style={{htmlsafe (concat \\\"background-image: url(\\\" file.s3thumb \\\")\\\")}}>\\n                            {{#unless @disabled}}<Addon::Icons::Close @onClick={{fn this.removeFile file.originalFile}} />{{/unless}}\\n                        </div>\\n                    </div>\\n                {{else}}\\n                    <a class=\\\"file-preview\\\" href=\\\"{{file.previewFile}}\\\" download=\\\"{{file.name}}\\\" target={{if this.isAndroid '_blank' ''}}>\\n                        <div class=\\\"thumb-container\\\">\\n                            {{#unless @disabled}}<Addon::Icons::Close @onClick={{fn this.removeFile file.originalFile}} />{{/unless}}\\n                            <div class=\\\"move move-Note file-icon\\\"></div>\\n                        </div>\\n                    </a>\\n                {{/if}}\\n\\n            <div class=\\\"queue-filename\\\" title=\\\"{{file.name}}\\\">{{file.name}}</div>\\n        </div>\\n    {{/each}}\\n</div>\\n\\n{{#if this.showModal}}\\n    <Addon::Modal @close={{fn (mut this.showModal) false}} @outsideClose={{true}} @classes=\\\"\\\">\\n        <img src={{this.modalPreviewFile}} alt=\\\"\\\" role=\\\"none\\\" style=\\\"max-width: 90vw;\\\">\\n    </Addon::Modal>\\n{{/if}}\\n\\n{{#with (file-queue name=this.queueName) as |queue|}}\\n    {{#if queue.files.length}}\\n        {{#each queue.files as |file|}}\\n            {{#if (eq file.state \\\"uploading\\\")}}\\n                <div class=\\\"row\\\">\\n                    <div class=\\\"col-xs-3 queue-filename\\\" title=\\\"{{file.name}}\\\">\\n                        {{file.name}}\\n                    </div>\\n                    <div class=\\\"col-xs-7\\\">\\n                        {{#unless (is-equal file.progress 100)}}\\n                            <div class=\\\"progress\\\">\\n                                <div class=\\\"progress-bar\\\" role=\\\"progressbar\\\" aria-valuenow=\\\"{{file.progress}}\\\"\\n                                     aria-valuemin=\\\"0\\\" aria-valuemax=\\\"100\\\" style={{htmlsafe (concat \\\"width: \\\" file.progress \\\"%;\\\")}}>\\n                                </div>\\n                            </div>\\n                        {{/unless}}\\n                    </div>\\n                    <div class=\\\"col-xs-2\\\">\\n                        <Addon::Icons::Close @onClick={{fn this.abort file}} />\\n                    </div>\\n                </div>\\n            {{/if}}\\n        {{/each}}\\n    {{/if}}\\n{{/with}}\\n{{#if this.showAddButton}}\\n\\n    {{#if (and this.isImageFile this.isAndroid)}}\\n        <button type=\\\"button\\\" {{on 'click' (fn this.addMobileFile 'gallery')}} class=\\\"btn btn-m-link inline-block\\\" disabled={{@disabled}}><span class=\\\"glyphicon glyphicon-picture\\\"></span> {{t \\\"field.fileupload.add_from_gallery\\\"}}</button>\\n        <button type=\\\"button\\\" {{on 'click' this.addMobileFile}} class=\\\"btn btn-m-link inline-block\\\" disabled={{@disabled}}><span class=\\\"glyphicon glyphicon-camera\\\"></span> {{this.addButtonText}}</button>\\n    {{else}}\\n        <FileUpload\\n            @name={{this.queueName}}\\n            @accept={{if this.isImageFile \\\"image/*\\\" \\\"*\\\"}}\\n            @onfileadd={{this.uploadImage}}\\n            @disabled={{@disabled}} >\\n\\n            <span class=\\\"btn btn-m-link {{if @disabled 'disabled' ''}}\\\">\\n                {{#if this.isImageFile}}\\n                    <span class=\\\"glyphicon glyphicon-camera\\\"></span>\\n                {{else}}\\n                    <span class=\\\"glyphicon glyphicon-file\\\"></span>\\n                {{/if}}\\n                {{this.addButtonText}}\\n            </span>\\n        </FileUpload>\\n    {{/if}}\\n{{/if}}\\n\",\"moduleName\":\"tt4/components/addon/fields/hdfile.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/hdfile.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { A } from '@ember/array';\nimport { inject as service } from '@ember/service';\nimport { isIE, isAndroid } from 'tt4/ember-movenium/utils/gui';\nimport File from 'ember-file-upload/file';\nimport {\n    imageTypes,\n    makeFileUrl,\n    resizeImage,\n    blackListFiles,\n} from 'tt4/ember-movenium/utils/file';\nimport config from 'tt4/config/environment';\nimport moment from 'moment';\nimport MutableArray from '@ember/array/mutable';\ndeclare const Camera: any;\ndeclare const window: any;\ndeclare const navigator: any;\n\n/*\n\nCorrect data formats\n\n  Sending data to backend\n\n    name: \"iter site.jpg\"                                                                       * mandatory\n    name_on_hd: \"6hz5ww4t2jur1rckp93pl29iaxtup1qq9zdvec097aizk1uunb9gl22o44tl54h5.jpg\"          * mandatory\n    type: \"image/jpeg\"                                                                          * mandatory\n\n    - it is ok to send more attributes but file and data attributes are forbidden (old version support)\n\n  Backend returns\n\n    name: \"iter site.jpg\"\n    name_on_hd: \"6hz5ww4t2jur1rckp93pl29iaxtup1qq9zdvec097aizk1uunb9gl22o44tl54h5.jpg\"\n    s3thumb: \"https://movdev-bucket.s3.eu-central-1.amazonaws.com/6hz5ww4t2jur1rckp93pl29iaxtu.jpg.thumb\"\n    s3url: \"https://movdev-bucket.s3.eu-central-1.amazonaws.com/6hz5ww4t2jur1rckp93pl29iaxtu.jpg\"\n    type: \"image/jpeg\"\n    thumb: (old version support)\n    url: (old version support)\n\n  Saved to database\n\n    name: \"iter site.jpg\"\n    name_on_hd: \"6hz5ww4t2jur1rckp93pl29iaxtup1qq9zdvec097aizk1uunb9gl22o44tl54h5.jpg\"\n    type: \"image/jpeg\"\n\n*/\n\ninterface IFile {\n    name: string;\n    value?: any;\n    type: string;\n    size: number;\n    url?: string;\n    s3url?: string;\n    thumb?: string;\n    s3thumb?: string;\n    name_on_hd: string;\n    previewFile?: string;\n    originalFile?: IFile;\n    blob: Blob;\n    task: any;\n    upload(url: string, data: object): void;\n    readAsDataURL(): string;\n}\n/* istanbul ignore next */\nexport default class FieldsHdfileComponent extends Component<any> {\n    public form: string | undefined;\n    public name: string | undefined;\n    @service private intl: any;\n    @service private session: any;\n    @service private notifications: any;\n    @service private FileQueue: any; /* tslint:disable-line */\n\n    private queueName: string;\n    private capiURL: any;\n    private isIE: boolean = isIE; // for use in template also\n    private isAndroid: boolean = isAndroid;\n\n    @tracked private base64ImageCache: any = {};\n    @tracked private base64Cache: any = {};\n\n    constructor(owner: unknown, args: any) {\n        super(owner, args);\n        this.capiURL = config.APP.COLLECTOR_API_URL;\n        this.queueName = Math.random().toString(36).substring(2);\n    }\n\n    get value(): MutableArray<any> {\n        return this.args.value || A([]);\n    }\n\n    private get isImageFile(): boolean {\n        return (this.args.features?.is_image || false) as boolean;\n    }\n\n    private get singleFile(): boolean {\n        return (this.args.features?.single_file || false) as boolean;\n    }\n\n    private get isPublic(): boolean {\n        return (this.args.features?.public || false) as boolean;\n    }\n\n    public get showAddButton(): boolean {\n        if (this.singleFile && this.value.length > 0) return true;\n        else if (this.isIE) return false;\n        else return true;\n    }\n\n    public get addButtonText(): boolean {\n        if (this.form === 'logo') return this.intl.t('add.logo');\n        else if (this.isImageFile && this.isAndroid)\n            return this.intl.t('field.fileupload.add_from_camera');\n        else if (this.isImageFile) return this.intl.t('add.image');\n        else return this.intl.t('add.file');\n    }\n\n    public get fileList(): IFile[] {\n        if (!this.value) {\n            return [];\n        }\n\n        const mappedFiles = this.value.toArray().map((file: IFile) => {\n            const fileObject: any = {\n                name: file.name,\n                type: file.type,\n                originalFile: file,\n                name_on_hd: file.name_on_hd,\n            };\n\n            if (this.isImageType(file.type)) {\n                // Use signed URLs for images - prefer s3thumb, fall back to base64 cache\n                fileObject.s3thumb = file.s3thumb || this.base64ImageCache[file.name_on_hd];\n                fileObject.previewFile = fileObject.s3thumb;\n            } else if (file.s3url) {\n                // Use signed URLs for other files - prefer s3url, fall back to traditional url, then base64 cache\n                fileObject.previewFile = file.s3url;\n            } else if (file.url) {\n                fileObject.previewFile = makeFileUrl(this.capiURL + '/', file.url);\n            } else {\n                fileObject.previewFile = this.base64Cache[file.name_on_hd];\n            }\n            return fileObject;\n        });\n\n        return mappedFiles;\n    }\n\n    @action\n    public onChange(value: string[]) {\n        return this.args.onChange(value);\n    }\n\n    @action\n    public async uploadImage(file: IFile): Promise<void> {\n        if (file.size > 20971520) {\n            return this.notifications.error(this.intl.t('field.fileupload.file_too_large'), {\n                autoClear: true,\n            });\n        }\n\n        const fileExt = file.name?.split('.')[1].toLowerCase();\n        if (blackListFiles().includes('.' + fileExt)) {\n            this.FileQueue.files.removeObject(file);\n            return this.notifications.error(this.intl.t('field.fileupload.blocked_filetype'), {\n                autoClear: true,\n            });\n        }\n\n        if (this.isImageType(file.type)) {\n            const resizedImage = await resizeImage(file.blob);\n            const queue = this.FileQueue.find(this.queueName);\n\n            this.FileQueue.files.removeObject(file);\n            const resizedImageFile = File.fromDataURL(resizedImage);\n            resizedImageFile.name = file.name;\n            resizedImageFile.type = file.type;\n            this.FileQueue.files.pushObject(resizedImageFile);\n            queue.files.pushObject(resizedImageFile);\n            this.uploadFile(resizedImageFile, true);\n        } else {\n            this.uploadFile(file);\n        }\n    }\n\n    @action\n    public abort(file: IFile) {\n        const vals = this.value;\n        vals.removeObject(this.value.findBy('name_on_hd', file.name_on_hd));\n        file.task.cancel();\n        this.args.onChange(vals);\n    }\n\n    @action\n    public removeFile(file: IFile, event: Event) {\n        event.preventDefault();\n        const vals = this.value;\n        vals.removeObject(file);\n        this.args.onChange(vals);\n    }\n\n    @action\n    public addMobileFile(source: string | null = null) {\n        const options = {\n            allowEdit: false,\n            targetWidth: 1600,\n            targetHeight: 1600,\n            quality: 70,\n            destinationType: Camera.DestinationType.FILE_URI,\n            sourceType:\n                source === 'gallery'\n                    ? Camera.PictureSourceType.PHOTOLIBRARY\n                    : Camera.PictureSourceType.CAMERA,\n            mediaType: Camera.MediaType.PICTURE,\n            correctOrientation: true,\n            encodingType: 0,\n        };\n        // mega monster upload from device camera\n        navigator.camera.getPicture(\n            (imageData: any) => {\n                window.resolveLocalFileSystemURL(\n                    imageData,\n                    (fileEntry: any) => {\n                        fileEntry.file((file: any) => {\n                            (file.type = 'image/jpeg'),\n                                (file.name = file.name.replace(\n                                    'image.',\n                                    'image' + moment().format('YYYY-MM-DD-hh-mm-ss') + '.',\n                                )); /*tslint:disable-line*/\n                            this.uploadImage({\n                                blob: file,\n                                name: file.name,\n                                type: file.type,\n                            } as IFile);\n                        });\n                    },\n                    (error: any) => {\n                        throw new Error(error);\n                    },\n                );\n            },\n            (message: any) => {\n                throw new Error(message);\n            },\n            options,\n        );\n    }\n    @action\n    private addFile(file: IFile) {\n        const vals = this.value;\n        vals.pushObject({\n            name: file.name,\n            name_on_hd: file.name_on_hd,\n            type: file.type,\n        });\n        this.args.onChange(vals);\n    }\n\n    private async uploadFile(file: IFile, isImageType: boolean = false): Promise<void> {\n        let policyUrl = '/awsurl?filename=' + file.name + '&format=policy';\n        if (this.isPublic) policyUrl += '&public=true';\n        if (isImageType) policyUrl += '&thumb=true';\n\n        try {\n            const req = await fetch(this.capiURL + policyUrl, {\n                headers: {\n                    Authorization: 'Bearer ' + this.session.data.authenticated.access_token,\n                },\n            });\n            const response = (await req.json()) as any;\n\n            const task = file.upload(response.url!, {\n                data: response.inputs,\n            });\n\n            if (isImageType) {\n                this.createThumb(file.name, file.type, file.blob, response);\n                const base64Url = await file.readAsDataURL();\n                this.base64ImageCache[response.s3file] = base64Url;\n            } else {\n                const base64Url = await file.readAsDataURL();\n                this.base64Cache[response.s3file] = base64Url;\n            }\n\n            await task;\n            file.task = task;\n            file.name_on_hd = response.s3file;\n\n            this.addFile(file);\n        } catch (e) {\n            alert('upload failed');\n        }\n    }\n\n    private async createThumb(\n        fileName: string,\n        type: string,\n        blob: Blob,\n        policyResponse: any,\n    ): Promise<string> {\n        const resized = await resizeImage(blob);\n        const resizedImageFile = File.fromDataURL(resized);\n        resizedImageFile.name = fileName;\n        resizedImageFile.type = type;\n        resizedImageFile.upload(policyResponse.thumb.url, {\n            data: policyResponse.thumb.inputs,\n        });\n        return resizedImageFile;\n    }\n\n    private isImageType(type: string): boolean {\n        return imageTypes.includes(type);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div>\\n    <Input\\n        @type='number'\\n        @min='0'\\n        @name={{concat @name '-hours'}}\\n        @class='hours-and-minutes'\\n        @focus-out={{fn this.changeHours}}\\n        {{on 'focus' this.selectAll}}\\n        @value={{readonly this.hours}}\\n        @disabled={{@disabled}}\\n    />\\n    {{t 'general.hour_abbr'}}\\n    <Input\\n        @type='number'\\n        @min='0'\\n        @max='59'\\n        @name={{concat @name '-minutes'}}\\n        @class='hours-and-minutes'\\n        @focus-out={{fn this.changeMinutes}}\\n        {{on 'focus' this.selectAll}}\\n        @value={{readonly this.minutes}}\\n        @disabled={{@disabled}}\\n    />\\n    {{t 'general.min_abbr'}}\\n</div>\", {\"contents\":\"<div>\\n    <Input\\n        @type='number'\\n        @min='0'\\n        @name={{concat @name '-hours'}}\\n        @class='hours-and-minutes'\\n        @focus-out={{fn this.changeHours}}\\n        {{on 'focus' this.selectAll}}\\n        @value={{readonly this.hours}}\\n        @disabled={{@disabled}}\\n    />\\n    {{t 'general.hour_abbr'}}\\n    <Input\\n        @type='number'\\n        @min='0'\\n        @max='59'\\n        @name={{concat @name '-minutes'}}\\n        @class='hours-and-minutes'\\n        @focus-out={{fn this.changeMinutes}}\\n        {{on 'focus' this.selectAll}}\\n        @value={{readonly this.minutes}}\\n        @disabled={{@disabled}}\\n    />\\n    {{t 'general.min_abbr'}}\\n</div>\",\"moduleName\":\"tt4/components/addon/fields/hours.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/hours.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action, notifyPropertyChange } from '@ember/object';\nimport { isMobile } from 'tt4/ember-movenium/utils/gui';\n\ninterface IHoursAndMinutes {\n    value: string;\n    onChange(args0: string): void;\n}\n\nexport default class FieldsHoursAndMinutesComponent extends Component<IHoursAndMinutes> {\n    get isMobile(): boolean {\n        return isMobile();\n    }\n\n    // select all numbers in input\n    @action\n    public selectAll(event: Event): void {\n        const target = event.target as HTMLInputElement;\n        target.select();\n    }\n\n    @action\n    public changeHours(value: string): void {\n        let val = parseInt(value, 10);\n\n        if (isNaN(val)) val = 0;\n\n        if (val < 0) val = 0;\n\n        if (val < 10) {\n            value = '0' + val;\n        }\n\n        const minutes = this.minutes || '00';\n\n        this.args.onChange(value + ':' + minutes);\n        notifyPropertyChange(this, 'hours');\n    }\n\n    @action\n    public changeMinutes(value: string): void {\n        let val = parseInt(value, 10);\n\n        if (isNaN(val)) val = 0;\n\n        if (val < 0 || val > 59) val = 0;\n\n        if (val < 10) {\n            value = '0' + val;\n        }\n\n        const hours = this.hours || '00';\n\n        this.args.onChange(hours + ':' + value);\n        notifyPropertyChange(this, 'minutes');\n    }\n\n    get hours(): string | null {\n        if (!this.args.value) return null;\n        if (this.args.value.toString().includes(':')) {\n            return this.args.value?.split(':')[0];\n        } else {\n            return Math.floor(parseInt(this.args.value, 10)).toString();\n        }\n    }\n\n    get minutes(): string | null {\n        if (!this.args.value) return null;\n        if (this.args.value.toString().includes(':')) {\n            return this.args.value?.split(':')[1];\n        } else {\n            const minutes = Math.round((parseFloat(this.args.value) % 1) * 60);\n            return minutes < 10 ? '0' + minutes.toString() : minutes.toString();\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{this.unit}}</span>\\n</div>\\n\", {\"contents\":\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{this.unit}}</span>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/fields/minutes.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/minutes.hbs\"}});\nimport FieldsPriceComponent from './price';\n\nexport default class FieldsBigPriceComponent extends FieldsPriceComponent {\n    get unit(): string | null {\n        return 'min';\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if @moreCount}}\\n    <div class=\\\"ember-power-select-option power-select-footer\\\">\\n        {{t \\\"select.more\\\"}}\\n    </div>\\n{{/if}}\\n\", {\"contents\":\"{{#if @moreCount}}\\n    <div class=\\\"ember-power-select-option power-select-footer\\\">\\n        {{t \\\"select.more\\\"}}\\n    </div>\\n{{/if}}\\n\",\"moduleName\":\"tt4/components/addon/fields/multiselect-after-options.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/multiselect-after-options.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<PowerSelectMultiple\\n    @class={{@class}}\\n    @name={{@name}}\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @tagName=\\\"div\\\"\\n    @allowClear={{true}}\\n    @selected={{this.selected}}\\n    @preventScroll={{true}}\\n    @placeholder={{this.placeholder}}\\n    @options={{this.options}}\\n    @loadingMessage={{t \\\"general.loading\\\"}}\\n    @disabled={{or @disabled this.disabled}}\\n    @searchEnabled={{true}}\\n    @search={{fn this.search}}\\n    @afterOptionsComponent={{component \\\"addon/fields/multiselect-after-options\\\" moreCount=this.moreCount}}\\n    @onOpen={{fn (mut this.isopen) true}}\\n    @onClose={{fn (mut this.isopen) false}}\\n    @onChange={{this.onChange}} as |record|>\\n    {{#if record.isSelectAll}}\\n        <span style=\\\"font-style: italic; color: grey;\\\">{{record.text}}</span>\\n    {{else}}\\n        {{#each this.subformFields as |field|}}\\n            {{get record field}}\\n        {{/each}}\\n    {{/if}}\\n</PowerSelectMultiple>\", {\"contents\":\"<PowerSelectMultiple\\n    @class={{@class}}\\n    @name={{@name}}\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @tagName=\\\"div\\\"\\n    @allowClear={{true}}\\n    @selected={{this.selected}}\\n    @preventScroll={{true}}\\n    @placeholder={{this.placeholder}}\\n    @options={{this.options}}\\n    @loadingMessage={{t \\\"general.loading\\\"}}\\n    @disabled={{or @disabled this.disabled}}\\n    @searchEnabled={{true}}\\n    @search={{fn this.search}}\\n    @afterOptionsComponent={{component \\\"addon/fields/multiselect-after-options\\\" moreCount=this.moreCount}}\\n    @onOpen={{fn (mut this.isopen) true}}\\n    @onClose={{fn (mut this.isopen) false}}\\n    @onChange={{this.onChange}} as |record|>\\n    {{#if record.isSelectAll}}\\n        <span style=\\\"font-style: italic; color: grey;\\\">{{record.text}}</span>\\n    {{else}}\\n        {{#each this.subformFields as |field|}}\\n            {{get record field}}\\n        {{/each}}\\n    {{/if}}\\n</PowerSelectMultiple>\",\"moduleName\":\"tt4/components/addon/fields/multiselect.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/multiselect.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action, get, computed } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { debounce } from '@ember/runloop';\nimport { isPresent, isBlank } from '@ember/utils';\nimport { A } from '@ember/array';\nimport { IOptions } from 'tt4/ember-movenium/interfaces/forms';\n\ninterface FieldsMultiselectArgs {\n\tclass?: string;\n\tname: string;\n\tform: string;\n\toptions: IOptions;\n\tvalue?: any;\n\tdisabled?: boolean;\n\tprompt?: any;\n\tmodel?: { [key: string]: any };\n\tfilter?: { [key: string]: any } | null;\n\tonChange(value: string[] | null): void;\n}\n\nexport default class FieldsMultiselectComponent extends Component<FieldsMultiselectArgs> {\n\n\t@service declare store: any;\n\t@service declare intl: any;\n\n\t@tracked internalSelected: any = A([]);\n\t@tracked disabled = false;\n\t@tracked isopen = false;\n\t@tracked moreCount: number | null = null;\n\n\tconstructor(owner: any, args: FieldsMultiselectArgs) {\n\t\tsuper(owner, args);\n\t\tthis.loadInitialSelection();\n\t}\n\n\tget subform() {\n\t\treturn this.args.options?.form || '';\n\t}\n\n\tget subformFields() {\n\t\treturn this.args.options?.fields || [];\n\t}\n\n\tget placeholder(): string | null {\n\t\treturn this.args.prompt ? this.intl.t(this.args.prompt) : null;\n\t}\n\n\tget selected() {\n\t\tconst value = this.args.value;\n\t\tconst isRecordArray = Array.isArray(value) && isPresent(value) && this.isRecord(value[0]);\n\t\treturn isRecordArray ? value : this.internalSelected;\n\t}\n\n\tget queryLimit(): number {\n\t\treturn 100;\n\t}\n\n\t// Cache promise to avoid repeated backend queries on each render\n\t// Invalidates when filter or selected items change\n\t@computed('subform', 'args.filter', 'internalSelected.[]')\n\tget options(): Promise<any> {\n\t\treturn this.fetchOptions(null).then(this.groupOptions.bind(this));\n\t}\n\n\tisRecord(item: any): boolean {\n\t\treturn typeof item === 'object' && item && 'id' in item;\n\t}\n\n\t// Group options into \"Selected\" and \"Unselected\" categories for dropdown display\n\tgroupOptions(records: any) {\n\t\tif (!records?.toArray) return [];\n\n\t\tconst allRecords = records.toArray();\n\t\tconst selectedIds = this.internalSelected.mapBy('id');\n\n\t\tconst selected = allRecords.filter((record: any) => selectedIds.includes(record.id));\n\t\tconst unselected = allRecords.filter((record: any) => !selectedIds.includes(record.id));\n\n\t\tconst groups = [];\n\n\t\tif (isPresent(selected)) {\n\t\t\tgroups.push({\n\t\t\t\tgroupName: this.intl.t('select.selected'),\n\t\t\t\toptions: selected\n\t\t\t});\n\t\t}\n\n\t\tif (isPresent(unselected)) {\n\t\t\t// Add \"Select All\" option at the beginning of unselected group\n\t\t\tconst selectAllOption = {\n\t\t\t\tid: '__select_all__',\n\t\t\t\tisSelectAll: true,\n\t\t\t\ttext: this.intl.t('select.select_all')\n\t\t\t};\n\n\t\t\tgroups.push({\n\t\t\t\tgroupName: this.intl.t('select.unselected'),\n\t\t\t\toptions: [selectAllOption, ...unselected]\n\t\t\t});\n\t\t}\n\n\t\treturn groups;\n\t}\n\n\tcreateQueryParams(term: string | null = null, id: string | null = null) {\n\t\tconst params: any = {\n\t\t\tform: this.args.form,\n\t\t\tfield: this.args.name,\n\t\t\tlimit: this.queryLimit,\n\t\t\toffset: 0,\n\t\t};\n\n\t\tif (isPresent(id)) params.id = id;\n\t\tif (isPresent(term)) params.q = term;\n\n\t\t// Add filter parameters if present\n\t\tif (isPresent(this.args.filter)) {\n\t\t\tObject.keys(this.args.filter || {}).forEach((key) => {\n\t\t\t\tconst filterValue = (this.args.filter || {})[key];\n\t\t\t\tif (isPresent(filterValue)) {\n\t\t\t\t\tparams[key] = typeof filterValue === 'string' ? filterValue : get(filterValue, 'id');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn params;\n\t}\n\n\t// Convert value (array of ids or string) to comma-separated format for backend query\n\tparseIdsFromValue(value: any): string | null {\n\t\tif (isBlank(value)) return null;\n\n\t\tif (Array.isArray(value)) {\n\t\t\tconst ids = value.map((v) => String(v || '')).filter(isPresent);\n\t\t\treturn ids.length ? ids.join(',') : null;\n\t\t}\n\n\t\tif (typeof value === 'string') {\n\t\t\treturn isBlank(value.trim()) ? null : value;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tasync fetchOptions(term: string | null) {\n\t\tif (this.args.filter && !term) {\n\t\t\tthis.disabled = true;\n\t\t}\n\n\t\tconst records = await this.store.query(this.subform, this.createQueryParams(term));\n\t\tconst metaCount = records?.meta?.count;\n\t\tthis.moreCount =\n\t\t\tmetaCount > this.queryLimit\n\t\t\t\t? metaCount - this.queryLimit\n\t\t\t\t: null;\n\t\tthis.disabled = false;\n\n\t\treturn records;\n\t}\n\n\tasync loadInitialSelection(): Promise<void> {\n\t\tconst value = this.args.value;\n\n\t\t// If caller already provides selected record objects, use them directly\n\t\tif (Array.isArray(value) && isPresent(value) && this.isRecord(value[0])) {\n\t\t\tthis.internalSelected = A(value);\n\t\t\treturn;\n\t\t}\n\n\t\t// Parse ids and fetch corresponding records from backend\n\t\tconst idsString = this.parseIdsFromValue(value);\n\t\tif (isBlank(idsString)) {\n\t\t\tthis.internalSelected = A([]);\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst records = await this.store.query(this.subform, this.createQueryParams(null, idsString));\n\t\t\tthis.internalSelected = A(records?.toArray ? records.toArray() : records);\n\t\t} catch (e) {\n\t\t\tthis.internalSelected = A([]);\n\t\t}\n\t}\n\n\t@action\n\tsearch(term: string) {\n\t\treturn new Promise((resolve) => {\n\t\t\tdebounce(this, this.performSearch, term, resolve, 600);\n\t\t});\n\t}\n\n\tasync performSearch(term: string, resolve: (value: any) => void) {\n\t\tconst records = await this.fetchOptions(term);\n\t\tresolve(this.groupOptions(records));\n\t}\n\n\tasync selectAll() {\n\t\tconst records = await this.fetchOptions(null);\n\t\treturn records.toArray ? records.toArray() : records;\n\t}\n\n\t@action\n\tasync onChange(value: any) {\n\t\t// Handle \"Select All\" by fetching and selecting all available options\n\t\tconst hasSelectAll = Array.isArray(value) && value.some((item: any) => item.isSelectAll);\n\t\tif (hasSelectAll) {\n\t\t\tvalue = await this.selectAll();\n\t\t}\n\n\t\t// Filter out \"Select All\" option and update internal state\n\t\tconst selectedRecords = Array.isArray(value)\n\t\t\t? value.filter((item: any) => !item.isSelectAll)\n\t\t\t: [];\n\t\tthis.internalSelected = A(selectedRecords);\n\n\t\t// Extract ids and notify parent\n\t\tconst ids = this.internalSelected.mapBy('id').filter(isPresent);\n\t\tconst payload = isPresent(ids) ? ids : null;\n\n\t\tif (this.args.model && this.args.name) {\n\t\t\tthis.args.model[this.args.name] = payload;\n\t\t}\n\n\t\treturn this.args.onChange(payload);\n\t}\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if field.type}}\\n    {{t \\\"field.not_supported\\\" fieldtype=field.type}}\\n{{/if}}\\n\", {\"contents\":\"{{#if field.type}}\\n    {{t \\\"field.not_supported\\\" fieldtype=field.type}}\\n{{/if}}\\n\",\"moduleName\":\"tt4/components/addon/fields/not-supported.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/not-supported.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{@options}}</span>\\n</div>\\n\", {\"contents\":\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{@options}}</span>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/fields/number.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/number.hbs\"}});\nimport Component from '@glimmer/component';\n\nexport default class FieldsNumberComponent extends Component {}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Input\\n    @type={{if this.showPassword \\\"text\\\" \\\"password\\\"}}\\n    @name={{@name}}\\n    @value={{@value}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n    @disabled={{not this.showPassword}}\\n/>\", {\"contents\":\"<Input\\n    @type={{if this.showPassword \\\"text\\\" \\\"password\\\"}}\\n    @name={{@name}}\\n    @value={{@value}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n    @disabled={{not this.showPassword}}\\n/>\",\"moduleName\":\"tt4/components/addon/fields/password.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/password.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\ninterface PasswordInputArgs {\n  value: string;\n}\n\nexport default class FieldsPasswordComponent extends Component<PasswordInputArgs> {\n    @tracked showPassword: boolean = false;\n\n    constructor(owner: unknown, args: PasswordInputArgs) {\n        super(owner, args);\n        // Determine if the password should be shown based on its length or if its value is 'secured' (which is the password value for existing users)\n        this.showPassword = args.value.length > 6 || args.value === 'secured' ? false : true;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{this.unit}}</span>\\n</div>\\n\", {\"contents\":\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{this.unit}}</span>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/fields/price.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/price.hbs\"}});\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\n\nexport default class FieldsPriceComponent extends Component {\n    @service private session: any;\n\n    get unit(): string | null {\n        if (this.session.currentUser.company_info.country === 'fi') return '€';\n        else if (this.session.currentUser.company_info.country === 'se') return 'SEK';\n        else return null;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-flex-button-group-container\\\">\\n    {{#each @options as |option index|}}\\n        {{#if (eq @name \\\"affects_overtime\\\")}}\\n            <span role=\\\"button\\\" class=\\\"ember-movenium-flex-button-group-item-small ember-movenium-flex-button-modal {{if (is-equal option @value) 'ember-movenium-flex-button-group-item-small-selected'}}\\\"\\n                name={{concat @name '-' index}} {{on 'click' (fn @onChange option)}}>{{#if (is-equal option @value)}}<span class=\\\"ember-movenium-checkmark\\\"></span>{{/if}}{{t (concat @form '.' @name '.' option)}}</span>\\n        {{else}}\\n            <button type=\\\"button\\\" name={{concat @name '-' index}} class=\\\"ember-movenium-flex-button-group-item {{concat 'radio-button-' @form '-' index}} {{if (is-equal option @value) 'ember-movenium-flex-button-group-selected'}}\\\" {{on 'click' (fn @onChange option)}}>{{#if (is-equal option @value)}}<span class=\\\"ember-movenium-checkmark\\\"></span> {{/if}}{{collector-value-format value=option form=@form field=@name}}</button>\\n        {{/if}}\\n    {{/each}}\\n</div>\\n\", {\"contents\":\"<div class=\\\"ember-movenium-flex-button-group-container\\\">\\n    {{#each @options as |option index|}}\\n        {{#if (eq @name \\\"affects_overtime\\\")}}\\n            <span role=\\\"button\\\" class=\\\"ember-movenium-flex-button-group-item-small ember-movenium-flex-button-modal {{if (is-equal option @value) 'ember-movenium-flex-button-group-item-small-selected'}}\\\"\\n                name={{concat @name '-' index}} {{on 'click' (fn @onChange option)}}>{{#if (is-equal option @value)}}<span class=\\\"ember-movenium-checkmark\\\"></span>{{/if}}{{t (concat @form '.' @name '.' option)}}</span>\\n        {{else}}\\n            <button type=\\\"button\\\" name={{concat @name '-' index}} class=\\\"ember-movenium-flex-button-group-item {{concat 'radio-button-' @form '-' index}} {{if (is-equal option @value) 'ember-movenium-flex-button-group-selected'}}\\\" {{on 'click' (fn @onChange option)}}>{{#if (is-equal option @value)}}<span class=\\\"ember-movenium-checkmark\\\"></span> {{/if}}{{collector-value-format value=option form=@form field=@name}}</button>\\n        {{/if}}\\n    {{/each}}\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/fields/radio.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/radio.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div role=\\\"button\\\" {{on 'click' (fn (mut this.showModal) true)}} class=\\\"ember-movenium-signature {{if @value 'ember-movenium-signature-success'}}\\\" >\\n    {{t 'field.signature.placeholder'}}\\n    {{#if @value}}\\n        <img class=\\\"ember-movenium-signature-preview\\\" src={{this.signatureSrc}} alt={{t 'field.signature.placeholder'}} />\\n        <span class=\\\"ember-movenium-checkmark\\\"></span>\\n    {{/if}}\\n</div>\\n\\n{{#if this.showModal}}\\n    <ModalDialog\\n        @onClose={{fn (mut this.showModal) false}}\\n        @wrapperClassNames=\\\"ember-movenium-signature-dialog\\\"\\n        @translucentOverlay={{true}}\\n        @overlayPosition=\\\"sibling\\\"\\n    >\\n        <div class=\\\"ember-movenium-modal-dialog-header\\\">\\n            <h4>{{t 'modal.signature.title'}}</h4>\\n            <Addon::Icons::Close @onClick={{fn (mut this.showModal) false}} />\\n        </div>\\n\\n        <div class=\\\"ember-movenium-modal-dialog-content\\\">\\n            {{this.canvas}}\\n        </div>\\n\\n        <div class=\\\"ember-movenium-modal-dialog-footer\\\">\\n            <button type=\\\"button\\\" {{on 'click' this.clear}} class=\\\"ember-movenium-button ember-movenium-clear-button\\\"> {{t 'modal.clear'}} </button>\\n            <button type=\\\"button\\\" {{on 'click' this.save}} class=\\\"ember-movenium-button ember-movenium-save-button\\\"> {{t 'modal.ok'}} </button>\\n        </div>\\n    </ModalDialog>\\n{{/if}}\", {\"contents\":\"<div role=\\\"button\\\" {{on 'click' (fn (mut this.showModal) true)}} class=\\\"ember-movenium-signature {{if @value 'ember-movenium-signature-success'}}\\\" >\\n    {{t 'field.signature.placeholder'}}\\n    {{#if @value}}\\n        <img class=\\\"ember-movenium-signature-preview\\\" src={{this.signatureSrc}} alt={{t 'field.signature.placeholder'}} />\\n        <span class=\\\"ember-movenium-checkmark\\\"></span>\\n    {{/if}}\\n</div>\\n\\n{{#if this.showModal}}\\n    <ModalDialog\\n        @onClose={{fn (mut this.showModal) false}}\\n        @wrapperClassNames=\\\"ember-movenium-signature-dialog\\\"\\n        @translucentOverlay={{true}}\\n        @overlayPosition=\\\"sibling\\\"\\n    >\\n        <div class=\\\"ember-movenium-modal-dialog-header\\\">\\n            <h4>{{t 'modal.signature.title'}}</h4>\\n            <Addon::Icons::Close @onClick={{fn (mut this.showModal) false}} />\\n        </div>\\n\\n        <div class=\\\"ember-movenium-modal-dialog-content\\\">\\n            {{this.canvas}}\\n        </div>\\n\\n        <div class=\\\"ember-movenium-modal-dialog-footer\\\">\\n            <button type=\\\"button\\\" {{on 'click' this.clear}} class=\\\"ember-movenium-button ember-movenium-clear-button\\\"> {{t 'modal.clear'}} </button>\\n            <button type=\\\"button\\\" {{on 'click' this.save}} class=\\\"ember-movenium-button ember-movenium-save-button\\\"> {{t 'modal.ok'}} </button>\\n        </div>\\n    </ModalDialog>\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/fields/signature.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/signature.hbs\"}});\nimport Component from '@glimmer/component';\nimport SignaturePad from 'signature_pad';\nimport config from 'tt4/config/environment';\nimport { isArray } from '@ember/array';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\ninterface ISignatureField {\n    signatureSrc: string;\n    value: string | [{ url: string }] | { url: string } | null;\n    onChange(args0: string | null): void;\n}\n\nexport default class FieldsSignatureComponent extends Component<ISignatureField> {\n    protected signaturePad: SignaturePad | null = null;\n    protected canvas: HTMLCanvasElement;\n    @tracked protected showModal: boolean = false;\n\n    constructor(owner: unknown, args: ISignatureField) {\n        super(owner, args);\n        const canvas = document.createElement('canvas');\n        canvas.width = 475;\n        canvas.className = 'ember-movenium-signature-canvas';\n\n        this.signaturePad = new SignaturePad(canvas);\n        this.canvas = canvas;\n    }\n\n    get signatureSrc(): string | null {\n        this.signaturePad?.clear();\n        if (!this.args.value) return null;\n        if (typeof this.args.value === 'string') return this.args.value;\n        else if (isArray(this.args.value))\n            return config.APP.COLLECTOR_API_URL + '/' + this.args.value[0].url;\n        else return config.APP.COLLECTOR_API_URL + '/' + this.args.value.url;\n    }\n\n    @action\n    protected clear(): void {\n        this.signaturePad?.clear();\n    }\n\n    @action\n    protected save(): void {\n        if (this.signaturePad!.isEmpty()) this.args.onChange(null);\n        else this.args.onChange(this.signaturePad!.toDataURL());\n        this.showModal = false;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<TagInput\\n  @tags={{@value}}\\n  @addTag={{fn this.addTag}}\\n  @removeTagAtIndex={{fn this.removeTagAtIndex}}\\n  @onKeyUp={{fn this.queryForUser}}\\n  as |tag|>\\n    <span class={{if tag.error \\\"error\\\"}}>{{tag.tagName}}</span>\\n</TagInput>\\n{{#if this.showDropdown}}\\n    {{#if this.options.length}}\\n        <div class=\\\"ajax-select\\\">\\n            <div class=\\\"options\\\" id=\\\"tag-list-dropdown\\\">\\n                <ul>\\n                    {{#each this.options as |opt|}}\\n                        <li role=\\\"button\\\" {{on \\\"click\\\" (fn this.addTag opt)}}>\\n                            {{opt}}\\n                        </li>\\n                    {{/each}}\\n                </ul>\\n            </div>\\n        </div>\\n    {{/if}}\\n{{/if}}\", {\"contents\":\"<TagInput\\n  @tags={{@value}}\\n  @addTag={{fn this.addTag}}\\n  @removeTagAtIndex={{fn this.removeTagAtIndex}}\\n  @onKeyUp={{fn this.queryForUser}}\\n  as |tag|>\\n    <span class={{if tag.error \\\"error\\\"}}>{{tag.tagName}}</span>\\n</TagInput>\\n{{#if this.showDropdown}}\\n    {{#if this.options.length}}\\n        <div class=\\\"ajax-select\\\">\\n            <div class=\\\"options\\\" id=\\\"tag-list-dropdown\\\">\\n                <ul>\\n                    {{#each this.options as |opt|}}\\n                        <li role=\\\"button\\\" {{on \\\"click\\\" (fn this.addTag opt)}}>\\n                            {{opt}}\\n                        </li>\\n                    {{/each}}\\n                </ul>\\n            </div>\\n        </div>\\n    {{/if}}\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/fields/tag-input.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/tag-input.hbs\"}});\nimport Component from '@glimmer/component';\nimport { validateEmail } from 'tt4/ember-movenium/utils/validations';\nimport DS from 'ember-data';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { debounce } from '@ember/runloop';\nimport { A } from '@ember/array';\nimport MutableArray from '@ember/array/mutable';\n\ninterface ITagInput {\n    form: string;\n    field: string;\n    name: string;\n    value?: string[];\n    onChange(arg0: MutableArray<ITag | string> | string): void;\n}\n\ninterface ITag {\n    tagName: string;\n    error: boolean;\n    removeAt(args0: number): void;\n}\n\nexport default class FieldsTagInputComponent extends Component<ITagInput> implements ITagInput {\n    @tracked public showDropdown: boolean = false;\n    @tracked public tags: MutableArray<ITag | string> = A([]);\n    @tracked public options: MutableArray<string> = A([]);\n    @service declare store: DS.Store;\n\n    constructor(owner: unknown, args: ITagInput) {\n        super(owner, args);\n    }\n\n    get form() {\n        return this.args.form;\n    }\n\n    get field() {\n        return this.args.field;\n    }\n\n    get name() {\n        return this.args.name;\n    }\n\n    @action public onChange(tags: MutableArray<ITag | string>) {\n        return this.args.onChange(tags);\n    }\n\n    @action public addTag(tag: string) {\n        debounce(this, this.addTagToList, tag, 120);\n    }\n\n    @action public removeTagAtIndex(index: number) {\n        this.tags.removeAt(index);\n        this.args.onChange(this.tags as MutableArray<ITag>);\n    }\n\n    @action public queryForUser(currentInputValue: string) {\n        if (currentInputValue === '') return;\n        debounce(this, this.queryBackend, currentInputValue, 700);\n    }\n\n    protected addTagToList(tag: string) {\n        const tagObj = {\n            tagName: tag,\n            error: !validateEmail(tag),\n        } as ITag;\n        this.showDropdown = false;\n        this.tags.pushObject(tagObj as ITag);\n        this.onChange(this.tags as MutableArray<ITag>);\n    }\n\n    private async queryBackend(currentInputValue: string) {\n        this.showDropdown = false;\n        if (!this.form) return;\n        this.options = A([]);\n        const query = await this.store.query(this.form, { q: currentInputValue });\n        this.showDropdown = true;\n        query.forEach((result) => {\n            if (result[this.field]) {\n                this.options.pushObject(result[this.field]);\n            }\n        });\n    }\n}\n","define(\"tt4/components/addon/fields/textarea-varchar\", [\"exports\", \"tt4/components/addon/fields/textarea\"], function (_exports, _textarea) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _textarea.default;\n    }\n  });\n});\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Textarea\\n    @rows={{4}}\\n    @cols={{8}}\\n    @class={{@class}}\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @touchMove={{this.touchMoveAction}}\\n    @touchEnd={{this.touchEndAction}}\\n    {{on 'change' (fn @onChange @value)}}\\n    {{on 'keyup' (fn @onChange @value)}}\\n/>\", {\"contents\":\"<Textarea\\n    @rows={{4}}\\n    @cols={{8}}\\n    @class={{@class}}\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @touchMove={{this.touchMoveAction}}\\n    @touchEnd={{this.touchEndAction}}\\n    {{on 'change' (fn @onChange @value)}}\\n    {{on 'keyup' (fn @onChange @value)}}\\n/>\",\"moduleName\":\"tt4/components/addon/fields/textarea.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/textarea.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { debounce } from '@ember/runloop';\n/* istanbul ignore next */\nexport default class FieldsTextareaComponent extends Component {\n    private _touchMoving: boolean = false;\n\n    set touchMoving(moving: boolean) {\n        this._touchMoving = moving;\n    }\n\n    get touchMoving(): boolean {\n        return this._touchMoving;\n    }\n\n    @action\n    protected touchMoveAction() {\n        debounce(this, () => (this.touchMoving = true), 50);\n    }\n\n    @action\n    protected touchEndAction() {\n        if (this.touchMoving) {\n            this.touchMoving = false;\n            (document.activeElement as HTMLElement).blur();\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Input\\n    @type=\\\"text\\\"\\n    @name={{@name}}\\n    @value={{@value}}\\n    @class={{@class}}\\n    @disabled={{@disabled}}\\n    @touchMove={{this.touchMoveAction}}\\n    @touchEnd={{this.touchEndAction}}\\n    {{on \\\"change\\\" (fn @onChange @value)}}\\n    @placeholder={{@placeholder}}\\n/>\", {\"contents\":\"<Input\\n    @type=\\\"text\\\"\\n    @name={{@name}}\\n    @value={{@value}}\\n    @class={{@class}}\\n    @disabled={{@disabled}}\\n    @touchMove={{this.touchMoveAction}}\\n    @touchEnd={{this.touchEndAction}}\\n    {{on \\\"change\\\" (fn @onChange @value)}}\\n    @placeholder={{@placeholder}}\\n/>\",\"moduleName\":\"tt4/components/addon/fields/textbox.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/textbox.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { debounce } from '@ember/runloop';\n\ninterface ITextbox {\n    value: string;\n}\n\n/**\n    Textbox field\n    @class FieldsTextBoxComponent\n*/\n/* istanbul ignore next */\nexport default class FieldsTextBoxComponent extends Component<ITextbox> {\n    private _touchMoving: boolean = false;\n\n    set touchMoving(moving: boolean) {\n        this._touchMoving = moving;\n    }\n\n    get touchMoving(): boolean {\n        return this._touchMoving;\n    }\n\n    @action\n    protected touchMoveAction() {\n        debounce(\n            this,\n            () => {\n                this.touchMoving = true;\n            },\n            50,\n        );\n    }\n\n    @action\n    protected touchEndAction() {\n        if (this.touchMoving) {\n            this.touchMoving = false;\n            (document.activeElement as HTMLElement).blur();\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if this.isMobile}}\\n    <Input @type=\\\"time\\\" @value={{@value}} @disabled={{@disabled}} {{on 'change' (fn @onChange @value)}} />\\n{{else}}\\n    <Input\\n        @class=\\\"max-width-5em\\\"\\n        @type=\\\"text\\\"\\n        @autocomplete=\\\"off\\\"\\n        @value={{@value}}\\n        @disabled={{@disabled}}\\n        @focus-in={{this.select}}\\n        @focus-out={{fn this.timefy @value}}\\n        @enter={{fn this.timefy @value}}\\n    />\\n{{/if}}\", {\"contents\":\"{{#if this.isMobile}}\\n    <Input @type=\\\"time\\\" @value={{@value}} @disabled={{@disabled}} {{on 'change' (fn @onChange @value)}} />\\n{{else}}\\n    <Input\\n        @class=\\\"max-width-5em\\\"\\n        @type=\\\"text\\\"\\n        @autocomplete=\\\"off\\\"\\n        @value={{@value}}\\n        @disabled={{@disabled}}\\n        @focus-in={{this.select}}\\n        @focus-out={{fn this.timefy @value}}\\n        @enter={{fn this.timefy @value}}\\n    />\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/fields/time.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/time.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { isMobile } from 'tt4/ember-movenium/utils/gui';\n\n/**\n    Time field\n    @class FieldsTimeComponent\n*/\n\ninterface ITime {\n    onChange(args0: string): void;\n}\n\nexport default class FieldsTimeComponent extends Component<ITime> {\n    @action\n    protected select() {\n        return;\n    }\n\n    @action\n    protected timefy(value: string): void {\n        this.args.onChange(this.tryToGuessTime(value));\n    }\n\n    get isMobile(): boolean {\n        return isMobile();\n    }\n\n    /**\n     * This function receives a string, which it will try to parse into a time of format HH:mm\n     * For example if this function receives \"12\" it will return \"12:00\"\n     * If it receives \"1230\" it will return \"12:30\" and so on..\n     * @method tryToGuessTime\n     * @param {String} str - The string from which this function will try to guess the time\n     * @return {String}\n     *\n     */\n    private tryToGuessTime(str: string): string {\n        let hours;\n        let mins;\n\n        if (str.includes(':')) {\n            const exploded = str.split(':');\n            mins = parseInt(exploded[1], 10);\n            hours = parseInt(exploded[0], 10);\n        } else if (str.includes('.')) {\n            const exploded = str.split('.');\n            mins = parseInt(exploded[1], 10);\n            hours = parseInt(exploded[0], 10);\n        } else if (str.length >= 3) {\n            mins = parseInt(str.substring(str.length - 2, str.length), 10);\n            hours = parseInt(str.substring(0, str.length - 2), 10);\n        } else if (str === '') {\n            return '';\n        } else {\n            hours = parseInt(str, 10);\n            mins = 0;\n        }\n\n        if (isNaN(hours)) hours = 0;\n        if (isNaN(mins)) mins = 0;\n\n        if (hours < 0) hours *= -1;\n        if (hours > 23) hours = 23;\n        if (mins < 0) mins = 0;\n        if (mins > 60) mins = 59;\n\n        if (hours < 10) hours = '0' + hours;\n        if (mins < 10) mins = '0' + mins;\n\n        return '' + hours + ':' + mins;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class={{this.class}}>\\n    <TagInput\\n        @tags={{this.parsedTags}}\\n        @addTag={{this.addTag}}\\n        @removeTagAtIndex={{this.removeTagAtIndex}}\\n        @maxlength={{15}}\\n        @onKeyUp={{fn this.addTagIfImeiIsCorrect}}\\n        as |tag|>\\n        <span class=\\\"tag-input-imei {{if (not (is-equal (string-length tag) 15)) \\\"error\\\"}}\\\">\\n            {{tag}}\\n        </span>\\n    </TagInput>\\n</div>\\n\", {\"contents\":\"<div class={{this.class}}>\\n    <TagInput\\n        @tags={{this.parsedTags}}\\n        @addTag={{this.addTag}}\\n        @removeTagAtIndex={{this.removeTagAtIndex}}\\n        @maxlength={{15}}\\n        @onKeyUp={{fn this.addTagIfImeiIsCorrect}}\\n        as |tag|>\\n        <span class=\\\"tag-input-imei {{if (not (is-equal (string-length tag) 15)) \\\"error\\\"}}\\\">\\n            {{tag}}\\n        </span>\\n    </TagInput>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/fields/timeclean-imei.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/timeclean-imei.hbs\"}});\nimport FieldsTagInputComponent from './tag-input';\nimport { action } from '@ember/object';\nimport { A } from '@ember/array';\nimport MutableArray from '@ember/array/mutable';\n\nexport default class FieldsTimecleanImeiComponent extends FieldsTagInputComponent {\n    protected class: string = 'ember-movenium-timeclean-imei-field';\n\n    @action public onChange(tags: MutableArray<string>) {\n        return this.args.onChange(JSON.stringify(tags));\n    }\n\n    get parsedTags() {\n        let tags: MutableArray<string> = A([]);\n        if (typeof this.args.value === 'string') tags = A(JSON.parse(this.args.value));\n        else if (this.args.value) tags = A(this.args.value);\n        this.tags = tags;\n        return tags;\n    }\n\n    @action protected addTagIfImeiIsCorrect(tag: string) {\n        const tagAsNumber = parseInt(tag, 10);\n        if (!isNaN(tagAsNumber) && isFinite(tagAsNumber) && tag.length === 15) {\n            this.addTagToList(tag);\n            (document.querySelector('.' + this.class + ' input') as HTMLInputElement).value = '';\n        }\n    }\n\n    protected addTagToList(tag: string) {\n        this.tags.pushObject(tag);\n        this.onChange(this.tags as MutableArray<string>);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Input\\n    @type=\\\"text\\\"\\n    @name={{@name}}\\n    @value={{@value}}\\n    @class={{@class}}\\n    @disabled={{@disabled}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\", {\"contents\":\"<Input\\n    @type=\\\"text\\\"\\n    @name={{@name}}\\n    @value={{@value}}\\n    @class={{@class}}\\n    @disabled={{@disabled}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\",\"moduleName\":\"tt4/components/addon/fields/username.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/username.hbs\"}});\nimport Component from '@glimmer/component';\nexport default class FieldsUsernameComponent extends Component {}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div>\\n\\n    <div>\\n        {{#if this.gpsWeather}}\\n            {{#if this.weatherLoading}}\\n                <img src=\\\"img/ajax-loader.gif\\\" alt={{t \\\"general.loading\\\"}} /> {{t \\\"worksitediary.fetching_weather\\\"}}\\n            {{else}}\\n                <span class=\\\"move move-{{@value.weather}} weather-icon\\\"></span>\\n                    {{@value.temperature}}{{this.translations.temp}}, {{@value.windspeed}}{{this.translations.wspeed}}, {{@value.humidity}}{{this.translations.percent}}, {{t \\\"worksitediary.abbr_dew_point\\\"}}: {{@value.dew_point}}{{this.translations.temp}}\\n            {{/if}}\\n        {{/if}}\\n    </div>\\n    <div>\\n        <span class=\\\"weather-brand\\\">&#8212;{{t \\\"general.weather_provider\\\"}}</span>\\n    </div>\\n\\n    <br /><br />\\n</div>\", {\"contents\":\"<div>\\n\\n    <div>\\n        {{#if this.gpsWeather}}\\n            {{#if this.weatherLoading}}\\n                <img src=\\\"img/ajax-loader.gif\\\" alt={{t \\\"general.loading\\\"}} /> {{t \\\"worksitediary.fetching_weather\\\"}}\\n            {{else}}\\n                <span class=\\\"move move-{{@value.weather}} weather-icon\\\"></span>\\n                    {{@value.temperature}}{{this.translations.temp}}, {{@value.windspeed}}{{this.translations.wspeed}}, {{@value.humidity}}{{this.translations.percent}}, {{t \\\"worksitediary.abbr_dew_point\\\"}}: {{@value.dew_point}}{{this.translations.temp}}\\n            {{/if}}\\n        {{/if}}\\n    </div>\\n    <div>\\n        <span class=\\\"weather-brand\\\">&#8212;{{t \\\"general.weather_provider\\\"}}</span>\\n    </div>\\n\\n    <br /><br />\\n</div>\",\"moduleName\":\"tt4/components/addon/fields/weather.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/weather.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { fetchWeather } from 'tt4/ember-movenium/utils/weather';\nimport GpsService from 'tt4/services/gps2';\n\ninterface IWeather {\n    gps: GpsService;\n    weatherLoading: boolean;\n    gpsWeather: boolean;\n    value: { [key: string]: string };\n    onChange(args0: JSON): void;\n    shouldAutomaticallyFetchNewWeather?: boolean;\n}\n\nexport default class FieldsWeatherComponent extends Component<IWeather> {\n    @tracked public weatherLoading: boolean = false;\n\n    protected translations = { temp: '°C', wspeed: 'm/s', percent: '%' };\n    @service('gps2' as any) declare gps: GpsService;\n\n    constructor(owner: unknown, args: IWeather) {\n        super(owner, args);\n        this.gps.start();\n    }\n\n    get gpsWeather(): Promise<any> | { [key: string]: string } | null {\n        if (this.args.shouldAutomaticallyFetchNewWeather === false) {\n            return this.args.value;\n            // return new Promise(resolve=>resolve(this.args.value))\n        }\n\n        if (this.gps.lockedPosition) {\n            this.weatherLoading = true;\n            const position = this.gps.lockedPosition;\n\n            return new Promise(async (resolve) => {\n                const weather = await fetchWeather(position.latitude, position.longitude);\n                this.weatherLoading = false;\n                this.args.onChange(weather);\n                resolve(weather);\n            });\n        } else {\n            return this.args.value;\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Collector::Fields::WorkPermitAttachment\\n    @model={{@record}}\\n    @field={{@field}}\\n    @bubbleChange={{@onChange}}\\n/>\\n\", {\"contents\":\"<Collector::Fields::WorkPermitAttachment\\n    @model={{@record}}\\n    @field={{@field}}\\n    @bubbleChange={{@onChange}}\\n/>\\n\",\"moduleName\":\"tt4/components/addon/fields/work-permit-attachment.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/work-permit-attachment.hbs\"}});\nimport Component from '@glimmer/component';\n\nexport default class CollectorFieldsWorkPermitAttachmentComponent extends Component {\n\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<DumpDev @text=\\\"addon form-add migrated to tt4\\\" />\\n{{#if this.savedView}}\\n    {{#if (has-block)}}\\n        {{yield\\n            (hash\\n                Saved=(component\\n                    \\\"addon/form-add/saved\\\"\\n                    record=(readonly @record)\\n                    fields=this.fields\\n                    close=(fn this.close)\\n                    edit=(fn (mut this.savedView) false)\\n                    addSame=@addSame\\n                    addNew=@addNew\\n                    closeSaved=(fn (mut this.savedView) false)\\n                )\\n            )\\n        }}\\n    {{else}}\\n        <Addon::FormAdd::Saved\\n            @record={{@record}}\\n            @fields={{this.fields}}\\n            @close={{this.close}}\\n            @edit={{fn (mut this.savedView) false}}\\n            @addSame={{@addSame}}\\n            @addNew={{@addNew}}\\n            @closeSaved={{fn (mut this.savedView) false}}\\n        />\\n    {{/if}}\\n{{else if readyToRenderFields}}\\n    {{#if (has-block)}}\\n        {{yield\\n            (hash\\n                Fields=(component\\n                    \\\"addon/form-add/fields\\\"\\n                    fields=this.visibleFields\\n                    stashedFields=this.stashedFields\\n                    record=(readonly (await @record))\\n                    filters=this.allFilters\\n                    onChange=this.onChange\\n                    disabled=@disabled\\n                    setDisabled=this.setDisabled\\n                )\\n                OnChange=this.onChange\\n            )\\n        }}\\n    {{else}}\\n\\n        <Addon::FormAdd::Fields\\n            @fields={{this.visibleFields}}\\n            @stashedFields={{this.stashedFields}}\\n            @record={{readonly (await @record)}}\\n            @onChange={{fn this.onChange}}\\n            @filters={{this.allFilters}}\\n            @disabled={{@disabled}}\\n            @setDisabled={{this.setDisabled}}\\n            @placeholder={{@placeholder}}\\n        />\\n    {{/if}}\\n\\n    {{#if this.error}}\\n        <Addon::FormAdd::Error @error={{this.error}} />\\n    {{/if}}\\n\\n    {{#if (has-block)}}\\n        {{yield\\n            (hash\\n                Buttons=(component\\n                    \\\"addon/form-add/buttons\\\"\\n                    save=this.save\\n                    cancel=this.close\\n                    saving=this.saving\\n                    disabled=(or @disabled this.saveDisabled)\\n                    form=@form\\n                )\\n            )\\n        }}\\n    {{else}}\\n        <Addon::FormAdd::Buttons\\n            @saving={{this.saving}}\\n            @form={{@form}}\\n            @disabled={{or @disabled this.saveDisabled}}\\n            @save={{this.save}}\\n            @cancel={{this.close}}\\n        />\\n    {{/if}}\\n{{else}}\\n\\n    <LoaderIcon />\\n{{/if}}\", {\"contents\":\"<DumpDev @text=\\\"addon form-add migrated to tt4\\\" />\\n{{#if this.savedView}}\\n    {{#if (has-block)}}\\n        {{yield\\n            (hash\\n                Saved=(component\\n                    \\\"addon/form-add/saved\\\"\\n                    record=(readonly @record)\\n                    fields=this.fields\\n                    close=(fn this.close)\\n                    edit=(fn (mut this.savedView) false)\\n                    addSame=@addSame\\n                    addNew=@addNew\\n                    closeSaved=(fn (mut this.savedView) false)\\n                )\\n            )\\n        }}\\n    {{else}}\\n        <Addon::FormAdd::Saved\\n            @record={{@record}}\\n            @fields={{this.fields}}\\n            @close={{this.close}}\\n            @edit={{fn (mut this.savedView) false}}\\n            @addSame={{@addSame}}\\n            @addNew={{@addNew}}\\n            @closeSaved={{fn (mut this.savedView) false}}\\n        />\\n    {{/if}}\\n{{else if readyToRenderFields}}\\n    {{#if (has-block)}}\\n        {{yield\\n            (hash\\n                Fields=(component\\n                    \\\"addon/form-add/fields\\\"\\n                    fields=this.visibleFields\\n                    stashedFields=this.stashedFields\\n                    record=(readonly (await @record))\\n                    filters=this.allFilters\\n                    onChange=this.onChange\\n                    disabled=@disabled\\n                    setDisabled=this.setDisabled\\n                )\\n                OnChange=this.onChange\\n            )\\n        }}\\n    {{else}}\\n\\n        <Addon::FormAdd::Fields\\n            @fields={{this.visibleFields}}\\n            @stashedFields={{this.stashedFields}}\\n            @record={{readonly (await @record)}}\\n            @onChange={{fn this.onChange}}\\n            @filters={{this.allFilters}}\\n            @disabled={{@disabled}}\\n            @setDisabled={{this.setDisabled}}\\n            @placeholder={{@placeholder}}\\n        />\\n    {{/if}}\\n\\n    {{#if this.error}}\\n        <Addon::FormAdd::Error @error={{this.error}} />\\n    {{/if}}\\n\\n    {{#if (has-block)}}\\n        {{yield\\n            (hash\\n                Buttons=(component\\n                    \\\"addon/form-add/buttons\\\"\\n                    save=this.save\\n                    cancel=this.close\\n                    saving=this.saving\\n                    disabled=(or @disabled this.saveDisabled)\\n                    form=@form\\n                )\\n            )\\n        }}\\n    {{else}}\\n        <Addon::FormAdd::Buttons\\n            @saving={{this.saving}}\\n            @form={{@form}}\\n            @disabled={{or @disabled this.saveDisabled}}\\n            @save={{this.save}}\\n            @cancel={{this.close}}\\n        />\\n    {{/if}}\\n{{else}}\\n\\n    <LoaderIcon />\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/form-add.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-add.hbs\"}});\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action, set, computed } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { isArray } from '@ember/array';\nimport DS from 'ember-data';\nimport FormsService from 'tt4/injections/services/forms';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport { IFormField, IField, IOptions } from 'tt4/ember-movenium/interfaces/forms';\nimport { save_record } from 'tt4/ember-movenium/utils/save-the-children';\nimport { isVisible } from 'tt4/ember-movenium/utils/validations';\nimport { notifyPropertyChange } from '@ember/object';\nimport moment from 'moment';\nimport NeedsService from 'tt4/injections/services/need';\nimport EventedService from 'tt4/injections/services/need';\nimport 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 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\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        } 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\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\n    setDatesForFastExporter(date) {\n        if (date === 'clear') {\n            return (this.datesForFastExporter = { from: null, to: null });\n        }\n\n        if (\n            !this.datesForFastExporter.from ||\n            moment(date).isBefore(this.datesForFastExporter.from)\n        ) {\n            this.datesForFastExporter['from'] = date;\n        }\n\n        if (!this.datesForFastExporter.to || moment(date).isAfter(this.datesForFastExporter.to)) {\n            this.datesForFastExporter['to'] = date;\n        }\n    }\n\n    async createPdf(selected, params, mode = 'download', includeAllPages = false) {\n        const columnsOnReport = this.columns.map((col) => col.external_type).join(',');\n        let showColumns = params.template\n            ? get(params, 'template.columns')\n            : columnsOnReport\n            ? columnsOnReport\n            : null;\n        let settings = { form: this.form, show_columns: showColumns };\n        let data = selected.length && !includeAllPages ? this.data : this.getExportData();\n        let element = await this.fileExports.createPdfElement(\n            data,\n            selected,\n            settings,\n            this.columns,\n            params,\n            includeAllPages,\n        );\n        let elements = [element];\n        let filters_body = this.addFiltersToPdf();\n        if (filters_body.length > 0) {\n            elements.unshift({\n                table: { body: filters_body },\n                layout: 'noBorders',\n            });\n        }\n        let file = await createPdfFromElements(this, elements, mode, '', 8, params);\n\n        if (window.cordova) {\n            this.cordova.openFile(file, 'application/pdf');\n        }\n        return file;\n    }\n\n    addFiltersToPdf() {\n        let filterKeys = Object.keys(this.filterByValues);\n        if (!filterKeys) return [];\n        let pdf_filters_body = filterKeys.map((key) => {\n            let filterValues = this.filterByValues[key];\n            if (!filterValues || !this.forms.fieldExists(this.form, key)) return;\n            let field = this.forms.field(this.form, key);\n\n            let filterNameInPdf = this.setFilterNameInPdf(key);\n            let filterValueInPdf = '';\n\n            if (filterValues.includes(',')) {\n                filterValues.split(',').forEach((value) => {\n                    filterValueInPdf +=\n                        this.Collector._format_(\n                            field.type === 'database' ? parseInt(value) : value,\n                            this.form,\n                            key,\n                            'pdf',\n                            this.data,\n                        ) + ', ';\n                });\n                filterValueInPdf = filterValueInPdf.slice(0, -2);\n            } else {\n                filterValues = field.type === 'database' ? parseInt(filterValues) : filterValues;\n                if (key.includes(':')) {\n                    filterValueInPdf += this.Collector._format_(\n                        filterValues,\n                        this.form,\n                        key.split(':')[0],\n                        'pdf',\n                        this.data,\n                    );\n                } else {\n                    filterValueInPdf += this.Collector._format_(\n                        filterValues,\n                        this.form,\n                        key,\n                        'pdf',\n                        this.data,\n                    );\n                }\n            }\n            return [filterNameInPdf + ': ' + filterValueInPdf];\n        });\n\n        return pdf_filters_body.filter((item) => item);\n    }\n\n    setFilterNameInPdf(key) {\n        let field = this.forms.fieldArray(this.form).findBy('name', key);\n\n        if (this.intl.exists(this.form + '.' + key)) {\n            return this.intl.t(this.form + '.' + key);\n        } else if (field && field.translated_name) {\n            return field.translated_name;\n        } else if (key.includes(':')) {\n            return (\n                this.intl.t(this.form + '.' + key.split(':')[0]) +\n                ' - ' +\n                this.intl.t(this.form + '.' + key.split(':')[1])\n            );\n        } else {\n            return key;\n        }\n    }\n\n    async getPdfAttachmentForEmail(params, data) {\n        switch (params.type) {\n            case 'export_pdf':\n                return await this.createPdf(\n                    this.selectedExportRows,\n                    params,\n                    'base64',\n                    this.allPagesSelected,\n                );\n            case 'export_pdf_full':\n                if (isEmpty(this.queryParams['groupBy'])) delete this.queryParams['groupBy'];\n                return await this.fileExports.createPdfFull(\n                    this.form,\n                    data,\n                    this.queryParams,\n                    this.args.showColumns,\n                    params,\n                    'base64',\n                );\n            case 'export_excel':\n                return await this.exportExcel(params, true, this.allPagesSelected);\n        }\n    }\n\n    setJsonapiParams(params) {\n        if (!params) return {};\n        let filters = {};\n        Object.entries(params).forEach((param) => {\n            if (!param[1]) return; //if value is empty, continue\n            let field = this.forms.field(this.form, param[0]);\n            if (field.type === 'database') {\n                filters['filter[relationships.' + param[0] + '.data.id]'] = param[1];\n            } else {\n                filters['filter[attributes.' + param[0] + ']'] = param[1];\n            }\n        });\n        return filters;\n    }\n\n    setVisibleColumns() {\n        const visibleList = this.localstorage.getItem(this.form + '_defaultColumns');\n        let columns = [...this.allColumns];\n        if (visibleList) {\n            columns = visibleList.reduce((acc, column) => {\n                let columnObject = this.allColumns.find(\n                    (object) => object.external_type === column,\n                );\n                if (columnObject) acc.push(columnObject);\n                return acc;\n            }, []);\n        }\n        set(this, 'columns', columns);\n    }\n\n    setDefaultLimit() {\n        let key = this.localStorageKey ? this.localStorageKey + '_defaultLimit' : this.form + '';\n        if (key) set(this, 'defaultLimitKey', key);\n        let limitfromLS = this.localStorageWrapper.getUserSetting(key);\n        set(this, 'rowsPerPage', limitfromLS.length != 0 ? limitfromLS : this.rowsPerPage);\n    }\n\n    setDefaultOrder() {\n        this.defaultSortKey = this.localStorageKey\n            ? this.localStorageKey + '_defaultSort'\n            : this.form + '_defaultSort';\n        let sortfromLS = this.localStorageWrapper.getUserSetting(this.defaultSortKey);\n\n        if (!sortfromLS.length && this.defaultSort) {\n            set(this, 'sorts', this.createSortArray(this.defaultSort));\n        }\n\n        if (sortfromLS.length) this.sorts = this.filterUnknownColumns(sortfromLS);\n\n        // TODO: Sort by first column on default\n    }\n\n    // this is needed ie in case some column is removed form report because some setting is turned off\n    filterUnknownColumns(sorts) {\n        const allowAlso = ['row_info.created', 'row_info.modified'];\n        const formFields = this.Collector.fieldArray(this.form).map((a) => a.name);\n        const allowThese = formFields.concat(allowAlso);\n        const filteredSorts = sorts.filter((sort) => allowThese.includes(sort.valuePath));\n\n        return filteredSorts;\n    }\n\n    mergeFilters(filters, merge) {\n        if (!merge) return;\n        for (const key in merge) {\n            const value = this.getIdifRecord(merge[key]);\n            if (value) filters[key] = value;\n        }\n    }\n\n    getIdifRecord(value) {\n        return value && typeof value === 'object' ? get(value, 'id') : value;\n    }\n\n    removeRow(row) {\n        get(this, 'dialogs')\n            .confirm(get(this, 'intl').t('report.confirm_delete'))\n            .then(this.removeOrNot.bind(this, row));\n    }\n\n    async restoreRow(row) {\n        const form_plural = pluralize(this.form).camelize();\n        let body = {};\n        body[this.form.camelize()] = { 'row_info.status': 'normal' };\n        await this.apiservice.request(\n            'capi',\n            '/' + form_plural + '/' + row.id + '?validation=off',\n            'PUT',\n            body,\n        );\n        // Clear the stale record so updateReport() fetches a fresh copy.\n        // Must unload even when isDeleted (root.deleted.saved): without this,\n        // updateReport() pushes fresh server data into the deleted record,\n        // which triggers becomeDirty on a state that has no handler for it.\n        if (!row.isDestroyed) {\n            row.unloadRecord();\n        }\n        this.updateReport();\n        this.evented.storeEvent('restore', this.form, null);\n    }\n\n    async copyRow(row) {\n        let newRecord = this.Collector.copyRecord(row);\n        set(newRecord, 'row_info', { privilege_edit: true, privilege_remove: true }); //fake some privileges to enable editing and removing of new row\n        let data = await get(this, 'data').toArray(); //toArray, because the result of a server query is immutable\n        data.unshiftObject(newRecord);\n        this.cachedRowCount++;\n        set(this, 'data', data);\n    }\n\n    async removeOrNot(row, answer) {\n        if (!answer) return;\n        await row.destroyRecord();\n        this.updateReport();\n        this.evented.storeEvent('delete', this.form, null);\n    }\n\n    async lockOrUnlock(row, action) {\n        let form_plural = pluralize(this.form).camelize();\n        let data = {};\n        data[this.form] = action === 'lock' ? { locked: true } : { locked: false };\n        try {\n            await this.apiservice.request(\n                'capi',\n                '/' + form_plural + '/' + row.id + '?validation=off',\n                'PUT',\n                data,\n            );\n            row.reload();\n        } catch (error) {\n            this.error.notify(error);\n            row.rollbackAttributes();\n        }\n    }\n\n    updateReport() {\n        set(this, 'selectedRows', []);\n        set(this, 'data', this.store.query(this.form, this.queryParams));\n    }\n\n    createSortString(sorts) {\n        return sorts\n            .map(\n                (item) =>\n                    (item.valuePath.includes('row_info.')\n                        ? this.getRowInfoSortString(item.valuePath)\n                        : item.valuePath) + (item.isAscending ? '-' : ''),\n            )\n            .join(',');\n    }\n\n    /**\n     * capi-3 takes orders in format ie. ?sort=-attributes.name,attributes.date\n     * @param {*} sorts\n     * @returns\n     */\n    createSortStringForJsonapi(sorts) {\n        return sorts\n            .map((item) => (item.isAscending ? '-' : '') + 'attributes.' + item.valuePath)\n            .join(',');\n    }\n\n    getRowInfoSortString(item) {\n        if (item == 'row_info.created') return 'id';\n        if (item == 'row_info.modified') return 'row_info_modified';\n        return item;\n    }\n\n    createSortArray(sorts) {\n        if (!sorts) return;\n        return sorts.split(',').map((item) => {\n            return item.slice(-1) == '-'\n                ? { valuePath: item.slice(0, -1), isAscending: true }\n                : { valuePath: item, isAscending: false };\n        });\n    }\n\n    createErrorInfoNotifications(errors) {\n        const errorArray = [];\n        errors.forEach((errorObj) => {\n            errorObj.errors.forEach((error) => {\n                errorArray.pushObject({\n                    index: errorObj.index,\n                    field: error.field,\n                    message: error.message,\n                });\n            });\n        });\n        // show maximum of three errors\n        errorArray.slice(0, 3).forEach((error) => {\n            const field = this.forms.fieldArray(this.form).findBy('name', error.field);\n            const message = this.intl.t('validation.errorinfo.error_on_row', {\n                index: error.index,\n                field: field.translated_name,\n                message: error.message,\n            });\n            this.notifications.error(message, {\n                autoClear: true,\n            });\n        });\n        // and how many errors were not shown\n        if (errorArray.length > 3) {\n            this.notifications.error(\n                this.intl.t('validation.errorinfo.and_more', { count: errorArray.length - 3 }),\n                {\n                    autoClear: true,\n                },\n            );\n        }\n    }\n\n    async saveDirtyRecords() {\n        const data = await get(this, 'data');\n\n        let savePromises = A([]);\n        let errors = A([]);\n        set(this, 'errors', errors);\n\n        //push all rows that have dirty attributes into a promise array\n        savePromises = data.map(async (record, index) => {\n            if (get(record, 'hasDirtyAttributes')) {\n                await record.validate(); //validate record. Do not send save request if it is invalid (in save function)\n                return this.saveRecordAndCatchErrors(record, errors, index);\n            }\n        });\n\n        //if promise array is empty display notification and return straight outta here, we don't need to do anyhting\n        if (isEmpty(savePromises)) {\n            this.notifications.warning(this.intl.t('general.no_saved_rows'), {\n                autoClear: true,\n            });\n            return;\n        }\n\n        await Promise.all(savePromises);\n\n        if (isEmpty(errors)) {\n            this.notifications.success(this.intl.t('general.saved'), {\n                autoClear: true,\n            });\n        } else {\n            set(this, 'errors', errors);\n            this.notifications.error(this.intl.t('general.no_saved_rows'), {\n                autoClear: true,\n            });\n            this.createErrorInfoNotifications(errors);\n        }\n    }\n\n    getExportData() {\n        let params = get(this, 'queryParams');\n        params.limit = 'all';\n        return this.store.query(this.form, params);\n    }\n\n    async saveRecordAndCatchErrors(record, errors, index) {\n        //do not send save request is record is invalid\n        try {\n            if (get(record, 'isValid')) {\n                //save via save-the-children util\n                return await save_record(record, this);\n            } else {\n                const errorArray = get(record, 'errors').map((error) => {\n                    return { field: get(error, 'attribute'), message: get(error, 'message') };\n                });\n                errors.pushObject({\n                    index: index + 1,\n                    message: get(record, 'errors.messages.firstObject'),\n                    errors: errorArray,\n                });\n            }\n        } catch (saveError) {\n            const err = this.error.toError(saveError);\n            err['index'] = index + 1; //arrays start at 0 (╯°□°)╯︵ ┻━┻\n            errors.pushObject(err);\n            return err;\n        }\n    }\n\n    onStoreEvent(params) {\n        if (\n            params.action === 'update' ||\n            (params.action === 'insert' && params.type === this.form)\n        ) {\n            this.updateReport();\n        }\n        if (params.action === 'toggleRemoved' && params.type === this.form) {\n            this.showOrHideRemoved();\n        }\n        if (params.action === 'remove' && params.type === this.form && params.record)\n            this.removeRow(params.record);\n        if (params.action === 'restore' && params.type === this.form && params.record)\n            this.restoreRow(params.record);\n    }\n\n    /*\n     * If trying to filter with some subfields and also by its parent field then change parent field to be array also\n     * ie. If trying to filter by user[worktimegrop] = 1234 and user = 4321 change user param to be user[id] = 4321\n     */\n    setParentFieldParamsAsArray(params) {\n        Object.keys(params).forEach((key) => {\n            if (key.includes('[')) {\n                const parentField = key.split('[')[0];\n                if (parentField in params) {\n                    params[parentField + '[id]'] = params[parentField];\n                    delete params[parentField];\n                }\n            }\n        });\n    }\n    async setMapMarkers(selected) {\n        let rows = selected.length > 0 ? selected : this.data.toArray();\n\n        if (!rows) return;\n\n        let d = defer();\n        let locs = [];\n        let i = 0;\n        let totalLength = rows.length;\n        await Promise.all(\n            rows.map(async (row) => {\n                if (!row.location && !row.end_location && !row.location_map) {\n                    totalLength--;\n                    return;\n                }\n\n                let locationMapInfo = await this.getLocationMapInfo(row);\n                let loc = {};\n\n                if (locationMapInfo) {\n                    if (\n                        typeOf(locationMapInfo) === 'object' ||\n                        typeOf(locationMapInfo) === 'instance'\n                    ) {\n                        loc.project = JSON.parse(locationMapInfo.location_map);\n                        if (loc.project) loc.project.label = get(locationMapInfo, 'name');\n                    } else {\n                        loc.project = JSON.parse(locationMapInfo);\n                        loc.project.label = row.name ? row.name : null;\n                    }\n                }\n                if (row.location) loc.wStartLoc = JSON.parse(row.location);\n                if (row.end_location) loc.wEndLoc = JSON.parse(row.end_location);\n                loc.wLabel = row.user\n                    ? get(row.user, 'lastname') + ' ' + get(row.user, 'firstname')\n                    : null;\n\n                locs.push(loc);\n\n                if (++i === totalLength) {\n                    if (row.end_location || row.location) {\n                        set(this, 'startEndMarkers', locs);\n                    } else {\n                        set(this, 'locationMarkers', locs);\n                    }\n\n                    d.resolve();\n                }\n            }),\n        );\n        set(this, 'showLocationMap', true);\n        return d;\n    }\n\n    addHistoryForSentRows(email, form, rowids) {\n        const text = this.intl.t('general.history_approval_link_sent', { email: email });\n        return rowids.forEach((rowid) => {\n            return this.Collector.ajax({\n                method: 'put',\n                url: form + 's/' + rowid,\n                data: JSON.stringify({ _history: text }),\n            });\n        });\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"\\n<div class=\\\"ember-movenium-form-report-action-bar\\\">\\n    {{#if @inlineEdit}}\\n        {{#if this.showCopy}}<span role=\\\"button\\\" name=\\\"copy-button\\\" data-anchor=\\\"action-bar-copy-button\\\" {{on 'click' (fn this.clicked \\\"copy\\\")}} class=\\\"copy-button\\\">{{svg-jar \\\"CopyRow\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n        {{#if this.showLock}}<span role=\\\"button\\\" name=\\\"lock-button\\\" {{on 'click' (fn this.clicked \\\"unlock\\\")}} class=\\\"lock-button\\\" title={{t \\\"report.unlock_selected_rows\\\"}}>{{svg-jar \\\"Lock\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n    {{else}}\\n        {{#if this.showLock}}\\n            {{#if this.showOverview}}<span role=\\\"button\\\" name=\\\"overview-button\\\" data-anchor=\\\"action-bar-overview-button\\\" {{on 'click' (fn this.clicked \\\"overview\\\")}} class=\\\"overview-button\\\" title={{t \\\"history.action.show_data\\\"}}>{{svg-jar \\\"View\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showHistory}}<span role=\\\"button\\\" name=\\\"history-button\\\" data-anchor=\\\"action-bar-history-button\\\" {{on 'click' (fn this.clicked \\\"history\\\")}} class=\\\"history-button\\\" title={{t \\\"report.customer.history\\\"}}>{{svg-jar \\\"MoveSearch\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            <span role=\\\"button\\\" name=\\\"lock-button\\\" data-anchor=\\\"action-bar-lock-button\\\" {{on 'click' (fn this.clicked \\\"unlock\\\")}} class=\\\"lock-button\\\" title={{t \\\"report.unlock_selected_rows\\\"}}>{{svg-jar \\\"Lock\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>\\n        {{else if this.rowIsRemoved}}\\n            {{#if this.showOverview}}<span role=\\\"button\\\" name=\\\"overview-button\\\" data-anchor=\\\"action-bar-overview-button\\\" {{on 'click' (fn this.clicked \\\"overview\\\")}} class=\\\"overview-button\\\" title={{t \\\"history.action.show_data\\\"}}>{{svg-jar \\\"View\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showRemove}}<span role=\\\"button\\\" name=\\\"restore-button\\\" data-anchor=\\\"action-bar-restore-button\\\" {{on 'click' (fn this.clicked \\\"restore\\\")}} class=\\\"restore-button\\\" title={{t \\\"report.restore_rows\\\"}}>{{svg-jar \\\"ReuseFilled\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showHistory}}<span role=\\\"button\\\" name=\\\"history-button\\\" data-anchor=\\\"action-bar-history-button\\\" {{on 'click' (fn this.clicked \\\"history\\\")}} class=\\\"history-button\\\" title={{t \\\"report.customer.history\\\"}}>{{svg-jar \\\"MoveSearch\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n        {{else}}\\n            {{#if this.showOverview}}<span role=\\\"button\\\" name=\\\"overview-button\\\" data-anchor=\\\"action-bar-overview-button\\\" {{on 'click' (fn this.clicked \\\"overview\\\")}} class=\\\"overview-button\\\" title={{t \\\"history.action.show_data\\\"}}>{{svg-jar \\\"View\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showEdit}}<span role=\\\"button\\\" name=\\\"edit-button\\\" data-anchor=\\\"action-bar-edit-button\\\" {{on 'click' (fn this.clicked \\\"edit\\\")}} class=\\\"edit-button\\\" title={{t \\\"general.edit\\\"}}>{{svg-jar \\\"MovePencil\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showHistory}}<span role=\\\"button\\\" name=\\\"history-button\\\" data-anchor=\\\"action-bar-history-button\\\" {{on 'click' (fn this.clicked \\\"history\\\")}} class=\\\"history-button\\\" title={{t \\\"report.customer.history\\\"}}>{{svg-jar \\\"MoveSearch\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showRemove}}<span role=\\\"button\\\" name=\\\"remove-button\\\" data-anchor=\\\"action-bar-remove-button\\\" {{on 'click' (fn this.clicked \\\"remove\\\")}} class=\\\"remove-button\\\" title={{t \\\"report.delete_rows\\\"}}>{{svg-jar \\\"Delete\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n        {{/if}}\\n        {{#if this.showQueryWarning}}\\n            <span role=\\\"button\\\" class=\\\"warning-button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"21\\\" height=\\\"21\\\" viewBox=\\\"0 0 160 160\\\">\\n                <path id=\\\"Exclusion_1\\\" data-name=\\\"Exclusion 1\\\" d=\\\"M80,160a80.591,80.591,0,0,1-16.123-1.625,79.562,79.562,0,0,1-28.606-12.037,80.234,80.234,0,0,1-28.984-35.2A79.6,79.6,0,0,1,1.625,96.123a80.78,80.78,0,0,1,0-32.246A79.562,79.562,0,0,1,13.663,35.271,80.234,80.234,0,0,1,48.86,6.287,79.6,79.6,0,0,1,63.877,1.625a80.78,80.78,0,0,1,32.246,0,79.562,79.562,0,0,1,28.606,12.037,80.234,80.234,0,0,1,28.984,35.2,79.6,79.6,0,0,1,4.661,15.017,80.78,80.78,0,0,1,0,32.246,79.562,79.562,0,0,1-12.037,28.606,80.234,80.234,0,0,1-35.2,28.984,79.6,79.6,0,0,1-15.017,4.661A80.591,80.591,0,0,1,80,160ZM80,26l-3.385,5.8L30.191,112.2,26.928,118H133.072l-3.264-5.8L83.385,31.8Zm39.653,84.262H40.347L80,41.475l39.653,68.788h0ZM76.131,94.788v7.737h7.737V94.788Zm0-27.08V90.92h7.737V67.708Z\\\"/>\\n            </svg>\\n            <EmberPopover class=\\\"test-popover-example\\\" @popperContainer=\\\"body\\\" @side=\\\"left\\\" as |popover|>\\n                {{t \\\"report.trimmed_query_warning\\\"}}\\n            </EmberPopover>\\n        </span>           \\n        {{/if}}\\n    {{/if}}\\n\\n    {{yield @row}}\\n</div>\\n\", {\"contents\":\"\\n<div class=\\\"ember-movenium-form-report-action-bar\\\">\\n    {{#if @inlineEdit}}\\n        {{#if this.showCopy}}<span role=\\\"button\\\" name=\\\"copy-button\\\" data-anchor=\\\"action-bar-copy-button\\\" {{on 'click' (fn this.clicked \\\"copy\\\")}} class=\\\"copy-button\\\">{{svg-jar \\\"CopyRow\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n        {{#if this.showLock}}<span role=\\\"button\\\" name=\\\"lock-button\\\" {{on 'click' (fn this.clicked \\\"unlock\\\")}} class=\\\"lock-button\\\" title={{t \\\"report.unlock_selected_rows\\\"}}>{{svg-jar \\\"Lock\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n    {{else}}\\n        {{#if this.showLock}}\\n            {{#if this.showOverview}}<span role=\\\"button\\\" name=\\\"overview-button\\\" data-anchor=\\\"action-bar-overview-button\\\" {{on 'click' (fn this.clicked \\\"overview\\\")}} class=\\\"overview-button\\\" title={{t \\\"history.action.show_data\\\"}}>{{svg-jar \\\"View\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showHistory}}<span role=\\\"button\\\" name=\\\"history-button\\\" data-anchor=\\\"action-bar-history-button\\\" {{on 'click' (fn this.clicked \\\"history\\\")}} class=\\\"history-button\\\" title={{t \\\"report.customer.history\\\"}}>{{svg-jar \\\"MoveSearch\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            <span role=\\\"button\\\" name=\\\"lock-button\\\" data-anchor=\\\"action-bar-lock-button\\\" {{on 'click' (fn this.clicked \\\"unlock\\\")}} class=\\\"lock-button\\\" title={{t \\\"report.unlock_selected_rows\\\"}}>{{svg-jar \\\"Lock\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>\\n        {{else if this.rowIsRemoved}}\\n            {{#if this.showOverview}}<span role=\\\"button\\\" name=\\\"overview-button\\\" data-anchor=\\\"action-bar-overview-button\\\" {{on 'click' (fn this.clicked \\\"overview\\\")}} class=\\\"overview-button\\\" title={{t \\\"history.action.show_data\\\"}}>{{svg-jar \\\"View\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showRemove}}<span role=\\\"button\\\" name=\\\"restore-button\\\" data-anchor=\\\"action-bar-restore-button\\\" {{on 'click' (fn this.clicked \\\"restore\\\")}} class=\\\"restore-button\\\" title={{t \\\"report.restore_rows\\\"}}>{{svg-jar \\\"ReuseFilled\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showHistory}}<span role=\\\"button\\\" name=\\\"history-button\\\" data-anchor=\\\"action-bar-history-button\\\" {{on 'click' (fn this.clicked \\\"history\\\")}} class=\\\"history-button\\\" title={{t \\\"report.customer.history\\\"}}>{{svg-jar \\\"MoveSearch\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n        {{else}}\\n            {{#if this.showOverview}}<span role=\\\"button\\\" name=\\\"overview-button\\\" data-anchor=\\\"action-bar-overview-button\\\" {{on 'click' (fn this.clicked \\\"overview\\\")}} class=\\\"overview-button\\\" title={{t \\\"history.action.show_data\\\"}}>{{svg-jar \\\"View\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showEdit}}<span role=\\\"button\\\" name=\\\"edit-button\\\" data-anchor=\\\"action-bar-edit-button\\\" {{on 'click' (fn this.clicked \\\"edit\\\")}} class=\\\"edit-button\\\" title={{t \\\"general.edit\\\"}}>{{svg-jar \\\"MovePencil\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showHistory}}<span role=\\\"button\\\" name=\\\"history-button\\\" data-anchor=\\\"action-bar-history-button\\\" {{on 'click' (fn this.clicked \\\"history\\\")}} class=\\\"history-button\\\" title={{t \\\"report.customer.history\\\"}}>{{svg-jar \\\"MoveSearch\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showRemove}}<span role=\\\"button\\\" name=\\\"remove-button\\\" data-anchor=\\\"action-bar-remove-button\\\" {{on 'click' (fn this.clicked \\\"remove\\\")}} class=\\\"remove-button\\\" title={{t \\\"report.delete_rows\\\"}}>{{svg-jar \\\"Delete\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n        {{/if}}\\n        {{#if this.showQueryWarning}}\\n            <span role=\\\"button\\\" class=\\\"warning-button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"21\\\" height=\\\"21\\\" viewBox=\\\"0 0 160 160\\\">\\n                <path id=\\\"Exclusion_1\\\" data-name=\\\"Exclusion 1\\\" d=\\\"M80,160a80.591,80.591,0,0,1-16.123-1.625,79.562,79.562,0,0,1-28.606-12.037,80.234,80.234,0,0,1-28.984-35.2A79.6,79.6,0,0,1,1.625,96.123a80.78,80.78,0,0,1,0-32.246A79.562,79.562,0,0,1,13.663,35.271,80.234,80.234,0,0,1,48.86,6.287,79.6,79.6,0,0,1,63.877,1.625a80.78,80.78,0,0,1,32.246,0,79.562,79.562,0,0,1,28.606,12.037,80.234,80.234,0,0,1,28.984,35.2,79.6,79.6,0,0,1,4.661,15.017,80.78,80.78,0,0,1,0,32.246,79.562,79.562,0,0,1-12.037,28.606,80.234,80.234,0,0,1-35.2,28.984,79.6,79.6,0,0,1-15.017,4.661A80.591,80.591,0,0,1,80,160ZM80,26l-3.385,5.8L30.191,112.2,26.928,118H133.072l-3.264-5.8L83.385,31.8Zm39.653,84.262H40.347L80,41.475l39.653,68.788h0ZM76.131,94.788v7.737h7.737V94.788Zm0-27.08V90.92h7.737V67.708Z\\\"/>\\n            </svg>\\n            <EmberPopover class=\\\"test-popover-example\\\" @popperContainer=\\\"body\\\" @side=\\\"left\\\" as |popover|>\\n                {{t \\\"report.trimmed_query_warning\\\"}}\\n            </EmberPopover>\\n        </span>           \\n        {{/if}}\\n    {{/if}}\\n\\n    {{yield @row}}\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/form-report/action-bar.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/action-bar.hbs\"}});\nimport { action, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class FormReportActionBarComponent extends Component {\n    @service forms;\n    @service need;\n    @service flags;\n\n    @tracked showActions;\n\n    get showEdit() {\n        if (!this.need.test([this.args.form + '@edit'])) return false;\n        if (!this.args.showActions) return false;\n        if (this.args.hideEditStatus && this.args.hideEditStatus == this.args.row.status)\n            return false;\n        if (!this.args.row.isEditable) return false;\n        return this.args.showActions.split(',').includes('edit');\n    }\n\n    get showHistory() {\n        if (!this.args.showActions) return false;\n        return this.args.showActions.split(',').includes('history');\n    }\n\n    get showRemove() {\n        if (!this.need.test([this.args.form + '@remove'])) return false;\n        if (!this.args.showActions) return false;\n        if (!this.args.row.isEditable) return false;\n        if (!this.args.row.isRemovable) return false;\n        return this.args.showActions.split(',').includes('remove');\n    }\n\n    get showOverview() {\n        if (!this.args.showActions) return false;\n        return this.args.showActions.split(',').includes('overview');\n    }\n\n    get showCopy() {\n        if (!this.need.test(['!' + this.args.form + '@errors', this.args.form + '@add']))\n            return false;\n        return true;\n    }\n\n    get showLock() {\n        return get(this.args.row, 'row_info.status') === 'locked';\n    }\n\n    get rowIsRemoved() {\n        return get(this.args.row, 'row_info.status') === 'removed';\n    }\n\n    get showQueryWarning() {\n        return (\n            get(this.args.row, 'row_info.trimmed_query') &&\n            this.flags.test('form-report-trimmed-query')\n        );\n    }\n\n    @action\n    clicked(act) {\n        let overrideAction = act + 'OverrideAction';\n        if (this.args[overrideAction]) return this.args[overrideAction](this.args.row);\n\n        if (this.args.actionClicked) this.args.actionClicked(act, this.args.row);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-form-report-actions\\\">\\n    {{#if (has-block)}}\\n        <div class=\\\"left-container\\\">\\n        {{#if @selected}}\\n            <div class=\\\"btn-group report-actions push-left\\\">\\n                <strong>{{@selected.length}} {{t \\\"report.items_checked\\\"}} </strong>\\n            </div>\\n        {{/if}}\\n        {{#unless @sumReport}}\\n            {{#if (and @selected.length this.showApproveButton)}}\\n                {{yield (hash\\n                    Approve=(component \\\"addon/form-report/approve\\\"\\n                                changeStatus=(fn @changeStatus)\\n                                name=(concat @form '-approve')\\n                            )\\n                )}}\\n            {{/if}}\\n\\n            {{yield (hash\\n                More=(component \\\"addon/form-report/more\\\"\\n                        disabledClass=this.disabledClass\\n                        showRemoved=@showRemoved\\n                        statusTypes=@statusTypes\\n                        canChangeStatus=this.canChangeStatus\\n                        selected=@selected\\n                        form=@form\\n                        openMassedit=(fn @openMassedit)\\n                        changeStatus=(fn @changeStatus)\\n                        handleLock=(fn @handleLock)\\n                        handleRemove=(fn @handleRemove)\\n                        name=(concat @form '-more')\\n                    )\\n            )}}\\n        {{/unless}}\\n        {{yield (hash\\n            TemplateSelector=(component \\\"addon/form-report/report-template-selector\\\"\\n                activateTemplate=(fn @activateTemplate)\\n                deactivateTemplate=(fn @deactivateTemplate)\\n                openTemplateModal=(fn @openTemplateModal)\\n                editTemplate=(fn @editTemplate)\\n                removeTemplate=(fn @removeTemplate)\\n                formReportTemplates=@formReportTemplates\\n                currentFormTemplate=@currentFormTemplate\\n                mergeTemplates=@mergeTemplates\\n                name=(concat @form '-template-selector')\\n            )\\n        )}}\\n            {{#if this.metaTrimmedQuery}} \\n            <span role=\\\"button\\\" class=\\\"move move-Error warning-button\\\">\\n                <EmberPopover class=\\\"test-popover-example\\\" @popperContainer=\\\"body\\\" @side=\\\"right\\\" as |popover|>\\n                    {{t \\\"report.trimmed_query_warning\\\"}}\\n                </EmberPopover>\\n            </span>           \\n            {{/if}}\\n        </div>\\n        <div class=\\\"right-container\\\">\\n\\n        {{yield (hash\\n            InlineEdit=(component \\\"addon/form-report/inline-edit\\\"\\n                            inlineEdit=@inlineEdit\\n                            toggleInlineEdit=(fn @toggleInlineEdit)\\n                            saveRows=(fn @saveRows)\\n                            name=(concat @form '-inline-edit')\\n                        )\\n            PdfExport=(component \\\"addon/form-report/export-pdf\\\"\\n                            exportPdf=(fn this.exportPdf)\\n                            showLoader=@showLoader\\n                            name=(concat @form '-export-pdf')\\n                        )\\n        )}}\\n        {{#unless @currentFormTemplate}}\\n            {{yield (hash\\n                ColumnSelector=(component \\\"addon/form-report/column-selector\\\"\\n                                form=@form\\n                                columns=@columns\\n                                allColumns=@allColumns\\n                                rowsPerPage=@rowsPerPage\\n                                columnsChanged=@columnsChanged\\n                                setRowsPerPage=(fn @setRowsPerPage)\\n                                sumReport=@sumReport\\n                                name=(concat @form '-column-selector')\\n                                localStorageKey=@localStorageKey\\n                                oldTemplateFromLS=@oldTemplateFromLS\\n                                )\\n            )}}\\n        {{/unless}}\\n        {{yield (hash\\n            ExportMore=(component \\\"addon/form-report/export-more\\\"\\n                            exportCsv=(fn @exportCsv)\\n                            openExportModal=(fn @openExportModal)\\n                            showOrHideRemoved=(fn @showOrHideRemoved)\\n                            showRemoved=@showRemoved\\n                            showLoader=@showLoader\\n                            name=(concat @form '-export-more')\\n                        )\\n            Refresh=(component \\\"addon/form-report/refresh\\\"\\n                        refreshReport=(fn @refreshReport)\\n                        name=(concat @form '-refresh')\\n                    )\\n        )}}\\n        {{#if this.hasGpsOn}}\\n            {{yield (hash\\n                Gps=(component \\\"addon/form-report/gps-location-map\\\"\\n                        openGpsMap=(fn @openGpsMap)\\n                        name=(concat @form '-gps')\\n                    )\\n            )}}\\n        {{/if}}\\n        {{yield (hash\\n            Info=(component \\\"addon/form-report/info\\\"\\n                        name=(concat @form '-info')\\n                    )\\n        )}}\\n        </div>\\n\\n    {{else}}\\n        <div class=\\\"left-container\\\">\\n        {{#if @selected}}\\n            <div class=\\\"btn-group report-actions push-left\\\">\\n                <strong>{{@selected.length}} {{t \\\"report.items_checked\\\"}} </strong>\\n            </div>\\n        {{/if}}\\n        {{#unless @sumReport}}\\n            {{#if (and @selected.length this.canChangeStatus)}}\\n                <Addon::FormReport::Approve\\n                    @changeStatus={{fn @changeStatus}}\\n                    @name={{concat @form '-approve'}}\\n                />\\n            {{/if}}\\n\\n            <Addon::FormReport::More\\n                @disabledClass={{this.disabledClass}}\\n                @showRemoved={{@showRemoved}}\\n                @statusTypes={{@statusTypes}}\\n                @canChangeStatus={{this.canChangeStatus}}\\n                @form={{@form}}\\n                @selected={{@selected}}\\n                @openMassedit={{fn @openMassedit}}\\n                @changeStatus={{fn @changeStatus}}\\n                @handleLock={{fn @handleLock}}\\n                @handleRemove={{fn @handleRemove}}\\n                @name={{concat @form '-more'}}\\n            />\\n        {{/unless}}\\n        <Addon::FormReport::ReportTemplateSelector\\n            @activateTemplate={{fn @activateTemplate}}\\n            @deactivateTemplate={{fn @deactivateTemplate}}\\n            @openTemplateModal={{fn @openTemplateModal}}\\n            @editTemplate={{fn @editTemplate}}\\n            @removeTemplate={{fn @removeTemplate}}\\n            @formReportTemplates={{@formReportTemplates}}\\n            @currentFormTemplate={{@currentFormTemplate}}\\n            @mergeTemplates={{@mergeTemplates}}\\n            @name={{concat @form '-template-selector'}}\\n        />\\n        </div>\\n        <div class=\\\"right-container\\\">\\n        <Addon::FormReport::InlineEdit\\n            @inlineEdit={{@inlineEdit}}\\n            @toggleInlineEdit={{fn @toggleInlineEdit}}\\n            @saveRows={{fn @saveRows}}\\n            @name={{concat @form '-inline-edit'}}\\n        />\\n\\n        {{#unless @currentFormTemplate}}\\n            <Addon::FormReport::ColumnSelector\\n                @form={{@form}}\\n                @columns={{@columns}}\\n                @allColumns={{@allColumns}}\\n                @rowsPerPage={{@rowsPerPage}}\\n                @columnsChanged={{@columnsChanged}}\\n                @setRowsPerPage={{fn @setRowsPerPage}}\\n                @sumReport={{@sumReport}}\\n                @name={{concat @form '-column-selector'}}\\n                @localStorageKey={{@localStorageKey}}\\n                @oldTemplateFromLS={{@oldTemplateFromLS}}\\n            />\\n        {{/unless}}\\n        <Addon::FormReport::ExportPdf\\n            @exportPdf={{fn this.exportPdf}}\\n            @showLoader={{@showLoader}}\\n            @name={{concat @form '-export-pdf'}}\\n        />\\n\\n        <Addon::FormReport::ExportMore\\n            @showRemoved={{@showRemoved}}\\n            @showLoader={{@showLoader}}\\n            @exportCsv={{fn @exportCsv}}\\n            @openExportModal={{fn @openExportModal}}\\n            @showOrHideRemoved={{fn @showOrHideRemoved}}\\n            @name={{concat @form '-export-more'}}\\n        />\\n\\n        <Addon::FormReport::Refresh\\n            @refreshReport={{fn @refreshReport}}\\n            @name={{concat @form '-refresh'}}\\n        />\\n\\n        <Addon::FormReport::Info\\n            @name={{concat @form '-info'}}\\n        />\\n        </div>\\n    {{/if}}\\n</div>\\n\", {\"contents\":\"<div class=\\\"ember-movenium-form-report-actions\\\">\\n    {{#if (has-block)}}\\n        <div class=\\\"left-container\\\">\\n        {{#if @selected}}\\n            <div class=\\\"btn-group report-actions push-left\\\">\\n                <strong>{{@selected.length}} {{t \\\"report.items_checked\\\"}} </strong>\\n            </div>\\n        {{/if}}\\n        {{#unless @sumReport}}\\n            {{#if (and @selected.length this.showApproveButton)}}\\n                {{yield (hash\\n                    Approve=(component \\\"addon/form-report/approve\\\"\\n                                changeStatus=(fn @changeStatus)\\n                                name=(concat @form '-approve')\\n                            )\\n                )}}\\n            {{/if}}\\n\\n            {{yield (hash\\n                More=(component \\\"addon/form-report/more\\\"\\n                        disabledClass=this.disabledClass\\n                        showRemoved=@showRemoved\\n                        statusTypes=@statusTypes\\n                        canChangeStatus=this.canChangeStatus\\n                        selected=@selected\\n                        form=@form\\n                        openMassedit=(fn @openMassedit)\\n                        changeStatus=(fn @changeStatus)\\n                        handleLock=(fn @handleLock)\\n                        handleRemove=(fn @handleRemove)\\n                        name=(concat @form '-more')\\n                    )\\n            )}}\\n        {{/unless}}\\n        {{yield (hash\\n            TemplateSelector=(component \\\"addon/form-report/report-template-selector\\\"\\n                activateTemplate=(fn @activateTemplate)\\n                deactivateTemplate=(fn @deactivateTemplate)\\n                openTemplateModal=(fn @openTemplateModal)\\n                editTemplate=(fn @editTemplate)\\n                removeTemplate=(fn @removeTemplate)\\n                formReportTemplates=@formReportTemplates\\n                currentFormTemplate=@currentFormTemplate\\n                mergeTemplates=@mergeTemplates\\n                name=(concat @form '-template-selector')\\n            )\\n        )}}\\n            {{#if this.metaTrimmedQuery}} \\n            <span role=\\\"button\\\" class=\\\"move move-Error warning-button\\\">\\n                <EmberPopover class=\\\"test-popover-example\\\" @popperContainer=\\\"body\\\" @side=\\\"right\\\" as |popover|>\\n                    {{t \\\"report.trimmed_query_warning\\\"}}\\n                </EmberPopover>\\n            </span>           \\n            {{/if}}\\n        </div>\\n        <div class=\\\"right-container\\\">\\n\\n        {{yield (hash\\n            InlineEdit=(component \\\"addon/form-report/inline-edit\\\"\\n                            inlineEdit=@inlineEdit\\n                            toggleInlineEdit=(fn @toggleInlineEdit)\\n                            saveRows=(fn @saveRows)\\n                            name=(concat @form '-inline-edit')\\n                        )\\n            PdfExport=(component \\\"addon/form-report/export-pdf\\\"\\n                            exportPdf=(fn this.exportPdf)\\n                            showLoader=@showLoader\\n                            name=(concat @form '-export-pdf')\\n                        )\\n        )}}\\n        {{#unless @currentFormTemplate}}\\n            {{yield (hash\\n                ColumnSelector=(component \\\"addon/form-report/column-selector\\\"\\n                                form=@form\\n                                columns=@columns\\n                                allColumns=@allColumns\\n                                rowsPerPage=@rowsPerPage\\n                                columnsChanged=@columnsChanged\\n                                setRowsPerPage=(fn @setRowsPerPage)\\n                                sumReport=@sumReport\\n                                name=(concat @form '-column-selector')\\n                                localStorageKey=@localStorageKey\\n                                oldTemplateFromLS=@oldTemplateFromLS\\n                                )\\n            )}}\\n        {{/unless}}\\n        {{yield (hash\\n            ExportMore=(component \\\"addon/form-report/export-more\\\"\\n                            exportCsv=(fn @exportCsv)\\n                            openExportModal=(fn @openExportModal)\\n                            showOrHideRemoved=(fn @showOrHideRemoved)\\n                            showRemoved=@showRemoved\\n                            showLoader=@showLoader\\n                            name=(concat @form '-export-more')\\n                        )\\n            Refresh=(component \\\"addon/form-report/refresh\\\"\\n                        refreshReport=(fn @refreshReport)\\n                        name=(concat @form '-refresh')\\n                    )\\n        )}}\\n        {{#if this.hasGpsOn}}\\n            {{yield (hash\\n                Gps=(component \\\"addon/form-report/gps-location-map\\\"\\n                        openGpsMap=(fn @openGpsMap)\\n                        name=(concat @form '-gps')\\n                    )\\n            )}}\\n        {{/if}}\\n        {{yield (hash\\n            Info=(component \\\"addon/form-report/info\\\"\\n                        name=(concat @form '-info')\\n                    )\\n        )}}\\n        </div>\\n\\n    {{else}}\\n        <div class=\\\"left-container\\\">\\n        {{#if @selected}}\\n            <div class=\\\"btn-group report-actions push-left\\\">\\n                <strong>{{@selected.length}} {{t \\\"report.items_checked\\\"}} </strong>\\n            </div>\\n        {{/if}}\\n        {{#unless @sumReport}}\\n            {{#if (and @selected.length this.canChangeStatus)}}\\n                <Addon::FormReport::Approve\\n                    @changeStatus={{fn @changeStatus}}\\n                    @name={{concat @form '-approve'}}\\n                />\\n            {{/if}}\\n\\n            <Addon::FormReport::More\\n                @disabledClass={{this.disabledClass}}\\n                @showRemoved={{@showRemoved}}\\n                @statusTypes={{@statusTypes}}\\n                @canChangeStatus={{this.canChangeStatus}}\\n                @form={{@form}}\\n                @selected={{@selected}}\\n                @openMassedit={{fn @openMassedit}}\\n                @changeStatus={{fn @changeStatus}}\\n                @handleLock={{fn @handleLock}}\\n                @handleRemove={{fn @handleRemove}}\\n                @name={{concat @form '-more'}}\\n            />\\n        {{/unless}}\\n        <Addon::FormReport::ReportTemplateSelector\\n            @activateTemplate={{fn @activateTemplate}}\\n            @deactivateTemplate={{fn @deactivateTemplate}}\\n            @openTemplateModal={{fn @openTemplateModal}}\\n            @editTemplate={{fn @editTemplate}}\\n            @removeTemplate={{fn @removeTemplate}}\\n            @formReportTemplates={{@formReportTemplates}}\\n            @currentFormTemplate={{@currentFormTemplate}}\\n            @mergeTemplates={{@mergeTemplates}}\\n            @name={{concat @form '-template-selector'}}\\n        />\\n        </div>\\n        <div class=\\\"right-container\\\">\\n        <Addon::FormReport::InlineEdit\\n            @inlineEdit={{@inlineEdit}}\\n            @toggleInlineEdit={{fn @toggleInlineEdit}}\\n            @saveRows={{fn @saveRows}}\\n            @name={{concat @form '-inline-edit'}}\\n        />\\n\\n        {{#unless @currentFormTemplate}}\\n            <Addon::FormReport::ColumnSelector\\n                @form={{@form}}\\n                @columns={{@columns}}\\n                @allColumns={{@allColumns}}\\n                @rowsPerPage={{@rowsPerPage}}\\n                @columnsChanged={{@columnsChanged}}\\n                @setRowsPerPage={{fn @setRowsPerPage}}\\n                @sumReport={{@sumReport}}\\n                @name={{concat @form '-column-selector'}}\\n                @localStorageKey={{@localStorageKey}}\\n                @oldTemplateFromLS={{@oldTemplateFromLS}}\\n            />\\n        {{/unless}}\\n        <Addon::FormReport::ExportPdf\\n            @exportPdf={{fn this.exportPdf}}\\n            @showLoader={{@showLoader}}\\n            @name={{concat @form '-export-pdf'}}\\n        />\\n\\n        <Addon::FormReport::ExportMore\\n            @showRemoved={{@showRemoved}}\\n            @showLoader={{@showLoader}}\\n            @exportCsv={{fn @exportCsv}}\\n            @openExportModal={{fn @openExportModal}}\\n            @showOrHideRemoved={{fn @showOrHideRemoved}}\\n            @name={{concat @form '-export-more'}}\\n        />\\n\\n        <Addon::FormReport::Refresh\\n            @refreshReport={{fn @refreshReport}}\\n            @name={{concat @form '-refresh'}}\\n        />\\n\\n        <Addon::FormReport::Info\\n            @name={{concat @form '-info'}}\\n        />\\n        </div>\\n    {{/if}}\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/form-report/actions.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/actions.hbs\"}});\nimport { action } from '@ember/object';\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\n\nexport default class FormReportActionsComponent extends Component {\n    @service forms;\n    @service need;\n\n    get disabledClass() {\n        if (!this.args.selected) return 'disabled';\n        return this.args.selected.length > 0 ? '' : 'disabled';\n    }\n\n    get canChangeStatus() {\n        if (!this.forms.fieldExists(this.args.form, 'status')) return false;\n        let field = this.forms.field(this.args.form, 'status');\n\n        return !field.features.readonly;\n    }\n\n    get showApproveButton() {\n        if (!this.canChangeStatus) return false;\n        return this.args.statusTypes.findBy('id', 'approved');\n    }\n\n    get hasGpsOn() {\n        return (\n            this.need.test([this.args.form + '.location']) ||\n            this.need.test([this.args.form + '.location_map'])\n        );\n    }\n\n    get metaTrimmedQuery() {\n        return this.args.additionalMeta?.trimmed_query\n            ? this.args.additionalMeta.trimmed_query\n            : false;\n    }\n\n    @action\n    exportPdf() {\n        if (this.args.exportPdf) this.args.exportPdf();\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div role=\\\"button\\\" {{on 'click' @onClick}} class=\\\"ember-movenium-form-report-add-plus-button pull-right\\\">\\n   {{svg-jar 'PlusSign'}}\\n</div>\", {\"contents\":\"<div role=\\\"button\\\" {{on 'click' @onClick}} class=\\\"ember-movenium-form-report-add-plus-button pull-right\\\">\\n   {{svg-jar 'PlusSign'}}\\n</div>\",\"moduleName\":\"tt4/components/addon/form-report/add.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/add.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"btn-group report-actions push-left\\\">\\n    <button type=\\\"button\\\" {{on 'click' (fn @changeStatus \\\"approved\\\")}} class=\\\"btn btn-primary\\\" title={{t \\\"report.approve_rows\\\"}} data-anchor={{concat @name '-report-action'}}>{{t \\\"report.approve_rows\\\"}}</button>\\n</div>\", {\"contents\":\"<div class=\\\"btn-group report-actions push-left\\\">\\n    <button type=\\\"button\\\" {{on 'click' (fn @changeStatus \\\"approved\\\")}} class=\\\"btn btn-primary\\\" title={{t \\\"report.approve_rows\\\"}} data-anchor={{concat @name '-report-action'}}>{{t \\\"report.approve_rows\\\"}}</button>\\n</div>\",\"moduleName\":\"tt4/components/addon/form-report/approve.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/approve.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if (has-block)}}\\n    {{yield @field (collector-value-format form=@form field=@field value=@value) @value @row}}\\n{{else}}\\n    <Addon::ValueFormat @form={{@form}} @field={{@field}} @value={{@value}} @row={{@row}} />\\n{{/if}}\", {\"contents\":\"{{#if (has-block)}}\\n    {{yield @field (collector-value-format form=@form field=@field value=@value) @value @row}}\\n{{else}}\\n    <Addon::ValueFormat @form={{@form}} @field={{@field}} @value={{@value}} @row={{@row}} />\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/form-report/cell.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/cell.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"btn-group report-actions actions-right display-menu\\\" data-anchor={{concat @name '-report-action'}}>\\n    <BasicDropdown @verticalPosition=\\\"below\\\" @horizontalPosition=\\\"right\\\" as |dd|>\\n        <dd.Trigger class=\\\"btn btn-secondary\\\" title={{t \\\"report.actions.columnSort\\\"}} >\\n            <span class=\\\"move move-DragReorder\\\"></span>\\n        </dd.Trigger>\\n        <dd.Content class=\\\"column-selector-box\\\">\\n            <ul class=\\\"column-selector-dropdown side-by-side\\\">\\n                <li class=\\\"dropdown-header\\\" data-anchor=\\\"column-selector-rows-limit-titel\\\">{{t \\\"report.columns.limit\\\"}}</li>\\n                <li class=\\\"dropdown-group\\\">\\n                    <span role=\\\"button\\\" class=\\\"pr-2 limit {{if (eq @rowsPerPage 25) 'selected-limit'}}\\\" {{on 'click' (fn this.setRowsPerPage 25)}}>{{25}}</span>|\\n                    <span role=\\\"button\\\" class=\\\"pr-2 limit {{if (eq @rowsPerPage 50) 'selected-limit'}}\\\" {{on 'click' (fn this.setRowsPerPage 50)}}>{{50}}</span>|\\n                    <span role=\\\"button\\\" class=\\\"limit {{if (eq @rowsPerPage 100) 'selected-limit'}}\\\" {{on 'click' (fn this.setRowsPerPage 100)}}>{{100}}</span>\\n                </li>\\n                <ReportTemplateSelector @form={{@form}} @columns={{this.columns}} @settings={{hash limit=@rowsPerPage sortByColumn=this.sort}} @currentTemplate={{this.currentTemplate}} @deactivateTemplate={{fn this.deactivateTemplate}} @activateTemplate={{fn this.activateTemplate}} />\\n\\n            </ul>\\n            <ul class=\\\"column-selector-dropdown side-by-side\\\">\\n                <li class=\\\"dropdown-header\\\" data-anchor=\\\"column-selector-hidden-columns-titel\\\">{{t \\\"report.columns.hidden\\\"}}</li>\\n                {{#each this.hiddenColumns key=\\\"@index\\\" as |col index|}}\\n                    <li><span role=\\\"button\\\" draggable=\\\"false\\\" title={{t \\\"report.columns.click_to_show\\\"}} data-anchor={{concat \\\"column-selector-hidden-column-\\\" index}} {{on 'click' (fn this.showColumn col)}} >{{col.translated_name}}</span></li>\\n                {{/each}}\\n            </ul>\\n            <ul class=\\\"column-selector-dropdown side-by-side\\\">\\n                <li class=\\\"dropdown-header\\\" data-anchor=\\\"column-selector-shown-columns-titel\\\">{{t \\\"report.columns.shown\\\"}}</li>\\n                {{#each this.columns key=\\\"@index\\\" as |col index|}}\\n                    {{#if col.translated_name}}\\n                        <DraggableDropzone @dropped={{fn this.columnDropped index}} @tagName=\\\"li\\\" @data-field={{col}} @class=\\\"column-selector-dropzone\\\">\\n                            <DraggableItem @content={{concat \\\"\\\" index}} @class=\\\"column-selector-draggable-item\\\">\\n                                <span role=\\\"button\\\" title={{t \\\"report.columns.click_to_hide\\\"}} data-anchor={{concat \\\"column-selector-visible-column-\\\" index}} {{on 'click' (fn this.hideColumn col)}} >{{col.translated_name}}</span>\\n                                <span role=\\\"button\\\" class=\\\"sort-link pull-right move move-Up2Filled\\\" data-anchor={{concat \\\"column-selector-move-column-\\\" index \\\"-up\\\"}} {{on 'click' (fn this.moveCol col -1)}}></span>\\n                                <span role=\\\"button\\\" class=\\\"sort-link pull-right move move-Down2Filled\\\" data-anchor={{concat \\\"column-selector-move-column-\\\" index \\\"-down\\\"}} {{on 'click' (fn this.moveCol col 1)}}></span>\\n                            </DraggableItem>\\n                        </DraggableDropzone>\\n                    {{/if}}\\n                {{/each}}\\n            </ul>\\n        </dd.Content>\\n    </BasicDropdown>\\n</div>\\n\\n\", {\"contents\":\"<div class=\\\"btn-group report-actions actions-right display-menu\\\" data-anchor={{concat @name '-report-action'}}>\\n    <BasicDropdown @verticalPosition=\\\"below\\\" @horizontalPosition=\\\"right\\\" as |dd|>\\n        <dd.Trigger class=\\\"btn btn-secondary\\\" title={{t \\\"report.actions.columnSort\\\"}} >\\n            <span class=\\\"move move-DragReorder\\\"></span>\\n        </dd.Trigger>\\n        <dd.Content class=\\\"column-selector-box\\\">\\n            <ul class=\\\"column-selector-dropdown side-by-side\\\">\\n                <li class=\\\"dropdown-header\\\" data-anchor=\\\"column-selector-rows-limit-titel\\\">{{t \\\"report.columns.limit\\\"}}</li>\\n                <li class=\\\"dropdown-group\\\">\\n                    <span role=\\\"button\\\" class=\\\"pr-2 limit {{if (eq @rowsPerPage 25) 'selected-limit'}}\\\" {{on 'click' (fn this.setRowsPerPage 25)}}>{{25}}</span>|\\n                    <span role=\\\"button\\\" class=\\\"pr-2 limit {{if (eq @rowsPerPage 50) 'selected-limit'}}\\\" {{on 'click' (fn this.setRowsPerPage 50)}}>{{50}}</span>|\\n                    <span role=\\\"button\\\" class=\\\"limit {{if (eq @rowsPerPage 100) 'selected-limit'}}\\\" {{on 'click' (fn this.setRowsPerPage 100)}}>{{100}}</span>\\n                </li>\\n                <ReportTemplateSelector @form={{@form}} @columns={{this.columns}} @settings={{hash limit=@rowsPerPage sortByColumn=this.sort}} @currentTemplate={{this.currentTemplate}} @deactivateTemplate={{fn this.deactivateTemplate}} @activateTemplate={{fn this.activateTemplate}} />\\n\\n            </ul>\\n            <ul class=\\\"column-selector-dropdown side-by-side\\\">\\n                <li class=\\\"dropdown-header\\\" data-anchor=\\\"column-selector-hidden-columns-titel\\\">{{t \\\"report.columns.hidden\\\"}}</li>\\n                {{#each this.hiddenColumns key=\\\"@index\\\" as |col index|}}\\n                    <li><span role=\\\"button\\\" draggable=\\\"false\\\" title={{t \\\"report.columns.click_to_show\\\"}} data-anchor={{concat \\\"column-selector-hidden-column-\\\" index}} {{on 'click' (fn this.showColumn col)}} >{{col.translated_name}}</span></li>\\n                {{/each}}\\n            </ul>\\n            <ul class=\\\"column-selector-dropdown side-by-side\\\">\\n                <li class=\\\"dropdown-header\\\" data-anchor=\\\"column-selector-shown-columns-titel\\\">{{t \\\"report.columns.shown\\\"}}</li>\\n                {{#each this.columns key=\\\"@index\\\" as |col index|}}\\n                    {{#if col.translated_name}}\\n                        <DraggableDropzone @dropped={{fn this.columnDropped index}} @tagName=\\\"li\\\" @data-field={{col}} @class=\\\"column-selector-dropzone\\\">\\n                            <DraggableItem @content={{concat \\\"\\\" index}} @class=\\\"column-selector-draggable-item\\\">\\n                                <span role=\\\"button\\\" title={{t \\\"report.columns.click_to_hide\\\"}} data-anchor={{concat \\\"column-selector-visible-column-\\\" index}} {{on 'click' (fn this.hideColumn col)}} >{{col.translated_name}}</span>\\n                                <span role=\\\"button\\\" class=\\\"sort-link pull-right move move-Up2Filled\\\" data-anchor={{concat \\\"column-selector-move-column-\\\" index \\\"-up\\\"}} {{on 'click' (fn this.moveCol col -1)}}></span>\\n                                <span role=\\\"button\\\" class=\\\"sort-link pull-right move move-Down2Filled\\\" data-anchor={{concat \\\"column-selector-move-column-\\\" index \\\"-down\\\"}} {{on 'click' (fn this.moveCol col 1)}}></span>\\n                            </DraggableItem>\\n                        </DraggableDropzone>\\n                    {{/if}}\\n                {{/each}}\\n            </ul>\\n        </dd.Content>\\n    </BasicDropdown>\\n</div>\\n\\n\",\"moduleName\":\"tt4/components/addon/form-report/column-selector.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/column-selector.hbs\"}});\nimport { inject as service } from '@ember/service';\nimport { set, action } from '@ember/object';\nimport Component from '@glimmer/component';\n/* istanbul ignore next: report-template-selector component in tt4 blocks this, will be removed when migrated */\nexport default class FormReportColumnSelectorComponent extends Component {\n    @service localstorage;\n    @service store;\n    @service session;\n\n    constructor() {\n        super(...arguments);\n        if (this.args.oldTemplateFromLS) {\n            this.store\n                .query('reportTemplate', { user: this.session.currentUser.id })\n                .then((templates) =>\n                    this._setCurrentTemplate(templates, this.args.oldTemplateFromLS.id),\n                );\n        }\n    }\n\n    get columns() {\n        return this.args.columns;\n    }\n\n    get hiddenColumns() {\n        const mappedCols = this.columns.map((col) => col.external_type);\n        return this.args.allColumns.filter((column) => !mappedCols.includes(column.external_type));\n    }\n\n    @action\n    columnDropped(target, dropped) {\n        if (!dropped) return; // this happens when you try to drag hidden column to visibles\n        if (target == dropped) return;\n        this.moveElementInArray(this.columns, this.columns[dropped], target - dropped);\n        this.args.columnsChanged(this.columns);\n        this.saveToLS(this.columns);\n    }\n\n    @action\n    moveCol(col, dir) {\n        this.moveElementInArray(this.columns, col, dir);\n        this.args.columnsChanged(this.columns);\n        this.saveToLS(this.columns);\n    }\n\n    @action\n    hideColumn(col) {\n        this.columns.removeObject(col);\n        this.args.columnsChanged(this.columns);\n        this.saveToLS(this.columns);\n    }\n\n    @action\n    showColumn(col) {\n        this.columns.pushObject(col);\n        this.args.columnsChanged(this.columns);\n        this.saveToLS(this.columns);\n    }\n\n    @action\n    setRowsPerPage(RowsPerPage) {\n        this.args.setRowsPerPage(RowsPerPage);\n    }\n\n    @action\n    deactivateTemplate() {\n        const visibleList = this.localstorage.getItem(this.args.form + '_defaultColumns');\n        const columns = visibleList.reduce((acc, column) => {\n            let columnObject = this.args.allColumns.find(\n                (object) => object.external_type === column,\n            );\n            if (columnObject) acc.push(columnObject);\n            return acc;\n        }, []);\n        this.localstorage.removeItem(this.args.localStorageKey + '_currentTemplate');\n        this.args.columnsChanged(columns);\n        set(this, 'currentTemplate', null);\n    }\n\n    @action\n    activateTemplate(template) {\n        const columns = template.columns.split(',').reduce((accumulator, column) => {\n            let columnObject = this.args.allColumns.find(\n                (object) => object.external_type === column,\n            );\n            if (columnObject) accumulator.push(columnObject);\n            return accumulator;\n        }, []);\n        this.localstorage.setItem(this.args.localStorageKey + '_currentTemplate', {\n            columns: template.columns,\n            name: template.name,\n            id: template.id,\n        });\n        this.args.columnsChanged(columns);\n    }\n\n    moveElementInArray(obj, col, offset) {\n        let index = obj.indexOf(col);\n        obj.removeObject(col);\n        let newIndex = index + offset;\n        newIndex = newIndex > obj.length ? 0 : newIndex < 0 ? obj.length : newIndex;\n        obj.insertAt(newIndex, col);\n    }\n\n    saveToLS(columns) {\n        if (this.localstorage.getItem(this.args.form + '_selectedTemplate') || this.args.sumReport)\n            return;\n        this.localstorage.setItem(\n            this.args.form + '_defaultColumns',\n            columns.map((column) => column.external_type).filter((item) => item),\n        );\n    }\n\n    _setCurrentTemplate(templates, id) {\n        set(this, 'currentTemplate', templates.filterBy('id', id).firstObject);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<li>\\n    <div role=\\\"button\\\" data-anchor=\\\"csv-more-export\\\" {{on 'click' @exportCsv}} >{{t \\\"report.actions.export_csv\\\"}}</div>\\n</li>\", {\"contents\":\"<li>\\n    <div role=\\\"button\\\" data-anchor=\\\"csv-more-export\\\" {{on 'click' @exportCsv}} >{{t \\\"report.actions.export_csv\\\"}}</div>\\n</li>\",\"moduleName\":\"tt4/components/addon/form-report/csv.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/csv.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<li>\\n    <div role=\\\"button\\\"  data-anchor=\\\"email-approval-more-export\\\" {{on 'click' (fn @openExportModal 'email')}} >{{t \\\"report.send_email\\\"}}</div>\\n</li>\", {\"contents\":\"<li>\\n    <div role=\\\"button\\\"  data-anchor=\\\"email-approval-more-export\\\" {{on 'click' (fn @openExportModal 'email')}} >{{t \\\"report.send_email\\\"}}</div>\\n</li>\",\"moduleName\":\"tt4/components/addon/form-report/email-approval.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/email-approval.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<li>\\n    <div role=\\\"button\\\" data-anchor=\\\"excel-more-export\\\" {{on 'click' (fn @openExportModal 'export_excel')}} >{{t \\\"report.actions.export_excel\\\"}}</div>\\n</li>\", {\"contents\":\"<li>\\n    <div role=\\\"button\\\" data-anchor=\\\"excel-more-export\\\" {{on 'click' (fn @openExportModal 'export_excel')}} >{{t \\\"report.actions.export_excel\\\"}}</div>\\n</li>\",\"moduleName\":\"tt4/components/addon/form-report/excel.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/excel.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<BasicDropdown as |dd|>\\n    <dd.Trigger class=\\\"dropdown-box-trigger report-actions actions-right\\\" title={{t \\\"report.actions.more\\\"}} data-anchor={{concat @name '-report-action'}}>\\n        {{#if @showLoader}}\\n                <img class=\\\"report-loading\\\" src=\\\"img/ajax-loader.gif\\\" alt={{t \\\"general.loading\\\"}} />\\n            {{else}}\\n                <span class=\\\"glyphicon glyphicon-option-horizontal\\\"></span>\\n            {{/if}}\\n    </dd.Trigger>\\n    <dd.Content class=\\\"dropdown-box-content ember-movenium-export-more-button\\\" {{on 'click' dd.actions.close}}>\\n    <ul>\\n        {{#if (has-block)}}\\n            {{yield (hash\\n                Pdf=(component \\\"addon/form-report/pdf\\\"\\n                        openExportModal=(fn @openExportModal)\\n                    )\\n                PdfFull=(component \\\"addon/form-report/pdf-full\\\"\\n                   openExportModal=(fn @openExportModal)\\n                )\\n            )}}\\n\\n            {{#unless this.isMobile}}\\n                {{yield (hash\\n                    Csv=(component \\\"addon/form-report/csv\\\"\\n                            exportCsv=(fn @exportCsv)\\n                        )\\n                    Excel=(component \\\"addon/form-report/excel\\\"\\n                            openExportModal=(fn @openExportModal)\\n                        )\\n                )}}\\n            {{/unless}}\\n            {{yield (hash\\n                RemovedStatus=(component \\\"addon/form-report/show-removed\\\"\\n                        showOrHideRemoved=(fn @showOrHideRemoved)\\n                        showRemoved=@showRemoved\\n                    )\\n                EmailApproval=(component \\\"addon/form-report/email-approval\\\"\\n                        openExportModal=(fn @openExportModal)\\n                    )\\n                Row=(component \\\"addon/form-report/row\\\")\\n            )}}\\n        {{else}}\\n            <Addon::FormReport::Pdf\\n            @openExportModal={{fn (if @customPdfExport @customPdfExport @openExportModal)}}\\n            />\\n\\n            <Addon::FormReport::PdfFull\\n                @openExportModal={{fn @openExportModal}}\\n            />\\n            {{#unless this.isMobile}}\\n                <Addon::FormReport::Csv\\n                    @exportCsv={{fn @exportCsv}}\\n                />\\n\\n                <Addon::FormReport::Excel\\n                    @openExportModal={{fn @openExportModal}}\\n                />\\n            {{/unless}}\\n            <Addon::FormReport::ShowRemoved\\n                    @showOrHideRemoved={{fn @showOrHideRemoved}}\\n                    @showRemoved={{@showRemoved}}\\n            />\\n\\n            <Addon::FormReport::EmailApproval\\n                    @openExportModal={{fn @openExportModal}}\\n            />\\n        {{/if}}\\n    </ul>\\n    </dd.Content>\\n</BasicDropdown>\", {\"contents\":\"<BasicDropdown as |dd|>\\n    <dd.Trigger class=\\\"dropdown-box-trigger report-actions actions-right\\\" title={{t \\\"report.actions.more\\\"}} data-anchor={{concat @name '-report-action'}}>\\n        {{#if @showLoader}}\\n                <img class=\\\"report-loading\\\" src=\\\"img/ajax-loader.gif\\\" alt={{t \\\"general.loading\\\"}} />\\n            {{else}}\\n                <span class=\\\"glyphicon glyphicon-option-horizontal\\\"></span>\\n            {{/if}}\\n    </dd.Trigger>\\n    <dd.Content class=\\\"dropdown-box-content ember-movenium-export-more-button\\\" {{on 'click' dd.actions.close}}>\\n    <ul>\\n        {{#if (has-block)}}\\n            {{yield (hash\\n                Pdf=(component \\\"addon/form-report/pdf\\\"\\n                        openExportModal=(fn @openExportModal)\\n                    )\\n                PdfFull=(component \\\"addon/form-report/pdf-full\\\"\\n                   openExportModal=(fn @openExportModal)\\n                )\\n            )}}\\n\\n            {{#unless this.isMobile}}\\n                {{yield (hash\\n                    Csv=(component \\\"addon/form-report/csv\\\"\\n                            exportCsv=(fn @exportCsv)\\n                        )\\n                    Excel=(component \\\"addon/form-report/excel\\\"\\n                            openExportModal=(fn @openExportModal)\\n                        )\\n                )}}\\n            {{/unless}}\\n            {{yield (hash\\n                RemovedStatus=(component \\\"addon/form-report/show-removed\\\"\\n                        showOrHideRemoved=(fn @showOrHideRemoved)\\n                        showRemoved=@showRemoved\\n                    )\\n                EmailApproval=(component \\\"addon/form-report/email-approval\\\"\\n                        openExportModal=(fn @openExportModal)\\n                    )\\n                Row=(component \\\"addon/form-report/row\\\")\\n            )}}\\n        {{else}}\\n            <Addon::FormReport::Pdf\\n            @openExportModal={{fn (if @customPdfExport @customPdfExport @openExportModal)}}\\n            />\\n\\n            <Addon::FormReport::PdfFull\\n                @openExportModal={{fn @openExportModal}}\\n            />\\n            {{#unless this.isMobile}}\\n                <Addon::FormReport::Csv\\n                    @exportCsv={{fn @exportCsv}}\\n                />\\n\\n                <Addon::FormReport::Excel\\n                    @openExportModal={{fn @openExportModal}}\\n                />\\n            {{/unless}}\\n            <Addon::FormReport::ShowRemoved\\n                    @showOrHideRemoved={{fn @showOrHideRemoved}}\\n                    @showRemoved={{@showRemoved}}\\n            />\\n\\n            <Addon::FormReport::EmailApproval\\n                    @openExportModal={{fn @openExportModal}}\\n            />\\n        {{/if}}\\n    </ul>\\n    </dd.Content>\\n</BasicDropdown>\",\"moduleName\":\"tt4/components/addon/form-report/export-more.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/export-more.hbs\"}});\nimport Component from '@glimmer/component';\nimport { isMobile } from 'tt4/ember-movenium/utils/gui';\n\nexport default class FormReportExportMoreComponent extends Component {\n    get isMobile() {\n        return isMobile();\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"btn-group report-actions actions-right\\\" data-anchor={{concat @name '-report-action'}}>\\n    <button type=\\\"button\\\" class=\\\"btn btn-secondary\\\" {{on 'click' @exportPdf}} title={{t \\\"report.actions.export_pdf\\\"}} >\\n        {{#if @showLoader}}\\n            <img class=\\\"report-loading\\\" src=\\\"img/ajax-loader.gif\\\" alt={{t \\\"general.loading\\\"}} />\\n        {{else}}\\n            <span class=\\\"move move-PDF-2Filled\\\"></span>\\n        {{/if}}\\n    </button>\\n</div>\", {\"contents\":\"<div class=\\\"btn-group report-actions actions-right\\\" data-anchor={{concat @name '-report-action'}}>\\n    <button type=\\\"button\\\" class=\\\"btn btn-secondary\\\" {{on 'click' @exportPdf}} title={{t \\\"report.actions.export_pdf\\\"}} >\\n        {{#if @showLoader}}\\n            <img class=\\\"report-loading\\\" src=\\\"img/ajax-loader.gif\\\" alt={{t \\\"general.loading\\\"}} />\\n        {{else}}\\n            <span class=\\\"move move-PDF-2Filled\\\"></span>\\n        {{/if}}\\n    </button>\\n</div>\",\"moduleName\":\"tt4/components/addon/form-report/export-pdf.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/export-pdf.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"btn-group report-actions actions-right\\\" data-anchor={{concat @name '-report-action'}}>\\n    <button type=\\\"button\\\" {{on 'click' @openGpsMap}} class=\\\"btn btn-secondary\\\" title={{t \\\"report.actions.gps\\\"}}>\\n        <span class=\\\"move move-Globe\\\"></span>\\n    </button>\\n</div>\", {\"contents\":\"<div class=\\\"btn-group report-actions actions-right\\\" data-anchor={{concat @name '-report-action'}}>\\n    <button type=\\\"button\\\" {{on 'click' @openGpsMap}} class=\\\"btn btn-secondary\\\" title={{t \\\"report.actions.gps\\\"}}>\\n        <span class=\\\"move move-Globe\\\"></span>\\n    </button>\\n</div>\",\"moduleName\":\"tt4/components/addon/form-report/gps-location-map.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/gps-location-map.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"btn-group report-actions actions-right\\\" data-anchor={{concat @name '-report-action'}}>\\n    <button type=\\\"button\\\" {{on 'click' (fn this.showInfo)}} class=\\\"btn btn-secondary glyphicon glyphicon-info-sign info-action-button\\\" title={{t \\\"report.actions.show_info\\\"}}>\\n        <EmberPopover \\n            @popperContainer=\\\"body\\\" \\n            @tooltipClass=\\\"help-tooltip form-report-tooltip\\\" \\n            @event=\\\"none\\\" \\n            @isShown={{this.isVisible}} \\n            @hideOn=\\\"click\\\" \\n            @side=\\\"left\\\"\\n            @text={{this.infoText}}\\n        />\\n    </button>\\n</div>\\n\\n\", {\"contents\":\"<div class=\\\"btn-group report-actions actions-right\\\" data-anchor={{concat @name '-report-action'}}>\\n    <button type=\\\"button\\\" {{on 'click' (fn this.showInfo)}} class=\\\"btn btn-secondary glyphicon glyphicon-info-sign info-action-button\\\" title={{t \\\"report.actions.show_info\\\"}}>\\n        <EmberPopover \\n            @popperContainer=\\\"body\\\" \\n            @tooltipClass=\\\"help-tooltip form-report-tooltip\\\" \\n            @event=\\\"none\\\" \\n            @isShown={{this.isVisible}} \\n            @hideOn=\\\"click\\\" \\n            @side=\\\"left\\\"\\n            @text={{this.infoText}}\\n        />\\n    </button>\\n</div>\\n\\n\",\"moduleName\":\"tt4/components/addon/form-report/info.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/info.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { htmlSafe } from '@ember/template';\nimport fetch from 'fetch';\n\nexport default class FormReportInfoComponent extends Component {\n    @tracked isVisible;\n    @tracked infoText;\n\n    constructor() {\n        super(...arguments);\n        this.setInfoText();\n    }\n\n    @action showInfo() {\n        this.isVisible = !this.isVisible;\n    }\n\n    async setInfoText() {\n        const key = 'report-help-' + moment.locale();\n        const fileUrl = `https://cloud-writer-prod.s3.amazonaws.com/${key}.html`;\n\n        let response = await fetch(fileUrl, { dataType: 'text' });\n        if (!response.ok) return (this.infoText = `cannot find help for ${key}`);\n\n        this.infoText = htmlSafe(await response.text());\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if @inlineEdit}}\\n    <div class=\\\"report-actions actions-right\\\">\\n        <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" data-anchor=\\\"inline-edit-save-button\\\" {{on 'click' @saveRows}}>{{t \\\"general_report.inline_edit.save\\\"}}</button>\\n    </div>\\n{{/if}}\\n<div class=\\\"report-actions actions-right hidden-xs hidden-sm inline-edit\\\" data-anchor={{concat @name '-report-action'}}>\\n    <XToggle\\n        @theme='light'\\n        @onLabel=''\\n        @offLabel={{t \\\"general_report.inline_edit.toggle\\\"}}\\n        @showLabels={{true}}\\n        @value={{@inlineEdit}}\\n        @onToggle={{fn @toggleInlineEdit}}\\n    />\\n</div>\", {\"contents\":\"{{#if @inlineEdit}}\\n    <div class=\\\"report-actions actions-right\\\">\\n        <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" data-anchor=\\\"inline-edit-save-button\\\" {{on 'click' @saveRows}}>{{t \\\"general_report.inline_edit.save\\\"}}</button>\\n    </div>\\n{{/if}}\\n<div class=\\\"report-actions actions-right hidden-xs hidden-sm inline-edit\\\" data-anchor={{concat @name '-report-action'}}>\\n    <XToggle\\n        @theme='light'\\n        @onLabel=''\\n        @offLabel={{t \\\"general_report.inline_edit.toggle\\\"}}\\n        @showLabels={{true}}\\n        @value={{@inlineEdit}}\\n        @onToggle={{fn @toggleInlineEdit}}\\n    />\\n</div>\",\"moduleName\":\"tt4/components/addon/form-report/inline-edit.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/inline-edit.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<li class=\\\"{{@disabledClass}}\\\">\\n    <div role=\\\"button\\\" data-anchor=\\\"report-more-unlock-rows\\\" {{on 'click' (fn @handleLock \\\"unlock\\\")}} >{{t \\\"report.unlock_selected_rows\\\"}}</div>\\n</li>\\n<li class=\\\"{{@disabledClass}}\\\">\\n    <div role=\\\"button\\\" data-anchor=\\\"report-more-lock-rows\\\" {{on 'click' (fn @handleLock \\\"lock\\\")}} >{{t \\\"report.lock_selected_rows\\\"}}</div>\\n</li>\", {\"contents\":\"<li class=\\\"{{@disabledClass}}\\\">\\n    <div role=\\\"button\\\" data-anchor=\\\"report-more-unlock-rows\\\" {{on 'click' (fn @handleLock \\\"unlock\\\")}} >{{t \\\"report.unlock_selected_rows\\\"}}</div>\\n</li>\\n<li class=\\\"{{@disabledClass}}\\\">\\n    <div role=\\\"button\\\" data-anchor=\\\"report-more-lock-rows\\\" {{on 'click' (fn @handleLock \\\"lock\\\")}} >{{t \\\"report.lock_selected_rows\\\"}}</div>\\n</li>\",\"moduleName\":\"tt4/components/addon/form-report/lock.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/lock.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<li class=\\\"{{@disabledClass}}\\\">\\n    <div role=\\\"button\\\" data-anchor=\\\"report-more-massedit\\\" {{on 'click' @openMassedit}} >{{t \\\"report.massedit\\\"}}</div>\\n</li>\", {\"contents\":\"<li class=\\\"{{@disabledClass}}\\\">\\n    <div role=\\\"button\\\" data-anchor=\\\"report-more-massedit\\\" {{on 'click' @openMassedit}} >{{t \\\"report.massedit\\\"}}</div>\\n</li>\",\"moduleName\":\"tt4/components/addon/form-report/mass-edit.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/mass-edit.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"\\n<li class=\\\"{{@disabledClass}}\\\" data-anchor=\\\"{{@dataAnchor}}\\\" >\\n    <div role=\\\"button\\\" {{on 'click' this.actionTriggered}} disabled={{@disabled}}>{{yield}}</div>\\n</li>\", {\"contents\":\"\\n<li class=\\\"{{@disabledClass}}\\\" data-anchor=\\\"{{@dataAnchor}}\\\" >\\n    <div role=\\\"button\\\" {{on 'click' this.actionTriggered}} disabled={{@disabled}}>{{yield}}</div>\\n</li>\",\"moduleName\":\"tt4/components/addon/form-report/more-row.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/more-row.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n/* istanbul ignore next: this should be tested in form-report acceptance test */\nexport default class FormReportMoreRowComponent extends Component {\n    @action\n    actionTriggered() {\n        if (this.args.action) this.args.action();\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<BasicDropdown as |dd|>\\n    <dd.Trigger class=\\\"dropdown-box-trigger\\\" data-anchor={{concat @name '-report-action'}}>\\n        {{#if @showLoader}}\\n            <img class=\\\"report-loading\\\" src=\\\"img/ajax-loader.gif\\\" alt={{t \\\"general.loading\\\"}} />\\n        {{else}}\\n            <span class=\\\"glyphicon glyphicon-option-horizontal\\\"></span> <p>{{t \\\"report.more_button\\\"}}</p>\\n        {{/if}}\\n    </dd.Trigger>\\n    <dd.Content class=\\\"dropdown-box-content ember-movenium-more-button\\\" {{on 'click' dd.actions.close}}>\\n        <ul>\\n            {{#if @disabledClass}}\\n                <li class=\\\"report-notchecked\\\" role=\\\"button\\\">{{t \\\"report.nothing_checked\\\" htmlSafe=true}}</li>\\n            {{/if}}\\n            {{#if (and @canChangeStatus @statusTypes)}}\\n                {{#if (has-block)}}\\n                    {{yield (hash\\n                            Status=(component \\\"addon/form-report/status\\\"\\n                                statusTypes=@statusTypes\\n                                changeStatus=(fn @changeStatus)\\n                                disabledClass=@disabledClass\\n                            )\\n                    )}}\\n                {{else}}\\n                    <Addon::FormReport::Status\\n                        @statusTypes={{@statusTypes}}\\n                        @changeStatus={{fn @changeStatus}}\\n                        @disabledClass={{@disabledClass}}\\n                    />\\n                {{/if}}\\n            {{/if}}\\n\\n            {{#if (need 'userlevel=5')}}\\n                {{#if (has-block)}}\\n                    {{yield (hash\\n                            Lock=(component \\\"addon/form-report/lock\\\"\\n                                handleLock=(fn @handleLock)\\n                                disabledClass=@disabledClass\\n                            )\\n                    )}}\\n                {{else}}\\n                    <Addon::FormReport::Lock\\n                        @handleLock={{fn @handleLock}}\\n                        @disabledClass={{@disabledClass}}\\n                    />\\n                {{/if}}\\n            {{/if}}\\n\\n            {{#if (need 'userlevel=3,4,5,6')}}\\n                {{#if (has-block)}}\\n                    {{yield (hash\\n                            Massedit=(component \\\"addon/form-report/mass-edit\\\"\\n                                selected=@selected\\n                                form=@form\\n                                disabledClass=@disabledClass\\n                                openMassedit=(fn @openMassedit)\\n                            )\\n                    )}}\\n                {{else}}\\n                    <Addon::FormReport::MassEdit\\n                        @selected={{@selected}}\\n                        @form={{@form}}\\n                        @disabledClass={{@disabledClass}}\\n                        @openMassedit={{fn @openMassedit}}\\n                    />\\n                {{/if}}\\n            {{/if}}\\n            {{#if (need (concat @form '@remove'))}}\\n                {{#if (has-block)}}\\n                    {{yield (hash\\n                            Remove=(component \\\"addon/form-report/remove\\\"\\n                                handleRemove=(fn @handleRemove)\\n                                showRemoved=@showRemoved\\n                                disabledClass=@disabledClass\\n                            )\\n                    )}}\\n                {{else}}\\n                    <Addon::FormReport::Remove\\n                        @handleRemove={{@handleRemove}}\\n                        @showRemoved={{@showRemoved}}\\n                        @disabledClass={{@disabledClass}}\\n                    />\\n                {{/if}}\\n            {{/if}}\\n            {{#if (has-block)}}\\n                {{yield (hash\\n                        QrCode=(component \\\"addon/form-report/qr-code\\\"\\n                            disabledClass=@disabledClass\\n                            selected=@selected\\n                            form=@form\\n                        )\\n                        Row=(component \\\"addon/form-report/more-row\\\"\\n                            disabledClass=@disabledClass\\n                        )\\n                )}}\\n            {{/if}}\\n        </ul>\\n    </dd.Content>\\n</BasicDropdown>\", {\"contents\":\"<BasicDropdown as |dd|>\\n    <dd.Trigger class=\\\"dropdown-box-trigger\\\" data-anchor={{concat @name '-report-action'}}>\\n        {{#if @showLoader}}\\n            <img class=\\\"report-loading\\\" src=\\\"img/ajax-loader.gif\\\" alt={{t \\\"general.loading\\\"}} />\\n        {{else}}\\n            <span class=\\\"glyphicon glyphicon-option-horizontal\\\"></span> <p>{{t \\\"report.more_button\\\"}}</p>\\n        {{/if}}\\n    </dd.Trigger>\\n    <dd.Content class=\\\"dropdown-box-content ember-movenium-more-button\\\" {{on 'click' dd.actions.close}}>\\n        <ul>\\n            {{#if @disabledClass}}\\n                <li class=\\\"report-notchecked\\\" role=\\\"button\\\">{{t \\\"report.nothing_checked\\\" htmlSafe=true}}</li>\\n            {{/if}}\\n            {{#if (and @canChangeStatus @statusTypes)}}\\n                {{#if (has-block)}}\\n                    {{yield (hash\\n                            Status=(component \\\"addon/form-report/status\\\"\\n                                statusTypes=@statusTypes\\n                                changeStatus=(fn @changeStatus)\\n                                disabledClass=@disabledClass\\n                            )\\n                    )}}\\n                {{else}}\\n                    <Addon::FormReport::Status\\n                        @statusTypes={{@statusTypes}}\\n                        @changeStatus={{fn @changeStatus}}\\n                        @disabledClass={{@disabledClass}}\\n                    />\\n                {{/if}}\\n            {{/if}}\\n\\n            {{#if (need 'userlevel=5')}}\\n                {{#if (has-block)}}\\n                    {{yield (hash\\n                            Lock=(component \\\"addon/form-report/lock\\\"\\n                                handleLock=(fn @handleLock)\\n                                disabledClass=@disabledClass\\n                            )\\n                    )}}\\n                {{else}}\\n                    <Addon::FormReport::Lock\\n                        @handleLock={{fn @handleLock}}\\n                        @disabledClass={{@disabledClass}}\\n                    />\\n                {{/if}}\\n            {{/if}}\\n\\n            {{#if (need 'userlevel=3,4,5,6')}}\\n                {{#if (has-block)}}\\n                    {{yield (hash\\n                            Massedit=(component \\\"addon/form-report/mass-edit\\\"\\n                                selected=@selected\\n                                form=@form\\n                                disabledClass=@disabledClass\\n                                openMassedit=(fn @openMassedit)\\n                            )\\n                    )}}\\n                {{else}}\\n                    <Addon::FormReport::MassEdit\\n                        @selected={{@selected}}\\n                        @form={{@form}}\\n                        @disabledClass={{@disabledClass}}\\n                        @openMassedit={{fn @openMassedit}}\\n                    />\\n                {{/if}}\\n            {{/if}}\\n            {{#if (need (concat @form '@remove'))}}\\n                {{#if (has-block)}}\\n                    {{yield (hash\\n                            Remove=(component \\\"addon/form-report/remove\\\"\\n                                handleRemove=(fn @handleRemove)\\n                                showRemoved=@showRemoved\\n                                disabledClass=@disabledClass\\n                            )\\n                    )}}\\n                {{else}}\\n                    <Addon::FormReport::Remove\\n                        @handleRemove={{@handleRemove}}\\n                        @showRemoved={{@showRemoved}}\\n                        @disabledClass={{@disabledClass}}\\n                    />\\n                {{/if}}\\n            {{/if}}\\n            {{#if (has-block)}}\\n                {{yield (hash\\n                        QrCode=(component \\\"addon/form-report/qr-code\\\"\\n                            disabledClass=@disabledClass\\n                            selected=@selected\\n                            form=@form\\n                        )\\n                        Row=(component \\\"addon/form-report/more-row\\\"\\n                            disabledClass=@disabledClass\\n                        )\\n                )}}\\n            {{/if}}\\n        </ul>\\n    </dd.Content>\\n</BasicDropdown>\",\"moduleName\":\"tt4/components/addon/form-report/more.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/more.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"no-content\\\">\\n    {{#if (has-block)}}\\n        {{yield}}\\n    {{else}}\\n        <span class=\\\"icon move move-Search\\\"></span>\\n        <span class=\\\"text\\\">{{t \\\"general.no-content\\\"}}</span>\\n        {{!--<span class=\\\"text small\\\">{{t \\\"general.no-content-help\\\"}}</span>--}}\\n    {{/if}}\\n</div>\\n\", {\"contents\":\"<div class=\\\"no-content\\\">\\n    {{#if (has-block)}}\\n        {{yield}}\\n    {{else}}\\n        <span class=\\\"icon move move-Search\\\"></span>\\n        <span class=\\\"text\\\">{{t \\\"general.no-content\\\"}}</span>\\n        {{!--<span class=\\\"text small\\\">{{t \\\"general.no-content-help\\\"}}</span>--}}\\n    {{/if}}\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/form-report/no-content.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/no-content.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<li>\\n    <div role=\\\"button\\\" data-anchor=\\\"pdf-full-more-export\\\" {{on 'click' (fn @openExportModal 'export_pdf_full')}} >{{t \\\"report.actions.export_pdf_full\\\"}}</div>\\n</li>\\n\", {\"contents\":\"<li>\\n    <div role=\\\"button\\\" data-anchor=\\\"pdf-full-more-export\\\" {{on 'click' (fn @openExportModal 'export_pdf_full')}} >{{t \\\"report.actions.export_pdf_full\\\"}}</div>\\n</li>\\n\",\"moduleName\":\"tt4/components/addon/form-report/pdf-full.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/pdf-full.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<li>\\n   <div role=\\\"button\\\" data-anchor=\\\"pdf-more-export\\\" {{on 'click' (fn @openExportModal 'export_pdf')}} >{{t \\\"report.actions.export_pdf\\\"}}</div>\\n</li>\", {\"contents\":\"<li>\\n   <div role=\\\"button\\\" data-anchor=\\\"pdf-more-export\\\" {{on 'click' (fn @openExportModal 'export_pdf')}} >{{t \\\"report.actions.export_pdf\\\"}}</div>\\n</li>\",\"moduleName\":\"tt4/components/addon/form-report/pdf.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/pdf.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<li class=\\\"{{@disabledClass}}\\\">\\n    <div role=\\\"button\\\" data-anchor=\\\"report-more-qrcode\\\" {{on 'click' this.generate}}>{{t \\\"general.generate_qr_code\\\"}}</div>\\n</li>\", {\"contents\":\"<li class=\\\"{{@disabledClass}}\\\">\\n    <div role=\\\"button\\\" data-anchor=\\\"report-more-qrcode\\\" {{on 'click' this.generate}}>{{t \\\"general.generate_qr_code\\\"}}</div>\\n</li>\",\"moduleName\":\"tt4/components/addon/form-report/qr-code.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/qr-code.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport config from 'tt4/config/environment';\nimport { assert } from '@ember/debug';\nimport { A } from '@ember/array';\nimport { generateQrCode } from 'tt4/utils/qrcode-generator';\n\nexport default class FormReportQrCode extends Component {\n    @service apiservice;\n    @service router;\n\n    constructor() {\n        super(...arguments);\n        assert(\n            'You need to give @editRoute for component (eg. /timetracker/edit/ or /machines/machine?modal=tooltype%2C)',\n            this.args.editRoute,\n        );\n    }\n\n    @action\n    async generate() {\n        let urls = this.getEditRouteUrls();\n        let ownUrl = this.getOwnUrl();\n        const editUrls = this.getEditUrls(ownUrl, urls);\n\n        const returnUrl = await this.apiservice.request('ttapi', '/qr_codes', 'POST', {\n            urls: editUrls,\n        });\n        const asHTML = await returnUrl.text();\n\n        const w = window.open('about:blank');\n        if (!w) return;\n\n        w.document.open();\n        w.document.write(asHTML);\n        w.document.close();\n    }\n\n    // Method to get edit route urls (eg. /timetracker/edit/12345) in array based on selected rows\n\n    getEditRouteUrls() {\n        const urlArr = [];\n        this.args.selected.forEach((row) => {\n            urlArr.push(this.args.editRoute + row.id);\n        });\n        return urlArr;\n    }\n\n    // Method to get own url (localhost:4200 or app.movenium.com)\n    /* istanbul ignore next */\n    getOwnUrl() {\n        if (config.environment !== 'development' && config.environment !== 'next') {\n            return 'https://app.movenium.com/';\n        } else {\n            return config.APP.OWN_URL.slice(-1) === '/'\n                ? config.APP.OWN_URL\n                : config.APP.OWN_URL + '/';\n        }\n    }\n\n    getEditUrls(ownUrl, urls) {\n        const arr = A([]);\n        for (const url of urls) {\n            const editUrl = ownUrl + '#' + url;\n\n            const qrImageUrl = generateQrCode(editUrl);\n\n            arr.pushObject({ url: qrImageUrl });\n        }\n        return arr;\n    }\n}\n\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"btn-group report-actions actions-right\\\" data-anchor={{concat @name '-report-action'}}>\\n    <button type=\\\"button\\\" {{on 'click' @refreshReport}} class=\\\"btn btn-secondary\\\" title={{t \\\"report.actions.refreshReport\\\"}}>\\n        <span class=\\\"glyphicon glyphicon-refresh\\\"></span>\\n    </button>\\n</div>\\n\\n\", {\"contents\":\"<div class=\\\"btn-group report-actions actions-right\\\" data-anchor={{concat @name '-report-action'}}>\\n    <button type=\\\"button\\\" {{on 'click' @refreshReport}} class=\\\"btn btn-secondary\\\" title={{t \\\"report.actions.refreshReport\\\"}}>\\n        <span class=\\\"glyphicon glyphicon-refresh\\\"></span>\\n    </button>\\n</div>\\n\\n\",\"moduleName\":\"tt4/components/addon/form-report/refresh.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/refresh.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"\\n{{#if @showRemoved}}\\n    <li class=\\\"{{@disabledClass}}\\\">\\n        <div role=\\\"button\\\" data-anchor=\\\"report-more-restore-rows\\\" {{on 'click' (fn @handleRemove \\\"restore\\\")}} >{{t \\\"report.restore_rows\\\"}}</div>\\n    </li>\\n{{else}}\\n    <li class=\\\"{{@disabledClass}}\\\">\\n       <div role=\\\"button\\\" data-anchor=\\\"report-more-remove-rows\\\" {{on 'click' (fn @handleRemove \\\"remove\\\")}} >{{t \\\"report.delete_rows\\\"}}</div>\\n    </li>\\n{{/if}}\", {\"contents\":\"\\n{{#if @showRemoved}}\\n    <li class=\\\"{{@disabledClass}}\\\">\\n        <div role=\\\"button\\\" data-anchor=\\\"report-more-restore-rows\\\" {{on 'click' (fn @handleRemove \\\"restore\\\")}} >{{t \\\"report.restore_rows\\\"}}</div>\\n    </li>\\n{{else}}\\n    <li class=\\\"{{@disabledClass}}\\\">\\n       <div role=\\\"button\\\" data-anchor=\\\"report-more-remove-rows\\\" {{on 'click' (fn @handleRemove \\\"remove\\\")}} >{{t \\\"report.delete_rows\\\"}}</div>\\n    </li>\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/form-report/remove.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/remove.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<BasicDropdown @verticalPosition=\\\"below\\\" as |dd|>\\n    <dd.Trigger class=\\\"dropdown-box-trigger template-selector-trigger\\\" title={{t \\\"report.actions.filter-selector\\\"}} data-anchor={{concat @name '-report-action'}}>\\n        <p>{{this.templateName}}</p> <span class=\\\"glyphicon glyphicon-chevron-down\\\"></span>\\n    </dd.Trigger>\\n    <dd.Content class=\\\"dropdown-box-content ember-movenium-report-template-selector\\\" {{on 'click' dd.actions.close}}>\\n        <ul class=\\\"filter-menu\\\">\\n            <div class=\\\"template-container hidden-xs hidden-sm\\\">\\n                <li role=\\\"button\\\" {{on 'click' @openTemplateModal}} data-anchor=\\\"template-selector-add-new\\\">{{t \\\"form-report.filter-selector.add\\\"}}</li>\\n                <button type=\\\"button\\\" name=\\\"merge_old_templates\\\" class=\\\"btn-xs\\\" {{on \\\"click\\\" @mergeTemplates}}>\\n                    {{t \\\"form-report.filter-selector.merge_old_templates\\\"}}\\n                </button>\\n            </div>\\n            <li role=\\\"button\\\" {{on 'click' @deactivateTemplate}}>{{t \\\"form-report.filter-selector.restore\\\"}}</li>\\n            <hr>\\n            <h5>{{t \\\"report.templates.header\\\"}}</h5>\\n            {{#each @formReportTemplates as |template index|}}\\n            <div class=\\\"template-container\\\" data-anchor={{concat \\\"template-selector-saved-teplate-\\\" index}}>\\n                <li role=\\\"button\\\" {{on 'click' (fn @activateTemplate template)}}\\n                    class=\\\"template-row {{if (eq template.id @currentFormTemplate) \\\"active\\\"}}\\\">{{template.name}}</li>\\n                {{#if template.isEditable}}\\n                    <span role=\\\"button\\\" class=\\\"move move-Pencil pull-right pr-1 hidden-xs hidden-sm\\\"\\n                        {{on 'click' (fn @editTemplate template)}}></span>\\n                    <span role=\\\"button\\\" class=\\\"move move-Delete pull-right\\\"\\n                        {{on 'click' (fn @removeTemplate template)}}></span>\\n                {{/if}}\\n            </div>\\n            {{/each}}\\n        </ul>\\n    </dd.Content>\\n</BasicDropdown>\", {\"contents\":\"<BasicDropdown @verticalPosition=\\\"below\\\" as |dd|>\\n    <dd.Trigger class=\\\"dropdown-box-trigger template-selector-trigger\\\" title={{t \\\"report.actions.filter-selector\\\"}} data-anchor={{concat @name '-report-action'}}>\\n        <p>{{this.templateName}}</p> <span class=\\\"glyphicon glyphicon-chevron-down\\\"></span>\\n    </dd.Trigger>\\n    <dd.Content class=\\\"dropdown-box-content ember-movenium-report-template-selector\\\" {{on 'click' dd.actions.close}}>\\n        <ul class=\\\"filter-menu\\\">\\n            <div class=\\\"template-container hidden-xs hidden-sm\\\">\\n                <li role=\\\"button\\\" {{on 'click' @openTemplateModal}} data-anchor=\\\"template-selector-add-new\\\">{{t \\\"form-report.filter-selector.add\\\"}}</li>\\n                <button type=\\\"button\\\" name=\\\"merge_old_templates\\\" class=\\\"btn-xs\\\" {{on \\\"click\\\" @mergeTemplates}}>\\n                    {{t \\\"form-report.filter-selector.merge_old_templates\\\"}}\\n                </button>\\n            </div>\\n            <li role=\\\"button\\\" {{on 'click' @deactivateTemplate}}>{{t \\\"form-report.filter-selector.restore\\\"}}</li>\\n            <hr>\\n            <h5>{{t \\\"report.templates.header\\\"}}</h5>\\n            {{#each @formReportTemplates as |template index|}}\\n            <div class=\\\"template-container\\\" data-anchor={{concat \\\"template-selector-saved-teplate-\\\" index}}>\\n                <li role=\\\"button\\\" {{on 'click' (fn @activateTemplate template)}}\\n                    class=\\\"template-row {{if (eq template.id @currentFormTemplate) \\\"active\\\"}}\\\">{{template.name}}</li>\\n                {{#if template.isEditable}}\\n                    <span role=\\\"button\\\" class=\\\"move move-Pencil pull-right pr-1 hidden-xs hidden-sm\\\"\\n                        {{on 'click' (fn @editTemplate template)}}></span>\\n                    <span role=\\\"button\\\" class=\\\"move move-Delete pull-right\\\"\\n                        {{on 'click' (fn @removeTemplate template)}}></span>\\n                {{/if}}\\n            </div>\\n            {{/each}}\\n        </ul>\\n    </dd.Content>\\n</BasicDropdown>\",\"moduleName\":\"tt4/components/addon/form-report/report-template-selector.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/report-template-selector.hbs\"}});\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\n\nexport default class FormReportReportTemplateSelector extends Component {\n    @service intl;\n    @service session;\n\n    get templateName() {\n        if (this.args.formReportTemplates.isPending) return null;\n        if (this.args.currentFormTemplate) {\n            const template = this.args.formReportTemplates.findBy(\n                'id',\n                this.args.currentFormTemplate,\n            );\n            if (template) return template.name;\n        }\n        return this.intl.t('filter-selector.default-view');\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<li>\\n    <div role=\\\"button\\\" {{on 'click' this.actionTriggered}} disabled={{@disabled}}>{{yield}}</div>\\n</li>\", {\"contents\":\"<li>\\n    <div role=\\\"button\\\" {{on 'click' this.actionTriggered}} disabled={{@disabled}}>{{yield}}</div>\\n</li>\",\"moduleName\":\"tt4/components/addon/form-report/row.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/row.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n/* istanbul ignore next: this should be tested in form-report acceptance test */\nexport default class FormReportRowComponent extends Component {\n    @action\n    actionTriggered() {\n        if (this.args.action) this.args.action();\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if @showRemoved}}\\n    <li>\\n        <div role=\\\"button\\\" data-anchor=\\\"hide-removed-more-export\\\" {{on 'click' @showOrHideRemoved}}>{{t \\\"report.actions.show_normal\\\"}}</div>\\n    </li>\\n{{else}}\\n    <li>\\n        <div role=\\\"button\\\" data-anchor=\\\"show-removed-more-export\\\" {{on 'click' @showOrHideRemoved}}>{{t \\\"report.actions.show_removed\\\"}}</div>\\n    </li>\\n{{/if}}\", {\"contents\":\"{{#if @showRemoved}}\\n    <li>\\n        <div role=\\\"button\\\" data-anchor=\\\"hide-removed-more-export\\\" {{on 'click' @showOrHideRemoved}}>{{t \\\"report.actions.show_normal\\\"}}</div>\\n    </li>\\n{{else}}\\n    <li>\\n        <div role=\\\"button\\\" data-anchor=\\\"show-removed-more-export\\\" {{on 'click' @showOrHideRemoved}}>{{t \\\"report.actions.show_removed\\\"}}</div>\\n    </li>\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/form-report/show-removed.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/show-removed.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#each @statusTypes as |type|}}\\n    <li class=\\\"{{@disabledClass}}\\\">\\n        <div role=\\\"button\\\" data-anchor={{concat \\\"report-more-status-\\\" type.id}} {{on 'click' (fn @changeStatus type.id)}}>{{type.name}}</div>\\n    </li>\\n{{/each}}\\n<hr>\", {\"contents\":\"{{#each @statusTypes as |type|}}\\n    <li class=\\\"{{@disabledClass}}\\\">\\n        <div role=\\\"button\\\" data-anchor={{concat \\\"report-more-status-\\\" type.id}} {{on 'click' (fn @changeStatus type.id)}}>{{type.name}}</div>\\n    </li>\\n{{/each}}\\n<hr>\",\"moduleName\":\"tt4/components/addon/form-report/status.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/status.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-form-report-table\\\">\\n\\n    {{#if (has-block)}}\\n    {{yield (hash\\n        Actions=(component \\\"addon/form-report/actions\\\"\\n                    form=@form\\n                    selected=@selected\\n                    inlineEdit=@inlineEdit\\n                    columns=@columns\\n                    allColumns=@allColumns\\n                    rowsPerPage=@rowsPerPage\\n                    currentTemplate=@currentTemplate\\n                    templatesSettings=@templatesSettings\\n                    statusTypes=@statusTypes\\n                    columnsChanged=@columnsChanged\\n                    showLoader=@showLoader\\n                    showRemoved=@showRemoved\\n                    formReportTemplates=@formReportTemplates\\n                    currentFormTemplate=@currentFormTemplate\\n                    setRowsPerPage=(fn @setRowsPerPage)\\n                    exportPdf=(fn @exportPdf @selected)\\n                    exportCsv=(fn @exportCsv @selected)\\n                    showOrHideRemoved=(fn @showOrHideRemoved)\\n                    openExportModal=(fn @openExportModal @selected)\\n                    refreshReport=(fn this.refreshReport)\\n                    saveRows=(fn @saveRows)\\n                    changeStatus=(fn this.changeStatus @selected)\\n                    handleLock=(fn this.handleLock @selected)\\n                    handleRemove=(fn this.handleRemove @selected)\\n                    toggleInlineEdit=(fn @toggleInlineEdit)\\n                    openMassedit=(fn (mut this.showMassedit) true)\\n                    openGpsMap=(fn @openGpsMap @selected)\\n                    activateTemplate=(fn @activateTemplate)\\n                    deactivateTemplate=(fn @deactivateTemplate)\\n                    editTemplate=(fn @editTemplate)\\n                    removeTemplate=(fn @removeTemplate)\\n                    openTemplateModal=(fn @openTemplateModal)\\n                    sumReport=@sumReport\\n                    mergeTemplates=@mergeTemplates\\n                    localStorageKey=@localStorageKey\\n                    oldTemplateFromLS=@oldTemplateFromLS\\n                    additionalMeta=@additionalMeta\\n\\n                )\\n            selected=@selected\\n    )}}\\n    {{else}}\\n        <Addon::FormReport::Actions\\n            @form={{@form}}\\n            @selected={{@selected}}\\n            @inlineEdit={{@inlineEdit}}\\n            @columns={{@columns}}\\n            @allColumns={{@allColumns}}\\n            @rowsPerPage={{@rowsPerPage}}\\n            @currentTemplate={{@currentTemplate}}\\n            @templatesSettings={{@templatesSettings}}\\n            @statusTypes={{@statusTypes}}\\n            @columnsChanged={{@columnsChanged}}\\n            @showLoader={{@showLoader}}\\n            @showRemoved={{@showRemoved}}\\n            @formReportTemplates={{@formReportTemplates}}\\n            @currentFormTemplate={{@currentFormTemplate}}\\n            @setRowsPerPage={{fn @setRowsPerPage}}\\n            @exportPdf={{fn @exportPdf @selected}}\\n            @exportCsv={{fn @exportCsv @selected}}\\n            @showOrHideRemoved={{fn @showOrHideRemoved}}\\n            @openExportModal={{fn @openExportModal @selected}}\\n            @refreshReport={{fn this.refreshReport}}\\n            @saveRows={{fn @saveRows}}\\n            @changeStatus={{fn this.changeStatus @selected}}\\n            @handleLock={{fn this.handleLock @selected}}\\n            @handleRemove={{fn this.handleRemove @selected}}\\n            @toggleInlineEdit={{fn @toggleInlineEdit}}\\n            @openMassedit={{fn (mut this.showMassedit) true}}\\n            @activateTemplate={{fn @activateTemplate}}\\n            @deactivateTemplate={{fn @deactivateTemplate}}\\n            @editTemplate={{fn @editTemplate}}\\n            @removeTemplate={{fn @removeTemplate}}\\n            @openTemplateModal={{fn @openTemplateModal}}\\n            @sumReport={{@sumReport}}\\n            @mergeTemplates={{@mergeTemplates}}\\n            @localStorageKey={{@localStorageKey}}\\n            @oldTemplateFromLS={{@oldTemplateFromLS}}\\n            @additionalMeta={{@additionalMeta}}\\n\\n        />\\n    {{/if}}\\n\\n    {{#if this.errors.length}}\\n        <div class=\\\"alert alert-danger alert-dismissable\\\">\\n            <a href=\\\"#\\\" class=\\\"close\\\" data-dismiss=\\\"alert\\\" aria-label={{t \\\"report.close_rows\\\"}}><span class=\\\"glyphicon glyphicon-remove\\\" aria-hidden=\\\"true\\\"></span></a>\\n            <h5>{{t \\\"general_report.inline_edit.error.title\\\"}}</h5>\\n            <ul>\\n                {{#each this.errors as |error|}}\\n                    {{#if error.message}}\\n                        <li>{{t \\\"general_report.inline_edit.error.row\\\" row=error.index error=error.message}}</li>\\n                    {{/if}}\\n                {{/each}}\\n            </ul>\\n        </div>\\n    {{/if}}\\n    {{#if (and @showRemoved (not @hideRemovedText))}}\\n        <p class=\\\"text-danger\\\">{{t \\\"general.report.removed_view\\\"}}</p>\\n    {{/if}}\\n    {{#if @showLocationMap}}\\n        <GpsLocationMap @zoomLevel={{15}} @wtmarkers={{@startEndMarkers}} @projectmarkers={{@locationMarkers}} />\\n    {{/if}}\\n    <EmberTable class={{concat \\\"ember-movenium-table \\\" (if @showRemoved 'removed-rows ') @classes}} as |table|>\\n\\n        <table.head @enableReorder={{false}} @sortFunction={{null}} @fillMode={{this.tableFillMode}} @fillColumnIndex={{this.fillColumnIndex}} @widthConstraint={{this.tableWidthConstraint}} @columns={{this._columns}} @sorts={{@sorts}} @onUpdateSorts={{fn @updateSorts}}  @onResize={{@saveResize}} as |head|>\\n            <head.row as |r|>\\n                <r.cell as |columnValue columnMeta|>\\n                    <div class=\\\"et-cell-container\\\" title={{columnValue.translated_name}}>\\n                        {{#if (and this.selectable (is-equal columnMeta.index 0) (not @showOnlySum))}}\\n                                <span class=\\\"et-toggle-select\\\" data-anchor=\\\"report-select-all-checkbox\\\">\\n                                <Input @type=\\\"checkbox\\\" @checked={{this.allSelected}} @change={{fn this.toggleSelectAll}} />\\n                                <span></span>\\n                                </span>\\n                        {{/if}}\\n                        <span class=\\\"th-text-wrapper\\\" data-anchor={{concat columnValue.name \\\"-column-title\\\"}}>{{columnValue.translated_name}}</span>\\n                        <EmberTh::SortIndicator @columnMeta={{columnMeta}} />\\n                        <EmberTh::ResizeHandle @columnMeta={{columnMeta}} />\\n                    </div>\\n                </r.cell>\\n            </head.row>\\n        </table.head>\\n\\n        {{#if (not (is-pending this.data))}}\\n            {{#unless @showOnlySum}}\\n                <table.body\\n                    @rows={{to-array (await this.data)}}\\n                    @onSelect={{if (and (not @inlineEdit) this.selectable) (fn @setSelectedRows)}}\\n                    @selection={{@selected}}\\n                    @rowSelectionMode='none'\\n                    {{!-- set action bar as fixed on \\\"hover\\\"\\n                              why: so that it does not hide columns all the time--}}\\n                    {{on \\\"mouseenter\\\" (fn (mut this.actionBarIsFixed) 'right')}}\\n                    {{on \\\"mouseleave\\\" (fn (mut this.actionBarIsFixed) false)}}\\n                    data-anchor=\\\"report-body\\\"\\n                    as |b|>\\n                    <b.row\\n                        @class=\\\"\\n                            {{if (or b.rowValue.isNew b.rowValue.hasDirtyAttributes) 'unsaved-record'}}\\n                            {{if (or b.rowValue.isSaving b.rowValue.isReloading) 'inflight-record'}}\\n                            {{unless @sumReport (concat 'ember-movenium-modified-since-' (call (fn this.modifiedSince b.rowValue.row_info))) ''}}\\n                        \\\"\\n                    as |r|>\\n                        <r.cell @class=\\\"{{if @inlineEdit \\\"inline-edit\\\"}}\\n                                        {{if (eq r.rowValue.row_info.status 'locked') \\\"locked-row\\\"}}\\\"\\n                            as |value cell|>\\n                            {{#if (and (eq r.columnMeta.index 0) (not @sumReport))}}\\n                                {{#with (call (fn this.modifiedSince b.rowValue.row_info)) as |days|}}\\n                                    {{#if (eq days 'none')}}\\n                                        <div class=\\\"ember-movenium-modified-row\\\"></div>\\n                                    {{else}}\\n                                        <div\\n                                            title={{t \\\"report.row_modified.tooltip\\\" date=(moment-format r.rowValue.row_info.modified (if (eq days 'today') 'LT' 'L'))}}\\n                                            class=\\\"ember-movenium-modified-row {{concat 'ember-movenium-modified-since-' days}}\\\">\\n                                        </div>\\n                                    {{/if}}\\n                                {{/with}}\\n                            {{/if}}\\n                            {{#if (eq cell.valuePath \\\"@actions\\\")}}\\n                                {{#unless @sumReport}}\\n                                    <div class=\\\"row-actions\\\">\\n                                        {{#if (has-block)}}\\n                                            {{yield (hash RowActions=(component @actionBar showActions=@rowActions row=r.rowValue form=@form inlineEdit=@inlineEdit))}}\\n                                        {{else}}\\n                                            {{component @actionBar showActions=@rowActions row=r.rowValue form=@form inlineEdit=@inlineEdit}}\\n                                        {{/if}}\\n                                    </div>\\n                                {{/unless}}\\n                            {{else}}\\n                                {{#if @inlineEdit}}\\n                                    {{inline-edit-row/cell\\n                                        r.rowValue\\n                                        cell\\n                                        (and cell.canEdit (not (call (fn this.testConditionalHide cell.features.hide r.rowValue))) (or r.rowValue.isNew r.rowValue.isEditable))\\n                                        r.rowValue.errors.messages.firstObject.message\\n                                        tagName=\\\"div\\\"\\n                                        filter=(call (fn this.getReloadsForField r.rowValue cell.external_type ))\\n                                    }}\\n                                {{else}}\\n                                    {{#if @formatCells}}\\n                                        {{yield (hash Cell=(component \\\"addon/form-report/cell\\\" form=@form field=cell.external_type value=value row=r.rowValue))}}\\n                                    {{else if (or (is-equal cell.type \\\"multiselect\\\") (is-equal cell.type \\\"databasearray\\\"))}}\\n                                        <LinkTo @query={{hash modal=(concat \\\"modalrows,\\\" @form \\\".\\\" cell.external_type \\\",\\\" r.rowValue.id)}} @class=\\\"clickable\\\">\\n                                            <Addon::ValueFormat @form={{@form}} @field={{cell.external_type}} @value={{value}} />\\n                                        </LinkTo>\\n                                    {{else}}\\n                                        <Addon::ValueFormat @form={{@form}} @field={{cell.external_type}} @value={{value}} @record={{b.rowValue}} />\\n                                    {{/if}}\\n                                {{/if}}\\n                            {{/if}}\\n                        </r.cell>\\n                    </b.row>\\n                </table.body>\\n            {{/unless}}\\n        {{/if}}\\n        {{#unless @hideSumRow}}\\n            <table.foot @rows={{this.sumRow}} />\\n        {{/unless}}\\n    </EmberTable>\\n\\n    {{#if (is-pending this.data)}}\\n            <LoaderIcon />\\n        {{else if (is-rejected this.data)}}\\n            <div class=\\\"alert alert-danger\\\" role=\\\"alert\\\">\\n                {{get (promise-rejected-reason this.data) 'message'}}.\\n            </div>\\n        {{else if (eq this.data.length 0)}}\\n            {{#if (has-block)}}\\n                {{yield (hash\\n                    NoContent=(component \\\"addon/form-report/no-content\\\")\\n                )}}\\n            {{else}}\\n                <Addon::FormReport::NoContent />\\n            {{/if}}\\n    {{/if}}\\n\\n    {{#if this.showMassedit}}\\n        <Addon::Modal @close={{fn (mut this.showMassedit) false}} @classes=\\\"ember-movenium-mass-edit-popup\\\" as |M|>\\n            <M.Header>{{t \\\"massedit.header\\\"}}</M.Header>\\n            <M.Body>\\n                <MassEdit @form={{@form}} @idsStr={{this.idsStr}} @inModal={{true}} @close={{fn this.closeMassEdit}} />\\n            </M.Body>\\n        </Addon::Modal>\\n    {{/if}}\\n</div>\", {\"contents\":\"<div class=\\\"ember-movenium-form-report-table\\\">\\n\\n    {{#if (has-block)}}\\n    {{yield (hash\\n        Actions=(component \\\"addon/form-report/actions\\\"\\n                    form=@form\\n                    selected=@selected\\n                    inlineEdit=@inlineEdit\\n                    columns=@columns\\n                    allColumns=@allColumns\\n                    rowsPerPage=@rowsPerPage\\n                    currentTemplate=@currentTemplate\\n                    templatesSettings=@templatesSettings\\n                    statusTypes=@statusTypes\\n                    columnsChanged=@columnsChanged\\n                    showLoader=@showLoader\\n                    showRemoved=@showRemoved\\n                    formReportTemplates=@formReportTemplates\\n                    currentFormTemplate=@currentFormTemplate\\n                    setRowsPerPage=(fn @setRowsPerPage)\\n                    exportPdf=(fn @exportPdf @selected)\\n                    exportCsv=(fn @exportCsv @selected)\\n                    showOrHideRemoved=(fn @showOrHideRemoved)\\n                    openExportModal=(fn @openExportModal @selected)\\n                    refreshReport=(fn this.refreshReport)\\n                    saveRows=(fn @saveRows)\\n                    changeStatus=(fn this.changeStatus @selected)\\n                    handleLock=(fn this.handleLock @selected)\\n                    handleRemove=(fn this.handleRemove @selected)\\n                    toggleInlineEdit=(fn @toggleInlineEdit)\\n                    openMassedit=(fn (mut this.showMassedit) true)\\n                    openGpsMap=(fn @openGpsMap @selected)\\n                    activateTemplate=(fn @activateTemplate)\\n                    deactivateTemplate=(fn @deactivateTemplate)\\n                    editTemplate=(fn @editTemplate)\\n                    removeTemplate=(fn @removeTemplate)\\n                    openTemplateModal=(fn @openTemplateModal)\\n                    sumReport=@sumReport\\n                    mergeTemplates=@mergeTemplates\\n                    localStorageKey=@localStorageKey\\n                    oldTemplateFromLS=@oldTemplateFromLS\\n                    additionalMeta=@additionalMeta\\n\\n                )\\n            selected=@selected\\n    )}}\\n    {{else}}\\n        <Addon::FormReport::Actions\\n            @form={{@form}}\\n            @selected={{@selected}}\\n            @inlineEdit={{@inlineEdit}}\\n            @columns={{@columns}}\\n            @allColumns={{@allColumns}}\\n            @rowsPerPage={{@rowsPerPage}}\\n            @currentTemplate={{@currentTemplate}}\\n            @templatesSettings={{@templatesSettings}}\\n            @statusTypes={{@statusTypes}}\\n            @columnsChanged={{@columnsChanged}}\\n            @showLoader={{@showLoader}}\\n            @showRemoved={{@showRemoved}}\\n            @formReportTemplates={{@formReportTemplates}}\\n            @currentFormTemplate={{@currentFormTemplate}}\\n            @setRowsPerPage={{fn @setRowsPerPage}}\\n            @exportPdf={{fn @exportPdf @selected}}\\n            @exportCsv={{fn @exportCsv @selected}}\\n            @showOrHideRemoved={{fn @showOrHideRemoved}}\\n            @openExportModal={{fn @openExportModal @selected}}\\n            @refreshReport={{fn this.refreshReport}}\\n            @saveRows={{fn @saveRows}}\\n            @changeStatus={{fn this.changeStatus @selected}}\\n            @handleLock={{fn this.handleLock @selected}}\\n            @handleRemove={{fn this.handleRemove @selected}}\\n            @toggleInlineEdit={{fn @toggleInlineEdit}}\\n            @openMassedit={{fn (mut this.showMassedit) true}}\\n            @activateTemplate={{fn @activateTemplate}}\\n            @deactivateTemplate={{fn @deactivateTemplate}}\\n            @editTemplate={{fn @editTemplate}}\\n            @removeTemplate={{fn @removeTemplate}}\\n            @openTemplateModal={{fn @openTemplateModal}}\\n            @sumReport={{@sumReport}}\\n            @mergeTemplates={{@mergeTemplates}}\\n            @localStorageKey={{@localStorageKey}}\\n            @oldTemplateFromLS={{@oldTemplateFromLS}}\\n            @additionalMeta={{@additionalMeta}}\\n\\n        />\\n    {{/if}}\\n\\n    {{#if this.errors.length}}\\n        <div class=\\\"alert alert-danger alert-dismissable\\\">\\n            <a href=\\\"#\\\" class=\\\"close\\\" data-dismiss=\\\"alert\\\" aria-label={{t \\\"report.close_rows\\\"}}><span class=\\\"glyphicon glyphicon-remove\\\" aria-hidden=\\\"true\\\"></span></a>\\n            <h5>{{t \\\"general_report.inline_edit.error.title\\\"}}</h5>\\n            <ul>\\n                {{#each this.errors as |error|}}\\n                    {{#if error.message}}\\n                        <li>{{t \\\"general_report.inline_edit.error.row\\\" row=error.index error=error.message}}</li>\\n                    {{/if}}\\n                {{/each}}\\n            </ul>\\n        </div>\\n    {{/if}}\\n    {{#if (and @showRemoved (not @hideRemovedText))}}\\n        <p class=\\\"text-danger\\\">{{t \\\"general.report.removed_view\\\"}}</p>\\n    {{/if}}\\n    {{#if @showLocationMap}}\\n        <GpsLocationMap @zoomLevel={{15}} @wtmarkers={{@startEndMarkers}} @projectmarkers={{@locationMarkers}} />\\n    {{/if}}\\n    <EmberTable class={{concat \\\"ember-movenium-table \\\" (if @showRemoved 'removed-rows ') @classes}} as |table|>\\n\\n        <table.head @enableReorder={{false}} @sortFunction={{null}} @fillMode={{this.tableFillMode}} @fillColumnIndex={{this.fillColumnIndex}} @widthConstraint={{this.tableWidthConstraint}} @columns={{this._columns}} @sorts={{@sorts}} @onUpdateSorts={{fn @updateSorts}}  @onResize={{@saveResize}} as |head|>\\n            <head.row as |r|>\\n                <r.cell as |columnValue columnMeta|>\\n                    <div class=\\\"et-cell-container\\\" title={{columnValue.translated_name}}>\\n                        {{#if (and this.selectable (is-equal columnMeta.index 0) (not @showOnlySum))}}\\n                                <span class=\\\"et-toggle-select\\\" data-anchor=\\\"report-select-all-checkbox\\\">\\n                                <Input @type=\\\"checkbox\\\" @checked={{this.allSelected}} @change={{fn this.toggleSelectAll}} />\\n                                <span></span>\\n                                </span>\\n                        {{/if}}\\n                        <span class=\\\"th-text-wrapper\\\" data-anchor={{concat columnValue.name \\\"-column-title\\\"}}>{{columnValue.translated_name}}</span>\\n                        <EmberTh::SortIndicator @columnMeta={{columnMeta}} />\\n                        <EmberTh::ResizeHandle @columnMeta={{columnMeta}} />\\n                    </div>\\n                </r.cell>\\n            </head.row>\\n        </table.head>\\n\\n        {{#if (not (is-pending this.data))}}\\n            {{#unless @showOnlySum}}\\n                <table.body\\n                    @rows={{to-array (await this.data)}}\\n                    @onSelect={{if (and (not @inlineEdit) this.selectable) (fn @setSelectedRows)}}\\n                    @selection={{@selected}}\\n                    @rowSelectionMode='none'\\n                    {{!-- set action bar as fixed on \\\"hover\\\"\\n                              why: so that it does not hide columns all the time--}}\\n                    {{on \\\"mouseenter\\\" (fn (mut this.actionBarIsFixed) 'right')}}\\n                    {{on \\\"mouseleave\\\" (fn (mut this.actionBarIsFixed) false)}}\\n                    data-anchor=\\\"report-body\\\"\\n                    as |b|>\\n                    <b.row\\n                        @class=\\\"\\n                            {{if (or b.rowValue.isNew b.rowValue.hasDirtyAttributes) 'unsaved-record'}}\\n                            {{if (or b.rowValue.isSaving b.rowValue.isReloading) 'inflight-record'}}\\n                            {{unless @sumReport (concat 'ember-movenium-modified-since-' (call (fn this.modifiedSince b.rowValue.row_info))) ''}}\\n                        \\\"\\n                    as |r|>\\n                        <r.cell @class=\\\"{{if @inlineEdit \\\"inline-edit\\\"}}\\n                                        {{if (eq r.rowValue.row_info.status 'locked') \\\"locked-row\\\"}}\\\"\\n                            as |value cell|>\\n                            {{#if (and (eq r.columnMeta.index 0) (not @sumReport))}}\\n                                {{#with (call (fn this.modifiedSince b.rowValue.row_info)) as |days|}}\\n                                    {{#if (eq days 'none')}}\\n                                        <div class=\\\"ember-movenium-modified-row\\\"></div>\\n                                    {{else}}\\n                                        <div\\n                                            title={{t \\\"report.row_modified.tooltip\\\" date=(moment-format r.rowValue.row_info.modified (if (eq days 'today') 'LT' 'L'))}}\\n                                            class=\\\"ember-movenium-modified-row {{concat 'ember-movenium-modified-since-' days}}\\\">\\n                                        </div>\\n                                    {{/if}}\\n                                {{/with}}\\n                            {{/if}}\\n                            {{#if (eq cell.valuePath \\\"@actions\\\")}}\\n                                {{#unless @sumReport}}\\n                                    <div class=\\\"row-actions\\\">\\n                                        {{#if (has-block)}}\\n                                            {{yield (hash RowActions=(component @actionBar showActions=@rowActions row=r.rowValue form=@form inlineEdit=@inlineEdit))}}\\n                                        {{else}}\\n                                            {{component @actionBar showActions=@rowActions row=r.rowValue form=@form inlineEdit=@inlineEdit}}\\n                                        {{/if}}\\n                                    </div>\\n                                {{/unless}}\\n                            {{else}}\\n                                {{#if @inlineEdit}}\\n                                    {{inline-edit-row/cell\\n                                        r.rowValue\\n                                        cell\\n                                        (and cell.canEdit (not (call (fn this.testConditionalHide cell.features.hide r.rowValue))) (or r.rowValue.isNew r.rowValue.isEditable))\\n                                        r.rowValue.errors.messages.firstObject.message\\n                                        tagName=\\\"div\\\"\\n                                        filter=(call (fn this.getReloadsForField r.rowValue cell.external_type ))\\n                                    }}\\n                                {{else}}\\n                                    {{#if @formatCells}}\\n                                        {{yield (hash Cell=(component \\\"addon/form-report/cell\\\" form=@form field=cell.external_type value=value row=r.rowValue))}}\\n                                    {{else if (or (is-equal cell.type \\\"multiselect\\\") (is-equal cell.type \\\"databasearray\\\"))}}\\n                                        <LinkTo @query={{hash modal=(concat \\\"modalrows,\\\" @form \\\".\\\" cell.external_type \\\",\\\" r.rowValue.id)}} @class=\\\"clickable\\\">\\n                                            <Addon::ValueFormat @form={{@form}} @field={{cell.external_type}} @value={{value}} />\\n                                        </LinkTo>\\n                                    {{else}}\\n                                        <Addon::ValueFormat @form={{@form}} @field={{cell.external_type}} @value={{value}} @record={{b.rowValue}} />\\n                                    {{/if}}\\n                                {{/if}}\\n                            {{/if}}\\n                        </r.cell>\\n                    </b.row>\\n                </table.body>\\n            {{/unless}}\\n        {{/if}}\\n        {{#unless @hideSumRow}}\\n            <table.foot @rows={{this.sumRow}} />\\n        {{/unless}}\\n    </EmberTable>\\n\\n    {{#if (is-pending this.data)}}\\n            <LoaderIcon />\\n        {{else if (is-rejected this.data)}}\\n            <div class=\\\"alert alert-danger\\\" role=\\\"alert\\\">\\n                {{get (promise-rejected-reason this.data) 'message'}}.\\n            </div>\\n        {{else if (eq this.data.length 0)}}\\n            {{#if (has-block)}}\\n                {{yield (hash\\n                    NoContent=(component \\\"addon/form-report/no-content\\\")\\n                )}}\\n            {{else}}\\n                <Addon::FormReport::NoContent />\\n            {{/if}}\\n    {{/if}}\\n\\n    {{#if this.showMassedit}}\\n        <Addon::Modal @close={{fn (mut this.showMassedit) false}} @classes=\\\"ember-movenium-mass-edit-popup\\\" as |M|>\\n            <M.Header>{{t \\\"massedit.header\\\"}}</M.Header>\\n            <M.Body>\\n                <MassEdit @form={{@form}} @idsStr={{this.idsStr}} @inModal={{true}} @close={{fn this.closeMassEdit}} />\\n            </M.Body>\\n        </Addon::Modal>\\n    {{/if}}\\n</div>\",\"moduleName\":\"tt4/components/addon/form-report/table.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/table.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { get, set, action, computed } from '@ember/object';\nimport { isEmpty } from '@ember/utils';\nimport { getSums } from 'tt4/ember-movenium/utils/sumrow';\nimport { isMobile } from 'tt4/ember-movenium/utils/gui';\nimport { inject as service } from '@ember/service';\nimport { isArray } from '@ember/array';\nimport validator from 'tt4/classes/validations';\nimport moment from 'moment';\n\nexport default class FormReportTableComponent extends Component {\n    @service('collector-service') collector;\n    @service forms;\n    @service flags;\n\n    @tracked selected;\n    @tracked 'data.length';\n    @tracked actionBarIsFixed = false;\n\n    get selectable() {\n        return this.args.selectable;\n    }\n\n    get data() {\n        return this.args.data || [];\n    }\n\n    get allSelected() {\n        return this.data.length === this.args.selected.length;\n    }\n\n    get _columns() {\n        let actions = {\n            name: '',\n            valuePath: '@actions',\n            isFixed: this.actionBarIsFixed,\n            maxwidth: 45,\n            isSortable: false,\n            isResizable: false,\n        };\n        if (this.flags.test('form-report-trimmed-query')) {\n            actions = {\n                name: '',\n                valuePath: '@actions',\n                isFixed: this.actionBarIsFixed,\n                width: 130,\n                isSortable: false,\n                isResizable: false,\n            };\n        }\n        return this.args.columns.concat([actions]);\n    }\n\n    get tableFillMode() {\n        if (isMobile()) return 'equal-column';\n        if (this.args.currentFormTemplate) return 'nth-column';\n        return this.args.columns.length < 13 && !this.args.columnSizes.length\n            ? 'equal-column'\n            : 'nth-column';\n    }\n\n    get fillColumnIndex() {\n        return this.args.columns.length - 1;\n    }\n\n    get tableWidthConstraint() {\n        if (isMobile()) return 'gte-container';\n        return this.args.columns.length > 13 ? 'gte-container' : 'eq-container';\n    }\n\n    get sumRow() {\n        let data = !isEmpty(this.args.selected) ? this.args.selected : this.data;\n\n        if (!this.args.columns || !this.data) return {};\n\n        return getSums(data, this.args.columns, this.args.form, this.collector, this.forms);\n    }\n\n    /* Has to be computed, because we only want a simple id list based on selected rows and without computed,\n       it began to spam selected list again and again which caused logical errors in massedit\n    */\n    @computed('args.selected')\n    get idsStr() {\n        return this.args.selected.mapBy('id').join(',');\n    }\n\n    @action\n    toggleSelectAll() {\n        if (get(this, 'allSelected')) {\n            this.args.setSelectedRows([]);\n        } else {\n            this.args.setSelectedRows(this.data.toArray());\n        }\n    }\n\n    @action\n    deselectAll() {\n        this.args.setSelectedRows([]);\n    }\n\n    @action\n    refreshReport() {\n        if (this.args.refreshReport) this.args.refreshReport();\n        this.deselectAll();\n    }\n\n    @action\n    changeStatus(selected, status) {\n        if (this.args.changeStatus) this.args.changeStatus(selected, status);\n        this.deselectAll();\n    }\n\n    @action\n    handleLock(selected, act) {\n        if (this.args.handleLock) this.args.handleLock(selected, act);\n        this.deselectAll();\n    }\n\n    @action\n    handleRemove(selected, act) {\n        if (this.args.handleRemove) this.args.handleRemove(selected, act);\n        this.deselectAll();\n    }\n\n    /* istanbul ignore next */\n    @action\n    modifiedSince(rowInfo) {\n        if (!rowInfo) return 'none';\n        if (!get(rowInfo, 'modified')) return 'none';\n\n        const modified = get(rowInfo, 'modified');\n        const created = get(rowInfo, 'created');\n\n        const diff =\n            moment.utc().startOf('day').unix() - moment.utc(modified).startOf('day').unix();\n        const days = moment.duration(diff, 'seconds').asDays();\n\n        const created_diff =\n            moment.utc(modified).startOf('day').unix() - moment.utc(created).startOf('day').unix();\n        const created_days = moment.duration(created_diff, 'seconds').asDays();\n        if (created_days === 0) {\n            if (days > 0) return 'none';\n            return 'today';\n        }\n        if (days > 14) return 'none';\n        if (days === 0) return '0';\n        return days;\n    }\n\n    @action\n    closeMassEdit() {\n        set(this, 'showMassedit', false);\n        this.deselectAll();\n    }\n\n    @action\n    testConditionalHide(hideRule, row) {\n        if (hideRule && isArray(hideRule)) hideRule = !validator._is_visible(row, hideRule);\n        return hideRule;\n    }\n\n    @action\n    getReloadsForField(record, field) {\n        const reloads = this.getReloads();\n        const fieldReloads = {};\n        reloads.forEach((item) => {\n            if (item.field === field) fieldReloads[item.filter] = record ? record[item.with] : null;\n        });\n\n        return fieldReloads;\n    }\n\n    getReloads() {\n        const reloads = [];\n        const fields = this.forms.fieldArray(this.args.form);\n        for (const field of fields) {\n            let reload = field.features?.reload;\n            if (reload) {\n                if (!isArray(reload)) reload = [reload];\n\n                for (const reloadfield of reload) {\n                    reloads.push({\n                        // field name that needs to be reloaded\n                        field: reloadfield,\n                        // filter name that is used to fetch objects.\n                        // Normally the form where reloader field points to. ie tasks?project=1234 => project\n                        filter: field.options?.form,\n                        // name of the field to use as filter .. this needs to found from model\n                        with: field.name,\n                    });\n                }\n            }\n        }\n\n        return reloads;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{!-- template-lint-disable no-nested-interactive --}}\\n<div class=\\\"ember-movenium-groupbyfilter-report\\\">\\n    <div role=\\\"button\\\" class=\\\"flex-input\\\" {{on 'click' this.toggleModal}}>\\n        {{#each this.chosenFields as |field|}}\\n            <span class=\\\"selected\\\">\\n                {{field.translated_name}}&nbsp;&nbsp;<span role=\\\"button\\\" class=\\\"cancel-icon\\\" {{on 'click' (fn this.removeField field true)}}>{{svg-jar \\\"Cancel\\\"}}</span>\\n            </span>\\n        {{/each}}\\n        <span class=\\\"groupbyfilter-text\\\">{{t \\\"filters.group_fields\\\"}}</span>\\n    </div>\\n</div>\\n\\n{{#if this.showModal}}\\n    <Addon::Modal @close={{this.toggleModal}} @classes=\\\"ember-movenium-groupbyfilter-modal\\\" as |M|>\\n        <M.Header>{{t \\\"filters.group_fields\\\"}}</M.Header>\\n        <M.Body>\\n            <div class=\\\"ember-movenium-groupbyfilter-flex-container\\\">\\n                <div class=\\\"ember-movenium-groupbyfilter-flex-column\\\">\\n                    <h4>{{t \\\"general.choose_fields\\\"}}</h4>\\n                    <ul class=\\\"ember-movenium-groupbyfilter-list\\\">\\n                        {{#each this.unchosenFields as |field|}}\\n                            <span role=\\\"button\\\" class=\\\"list-item\\\" {{on 'click' (fn this.addField field)}}>\\n                                <p>{{field.translated_name}}</p>\\n                                <span class=\\\"ember-movenium-groupbyfilter-checkmark\\\">{{svg-jar \\\"Checkmark\\\"}}</span>\\n                            </span>\\n                        {{/each}}\\n                    </ul>\\n                </div>\\n                <div class=\\\"ember-movenium-groupbyfilter-flex-column\\\">\\n                    <h4>{{t \\\"general.chosen_fields\\\"}}</h4>\\n                    <ul class=\\\"ember-movenium-groupbyfilter-list\\\" data-anchor=\\\"groupby-modal-selected-filters\\\">\\n                        {{#each this.chosenFields as |field|}}\\n                            <span role=\\\"button\\\" class=\\\"list-item\\\" {{on 'click' (fn this.removeField field false)}}>\\n                                <p>{{field.translated_name}}</p>\\n                                <span class=\\\"ember-movenium-groupbyfilter-checkmark selected\\\">{{svg-jar \\\"Checkmark\\\"}}</span>\\n                            </span>\\n                        {{/each}}\\n                    </ul>\\n                </div>\\n            </div>\\n        </M.Body>\\n        <M.Footer>\\n            <div class=\\\"ember-movenium-groupbyfilter-save\\\">\\n                <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button\\\" {{on 'click' this.applyFilters}}>{{t \\\"general.save\\\"}}</button>\\n            </div>\\n        </M.Footer>\\n    </Addon::Modal>\\n{{/if}}\", {\"contents\":\"{{!-- template-lint-disable no-nested-interactive --}}\\n<div class=\\\"ember-movenium-groupbyfilter-report\\\">\\n    <div role=\\\"button\\\" class=\\\"flex-input\\\" {{on 'click' this.toggleModal}}>\\n        {{#each this.chosenFields as |field|}}\\n            <span class=\\\"selected\\\">\\n                {{field.translated_name}}&nbsp;&nbsp;<span role=\\\"button\\\" class=\\\"cancel-icon\\\" {{on 'click' (fn this.removeField field true)}}>{{svg-jar \\\"Cancel\\\"}}</span>\\n            </span>\\n        {{/each}}\\n        <span class=\\\"groupbyfilter-text\\\">{{t \\\"filters.group_fields\\\"}}</span>\\n    </div>\\n</div>\\n\\n{{#if this.showModal}}\\n    <Addon::Modal @close={{this.toggleModal}} @classes=\\\"ember-movenium-groupbyfilter-modal\\\" as |M|>\\n        <M.Header>{{t \\\"filters.group_fields\\\"}}</M.Header>\\n        <M.Body>\\n            <div class=\\\"ember-movenium-groupbyfilter-flex-container\\\">\\n                <div class=\\\"ember-movenium-groupbyfilter-flex-column\\\">\\n                    <h4>{{t \\\"general.choose_fields\\\"}}</h4>\\n                    <ul class=\\\"ember-movenium-groupbyfilter-list\\\">\\n                        {{#each this.unchosenFields as |field|}}\\n                            <span role=\\\"button\\\" class=\\\"list-item\\\" {{on 'click' (fn this.addField field)}}>\\n                                <p>{{field.translated_name}}</p>\\n                                <span class=\\\"ember-movenium-groupbyfilter-checkmark\\\">{{svg-jar \\\"Checkmark\\\"}}</span>\\n                            </span>\\n                        {{/each}}\\n                    </ul>\\n                </div>\\n                <div class=\\\"ember-movenium-groupbyfilter-flex-column\\\">\\n                    <h4>{{t \\\"general.chosen_fields\\\"}}</h4>\\n                    <ul class=\\\"ember-movenium-groupbyfilter-list\\\" data-anchor=\\\"groupby-modal-selected-filters\\\">\\n                        {{#each this.chosenFields as |field|}}\\n                            <span role=\\\"button\\\" class=\\\"list-item\\\" {{on 'click' (fn this.removeField field false)}}>\\n                                <p>{{field.translated_name}}</p>\\n                                <span class=\\\"ember-movenium-groupbyfilter-checkmark selected\\\">{{svg-jar \\\"Checkmark\\\"}}</span>\\n                            </span>\\n                        {{/each}}\\n                    </ul>\\n                </div>\\n            </div>\\n        </M.Body>\\n        <M.Footer>\\n            <div class=\\\"ember-movenium-groupbyfilter-save\\\">\\n                <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button\\\" {{on 'click' this.applyFilters}}>{{t \\\"general.save\\\"}}</button>\\n            </div>\\n        </M.Footer>\\n    </Addon::Modal>\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/groupby-filter.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/groupby-filter.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport FormsService from 'tt4/injections/services/forms';\nimport { A } from '@ember/array';\nimport { IFormField } from 'tt4/ember-movenium/interfaces/forms';\nimport { tracked } from '@glimmer/tracking';\nimport { isEmpty } from '@ember/utils';\n\ninterface IGBFilter {\n    form: string;\n    value: string;\n    filterChange(args0: string | null): void;\n}\n\nexport default class GroupbyFilterComponent extends Component<IGBFilter> {\n    @service private forms!: FormsService;\n\n    @tracked private chosenFields: any = A([]);\n    @tracked private unchosenFields: any = A([]);\n    @tracked private showModal = false;\n\n    get fields() {\n        return this.forms.fieldArray(this.args.form);\n    }\n\n    get savedFields() {\n        if (!this.args.value) return [];\n        return this.args.value\n            .split(',')\n            .map((val: string) => this.forms.field(this.args.form, val));\n    }\n\n    constructor(owner: unknown, args: IGBFilter) {\n        super(owner, args);\n        const valueArr = this.args.value ? this.args.value.split(',') : [];\n        this.chosenFields = valueArr.map((val: string) => {\n            return this.fields.find((f: IFormField) => f.name === val);\n        });\n        this.unchosenFields = this.fields.filter((field: IFormField) => {\n            if (field.type === 'databasearray') return;\n            return !this.chosenFields.find((f: IFormField) => f.name === field.name);\n        });\n    }\n\n    @action\n    protected toggleModal(): void {\n        if (this.showModal) {\n            this.chosenFields = this.savedFields;\n            this.unchosenFields = this.fields.filter((field: IFormField) => {\n                if (field.type === 'databasearray') return;\n                return !this.chosenFields.find((f: IFormField) => f.name === field.name);\n            });\n        }\n        this.showModal = !this.showModal;\n    }\n\n    @action\n    protected addField(field: IFormField): void {\n        const indexOfField = this.unchosenFields.indexOf(field);\n        this.unchosenFields.splice(indexOfField, 1);\n        this.chosenFields.push(field);\n        this.unchosenFields = this.unchosenFields;\n        this.chosenFields = this.chosenFields;\n    }\n\n    @action\n    protected removeField(field: IFormField, applyFilters: boolean): void {\n        const indexOfField = this.chosenFields.indexOf(field);\n        this.chosenFields.splice(indexOfField, 1);\n        this.unchosenFields.push(field);\n        this.unchosenFields = this.unchosenFields;\n        this.chosenFields = this.chosenFields;\n        if (applyFilters) this.applyFilters();\n    }\n\n    @action\n    protected applyFilters(): void {\n        if (!isEmpty(this.chosenFields)) {\n            const chosenFieldNames = this.chosenFields.map((field: IFormField) => field.name);\n            this.args.filterChange(chosenFieldNames.join(','));\n        } else {\n            this.args.filterChange(null);\n        }\n        this.toggleModal();\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div role=\\\"button\\\" class=\\\"ember-movenium-close-icon\\\" {{on 'click' @onClick}}>{{svg-jar \\\"Cross\\\" width=\\\"30px\\\"}}</div>\\n\", {\"contents\":\"<div role=\\\"button\\\" class=\\\"ember-movenium-close-icon\\\" {{on 'click' @onClick}}>{{svg-jar \\\"Cross\\\" width=\\\"30px\\\"}}</div>\\n\",\"moduleName\":\"tt4/components/addon/icons/close.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/icons/close.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button {{@classes}} {{if @loading \\\"is-loading\\\"}}\\\" id={{@id}} name={{@name}} disabled={{@disabled}} {{on 'click' @onClick}} data-anchor={{concat @form '-save-button'}}>\\n\\n    {{#if @loading}}\\n\\n        {{#if @savingText}}\\n            {{@savingText}}\\n        {{else}}\\n            {{#if (has-block)}}\\n                {{yield}}\\n            {{else}}\\n                {{t 'general.saving'}}\\n            {{/if}}\\n        {{/if}}\\n\\n    {{else}}\\n        {{yield}}\\n\\n        {{#if (and @buttonText (not has-block))}}\\n            {{@buttonText}}\\n        {{else if (has-block)}}\\n        {{else}}\\n            {{t 'general.save'}}\\n        {{/if}}\\n\\n    {{/if}}\\n</button>\", {\"contents\":\"<button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button {{@classes}} {{if @loading \\\"is-loading\\\"}}\\\" id={{@id}} name={{@name}} disabled={{@disabled}} {{on 'click' @onClick}} data-anchor={{concat @form '-save-button'}}>\\n\\n    {{#if @loading}}\\n\\n        {{#if @savingText}}\\n            {{@savingText}}\\n        {{else}}\\n            {{#if (has-block)}}\\n                {{yield}}\\n            {{else}}\\n                {{t 'general.saving'}}\\n            {{/if}}\\n        {{/if}}\\n\\n    {{else}}\\n        {{yield}}\\n\\n        {{#if (and @buttonText (not has-block))}}\\n            {{@buttonText}}\\n        {{else if (has-block)}}\\n        {{else}}\\n            {{t 'general.save'}}\\n        {{/if}}\\n\\n    {{/if}}\\n</button>\",\"moduleName\":\"tt4/components/addon/loading-button.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/loading-button.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<ModalDialog\\n    @onClose={{fn @close}}\\n    @onClickOverlay={{fn this.handleOverlayClick @outsideClose}}\\n    @wrapperClassNames=\\\"ember-movenium-modal {{@classes}}\\\"\\n    @translucentOverlay={{true}}\\n    @overlayPosition=\\\"sibling\\\"\\n>\\n\\n    {{yield (hash\\n        Header=(component \\\"addon/modal/header\\\" hideClose=@hideClose close=@close headerClass=@headerClass)\\n        Body=(component \\\"addon/modal/body\\\" bodyClass=@bodyClass)\\n        Footer=(component \\\"addon/modal/footer\\\" footerClass=@footerClass)\\n    )}}\\n\\n</ModalDialog>\\n\\n\\n\", {\"contents\":\"<ModalDialog\\n    @onClose={{fn @close}}\\n    @onClickOverlay={{fn this.handleOverlayClick @outsideClose}}\\n    @wrapperClassNames=\\\"ember-movenium-modal {{@classes}}\\\"\\n    @translucentOverlay={{true}}\\n    @overlayPosition=\\\"sibling\\\"\\n>\\n\\n    {{yield (hash\\n        Header=(component \\\"addon/modal/header\\\" hideClose=@hideClose close=@close headerClass=@headerClass)\\n        Body=(component \\\"addon/modal/body\\\" bodyClass=@bodyClass)\\n        Footer=(component \\\"addon/modal/footer\\\" footerClass=@footerClass)\\n    )}}\\n\\n</ModalDialog>\\n\\n\\n\",\"moduleName\":\"tt4/components/addon/modal.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/modal.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\ninterface IModal {\n    close(): void;\n}\n/* istanbul ignore next: cannot click outside modal in test */\nexport default class ModalComponent extends Component<IModal> {\n    @action\n    protected handleOverlayClick(outsideClick: boolean) {\n        if (!outsideClick) return;\n        return this.args.close();\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\" <div class=\\\"ember-movenium-modal-content {{if @bodyClass @bodyClass ''}}\\\">\\n    {{yield}}\\n</div>\", {\"contents\":\" <div class=\\\"ember-movenium-modal-content {{if @bodyClass @bodyClass ''}}\\\">\\n    {{yield}}\\n</div>\",\"moduleName\":\"tt4/components/addon/modal/body.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/modal/body.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-modal-footer {{if @footerClass @footerClass ''}}\\\">\\n    {{yield}}\\n</div>\", {\"contents\":\"<div class=\\\"ember-movenium-modal-footer {{if @footerClass @footerClass ''}}\\\">\\n    {{yield}}\\n</div>\",\"moduleName\":\"tt4/components/addon/modal/footer.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/modal/footer.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-modal-header {{if @headerClass @headerClass ''}}\\\">\\n    <div class=\\\"flex-header\\\">\\n        {{yield}}\\n    </div>\\n    {{#unless @hideClose}}\\n        <Addon::Icons::Close @class=\\\"modal-close-icon\\\" @onClick={{fn @close}} />\\n    {{/unless}}\\n</div>\\n\\n\", {\"contents\":\"<div class=\\\"ember-movenium-modal-header {{if @headerClass @headerClass ''}}\\\">\\n    <div class=\\\"flex-header\\\">\\n        {{yield}}\\n    </div>\\n    {{#unless @hideClose}}\\n        <Addon::Icons::Close @class=\\\"modal-close-icon\\\" @onClick={{fn @close}} />\\n    {{/unless}}\\n</div>\\n\\n\",\"moduleName\":\"tt4/components/addon/modal/header.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/modal/header.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{! template-lint-disable no-bare-strings }}\\n{{!-- PAGINATION --}}\\n<nav class='pagination-lg pagination-centered'>\\n    {{#if this.showPagination}}\\n        <ul class=\\\"pagination {{if (is-equal this.position \\\"top\\\") \\\"top-pagination justify-content-center\\\"}}\\\">\\n            {{#if this.hasPreviousPage}}\\n                <li class={{if this.hasPreviousPage '' 'disabled'}}>\\n                    <span role=\\\"button\\\" {{on 'click' this.previousPage}} aria-label=\\\"Previous\\\" aria-hidden=\\\"true\\\">&laquo;</span>\\n                </li>\\n            {{/if}}\\n            {{#each this.pages as |page|}}\\n                <li class={{if (is-equal page this.currentPage) 'active'}}>\\n                    <span role=\\\"button\\\" {{on 'click' (fn this.changePage page)}}>{{page}}</span>\\n                </li>\\n            {{/each}}\\n            {{#if this.showCurrentpageOverLimit}}\\n                <li class=\\\"active\\\">\\n                    <span>{{this.currentPage}}</span>\\n                </li>\\n            {{/if}}\\n            {{#if (or this.queryLimitFull this.hasNextPage)}}\\n                <li class={{if (or this.queryLimitFull this.hasNextPage) '' 'disabled'}}>\\n                    <span role=\\\"button\\\" {{on 'click' this.nextPage}} aria-label=\\\"Next\\\" aria-hidden=\\\"true\\\">&raquo;</span>\\n                </li>\\n            {{/if}}\\n        </ul>\\n    {{/if}}\\n</nav>\", {\"contents\":\"{{! template-lint-disable no-bare-strings }}\\n{{!-- PAGINATION --}}\\n<nav class='pagination-lg pagination-centered'>\\n    {{#if this.showPagination}}\\n        <ul class=\\\"pagination {{if (is-equal this.position \\\"top\\\") \\\"top-pagination justify-content-center\\\"}}\\\">\\n            {{#if this.hasPreviousPage}}\\n                <li class={{if this.hasPreviousPage '' 'disabled'}}>\\n                    <span role=\\\"button\\\" {{on 'click' this.previousPage}} aria-label=\\\"Previous\\\" aria-hidden=\\\"true\\\">&laquo;</span>\\n                </li>\\n            {{/if}}\\n            {{#each this.pages as |page|}}\\n                <li class={{if (is-equal page this.currentPage) 'active'}}>\\n                    <span role=\\\"button\\\" {{on 'click' (fn this.changePage page)}}>{{page}}</span>\\n                </li>\\n            {{/each}}\\n            {{#if this.showCurrentpageOverLimit}}\\n                <li class=\\\"active\\\">\\n                    <span>{{this.currentPage}}</span>\\n                </li>\\n            {{/if}}\\n            {{#if (or this.queryLimitFull this.hasNextPage)}}\\n                <li class={{if (or this.queryLimitFull this.hasNextPage) '' 'disabled'}}>\\n                    <span role=\\\"button\\\" {{on 'click' this.nextPage}} aria-label=\\\"Next\\\" aria-hidden=\\\"true\\\">&raquo;</span>\\n                </li>\\n            {{/if}}\\n        </ul>\\n    {{/if}}\\n</nav>\",\"moduleName\":\"tt4/components/addon/pagi-nation.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/pagi-nation.hbs\"}});\nimport Component from '@glimmer/component';\nimport { gt } from '@ember/object/computed';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class PagiNateComponent extends Component {\n    constructor() {\n        super(...arguments);\n        this.currentPage = 1;\n    }\n\n    @tracked currentPage;\n\n    @gt('currentPage', 1) hasPreviousPage;\n    @gt('args.pageCount', 1) showPagination;\n\n    get pageCount() {\n        return this.args.pageCount;\n    }\n\n    get pages() {\n        let end, limiter, middle, midpoint, pages, ref, ref2, results, results1, start;\n        let pageCount = this.pageCount;\n        limiter = function (item) {\n            return item >= 1 && item <= pageCount;\n        };\n        start = [1, 2, 3, 4].filter(limiter);\n        end = function () {\n            results = [];\n            for (\n                var j = (ref = pageCount - 3), ref1 = pageCount + 1;\n                ref <= ref1 ? j < ref1 : j > ref1;\n                ref <= ref1 ? j++ : j--\n            ) {\n                results.push(j);\n            }\n            return results;\n        }\n            .apply(this)\n            .filter(limiter);\n        pages = this.union(start, end);\n        midpoint = this.currentPage;\n        if (this.currentPage < 8) {\n            midpoint = 8;\n        }\n        if (this.currentPage + 8 > pageCount) {\n            midpoint = pageCount - 8;\n        }\n        middle = function () {\n            results1 = [];\n            for (\n                var k = (ref2 = midpoint - 3), ref3 = midpoint + 4;\n                ref2 <= ref3 ? k < ref3 : k > ref3;\n                ref2 <= ref3 ? k++ : k--\n            ) {\n                results1.push(k);\n            }\n            return results1;\n        }\n            .apply(this)\n            .filter(limiter);\n        pages = this.union(pages, middle);\n        return this.fillCaps(pages);\n    }\n\n    get showCurrentpageOverLimit() {\n        return this.queryLimitFull && this.currentPage !== this.pageCount && !this.hasNextPage;\n    }\n\n    get hasNextPage() {\n        return this.currentPage < this.pageCount;\n    }\n\n    fillCaps(array) {\n        let break_indexes, i, j, last, len, ref;\n        last = 0;\n        break_indexes = [];\n        array.forEach(function (val, key) {\n            if (last + 1 !== val) {\n                break_indexes.push([key, last + 2 === val ? last + 1 : '...']);\n            }\n            return (last = val);\n        });\n        ref = break_indexes.reverse();\n        for (j = 0, len = ref.length; j < len; j++) {\n            i = ref[j];\n            array.splice(i[0], 0, i[1]);\n        }\n        return array;\n    }\n\n    union(arr1, arr2) {\n        var onlyUnique, sortNumber;\n        onlyUnique = function (value, index, self) {\n            return self.indexOf(value) === index;\n        };\n        sortNumber = function (a, b) {\n            return a - b;\n        };\n        return arr1.concat(arr2).filter(onlyUnique).sort(sortNumber);\n    }\n\n    @action\n    nextPage() {\n        this.currentPage = parseInt(this.currentPage, 10) + 1;\n        if (this.args.pageChange) {\n            return this.args.pageChange(this.currentPage);\n        }\n    }\n\n    @action\n    previousPage() {\n        this.currentPage = parseInt(this.currentPage, 10) - 1;\n        if (this.args.pageChange) {\n            return this.args.pageChange(this.currentPage);\n        }\n    }\n\n    @action\n    changePage(page) {\n        if (page === '...') {\n            return;\n        }\n        this.currentPage = page;\n\n        if (this.args.pageChange) {\n            return this.args.pageChange(this.currentPage);\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\" {{!-- template-lint-disable--}}\\n <div class=\\\"center\\\">\\n    <svg x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 128 128\\\" stroke=\\\"#000\\\" stroke-width=\\\"3\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\">\\n        <path id=\\\"body\\\">\\n            <animate attributeName=\\\"fill\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"\\n                #ff8d8b;\\n                #fed689;\\n                #88ff89;\\n                #87ffff;\\n                #8bb5fe;\\n                #d78cff;\\n                #ff8cff;\\n                #ff68f7;\\n                #fe6cb7;\\n                #ff6968;\\n                #ff8d8b\\n            \\\"/>\\n            <animate attributeName=\\\"d\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"\\n                M67.1,109.5c-9.6,0-23.6-8.8-23.6-24c0-12.1,17.8-41,37.5-41c15.6,0,23.3,10.6,25.1,20.5 c1.9,10.7,3.9,8.2,3.9,19.5c0,8.2-3.8,17-3.8,22.3c0,3.9,1.4,7.4,2.9,10.5c1.7,3.5,2.4,6.6,2.4,9.2H9.5c0-13.7,10.8-14,21.1-23 c5.6-4.9,11-12.4,14.5-26;\\n                M56.1,107.5c-9.6,0-24.6-13.8-24.6-29c0-16.2,13-42,33.5-42c17.8,0,22.3,11.6,26.1,22.5 c3.6,10.3,9.9,9.2,9.9,20.5c0,8.2-1.8,7-1.8,12.3c0,4.5,3.4,8.2,6.4,14.1c2.5,4.8,4.8,11.2,4.8,20.6h-99c0-12.1,7.2-17.6,14.7-24.3 c3.2-2.9,6.5-5.9,9.2-9.8;\\n                M45.1,109.5c-5.5-0.2-27.6-8.4-27.6-27c0-17.9,14.8-42,32.5-42c15.4,0,24,10.4,26.1,21.5 c1.3,6.7,9.9,9.8,9.9,21.5c0,8.2-0.8,6-0.8,11.3c0,7.7,12.8,9,20.8,15c7.7,5.8,15.5,16.7,15.5,16.7h-110c0-4.8,1.7-11.3,5-16 c3.2-4.5,4.5-8.3,5-15;\\n                M36,120c-5.5-0.2-28.5-11.9-28.5-30.5c0-16.2,12.5-42,33-42c17.8,0,21.8,9.6,25.6,20.5 C69.7,78.3,76,78.2,76,89.5c0,8.2-0.8,4-0.8,9.3c0,5.9,16.5,7.8,28.4,15.9c8,5.5,17.9,11.8,17.9,11.8h-110c0-2.1-1.2-5.2-1.9-14.5 c-0.3-3.6-0.5-8.1-0.5-13.9;\\n                M37,119.5c-15,0.1-33.5-12.7-33.5-30C3.5,73.3,16,47,36.5,47c17.8,0,22.8,11,26,22 C65.6,79.4,73,79.2,73,90.5c0,4-1.8,6.6-1.8,8.3c0,5.9,14.2,6.4,26.4,15.9c7.7,6,13.9,11.8,13.9,11.8H7.5c-1.2-3.4-1.8-7.3-1.9-11.2 c-0.2-5.1,0.3-10.1,0.9-13.7;\\n                M40.5,121.5c-12.6,0-30-13.4-30-29C10.5,76.3,23,53,43.5,53c14.5,0,22.8,9.6,25,22 c1.2,6.9,10,9.2,10,20.5c0,4,0,5.6,0,7.3c0,4.9,6.1,7.5,11.2,11.9c5.8,5,7.2,11.8,7.2,11.8H8.5c0-1.5-0.6-6.1,0.4-11.8 c0.6-3.5,1.9-7.5,4.3-11.6;\\n                M48.5,121.5c-12.6,0-25-6.3-25-18c0-16.2,13.7-47,36-47c15.6,0,24.8,9.1,27,21.5 c1.2,6.9,7,9.2,7,18.5c0,9.5-4,11-4,22c0,4.1,0.5,5,1,6c0.5,1.2,1,2,1,2h-81c0-5.3,3.1-8.3,6.3-11.5c2.6-2.6,5.4-5.3,6.7-9.5;\\n                M68.5,121.5c-12.6,0-33-5.8-33-23c0-9.2,11.8-36,37-36c15.6,0,25.8,8.1,28,20.5 c1.2,6.9,4,6.2,4,15.5c0,9.5-5,15.1-5,21c0,1.9,1,2.3,1,5c0,1.2,0,2,0,2h-91c0.5-7.6,7.1-11.1,13.7-15.7c4.9-3.4,9.9-7.5,12.3-14.3;\\n                M73.5,117.5c-12.6,0-30-6.2-30-25c0-14.2,20.9-37,38-37c17.6,0,25.8,11.1,28,23.5 c1.2,6.9,3,7.2,3,16.5c0,12.1-6,16.1-6,22c0,4.2,2,5.3,2,8c0,1.2,0,1,0,1H7.5c2.1-9.4,10.4-13.3,19.2-19.4 c7.1-5,14.4-11.5,18.8-23.6;\\n                M80.5,115.5c-12.6,0-32-9.2-32-28c0-14.2,22.9-35,40-35c17.6,0,25.8,12.1,28,24.5 c1.2,6.9,3,6.2,3,15.5c0,12.1-6,19.1-6,25c0,4.2,2,5.3,2,8c0,1.2,0,1,0,1h-102c2.3-8.7,11.6-11.7,20.8-20.1 c5.3-4.8,10.5-11.4,14.2-21.9;\\n                M67.1,109.5c-9.6,0-23.6-8.8-23.6-24c0-12.1,17.8-41,37.5-41c15.6,0,23.3,10.6,25.1,20.5 c1.9,10.7,3.9,8.2,3.9,19.5c0,8.2-3.8,17-3.8,22.3c0,3.9,1.4,7.4,2.9,10.5c1.7,3.5,2.4,6.6,2.4,9.2H9.5c0-13.7,10.8-14,21.1-23 c5.6-4.9,11-12.4,14.5-26\\n            \\\"/>\\n        </path>\\n        <path id=\\\"beak\\\" fill=\\\"#7b8c68\\\">\\n            <animate attributeName=\\\"d\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"\\n                M78.29,70c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S78.29,85.5,78.29,70Z;\\n                M62.29,64c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S62.29,79.5,62.29,64Z;\\n                M48.29,67c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S48.29,82.5,48.29,67Z;\\n                M36.29,73c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S36.29,88.5,36.29,73Z;\\n                M35.29,75c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S35.29,90.5,35.29,75Z;\\n                M41.29,81c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S41.29,96.5,41.29,81Z;\\n                M59.29,84c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S59.29,99.5,59.29,84Z;\\n                M72.29,89c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S72.29,104.5,72.29,89Z;\\n                M80.29,82c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S80.29,97.5,80.29,82Z;\\n                M87.29,78c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S87.29,93.5,87.29,78Z;\\n                M78.29,70c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S78.29,85.5,78.29,70Z\\n            \\\"/>\\n        </path>\\n        <ellipse id=\\\"eye-right\\\" rx=\\\"3\\\" ry=\\\"4\\\">\\n            <animate attributeName=\\\"cx\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"100;84;70;58;57;63;81;94;102;109;100\\\"/>\\n            <animate attributeName=\\\"cy\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"62;56;59;65;67;73;76;81;74;70;62\\\"/>\\n        </ellipse>\\n        <ellipse id=\\\"eye-left\\\" rx=\\\"3\\\" ry=\\\"4\\\">\\n            <animate attributeName=\\\"cx\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"67.5;51.5;37.5;25.5;24.5;30.5;48.5;61.5;69.5;76.5;67.5\\\"/>\\n            <animate attributeName=\\\"cy\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"62;56;59;65;67;73;76;81;74;70;62\\\"/>\\n        </ellipse>\\n    </svg>\\n    <br>\\n    {{#unless @hideSpeedSlider}}\\n        <input style=\\\"width:10vw;display:block;margin:auto;\\\" type=\\\"range\\\" min=\\\"200\\\" max=\\\"2000\\\" value={{this.value}} step=\\\"1\\\" id=\\\"animationDuration\\\" onchange={{this.updateDuration}} oninput={{this.updateDuration}}>\\n    {{/unless}}\\n</div>\", {\"contents\":\" {{!-- template-lint-disable--}}\\n <div class=\\\"center\\\">\\n    <svg x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 128 128\\\" stroke=\\\"#000\\\" stroke-width=\\\"3\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\">\\n        <path id=\\\"body\\\">\\n            <animate attributeName=\\\"fill\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"\\n                #ff8d8b;\\n                #fed689;\\n                #88ff89;\\n                #87ffff;\\n                #8bb5fe;\\n                #d78cff;\\n                #ff8cff;\\n                #ff68f7;\\n                #fe6cb7;\\n                #ff6968;\\n                #ff8d8b\\n            \\\"/>\\n            <animate attributeName=\\\"d\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"\\n                M67.1,109.5c-9.6,0-23.6-8.8-23.6-24c0-12.1,17.8-41,37.5-41c15.6,0,23.3,10.6,25.1,20.5 c1.9,10.7,3.9,8.2,3.9,19.5c0,8.2-3.8,17-3.8,22.3c0,3.9,1.4,7.4,2.9,10.5c1.7,3.5,2.4,6.6,2.4,9.2H9.5c0-13.7,10.8-14,21.1-23 c5.6-4.9,11-12.4,14.5-26;\\n                M56.1,107.5c-9.6,0-24.6-13.8-24.6-29c0-16.2,13-42,33.5-42c17.8,0,22.3,11.6,26.1,22.5 c3.6,10.3,9.9,9.2,9.9,20.5c0,8.2-1.8,7-1.8,12.3c0,4.5,3.4,8.2,6.4,14.1c2.5,4.8,4.8,11.2,4.8,20.6h-99c0-12.1,7.2-17.6,14.7-24.3 c3.2-2.9,6.5-5.9,9.2-9.8;\\n                M45.1,109.5c-5.5-0.2-27.6-8.4-27.6-27c0-17.9,14.8-42,32.5-42c15.4,0,24,10.4,26.1,21.5 c1.3,6.7,9.9,9.8,9.9,21.5c0,8.2-0.8,6-0.8,11.3c0,7.7,12.8,9,20.8,15c7.7,5.8,15.5,16.7,15.5,16.7h-110c0-4.8,1.7-11.3,5-16 c3.2-4.5,4.5-8.3,5-15;\\n                M36,120c-5.5-0.2-28.5-11.9-28.5-30.5c0-16.2,12.5-42,33-42c17.8,0,21.8,9.6,25.6,20.5 C69.7,78.3,76,78.2,76,89.5c0,8.2-0.8,4-0.8,9.3c0,5.9,16.5,7.8,28.4,15.9c8,5.5,17.9,11.8,17.9,11.8h-110c0-2.1-1.2-5.2-1.9-14.5 c-0.3-3.6-0.5-8.1-0.5-13.9;\\n                M37,119.5c-15,0.1-33.5-12.7-33.5-30C3.5,73.3,16,47,36.5,47c17.8,0,22.8,11,26,22 C65.6,79.4,73,79.2,73,90.5c0,4-1.8,6.6-1.8,8.3c0,5.9,14.2,6.4,26.4,15.9c7.7,6,13.9,11.8,13.9,11.8H7.5c-1.2-3.4-1.8-7.3-1.9-11.2 c-0.2-5.1,0.3-10.1,0.9-13.7;\\n                M40.5,121.5c-12.6,0-30-13.4-30-29C10.5,76.3,23,53,43.5,53c14.5,0,22.8,9.6,25,22 c1.2,6.9,10,9.2,10,20.5c0,4,0,5.6,0,7.3c0,4.9,6.1,7.5,11.2,11.9c5.8,5,7.2,11.8,7.2,11.8H8.5c0-1.5-0.6-6.1,0.4-11.8 c0.6-3.5,1.9-7.5,4.3-11.6;\\n                M48.5,121.5c-12.6,0-25-6.3-25-18c0-16.2,13.7-47,36-47c15.6,0,24.8,9.1,27,21.5 c1.2,6.9,7,9.2,7,18.5c0,9.5-4,11-4,22c0,4.1,0.5,5,1,6c0.5,1.2,1,2,1,2h-81c0-5.3,3.1-8.3,6.3-11.5c2.6-2.6,5.4-5.3,6.7-9.5;\\n                M68.5,121.5c-12.6,0-33-5.8-33-23c0-9.2,11.8-36,37-36c15.6,0,25.8,8.1,28,20.5 c1.2,6.9,4,6.2,4,15.5c0,9.5-5,15.1-5,21c0,1.9,1,2.3,1,5c0,1.2,0,2,0,2h-91c0.5-7.6,7.1-11.1,13.7-15.7c4.9-3.4,9.9-7.5,12.3-14.3;\\n                M73.5,117.5c-12.6,0-30-6.2-30-25c0-14.2,20.9-37,38-37c17.6,0,25.8,11.1,28,23.5 c1.2,6.9,3,7.2,3,16.5c0,12.1-6,16.1-6,22c0,4.2,2,5.3,2,8c0,1.2,0,1,0,1H7.5c2.1-9.4,10.4-13.3,19.2-19.4 c7.1-5,14.4-11.5,18.8-23.6;\\n                M80.5,115.5c-12.6,0-32-9.2-32-28c0-14.2,22.9-35,40-35c17.6,0,25.8,12.1,28,24.5 c1.2,6.9,3,6.2,3,15.5c0,12.1-6,19.1-6,25c0,4.2,2,5.3,2,8c0,1.2,0,1,0,1h-102c2.3-8.7,11.6-11.7,20.8-20.1 c5.3-4.8,10.5-11.4,14.2-21.9;\\n                M67.1,109.5c-9.6,0-23.6-8.8-23.6-24c0-12.1,17.8-41,37.5-41c15.6,0,23.3,10.6,25.1,20.5 c1.9,10.7,3.9,8.2,3.9,19.5c0,8.2-3.8,17-3.8,22.3c0,3.9,1.4,7.4,2.9,10.5c1.7,3.5,2.4,6.6,2.4,9.2H9.5c0-13.7,10.8-14,21.1-23 c5.6-4.9,11-12.4,14.5-26\\n            \\\"/>\\n        </path>\\n        <path id=\\\"beak\\\" fill=\\\"#7b8c68\\\">\\n            <animate attributeName=\\\"d\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"\\n                M78.29,70c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S78.29,85.5,78.29,70Z;\\n                M62.29,64c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S62.29,79.5,62.29,64Z;\\n                M48.29,67c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S48.29,82.5,48.29,67Z;\\n                M36.29,73c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S36.29,88.5,36.29,73Z;\\n                M35.29,75c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S35.29,90.5,35.29,75Z;\\n                M41.29,81c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S41.29,96.5,41.29,81Z;\\n                M59.29,84c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S59.29,99.5,59.29,84Z;\\n                M72.29,89c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S72.29,104.5,72.29,89Z;\\n                M80.29,82c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S80.29,97.5,80.29,82Z;\\n                M87.29,78c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S87.29,93.5,87.29,78Z;\\n                M78.29,70c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S78.29,85.5,78.29,70Z\\n            \\\"/>\\n        </path>\\n        <ellipse id=\\\"eye-right\\\" rx=\\\"3\\\" ry=\\\"4\\\">\\n            <animate attributeName=\\\"cx\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"100;84;70;58;57;63;81;94;102;109;100\\\"/>\\n            <animate attributeName=\\\"cy\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"62;56;59;65;67;73;76;81;74;70;62\\\"/>\\n        </ellipse>\\n        <ellipse id=\\\"eye-left\\\" rx=\\\"3\\\" ry=\\\"4\\\">\\n            <animate attributeName=\\\"cx\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"67.5;51.5;37.5;25.5;24.5;30.5;48.5;61.5;69.5;76.5;67.5\\\"/>\\n            <animate attributeName=\\\"cy\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"62;56;59;65;67;73;76;81;74;70;62\\\"/>\\n        </ellipse>\\n    </svg>\\n    <br>\\n    {{#unless @hideSpeedSlider}}\\n        <input style=\\\"width:10vw;display:block;margin:auto;\\\" type=\\\"range\\\" min=\\\"200\\\" max=\\\"2000\\\" value={{this.value}} step=\\\"1\\\" id=\\\"animationDuration\\\" onchange={{this.updateDuration}} oninput={{this.updateDuration}}>\\n    {{/unless}}\\n</div>\",\"moduleName\":\"tt4/components/addon/party-parrot.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/party-parrot.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\nexport default class PartyParrotComponent extends Component {\n    @tracked protected value: number = 500;\n    @tracked protected dur: string = '500ms';\n\n    @action\n    protected updateDuration(event: any) {\n        const newVal = Math.abs(event.target.value);\n        this.dur = 2200 - newVal + 'ms';\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Addon::Wizard @pages={{4}} @close={{fn @close}} @currentPage={{this.currentPage}} @pageChange={{fn (mut this.currentPage)}} as |W|>\\n    <W.Header>{{t 'report-template-wizard.header'}}</W.Header>\\n    <W.Steps @useSubmenus={{true}} @pageNames={{this.submenus}} @infoText={{this.infoText}} @isDisabled={{this.isDisabled}} />\\n    <W.Content>\\n        {{component this.currentPageComponent\\n        collectValuesToObject=(fn this.collectValuesToObject)\\n        removeValuesFromObject=(fn this.removeValuesFromObject)\\n        moveValuesInObject=(fn this.moveValuesInObject)\\n        setFilterOrder=(fn this.setFilterOrder)\\n        values=this.values\\n        columns=@columns\\n        form=@form\\n        mandatoryFilters=@filter\\n        errorEmpty=this.isDisabled\\n        setValues=(fn this.setValues)\\n        reorderFilters=(fn this.reorderFilters)\\n        userLevelOptions=this.userLevelOptions\\n        additionalFilters=@additionalFilters\\n        }}\\n    </W.Content>\\n    <W.Buttons @done={{fn @saveTemplate this.values}} @isDisabled={{this.isDisabled}} />\\n</Addon::Wizard>\\n\", {\"contents\":\"<Addon::Wizard @pages={{4}} @close={{fn @close}} @currentPage={{this.currentPage}} @pageChange={{fn (mut this.currentPage)}} as |W|>\\n    <W.Header>{{t 'report-template-wizard.header'}}</W.Header>\\n    <W.Steps @useSubmenus={{true}} @pageNames={{this.submenus}} @infoText={{this.infoText}} @isDisabled={{this.isDisabled}} />\\n    <W.Content>\\n        {{component this.currentPageComponent\\n        collectValuesToObject=(fn this.collectValuesToObject)\\n        removeValuesFromObject=(fn this.removeValuesFromObject)\\n        moveValuesInObject=(fn this.moveValuesInObject)\\n        setFilterOrder=(fn this.setFilterOrder)\\n        values=this.values\\n        columns=@columns\\n        form=@form\\n        mandatoryFilters=@filter\\n        errorEmpty=this.isDisabled\\n        setValues=(fn this.setValues)\\n        reorderFilters=(fn this.reorderFilters)\\n        userLevelOptions=this.userLevelOptions\\n        additionalFilters=@additionalFilters\\n        }}\\n    </W.Content>\\n    <W.Buttons @done={{fn @saveTemplate this.values}} @isDisabled={{this.isDisabled}} />\\n</Addon::Wizard>\\n\",\"moduleName\":\"tt4/components/addon/report-template-wizard.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/report-template-wizard.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { set, action } from '@ember/object';\nimport { A, isArray } from '@ember/array';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\nimport { htmlSafe } from '@ember/template';\n/* istanbul ignore next */\nexport default class ReportTemplateWizardComponent extends Component {\n    @service intl;\n    @service forms;\n    @service session;\n\n    @tracked currentPage;\n    @tracked values;\n    @tracked columns;\n    @tracked filters;\n\n    get currentPageComponent() {\n        return 'addon/report-template-wizard/page' + this.currentPage;\n    }\n\n    get infoText() {\n        return htmlSafe(this.intl.t('report-template-wizard.page' + this.currentPage));\n    }\n\n    get isDisabled() {\n        return isEmpty(this.values.name);\n    }\n\n    get userLevelOptions() {\n        const userlevelField = this.forms.fieldArray('user').findBy('name', 'userlevel');\n\n        return userlevelField.options.map((option) => {\n            if (parseInt(option, 10) > 9) {\n                return {\n                    id: parseInt(option, 10),\n                    name: option.substring(2),\n                };\n            } else {\n                const id = parseInt(option, 10);\n                return {\n                    id,\n                    name: this.intl.t('user.userlevel.' + id),\n                };\n            }\n        });\n    }\n\n    constructor() {\n        super(...arguments);\n        this.submenus = ['general', 'sums', 'columns', 'filters'];\n        this.currentPage = 1;\n        const defaultFilters = this.getDefaultFilters(this.args.filter);\n\n        if (this.args.templateValues) {\n            this.values = {\n                name: this.args.templateValues.name,\n                limit: this.args.templateValues.limit,\n                sums: JSON.parse(this.args.templateValues.sums),\n                sumType: this.args.templateValues.sumType,\n                columns: JSON.parse(this.args.templateValues.columns),\n                filters: JSON.parse(this.args.templateValues.filters),\n                userlevels: this.args.templateValues.userlevels,\n            };\n        } else {\n            this.values = {\n                name: null,\n                limit: null,\n                sums: A([]),\n                sumType: 'nosum',\n                columns: A([]),\n                filters: defaultFilters,\n                userlevels: null,\n            };\n        }\n    }\n\n    @action\n    collectValuesToObject(name, value, selected = null) {\n        switch (name) {\n            case 'columns':\n                this.values.columns.pushObject(value);\n                break;\n            case 'sums':\n                this.values.sums.pushObject(value);\n                break;\n            case 'filters':\n                if (selected) {\n                    if (isArray(selected)) selected = selected.map((sel) => sel.id).join(',');\n                    this.values.filters[value] = selected.id ? selected.id : selected;\n                } else {\n                    this.values.filters[value] = null;\n                }\n                break;\n            case 'sumType':\n                set(this, 'values.sumType', value);\n                if (value === 'nosum') set(this, 'values.sums', A([]));\n                break;\n            default:\n                set(this, 'values.' + name, value);\n        }\n        this.values = this.values;\n    }\n\n    @action\n    removeValuesFromObject(name, value) {\n        switch (name) {\n            case 'columns':\n                this.values.columns.removeObject(value);\n                break;\n            case 'sums':\n                this.values.sums.removeObject(value);\n                break;\n            case 'filters':\n                delete this.values.filters[value];\n                break;\n            default:\n                set(this, 'values.' + name, null);\n        }\n        this.values = this.values;\n    }\n\n    @action\n    moveValuesInObject(col, offset) {\n        let index = this.values.columns.indexOf(col);\n        this.values.columns.removeObject(col);\n        let newIndex = index + offset;\n        newIndex =\n            newIndex > this.values.columns.length\n                ? 0\n                : newIndex < 0\n                  ? this.values.columns.length\n                  : newIndex;\n        this.values.columns.insertAt(newIndex, col);\n        this.values = this.values;\n    }\n\n    @action\n    setFilterOrder(voluntary, mandatory) {\n        const objArray = Object.values(mandatory).concat(Object.values(voluntary));\n        let order = [];\n        objArray.forEach((rows) => {\n            rows.forEach((row) => {\n                order.pushObject({ form: row.form, name: row.name });\n            });\n        });\n        set(this, 'values.filterOrder', order);\n    }\n\n    @action\n    setValues(values, type) {\n        set(this, 'values.' + type, values);\n        this.values = this.values;\n    }\n\n    @action\n    reorderFilters(what, to) {\n        let moving = {};\n\n        var i = 0;\n        var spliceIndex = null;\n        let indexOfDeleted = null;\n\n        for (const [filterName, filterValue] of Object.entries(this.values.filters)) {\n            let filterNameIndex = filterName.split('.').length > 2 ? 1 : 0;\n            // check where to insert filters that we are moving\n            if (\n                (filterName.indexOf('.') > -1 && filterName.split('.')[filterNameIndex] == to) ||\n                (to == 'current' && filterName.indexOf('.') == -1 && !spliceIndex)\n            ) {\n                spliceIndex = i;\n            }\n            // remove all filters that we are moving\n            if (\n                (filterName.indexOf('.') > -1 && filterName.split('.')[filterNameIndex] == what) ||\n                (what == 'current' && filterName.indexOf('.') == -1)\n            ) {\n                moving[filterName] = filterValue;\n                delete this.values.filters[filterName];\n                indexOfDeleted = i;\n            }\n            i++;\n        }\n        // make arrays of objects so we can use splice to merge them\n        let filtersArr = Object.entries(this.values.filters);\n        let movingArr = Object.entries(moving);\n\n        spliceIndex = indexOfDeleted < spliceIndex ? spliceIndex - 1 : spliceIndex;\n        if (spliceIndex < 0) spliceIndex = 0;\n\n        filtersArr.splice(spliceIndex, 0, ...movingArr);\n\n        // make object from array\n        this.values.filters = Object.fromEntries(filtersArr);\n        this.values = this.values;\n    }\n\n    getDefaultFilters(defaultFilters) {\n        if (!defaultFilters) return {};\n        Object.keys(defaultFilters).forEach((filter) => {\n            if (!this.forms.fieldExists(this.args.form, filter)) return;\n            const field = this.forms.field(this.args.form, filter);\n            if (field.type === 'date') defaultFilters[filter] = 'this_week';\n        });\n\n        return defaultFilters;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"\\n<div class=\\\"report-template-wizard-columns\\\">\\n    {{#if (eq @valueType \\\"sums\\\")}}\\n        <div class=\\\"radio-group\\\">\\n            <RadioButton @value=\\\"nosum\\\" @groupValue={{@sumType}} @changed={{fn @collectValuesToObject 'sumType'}}>\\n                <div class=\\\"inline sum-button\\\" data-anchor=\\\"template-wizard-nosum\\\">{{t \\\"report-template-wizard.no_sum\\\"}}</div>\\n            </RadioButton>\\n            <RadioButton @value=\\\"sumby\\\" @groupValue={{@sumType}} @changed={{fn @collectValuesToObject 'sumType'}}>\\n                <div class=\\\"inline sum-button\\\" data-anchor=\\\"template-wizard-sumby\\\">{{t \\\"report-template-wizard.sumby\\\"}}</div>\\n            </RadioButton>\\n        </div>\\n    {{/if}}\\n    <div class=\\\"wizard-column {{@valueType}} {{if this.isDisabled \\\"disabled\\\"}}\\\" data-anchor=\\\"template-wizard-not-selected-rows\\\">\\n        <h4>{{t (concat \\\"wizard-column.all-\\\" @valueType)}}</h4>\\n        {{#each (sort this.notSelectedColumns sortBy=\\\"translated_name\\\") as |col|}}\\n            <div class=\\\"flex-row\\\" data-anchor={{concat \\\"template-wizard-not-selected-\\\" col.name}}>\\n                <div role=\\\"button\\\" class=\\\"col\\\" onclick={{fn @collectValuesToObject @valueType col}}>{{col.translated_name}}</div>\\n            </div>\\n        {{/each}}\\n    </div>\\n\\n    <div class=\\\"wizard-column {{@valueType}} {{if this.isDisabled \\\"disabled\\\"}} selected-rows\\\" data-anchor=\\\"template-wizard-selected-sumby-rows\\\">\\n        <h4>{{t (concat \\\"wizard-column.selected-\\\" @valueType)}}</h4>\\n        {{#each @values as |col|}}\\n        <Addon::ReportTemplateWizard::DraggableItem @draggable={{true}} @draggablename={{col.external_type}} @dropped={{fn this.dropped}} @anchorName={{concat \\\"template-wizard-selected-sumby-\\\" col.name}}>\\n\\n            <div class=\\\"col\\\">\\n                <div class=\\\"drag\\\"><span class=\\\"move move-DragHandle\\\"></span></div>\\n                <div class=\\\"name\\\">{{col.translated_name}}</div>\\n                <div class=\\\"delete\\\"><span role=\\\"button\\\" class=\\\"move move-Delete\\\" onclick={{fn @removeValuesFromObject @valueType col}}></span></div>\\n            </div>\\n\\n        </Addon::ReportTemplateWizard::DraggableItem>\\n        {{else}}\\n        <div class=\\\"empty-placeholder\\\">\\n            <div class=\\\"empty-placeholder-title\\\">{{t \\\"report-template-wizard.no-selected-columns-title\\\"}}</div>\\n            <div class=\\\"empty-placeholder-subtitle\\\">{{t \\\"report-template-wizard.no-selected-columns-subtitle\\\"}}</div>\\n        </div>\\n        {{/each}}\\n    </div>\\n</div>\", {\"contents\":\"\\n<div class=\\\"report-template-wizard-columns\\\">\\n    {{#if (eq @valueType \\\"sums\\\")}}\\n        <div class=\\\"radio-group\\\">\\n            <RadioButton @value=\\\"nosum\\\" @groupValue={{@sumType}} @changed={{fn @collectValuesToObject 'sumType'}}>\\n                <div class=\\\"inline sum-button\\\" data-anchor=\\\"template-wizard-nosum\\\">{{t \\\"report-template-wizard.no_sum\\\"}}</div>\\n            </RadioButton>\\n            <RadioButton @value=\\\"sumby\\\" @groupValue={{@sumType}} @changed={{fn @collectValuesToObject 'sumType'}}>\\n                <div class=\\\"inline sum-button\\\" data-anchor=\\\"template-wizard-sumby\\\">{{t \\\"report-template-wizard.sumby\\\"}}</div>\\n            </RadioButton>\\n        </div>\\n    {{/if}}\\n    <div class=\\\"wizard-column {{@valueType}} {{if this.isDisabled \\\"disabled\\\"}}\\\" data-anchor=\\\"template-wizard-not-selected-rows\\\">\\n        <h4>{{t (concat \\\"wizard-column.all-\\\" @valueType)}}</h4>\\n        {{#each (sort this.notSelectedColumns sortBy=\\\"translated_name\\\") as |col|}}\\n            <div class=\\\"flex-row\\\" data-anchor={{concat \\\"template-wizard-not-selected-\\\" col.name}}>\\n                <div role=\\\"button\\\" class=\\\"col\\\" onclick={{fn @collectValuesToObject @valueType col}}>{{col.translated_name}}</div>\\n            </div>\\n        {{/each}}\\n    </div>\\n\\n    <div class=\\\"wizard-column {{@valueType}} {{if this.isDisabled \\\"disabled\\\"}} selected-rows\\\" data-anchor=\\\"template-wizard-selected-sumby-rows\\\">\\n        <h4>{{t (concat \\\"wizard-column.selected-\\\" @valueType)}}</h4>\\n        {{#each @values as |col|}}\\n        <Addon::ReportTemplateWizard::DraggableItem @draggable={{true}} @draggablename={{col.external_type}} @dropped={{fn this.dropped}} @anchorName={{concat \\\"template-wizard-selected-sumby-\\\" col.name}}>\\n\\n            <div class=\\\"col\\\">\\n                <div class=\\\"drag\\\"><span class=\\\"move move-DragHandle\\\"></span></div>\\n                <div class=\\\"name\\\">{{col.translated_name}}</div>\\n                <div class=\\\"delete\\\"><span role=\\\"button\\\" class=\\\"move move-Delete\\\" onclick={{fn @removeValuesFromObject @valueType col}}></span></div>\\n            </div>\\n\\n        </Addon::ReportTemplateWizard::DraggableItem>\\n        {{else}}\\n        <div class=\\\"empty-placeholder\\\">\\n            <div class=\\\"empty-placeholder-title\\\">{{t \\\"report-template-wizard.no-selected-columns-title\\\"}}</div>\\n            <div class=\\\"empty-placeholder-subtitle\\\">{{t \\\"report-template-wizard.no-selected-columns-subtitle\\\"}}</div>\\n        </div>\\n        {{/each}}\\n    </div>\\n</div>\",\"moduleName\":\"tt4/components/addon/report-template-wizard/column-selector.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/report-template-wizard/column-selector.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { isEmpty } from '@ember/utils';\n/* istanbul ignore next */\nexport default class ReportTemplateWizardColumnSelectorComponent extends Component {\n    get sumType() {\n        return this.args.sumType;\n    }\n\n    get notSelectedColumns() {\n        const groupableColumnsList = [\n            'date',\n            'number',\n            'hours',\n            'price',\n            'big_price',\n            'dropdown_values',\n            'dropdown_options',\n            'minutes',\n        ];\n        const groupByColumnsList = ['database', 'dropdown_values', 'dropdown_options', 'date'];\n\n        if (this.sumType === 'sumby' && this.args.valueType === 'columns') {\n            const allowColumnsInSums = this.args.sums.map((col) => col.external_type);\n            return this.args.columns.filter(\n                (col) =>\n                    (allowColumnsInSums.includes(col.external_type) ||\n                        groupableColumnsList.includes(col.type)) &&\n                    !this.args.values.findBy('external_type', col.external_type),\n            );\n        }\n        if (this.args.valueType === 'sums') {\n            return this.args.columns.filter(\n                (column) =>\n                    groupByColumnsList.includes(column.type) &&\n                    !this.args.values.findBy('external_type', column.external_type),\n            );\n        }\n        if (isEmpty(this.args.values)) return this.args.columns;\n        return this.args.columns.filter(\n            (column) => !this.args.values.findBy('external_type', column.external_type),\n        );\n    }\n\n    get isDisabled() {\n        return (\n            this.args.valueType === 'sums' &&\n            (this.sumType === 'nosum' || this.sumType === 'onlysum')\n        );\n    }\n\n    @action\n    dropped(to, what) {\n        let values = this.args.values;\n        var index1 = values.indexOf(values.findBy('external_type', what));\n        var index2 = values.indexOf(values.findBy('external_type', to));\n        var whatObj = values.findBy('external_type', what);\n        values.splice(index1, 1);\n        values.splice(index2, 0, whatObj);\n        this.args.setValues(values, this.sumType);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"draggable-item\\\" role=\\\"button\\\" data-anchor={{@anchorName}}\\n{{on \\\"dragstart\\\" this.dragHasStarted}}\\n{{on \\\"drop\\\" this.drop}}\\n{{on \\\"dragover\\\" this.dragOver}}\\n{{on \\\"dragleave\\\" this.dragLeave}}\\n{{on \\\"dragenter\\\" this.dragEnter}}\\ndraggable={{@draggable}}>\\n    <div class={{this.dragClass}}></div>\\n    {{yield}}\\n</div>\", {\"contents\":\"<div class=\\\"draggable-item\\\" role=\\\"button\\\" data-anchor={{@anchorName}}\\n{{on \\\"dragstart\\\" this.dragHasStarted}}\\n{{on \\\"drop\\\" this.drop}}\\n{{on \\\"dragover\\\" this.dragOver}}\\n{{on \\\"dragleave\\\" this.dragLeave}}\\n{{on \\\"dragenter\\\" this.dragEnter}}\\ndraggable={{@draggable}}>\\n    <div class={{this.dragClass}}></div>\\n    {{yield}}\\n</div>\",\"moduleName\":\"tt4/components/addon/report-template-wizard/draggable-item.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/report-template-wizard/draggable-item.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n/* istanbul ignore next */\nexport default class ReportTemplateWizardDraggableItemComponent extends Component {\n    @tracked draggable;\n    @tracked dragClass;\n\n    constructor() {\n        super(...arguments);\n        this.draggableName = this.args.draggablename;\n        this.dragClass = 'disabled';\n    }\n\n    @action\n    dragHasStarted(event) {\n        event.dataTransfer.setData('text/data', this.draggableName);\n    }\n\n    @action\n    drop(event) {\n        this.dragClass = 'inactive';\n        const data = event.dataTransfer.getData('text/data');\n        if (!data || data == this.draggableName) return;\n        this.args.dropped(this.draggableName, data, event);\n    }\n\n    @action\n    dragLeave(event) {\n        event.preventDefault();\n        this.dragClass = 'inactive';\n    }\n\n    @action\n    dragOver(event) {\n        event.preventDefault();\n        this.dragClass = 'active';\n    }\n\n    @action\n    dragEnter(event) {\n        event.preventDefault();\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#each-in @values as |form fields|}}\\n    <Addon::ReportTemplateWizard::DraggableItem @draggable={{@draggable}} @draggablename={{if (is-equal form @form) \\\"current\\\" form}} @dropped={{fn @dropped}} >\\n        <div class=\\\"col\\\">\\n            <div class=\\\"drag\\\"><span class=\\\"move move-DragHandle\\\"></span></div>\\n            <div class=\\\"name\\\">{{t (if (is-equal form @form) (concat \\\"form.\\\"@form) (concat \\\"report.\\\" @form \\\".\\\" form))}}</div>\\n        </div>\\n        {{#each fields as |field|}}\\n            <div class=\\\"filter-field\\\" data-anchor={{concat \\\"template-wizard-filter-\\\" field.name}}>\\n                <span class=\\\"filter-name\\\" title={{field.translated_name}}>{{field.translated_name}}:</span>\\n                {{#if  (or (eq field.type \\\"dropdown_values\\\") (eq field.type \\\"status\\\"))}}\\n                    <PowerSelect @selected={{field.selected}} @options={{field.options}} @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}} as |option|>\\n                        {{#if (eq field.type \\\"status\\\")}}\\n                            {{t (concat \\\"status.\\\" option)}}\\n                        {{else if field.options.form}}\\n                            {{t (concat form \\\".\\\" field.name \\\".\\\" option)}}\\n                        {{else}}\\n                            {{option}}\\n                        {{/if}}\\n                    </PowerSelect>\\n                {{else if (eq field.type 'date')}}\\n                    <PowerSelect @selected={{field.selected}} @options={{@dateRanges}} @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}} as |option|>\\n                        {{#if option.name}}{{option.name}}{{else}}{{option}}{{/if}}\\n                    </PowerSelect>\\n                {{else if (and (eq field.type 'database') (eq form @form))}}\\n                    <Addon::Fields::Multiselect\\n                        @form={{field.form}}\\n                        @name={{field.name}}\\n                        @options={{hash form=field.options.form fields=field.options.fields}}\\n                        @value={{field.selected}}\\n                        @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}}\\n                    />\\n                {{else}}\\n                    {{#if (includes field.name this.showEmptySelection)}}\\n                        <Addon::Fields::Database\\n                            @form={{field.form}}\\n                            @name={{field.name}}\\n                            @options={{hash form=field.options.form fields=field.options.fields}}\\n                            @value={{field.selected}}\\n                            @forceNormalDropdown={{true}}\\n                            @showEmptySelection={{true}}\\n                            @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}}\\n                        />\\n                    {{else}}\\n                        <Addon::Fields::Database\\n                            @form={{field.form}}\\n                            @name={{field.name}}\\n                            @options={{hash form=field.options.form fields=field.options.fields}}\\n                            @value={{field.selected}}\\n                            @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}}\\n                        />\\n                    {{/if}}\\n                {{/if}}\\n\\n                {{#if @showRemove}}\\n                    <span role=\\\"button\\\" class=\\\"trashcan-icon move move-Delete\\\" {{on 'click' (fn @removeAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name))}}></span>\\n                    {{else}}\\n                    <div class=\\\"trashcan-icon\\\"></div>\\n                {{/if}}\\n            </div>\\n        {{/each}}\\n    </Addon::ReportTemplateWizard::DraggableItem>\\n\\n{{/each-in}}\", {\"contents\":\"{{#each-in @values as |form fields|}}\\n    <Addon::ReportTemplateWizard::DraggableItem @draggable={{@draggable}} @draggablename={{if (is-equal form @form) \\\"current\\\" form}} @dropped={{fn @dropped}} >\\n        <div class=\\\"col\\\">\\n            <div class=\\\"drag\\\"><span class=\\\"move move-DragHandle\\\"></span></div>\\n            <div class=\\\"name\\\">{{t (if (is-equal form @form) (concat \\\"form.\\\"@form) (concat \\\"report.\\\" @form \\\".\\\" form))}}</div>\\n        </div>\\n        {{#each fields as |field|}}\\n            <div class=\\\"filter-field\\\" data-anchor={{concat \\\"template-wizard-filter-\\\" field.name}}>\\n                <span class=\\\"filter-name\\\" title={{field.translated_name}}>{{field.translated_name}}:</span>\\n                {{#if  (or (eq field.type \\\"dropdown_values\\\") (eq field.type \\\"status\\\"))}}\\n                    <PowerSelect @selected={{field.selected}} @options={{field.options}} @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}} as |option|>\\n                        {{#if (eq field.type \\\"status\\\")}}\\n                            {{t (concat \\\"status.\\\" option)}}\\n                        {{else if field.options.form}}\\n                            {{t (concat form \\\".\\\" field.name \\\".\\\" option)}}\\n                        {{else}}\\n                            {{option}}\\n                        {{/if}}\\n                    </PowerSelect>\\n                {{else if (eq field.type 'date')}}\\n                    <PowerSelect @selected={{field.selected}} @options={{@dateRanges}} @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}} as |option|>\\n                        {{#if option.name}}{{option.name}}{{else}}{{option}}{{/if}}\\n                    </PowerSelect>\\n                {{else if (and (eq field.type 'database') (eq form @form))}}\\n                    <Addon::Fields::Multiselect\\n                        @form={{field.form}}\\n                        @name={{field.name}}\\n                        @options={{hash form=field.options.form fields=field.options.fields}}\\n                        @value={{field.selected}}\\n                        @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}}\\n                    />\\n                {{else}}\\n                    {{#if (includes field.name this.showEmptySelection)}}\\n                        <Addon::Fields::Database\\n                            @form={{field.form}}\\n                            @name={{field.name}}\\n                            @options={{hash form=field.options.form fields=field.options.fields}}\\n                            @value={{field.selected}}\\n                            @forceNormalDropdown={{true}}\\n                            @showEmptySelection={{true}}\\n                            @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}}\\n                        />\\n                    {{else}}\\n                        <Addon::Fields::Database\\n                            @form={{field.form}}\\n                            @name={{field.name}}\\n                            @options={{hash form=field.options.form fields=field.options.fields}}\\n                            @value={{field.selected}}\\n                            @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}}\\n                        />\\n                    {{/if}}\\n                {{/if}}\\n\\n                {{#if @showRemove}}\\n                    <span role=\\\"button\\\" class=\\\"trashcan-icon move move-Delete\\\" {{on 'click' (fn @removeAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name))}}></span>\\n                    {{else}}\\n                    <div class=\\\"trashcan-icon\\\"></div>\\n                {{/if}}\\n            </div>\\n        {{/each}}\\n    </Addon::ReportTemplateWizard::DraggableItem>\\n\\n{{/each-in}}\",\"moduleName\":\"tt4/components/addon/report-template-wizard/filter-box.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/report-template-wizard/filter-box.hbs\"}});\nimport Component from '@glimmer/component';\n\nexport default class ReportTemplateWizardFilterBoxComponent extends Component {\n    showEmptySelection = ['worktimegroup'];\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"report-template-wizard-general\\\">\\n    <label>{{t \\\"report-template-wizard.template.name\\\"}}</label><sup><span class=\\\"glyphicon glyphicon-asterisk field-icon\\\"></span></sup>\\n    {{#if @errorEmpty}}<span class=\\\"text-danger pull-right\\\">{{t \\\"validation.error.mandatory\\\"}}</span>{{/if}}\\n    <Input @type=\\\"text\\\" @value={{@values.name}} @input={{fn @collectValuesToObject 'name' @values.name}} @class=\\\"form-control add-fields\\\" data-anchor=\\\"template-wizard-name-field\\\"/>\\n    {{#if (is-equal this.session.currentUser.userlevel \\\"5\\\")}}\\n        <Addon::BootstrapContainer @text={{t \\\"report-template-wizard.userlevels\\\"}} @anchorName=\\\"template-wizard-roles-field\\\" >\\n            <PowerSelectMultiple\\n                @class=\\\"form-control add-fields\\\"\\n                @searchEnabled={{false}}\\n                @options={{@userLevelOptions}}\\n                @selected={{@values.userlevels}}\\n                @onChange={{fn @collectValuesToObject 'userlevels'}} as |option|>\\n                {{option.name}}\\n            </PowerSelectMultiple>\\n        </Addon::BootstrapContainer>\\n    {{/if}}\\n\\n    <div class=\\\"rows-selector\\\">\\n        <label>{{t \\\"report-template-wizard.rowsperpage\\\"}}</label>\\n        <select class=\\\"form-control\\\" {{on 'change' this.setLimit}} data-anchor=\\\"template-wizard-rows-limit-field\\\">\\n            <option value={{25}} selected={{eq 25 @values.limit}}>{{25}} {{t \\\"template-wizard.rows-per-page\\\"}}</option>\\n            <option value={{50}} selected={{eq 50 @values.limit}}>{{50}} {{t \\\"template-wizard.rows-per-page\\\"}}</option>\\n            <option value={{100}} selected={{eq 100 @values.limit}}>{{100}} {{t \\\"template-wizard.rows-per-page\\\"}}</option>\\n        </select>\\n    </div>\\n</div>\\n\\n\", {\"contents\":\"<div class=\\\"report-template-wizard-general\\\">\\n    <label>{{t \\\"report-template-wizard.template.name\\\"}}</label><sup><span class=\\\"glyphicon glyphicon-asterisk field-icon\\\"></span></sup>\\n    {{#if @errorEmpty}}<span class=\\\"text-danger pull-right\\\">{{t \\\"validation.error.mandatory\\\"}}</span>{{/if}}\\n    <Input @type=\\\"text\\\" @value={{@values.name}} @input={{fn @collectValuesToObject 'name' @values.name}} @class=\\\"form-control add-fields\\\" data-anchor=\\\"template-wizard-name-field\\\"/>\\n    {{#if (is-equal this.session.currentUser.userlevel \\\"5\\\")}}\\n        <Addon::BootstrapContainer @text={{t \\\"report-template-wizard.userlevels\\\"}} @anchorName=\\\"template-wizard-roles-field\\\" >\\n            <PowerSelectMultiple\\n                @class=\\\"form-control add-fields\\\"\\n                @searchEnabled={{false}}\\n                @options={{@userLevelOptions}}\\n                @selected={{@values.userlevels}}\\n                @onChange={{fn @collectValuesToObject 'userlevels'}} as |option|>\\n                {{option.name}}\\n            </PowerSelectMultiple>\\n        </Addon::BootstrapContainer>\\n    {{/if}}\\n\\n    <div class=\\\"rows-selector\\\">\\n        <label>{{t \\\"report-template-wizard.rowsperpage\\\"}}</label>\\n        <select class=\\\"form-control\\\" {{on 'change' this.setLimit}} data-anchor=\\\"template-wizard-rows-limit-field\\\">\\n            <option value={{25}} selected={{eq 25 @values.limit}}>{{25}} {{t \\\"template-wizard.rows-per-page\\\"}}</option>\\n            <option value={{50}} selected={{eq 50 @values.limit}}>{{50}} {{t \\\"template-wizard.rows-per-page\\\"}}</option>\\n            <option value={{100}} selected={{eq 100 @values.limit}}>{{100}} {{t \\\"template-wizard.rows-per-page\\\"}}</option>\\n        </select>\\n    </div>\\n</div>\\n\\n\",\"moduleName\":\"tt4/components/addon/report-template-wizard/page1.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/report-template-wizard/page1.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\n/* istanbul ignore next */\nexport default class ReportTemplateWizardPage1Component extends Component {\n    @service session;\n\n    @action\n    setLimit(event) {\n        if (!event.target.value) return;\n        this.args.collectValuesToObject('limit', parseInt(event.target.value));\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Addon::ReportTemplateWizard::ColumnSelector\\n        @columns={{@columns}}\\n        @values={{@values.sums}}\\n        @sumType={{@values.sumType}}\\n        @valueType=\\\"sums\\\"\\n        @collectValuesToObject={{fn @collectValuesToObject}}\\n        @removeValuesFromObject={{fn @removeValuesFromObject}}\\n        @moveValuesInObject={{fn @moveValuesInObject}}\\n        @setValues={{fn @setValues}}\\n/>\", {\"contents\":\"<Addon::ReportTemplateWizard::ColumnSelector\\n        @columns={{@columns}}\\n        @values={{@values.sums}}\\n        @sumType={{@values.sumType}}\\n        @valueType=\\\"sums\\\"\\n        @collectValuesToObject={{fn @collectValuesToObject}}\\n        @removeValuesFromObject={{fn @removeValuesFromObject}}\\n        @moveValuesInObject={{fn @moveValuesInObject}}\\n        @setValues={{fn @setValues}}\\n/>\",\"moduleName\":\"tt4/components/addon/report-template-wizard/page2.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/report-template-wizard/page2.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Addon::ReportTemplateWizard::ColumnSelector\\n        @columns={{@columns}}\\n        @values={{@values.columns}}\\n        @sums={{@values.sums}}\\n        @sumType={{@values.sumType}}\\n        @valueType=\\\"columns\\\"\\n        @collectValuesToObject={{fn @collectValuesToObject}}\\n        @removeValuesFromObject={{fn @removeValuesFromObject}}\\n        @moveValuesInObject={{fn @moveValuesInObject}}\\n        @setValues={{fn @setValues}}\\n/>\", {\"contents\":\"<Addon::ReportTemplateWizard::ColumnSelector\\n        @columns={{@columns}}\\n        @values={{@values.columns}}\\n        @sums={{@values.sums}}\\n        @sumType={{@values.sumType}}\\n        @valueType=\\\"columns\\\"\\n        @collectValuesToObject={{fn @collectValuesToObject}}\\n        @removeValuesFromObject={{fn @removeValuesFromObject}}\\n        @moveValuesInObject={{fn @moveValuesInObject}}\\n        @setValues={{fn @setValues}}\\n/>\",\"moduleName\":\"tt4/components/addon/report-template-wizard/page3.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/report-template-wizard/page3.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"report-template-wizard-columns\\\">\\n    <div class=\\\"wizard-column\\\">\\n        <div class=\\\"all-filters-header\\\">\\n            <h4>{{t (concat \\\"wizard-column.all-filters\\\")}}</h4>\\n            <XToggle\\n                @theme='material'\\n                @value={{this.advancedMode}}\\n                @onToggle={{fn (mut this.advancedMode)}}\\n                @size='medium'\\n                @onLabel={{t \\\"general.advancedMode\\\"}}\\n                @offLabel=\\\"\\\"\\n                @showLabels={{true}}\\n                data-anchor=\\\"template-wizard-filters-advanced-mode\\\"\\n            />\\n        </div>\\n\\n        {{#each (sort this.filterArray sortBy=\\\"translated_name\\\") as |form|}}\\n            <div class=\\\"filter-container\\\">\\n                {{#if this.advancedMode}}\\n                <div role=\\\"button\\\" class=\\\"col\\\" {{on 'click' (fn this.showFields form.name)}}>\\n                    {{form.translated_name}}\\n                    <div class=\\\"delete\\\"><span class=\\\"{{if (get this.isOpen form.name) \\\"move move-SortUp\\\" \\\"move move-SortDown\\\"}} pull-right\\\"></span></div>\\n                </div>\\n                {{/if}}\\n                {{#if (or (get this.isOpen form.name) (not this.advancedMode))}}\\n                    {{#each (sort form.fields sortBy=\\\"translated_name\\\") as |filter|}}\\n                        <div role=\\\"button\\\" class=\\\"filter-field\\\" {{on 'click' (fn this.collectAndSend (concat filter.form \\\".\\\" form.name \\\".\\\" filter.name) null)}}>{{filter.translated_name}}</div>\\n                    {{/each}}\\n                {{/if}}\\n            </div>\\n        {{/each}}\\n    </div>\\n\\n    <div class=\\\"wizard-column\\\">\\n        <h4>{{t \\\"wizard-column.selected-filters\\\"}}</h4>\\n        <div class=\\\"filter-container\\\">\\n            {{#if this.filterValues.mandatory}}\\n                <h6>{{t \\\"filter-selector.mandatory-filters\\\"}}</h6>\\n                <Addon::ReportTemplateWizard::FilterBox @form={{@form}} @values={{this.filterValues.mandatory}} @dateRanges={{this.dateRanges}} @collectAndSend={{fn this.collectAndSend}} @removeAndSend={{fn this.removeAndSend}} @draggable={{false}} />\\n            {{/if}}\\n\\n            {{#if this.filterValues.voluntary}}\\n                <h6>{{t \\\"filter-selector.voluntary-filters\\\"}}</h6>\\n                <Addon::ReportTemplateWizard::FilterBox @form={{@form}} @dropped={{fn this.dropped}} @values={{this.filterValues.voluntary}} @dateRanges={{this.dateRanges}} @collectAndSend={{fn this.collectAndSend}} @removeAndSend={{fn this.removeAndSend}} @showRemove={{true}} @draggable={{true}} />\\n            {{/if}}\\n         </div>\\n    </div>\\n</div>\", {\"contents\":\"<div class=\\\"report-template-wizard-columns\\\">\\n    <div class=\\\"wizard-column\\\">\\n        <div class=\\\"all-filters-header\\\">\\n            <h4>{{t (concat \\\"wizard-column.all-filters\\\")}}</h4>\\n            <XToggle\\n                @theme='material'\\n                @value={{this.advancedMode}}\\n                @onToggle={{fn (mut this.advancedMode)}}\\n                @size='medium'\\n                @onLabel={{t \\\"general.advancedMode\\\"}}\\n                @offLabel=\\\"\\\"\\n                @showLabels={{true}}\\n                data-anchor=\\\"template-wizard-filters-advanced-mode\\\"\\n            />\\n        </div>\\n\\n        {{#each (sort this.filterArray sortBy=\\\"translated_name\\\") as |form|}}\\n            <div class=\\\"filter-container\\\">\\n                {{#if this.advancedMode}}\\n                <div role=\\\"button\\\" class=\\\"col\\\" {{on 'click' (fn this.showFields form.name)}}>\\n                    {{form.translated_name}}\\n                    <div class=\\\"delete\\\"><span class=\\\"{{if (get this.isOpen form.name) \\\"move move-SortUp\\\" \\\"move move-SortDown\\\"}} pull-right\\\"></span></div>\\n                </div>\\n                {{/if}}\\n                {{#if (or (get this.isOpen form.name) (not this.advancedMode))}}\\n                    {{#each (sort form.fields sortBy=\\\"translated_name\\\") as |filter|}}\\n                        <div role=\\\"button\\\" class=\\\"filter-field\\\" {{on 'click' (fn this.collectAndSend (concat filter.form \\\".\\\" form.name \\\".\\\" filter.name) null)}}>{{filter.translated_name}}</div>\\n                    {{/each}}\\n                {{/if}}\\n            </div>\\n        {{/each}}\\n    </div>\\n\\n    <div class=\\\"wizard-column\\\">\\n        <h4>{{t \\\"wizard-column.selected-filters\\\"}}</h4>\\n        <div class=\\\"filter-container\\\">\\n            {{#if this.filterValues.mandatory}}\\n                <h6>{{t \\\"filter-selector.mandatory-filters\\\"}}</h6>\\n                <Addon::ReportTemplateWizard::FilterBox @form={{@form}} @values={{this.filterValues.mandatory}} @dateRanges={{this.dateRanges}} @collectAndSend={{fn this.collectAndSend}} @removeAndSend={{fn this.removeAndSend}} @draggable={{false}} />\\n            {{/if}}\\n\\n            {{#if this.filterValues.voluntary}}\\n                <h6>{{t \\\"filter-selector.voluntary-filters\\\"}}</h6>\\n                <Addon::ReportTemplateWizard::FilterBox @form={{@form}} @dropped={{fn this.dropped}} @values={{this.filterValues.voluntary}} @dateRanges={{this.dateRanges}} @collectAndSend={{fn this.collectAndSend}} @removeAndSend={{fn this.removeAndSend}} @showRemove={{true}} @draggable={{true}} />\\n            {{/if}}\\n         </div>\\n    </div>\\n</div>\",\"moduleName\":\"tt4/components/addon/report-template-wizard/page4.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/report-template-wizard/page4.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { set, get, action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\nimport { isArray } from '@ember/array';\n/* istanbul ignore next */\nexport default class ReportTemplateWizardPage4Component extends Component {\n    @service intl;\n    @service forms;\n    @service store;\n\n    @tracked filters;\n    @tracked filterValues;\n    @tracked advancedMode;\n\n    get dateRanges() {\n        return [\n            { id: 'this_week', name: this.intl.t('general.period.this_week') },\n            { id: 'last_week', name: this.intl.t('general.period.last_week') },\n            { id: 'this_month', name: this.intl.t('general.period.this_month') },\n            { id: 'last_month', name: this.intl.t('general.period.last_month') },\n            { id: 'this_year', name: this.intl.t('general.period.this_year') },\n            { id: 'last_year', name: this.intl.t('general.period.last_year') },\n            { id: 'this_salaryperiod', name: this.intl.t('general.period.this_salaryperiod') },\n        ];\n    }\n\n    get filterArray() {\n        const filterThese = ['dropdown_values', 'database', 'date', 'status'];\n        let filterObj = [];\n        let filters = this.forms\n            .fieldArray(this.args.form)\n            .filter((f) => filterThese.includes(f.type));\n        filterObj.push({\n            name: this.args.form,\n            translated_name: this.intl.t('form.' + this.args.form),\n            fields: filters.filter((r) => this.args.form !== r.name),\n        });\n\n        // disclude filters that are mandatory or hard coded\n        const disclude = {};\n        if (this.args.mandatoryFilters) {\n            Object.keys(this.args.mandatoryFilters).forEach((fil) => {\n                const field = fil.includes('.') ? fil.split('.')[0] : this.args.form;\n                const filter = fil.includes('.') ? fil.split('.')[1] : fil;\n                if (disclude[field]) disclude[field].push(filter);\n                else disclude[field] = [filter];\n            });\n        }\n\n        filters.forEach((fil) => {\n            if (fil.type === 'database') {\n                const translation = this.intl.t('report.' + this.args.form + '.' + fil.name);\n                let filteredArray = this.forms\n                    .fieldArray(fil.options.form)\n                    .filter((f) => this.showFilter(f, filterThese, fil.name));\n                if (disclude[fil.name])\n                    filteredArray = filteredArray.filter((item) =>\n                        disclude[fil.name].includes(item.name),\n                    );\n                if (!isEmpty(filteredArray))\n                    filterObj.push({\n                        name: fil.name,\n                        translated_name: translation,\n                        fields: filteredArray,\n                    });\n            }\n        });\n\n        return filterObj;\n    }\n\n    showFilter(f, filterThese, filName) {\n        if (this.advancedMode && filterThese.includes(f.type)) return true;\n        if (!this.advancedMode && this.args.additionalFilters.includes(filName + '.' + f.name))\n            return true;\n        return false;\n    }\n\n    getFilterValues() {\n        //if (!this.filters) return {}\n        let obj = {};\n        let anotherObj = {};\n\n        Object.entries(this.filters).forEach((f) => {\n            let filter = f[0].includes('.') ? f[0].split('.') : f[0];\n            let form = isArray(filter) ? filter[0] : this.args.form;\n            let field = isArray(filter) ? (filter.length > 2 ? filter[2] : filter[1]) : f[0];\n            let filterForm = isArray(filter)\n                ? filter.length > 2\n                    ? filter[1]\n                    : filter[0]\n                : this.args.form;\n            let fieldData = this.forms.fieldExists(form, field)\n                ? this.forms.field(form, field)\n                : null;\n            if (!fieldData) return;\n            fieldData.options =\n                fieldData.options && fieldData.type === 'dropdown_values'\n                    ? fieldData.options.mapBy('id')\n                    : fieldData.options;\n            if (fieldData.type === 'date') {\n                fieldData.selected = this.dateRanges.findBy('id', f[1])\n                    ? this.dateRanges.findBy('id', f[1])\n                    : f[1];\n            } else if (fieldData.type === 'database' && f[1] && f[1] !== '(empty)') {\n                fieldData.selected = f[1]\n                    .split(',')\n                    .map((id) => this.store.peekRecord(fieldData.options.form, id));\n                if (form !== this.args.form) fieldData.selected = fieldData.selected[0];\n            } else fieldData.selected = f[1];\n            if (this.args.mandatoryFilters) {\n                const keys = Object.keys(this.args.mandatoryFilters);\n                if (keys.includes(fieldData.name) && fieldData.form === this.args.form)\n                    fieldData.mandatory = true;\n            }\n\n            if (fieldData.mandatory) {\n                if (!anotherObj[filterForm]) anotherObj[filterForm] = [fieldData];\n                else anotherObj[filterForm].push(fieldData);\n            } else {\n                if (!obj[filterForm]) obj[filterForm] = [fieldData];\n                else obj[filterForm].push(fieldData);\n            }\n        });\n        return { mandatory: anotherObj, voluntary: obj };\n    }\n\n    constructor() {\n        super(...arguments);\n        this.isOpen = {};\n        this.showAll = false;\n        this.advancedMode = false;\n        this.filters = this.args.values.filters;\n        this.filterValues = this.getFilterValues();\n    }\n\n    @action\n    showFields(name) {\n        if (get(this.isOpen, name)) {\n            set(this, 'isOpen.' + name, false);\n        } else {\n            set(this, 'isOpen.' + name, true);\n        }\n    }\n\n    @action\n    collectAndSend(value, selected = null) {\n        const splitValue = value.split('.');\n        if (splitValue[0] === splitValue[1]) {\n            splitValue.splice(0, 1);\n            value = splitValue.join('.');\n        }\n        const updatedValue = splitValue[0] === this.args.form ? splitValue[1] : value;\n        if (selected) {\n            if (isArray(selected)) selected = selected.map((sel) => sel.id ?? sel).join(',');\n            this.filters[updatedValue] = selected.id ? selected.id : selected;\n        } else {\n            this.filters[updatedValue] = null;\n        }\n        //notifyPropertyChange(this, 'filters')\n        this.filterValues = this.getFilterValues();\n        this.args.collectValuesToObject('filters', updatedValue, selected);\n    }\n\n    @action\n    removeAndSend(value) {\n        const splitValue = value.split('.');\n        if (splitValue[0] === splitValue[1]) {\n            splitValue.splice(0, 1);\n            value = splitValue.join('.');\n        }\n        const updatedValue = splitValue[0] === this.args.form ? splitValue[1] : value;\n\n        delete this.filters[updatedValue];\n        this.filters = this.filters;\n\n        this.args.removeValuesFromObject('filters', updatedValue);\n        //notifyPropertyChange(this, 'filters')\n        this.filterValues = this.getFilterValues();\n    }\n\n    @action\n    expandOrMinimizeAll(value) {\n        set(this, 'showAll', value);\n        this.filterArray.forEach((item) => {\n            set(this, 'isOpen.' + item.name, value);\n        });\n    }\n\n    @action\n    dropped(to, what) {\n        this.args.reorderFilters(what, to);\n        this.filters = this.args.values.filters;\n        this.filterValues = this.getFilterValues();\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{!-- template-lint-disable no-inline-styles --}}\\n{{#if this.preformatted}}\\n    {{this.preformatted.value}}\\n{{else if this.typeIsArray }}\\n    {{#each @value as |row|}}\\n        <span class=\\\"databasearray_row\\\">\\n        {{#each this.fieldObj.options.fields as |f|}}\\n            {{#if (and (eq f 'attachments') (eq this.fieldObj.options.form 'workpermit'))}}\\n                <LinkTo @query={{hash modal=(concat \\\"workpermit,\\\" @form \\\",\\\" row.id \\\",\\\" @record.id)}} @class=\\\"clickable\\\">\\n                    {{collector-value-format field=f form=this.fieldObj.options.form value=(get row f)}}\\n                </LinkTo>\\n            {{else}}\\n                {{collector-value-format field=f form=this.fieldObj.options.form value=(get row f)}}\\n            {{/if}}\\n        {{/each}}\\n        </span>\\n        <br />\\n    {{/each}}\\n{{else}}\\n    {{#let (collector-value-format field=this.fieldObj.name form=this.fieldObj.form value=@value record=@record isImageModal=true) as |formatted|}}\\n        {{#if (and formatted.isImage formatted.src)}}\\n            <div role=\\\"button\\\" style={{htmlsafe (concat 'background-image: url(\\\"' formatted.src '\\\")')}} class=\\\"{{formatted.classes}} clickable\\\" {{on 'click' (fn (mut this.previewFile) (or formatted.fullSrc formatted.src))}} {{on 'click' (fn (mut this.showImageModal))}} />\\n        {{else}}\\n            {{formatted}}\\n        {{/if}}\\n    {{/let}}\\n{{/if}}\\n\\n{{#if this.showImageModal}}\\n    <Addon::Modal @close={{fn (mut this.showImageModal) false}} @outsideClose={{true}} @classes=\\\"\\\">\\n        <img class=\\\"ember-movenium-popupimage\\\" src={{this.previewFile}} alt=\\\"\\\" role=\\\"none\\\">\\n    </Addon::Modal>\\n{{/if}}\", {\"contents\":\"{{!-- template-lint-disable no-inline-styles --}}\\n{{#if this.preformatted}}\\n    {{this.preformatted.value}}\\n{{else if this.typeIsArray }}\\n    {{#each @value as |row|}}\\n        <span class=\\\"databasearray_row\\\">\\n        {{#each this.fieldObj.options.fields as |f|}}\\n            {{#if (and (eq f 'attachments') (eq this.fieldObj.options.form 'workpermit'))}}\\n                <LinkTo @query={{hash modal=(concat \\\"workpermit,\\\" @form \\\",\\\" row.id \\\",\\\" @record.id)}} @class=\\\"clickable\\\">\\n                    {{collector-value-format field=f form=this.fieldObj.options.form value=(get row f)}}\\n                </LinkTo>\\n            {{else}}\\n                {{collector-value-format field=f form=this.fieldObj.options.form value=(get row f)}}\\n            {{/if}}\\n        {{/each}}\\n        </span>\\n        <br />\\n    {{/each}}\\n{{else}}\\n    {{#let (collector-value-format field=this.fieldObj.name form=this.fieldObj.form value=@value record=@record isImageModal=true) as |formatted|}}\\n        {{#if (and formatted.isImage formatted.src)}}\\n            <div role=\\\"button\\\" style={{htmlsafe (concat 'background-image: url(\\\"' formatted.src '\\\")')}} class=\\\"{{formatted.classes}} clickable\\\" {{on 'click' (fn (mut this.previewFile) (or formatted.fullSrc formatted.src))}} {{on 'click' (fn (mut this.showImageModal))}} />\\n        {{else}}\\n            {{formatted}}\\n        {{/if}}\\n    {{/let}}\\n{{/if}}\\n\\n{{#if this.showImageModal}}\\n    <Addon::Modal @close={{fn (mut this.showImageModal) false}} @outsideClose={{true}} @classes=\\\"\\\">\\n        <img class=\\\"ember-movenium-popupimage\\\" src={{this.previewFile}} alt=\\\"\\\" role=\\\"none\\\">\\n    </Addon::Modal>\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/value-format.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/value-format.hbs\"}});\nimport Component from '@glimmer/component';\nimport FormsService from 'tt4/injections/services/forms';\nimport moment from 'moment';\nimport { inject as service } from '@ember/service';\nimport { IField } from 'tt4/ember-movenium/interfaces/forms';\n\ninterface IValueFormat {\n    field: string;\n    form: string;\n    value: string;\n}\n\nexport default class ValueFormatComponent extends Component<IValueFormat> {\n    @service private forms: FormsService;\n\n    get typeIsArray(): boolean {\n        return this.fieldObj?.type === 'databasearray' || this.fieldObj?.type === 'work_permit_attachment';\n    }\n\n    get preformatted(): object | null {\n        if (this.args.field === 'row_info.created' || this.args.field === 'row_info.modified') {\n            return { value: this.args.value ? moment(this.args.value).format('LLL') : null };\n        } else {\n            return null;\n        }\n    }\n\n    get fieldObj(): IField | null {\n        if (!this.forms.fieldExists(this.args.form, this.args.field)) return null;\n        return this.forms.field(this.args.form, this.args.field);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Addon::Modal @close={{@close}} @classes={{array \\\"ember-movenium-wizard\\\"}} as |M|>\\n    <M.Header>\\n        {{yield (hash\\n            Header=(component \\\"addon/wizard/header\\\" )\\n        )}}\\n    </M.Header>\\n    <M.Body>\\n        {{yield (hash\\n            Steps=(component \\\"addon/wizard/steps\\\" pages=@pages currentPage=this.currentPage pageChange=this.pageChange )\\n            Content=(component \\\"addon/wizard/content\\\" )\\n        )}}\\n    </M.Body>\\n    <M.Footer>\\n        {{yield (hash\\n            Buttons=(component \\\"addon/wizard/buttons\\\" pages=@pages close=@close currentPage=this.currentPage pageChange=this.pageChange skipCloseOnDone=@skipCloseOnDone saving=@saving )\\n        )}}\\n    </M.Footer>\\n</Addon::Modal>\\n\", {\"contents\":\"<Addon::Modal @close={{@close}} @classes={{array \\\"ember-movenium-wizard\\\"}} as |M|>\\n    <M.Header>\\n        {{yield (hash\\n            Header=(component \\\"addon/wizard/header\\\" )\\n        )}}\\n    </M.Header>\\n    <M.Body>\\n        {{yield (hash\\n            Steps=(component \\\"addon/wizard/steps\\\" pages=@pages currentPage=this.currentPage pageChange=this.pageChange )\\n            Content=(component \\\"addon/wizard/content\\\" )\\n        )}}\\n    </M.Body>\\n    <M.Footer>\\n        {{yield (hash\\n            Buttons=(component \\\"addon/wizard/buttons\\\" pages=@pages close=@close currentPage=this.currentPage pageChange=this.pageChange skipCloseOnDone=@skipCloseOnDone saving=@saving )\\n        )}}\\n    </M.Footer>\\n</Addon::Modal>\\n\",\"moduleName\":\"tt4/components/addon/wizard.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/wizard.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\ninterface IWizard {\n    pages: number;\n    currentPage: number;\n    pageChange?(args0: number): void;\n}\n\nexport default class WizardComponent extends Component<IWizard> implements IWizard {\n    public pages!: number;\n    @tracked public currentPage: number = 1;\n\n    @action\n    public pageChange(page: number) {\n        this.currentPage = page;\n        if (this.args.pageChange) this.args.pageChange(page);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"wizard-button-group\\\">\\n    {{#if @onlySave}}\\n        <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button auto-left\\\" {{on 'click' @save}} disabled={{@isDisabled}}>{{t \\\"general.save\\\"}}</button>\\n    {{else}}\\n\\n        <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-exit-button\\\" {{on 'click' @close}}>{{t \\\"general.exit\\\"}}</button>\\n        {{#unless this.hidePrevious}}\\n            <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button auto-left\\\" {{on 'click' this.previous}}>{{this.arrowLeft}} {{t \\\"general.previous\\\"}}</button>\\n        {{/unless}}\\n        {{#if this.isLastPage}}\\n                <Addon::LoadingButton\\n                    @classes=\\\"ember-movenium-button ember-movenium-save-button {{if @hideDone \\\"invisible\\\"}}\\\"\\n                    @disabled={{if @disabled @disabled @loading}}\\n                    @loading={{@loading}}\\n                    @onClick={{action this.done}}\\n                    @buttonText={{t \\\"general.done\\\"}}\\n                />\\n        {{else}}\\n            {{#unless @hideNext}}\\n                <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button {{if this.hidePrevious \\\"auto-left\\\" \\\"\\\"}}\\\" {{on 'click' this.next}} disabled={{@isDisabled}}>{{t \\\"general.next\\\"}} {{this.arrowRight}}</button>\\n            {{/unless}}\\n        {{/if}}\\n\\n    {{/if}}\\n</div>\", {\"contents\":\"<div class=\\\"wizard-button-group\\\">\\n    {{#if @onlySave}}\\n        <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button auto-left\\\" {{on 'click' @save}} disabled={{@isDisabled}}>{{t \\\"general.save\\\"}}</button>\\n    {{else}}\\n\\n        <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-exit-button\\\" {{on 'click' @close}}>{{t \\\"general.exit\\\"}}</button>\\n        {{#unless this.hidePrevious}}\\n            <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button auto-left\\\" {{on 'click' this.previous}}>{{this.arrowLeft}} {{t \\\"general.previous\\\"}}</button>\\n        {{/unless}}\\n        {{#if this.isLastPage}}\\n                <Addon::LoadingButton\\n                    @classes=\\\"ember-movenium-button ember-movenium-save-button {{if @hideDone \\\"invisible\\\"}}\\\"\\n                    @disabled={{if @disabled @disabled @loading}}\\n                    @loading={{@loading}}\\n                    @onClick={{action this.done}}\\n                    @buttonText={{t \\\"general.done\\\"}}\\n                />\\n        {{else}}\\n            {{#unless @hideNext}}\\n                <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button {{if this.hidePrevious \\\"auto-left\\\" \\\"\\\"}}\\\" {{on 'click' this.next}} disabled={{@isDisabled}}>{{t \\\"general.next\\\"}} {{this.arrowRight}}</button>\\n            {{/unless}}\\n        {{/if}}\\n\\n    {{/if}}\\n</div>\",\"moduleName\":\"tt4/components/addon/wizard/buttons.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/wizard/buttons.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { htmlSafe } from '@ember/template';\n\ninterface IWizardButtons {\n    onlySave?: boolean;\n    hideDone?: boolean;\n    hideNext?: boolean;\n    skipCloseOnDone?: boolean;\n    currentPage: number;\n    pages?: number;\n    close?(): void;\n    done?(): void;\n    save?(): void;\n    pageChange?(args0: number): void;\n}\n\nexport default class WizardButtonsComponent\n    extends Component<IWizardButtons>\n    implements IWizardButtons\n{\n    @tracked public currentPage!: number;\n\n    protected arrowRight: any = htmlSafe('<span class=\"glyphicon glyphicon-chevron-right\"></span>');\n    protected arrowLeft: any = htmlSafe('<span class=\"glyphicon glyphicon-chevron-left\"></span>');\n\n    get hidePrevious(): boolean {\n        return this.args.currentPage <= 1;\n    }\n\n    get isLastPage(): boolean {\n        return this.args.currentPage === this.args.pages;\n    }\n\n    @action\n    public next() {\n        if (this.args.pageChange) this.args.pageChange(this.args.currentPage + 1);\n    }\n\n    @action\n    public previous() {\n        if (this.args.pageChange) this.args.pageChange(this.args.currentPage - 1);\n    }\n\n    @action\n    public done() {\n        if (this.args.done) this.args.done();\n        if (this.args.close && !this.args.skipCloseOnDone) this.args.close();\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content\\\">\\n    {{yield}}\\n</div>\\n\", {\"contents\":\"<div class=\\\"content\\\">\\n    {{yield}}\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/wizard/content.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/wizard/content.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{yield}}\\n\", {\"contents\":\"{{yield}}\\n\",\"moduleName\":\"tt4/components/addon/wizard/header.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/wizard/header.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"stepwizard\\\">\\n    <div class=\\\"stepwizard-row setup-panel\\\">\\n\\n        {{#each this.steps as |name step|}}\\n            <div class=\\\"stepwizard-step\\\">\\n                {{#if @useSubmenus}}\\n                    <div class=\\\"submenu-buttons submenu-steps\\\">\\n                        <span role=\\\"button\\\" {{on 'click' (fn @pageChange (add step 1))}} class=\\\"submenu-item {{if (eq @currentPage (add step 1)) \\\"active\\\"}} {{if @isDisabled \\\"disabled\\\"}}\\\">{{t (get this.translatedPageNames step)}}</span>\\n                    </div>\\n                {{else}}\\n                    <span role=\\\"button\\\" {{on 'click' (fn @pageChange (add step 1))}} class=\\\"step-button {{if (eq @currentPage (add step 1)) \\\"ember-movenium-saved-next-button\\\" \\\"ember-movenium-grey-circle-button\\\"}}\\\">{{add step 1}}</span>\\n                    <p>\\n                        {{#if this.translatedPageNames}}\\n                            {{t (get this.translatedPageNames step)}}\\n                        {{else}}\\n                            {{t \\\"general.page\\\"}} {{add step 1}}\\n                        {{/if}}\\n                    </p>\\n                {{/if}}\\n            </div>\\n        {{/each}}\\n        {{#if @infoText}}\\n            <span role=\\\"button\\\" class=\\\"move move-Info step-wizard-info-button\\\" {{on 'click' this.togglePopover}}>\\n                <EmberPopover @text={{@infoText}} @event=\\\"none\\\" @isShown={{this.showTooltip}} @hideOn=\\\"click\\\" @side=\\\"top\\\" />\\n            </span>\\n        {{/if}}\\n    </div>\\n</div>\", {\"contents\":\"<div class=\\\"stepwizard\\\">\\n    <div class=\\\"stepwizard-row setup-panel\\\">\\n\\n        {{#each this.steps as |name step|}}\\n            <div class=\\\"stepwizard-step\\\">\\n                {{#if @useSubmenus}}\\n                    <div class=\\\"submenu-buttons submenu-steps\\\">\\n                        <span role=\\\"button\\\" {{on 'click' (fn @pageChange (add step 1))}} class=\\\"submenu-item {{if (eq @currentPage (add step 1)) \\\"active\\\"}} {{if @isDisabled \\\"disabled\\\"}}\\\">{{t (get this.translatedPageNames step)}}</span>\\n                    </div>\\n                {{else}}\\n                    <span role=\\\"button\\\" {{on 'click' (fn @pageChange (add step 1))}} class=\\\"step-button {{if (eq @currentPage (add step 1)) \\\"ember-movenium-saved-next-button\\\" \\\"ember-movenium-grey-circle-button\\\"}}\\\">{{add step 1}}</span>\\n                    <p>\\n                        {{#if this.translatedPageNames}}\\n                            {{t (get this.translatedPageNames step)}}\\n                        {{else}}\\n                            {{t \\\"general.page\\\"}} {{add step 1}}\\n                        {{/if}}\\n                    </p>\\n                {{/if}}\\n            </div>\\n        {{/each}}\\n        {{#if @infoText}}\\n            <span role=\\\"button\\\" class=\\\"move move-Info step-wizard-info-button\\\" {{on 'click' this.togglePopover}}>\\n                <EmberPopover @text={{@infoText}} @event=\\\"none\\\" @isShown={{this.showTooltip}} @hideOn=\\\"click\\\" @side=\\\"top\\\" />\\n            </span>\\n        {{/if}}\\n    </div>\\n</div>\",\"moduleName\":\"tt4/components/addon/wizard/steps.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/wizard/steps.hbs\"}});\nimport Component from '@glimmer/component';\nimport { isArray } from '@ember/array';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\ninterface IWizardSteps {\n    pageNames?: [];\n    pages?: number;\n    useSubmenus?: boolean;\n    currentPage?: number;\n    isDisabled?: boolean;\n    infoText?: string;\n    pageChange?(args0: number): void;\n}\n\nexport default class WizardStepsComponent extends Component<IWizardSteps> implements IWizardSteps {\n    public pageNames: [] = [];\n    @tracked public showTooltip: boolean = false;\n\n    get steps() {\n        const list = [];\n        let pages = isArray(this.args.pageNames) ? this.args.pageNames.length : this.args.pages;\n        if (!pages) pages = 1;\n\n        for (let i = 1; i <= pages; i++) {\n            list.push(i);\n        }\n        return list;\n    }\n\n    get translatedPageNames() {\n        if (this.args.pageNames) {\n            const pages = this.args.pageNames.map((name) => {\n                return 'wizard.page.' + name;\n            });\n            return pages;\n        } else {\n            return this.steps;\n        }\n    }\n\n    @action\n    protected togglePopover() {\n        this.showTooltip = !this.showTooltip;\n    }\n}\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/address-info.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AddressInfoComponent;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nAddressInfoComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    admintool: Ember.inject.service(),\n    countryLists: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    errors: Em.Object.create({\n        street: false,\n        zip: false,\n        town: false,\n        country: false,\n    }),\n    actions: {\n        change: function (field, value) {\n            if (this.get('billingData.use_company_address')) {\n                this.set('billingData.' + field, value);\n            }\n            return this.set('errors.' + field, false);\n        },\n        save: function () {\n            var field, hasError, i, len, promise, ref;\n            hasError = false;\n            ref = ['street', 'zip', 'town', 'country'];\n            for (i = 0, len = ref.length; i < len; i++) {\n                field = ref[i];\n                if (!this.get('data.' + field) || this.get('data.' + field) === '') {\n                    this.set('errors.' + field, true);\n                    hasError = true;\n                } else {\n                    this.set('errors.' + field, false);\n                }\n            }\n            if (!hasError) {\n                promise = this.get('admintool').ajax({\n                    url: 'customer_info',\n                    method: 'PUT',\n                    data: {\n                        street: this.get('data.street'),\n                        zip: this.get('data.zip'),\n                        town: this.get('data.town'),\n                        country: this.get('data.country'),\n                        specifier: this.get('data.specifier'),\n                    },\n                });\n                // first save address-info\n                return promise.then(() => {\n                    // then if \"use company address\" is checked in billing-info, save address to billing-info also\n                    if (\n                        this.get('billingData.use_company_address') &&\n                        this.get('billingtype') === 'paper'\n                    ) {\n                        promise = this.get('admintool').ajax({\n                            url: 'billinginfo',\n                            method: 'PUT',\n                            data: {\n                                street: this.get('data.street'),\n                                zip: this.get('data.zip'),\n                                town: this.get('data.town'),\n                                country: this.get('data.country'),\n                                //invoice_ref: @get 'billingData.invoice_ref'\n                                billingtype: 'paper',\n                            },\n                        });\n                        return promise.then(() => {\n                            return this.get('notifications').success(\n                                this.get('intl').t('general.saved'),\n                                {\n                                    autoClear: true,\n                                },\n                            );\n                        });\n                    } else {\n                        return this.get('notifications').success(\n                            this.get('intl').t('general.saved'),\n                            {\n                                autoClear: true,\n                            },\n                        );\n                    }\n                });\n            }\n        },\n    },\n});\n\nexport default AddressInfoComponent;\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"\\n<svg class={{all-clear-icon}} width=\\\"128\\\" height=\\\"128\\\" viewBox=\\\"0 0 128 128\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n        <g clip-path=\\\"url(#clip0_1121_1131)\\\">\\n            <path d=\\\"M80.0999 93.34C77.9699 94.12 77.0299 99.46 75.7299 99.05C72.9799 98.21 70.1699 95.05 68.8299 99.53C68.0199 102.2 63.0599 102.43 63.0599 102.43\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M60.5099 27.32C60.5099 27.32 59.2199 26 57.9999 26.27C56.7799 26.54 56.3999 28.17 55.4199 28.27C52.4799 28.52 49.4199 29.55 49.1799 30.1\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M72.2799 25C71.7599 23.59 71.2799 22.42 70.8899 21.54C68.6399 16.7 63.8899 13.02 57.8899 13.68C48.5899 14.91 39.3799 16.79 30.3399 19.29C25.8099 20.55 24.5799 22.6 24.1899 25.84C23.8399 28.71 24.7199 31.57 24.8399 35.57C24.9999 40.64 22.7499 43.64 18.9199 45.57C15.7399 47.2 13.5599 47.75 10.8099 48.97C6.85993 50.76 5.42993 53 6.21993 58.27C8.48993 73.6 15.6999 97.11 21.1399 111.65C22.8399 116.19 24.6099 122.91 34.8999 121.52C44.9499 120.15 74.4399 113.35 82.5999 109.16C87.5299 106.68 90.4999 101.5 90.1599 96C89.9299 92.77 88.4199 85.26 86.3199 76.16\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M29 19.74C24.22 21.42 19.5599 23.74 12.9999 35.2C7.72995 44.37 5.58995 48.07 5.99995 56.34\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M49.7899 105.24C47.6099 105.12 49.3199 108.46 44.8899 106.75C43.3699 106.15 42.4899 108.57 40.3899 109.11C39.2599 109.47 38.0399 108.92 37.5599 107.84C36.3099 106.75 35.8899 109.48 34.7099 109.65C33.5299 109.82 31.9499 108.53 30.9399 109.13\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path opacity=\\\"0.25\\\" d=\\\"M120.15 55C123.15 42.71 115.39 30.05 102.77 26.71C90.15 23.37 77.47 30.6 74.45 42.88C71.43 55.16 79.21 67.88 91.83 71.18C104.45 74.48 117.13 67.26 120.15 55V55ZM110.8 43.47C106.63 46.58 101.15 51.73 96.46 55.84C92.99 58.84 91.4 58.53 89.89 57.07C87.74 55 83.13 45.92 83.43 45C83.73 44.08 86.75 43.85 86.75 43.85C87.87 44.66 89.93 49 91.08 51.22C94.9 45.16 98.61 42.22 104.61 39.87C105.64 39.51 114.69 40.57 110.8 43.47V43.47Z\\\" fill=\\\"#3191CF\\\"/>\\n            <path d=\\\"M118.71 53.9C115.15 67.07 102.54 74.57 88.41 71.32C74.28 68.07 67.44 54.2 71 41C74.56 27.8 86.09 19.47 101.3 23.58C114.48 27.14 122.27 40.7 118.72 53.88V53.9H118.71Z\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M83.46 45.67C83.01 44.73 88.68 42.76 89.04 43.35C89.86 44.91 90.57 46.52 91.16 48.18C91.65 49.36 92.51 49.65 93.16 48.7C96.27 44.62 99.94 40.99 104.04 37.91C105.41 36.98 109.04 41.65 108.04 42.33C103.04 46.02 98.17 51.33 93.93 56.72C93.41 57.57 92.37 57.95 91.43 57.62C90.41 57.42 89.4 57.13 88.43 56.75C87.73 56.44 87.21 55.83 87 55.09C86.02 51.88 84.84 48.73 83.46 45.67V45.67Z\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M113 35.72C110.43 31.49 106.45 28.3 101.76 26.72\\\" stroke=\\\"#3191CF\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M20.2899 61.82C20.2899 61.82 21.2899 58.3 23.7099 57.82C26.1299 57.34 28.5899 60.52 29.8799 59.36C33.6399 56.01 33.4199 59.43 35.5999 58.36C37.7799 57.29 42.9199 54.3 43.9499 55.41C45.7099 57.28 48.7799 56.62 48.7799 56.62\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M23.88 75C26.46 74.58 29.56 76.66 30.79 76C33.39 74.61 35.15 72.14 38.34 73.69C40.25 74.61 45.63 72.89 45.63 72.89\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M52.61 70.84C52.61 70.84 53.23 68.75 54.69 68.44C56.15 68.13 57.33 69.59 58.39 69.16C61.55 67.9 65.28 67.37 65.78 67.83\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M27 85.94C27 85.94 30.66 85.16 32.65 86.94C33.82 87.94 40.06 84.83 42.7 83.68C45.34 82.53 44.91 85.86 49.52 82.43C51.11 81.25 53.42 82.62 56.3 82.01C59.18 81.4 59.16 79.68 59.16 79.68C60.16 78.26 62.07 80.11 63.6 79.68C65.13 79.25 66.46 77.5 68.03 77.46\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n        </g>\\n        <defs>\\n            <clipPath id=\\\"clip0_1121_1131\\\">\\n                <rect width=\\\"128\\\" height=\\\"128\\\" fill=\\\"white\\\"/>\\n            </clipPath>\\n        </defs>\\n</svg>\", {\"contents\":\"\\n<svg class={{all-clear-icon}} width=\\\"128\\\" height=\\\"128\\\" viewBox=\\\"0 0 128 128\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n        <g clip-path=\\\"url(#clip0_1121_1131)\\\">\\n            <path d=\\\"M80.0999 93.34C77.9699 94.12 77.0299 99.46 75.7299 99.05C72.9799 98.21 70.1699 95.05 68.8299 99.53C68.0199 102.2 63.0599 102.43 63.0599 102.43\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M60.5099 27.32C60.5099 27.32 59.2199 26 57.9999 26.27C56.7799 26.54 56.3999 28.17 55.4199 28.27C52.4799 28.52 49.4199 29.55 49.1799 30.1\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M72.2799 25C71.7599 23.59 71.2799 22.42 70.8899 21.54C68.6399 16.7 63.8899 13.02 57.8899 13.68C48.5899 14.91 39.3799 16.79 30.3399 19.29C25.8099 20.55 24.5799 22.6 24.1899 25.84C23.8399 28.71 24.7199 31.57 24.8399 35.57C24.9999 40.64 22.7499 43.64 18.9199 45.57C15.7399 47.2 13.5599 47.75 10.8099 48.97C6.85993 50.76 5.42993 53 6.21993 58.27C8.48993 73.6 15.6999 97.11 21.1399 111.65C22.8399 116.19 24.6099 122.91 34.8999 121.52C44.9499 120.15 74.4399 113.35 82.5999 109.16C87.5299 106.68 90.4999 101.5 90.1599 96C89.9299 92.77 88.4199 85.26 86.3199 76.16\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M29 19.74C24.22 21.42 19.5599 23.74 12.9999 35.2C7.72995 44.37 5.58995 48.07 5.99995 56.34\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M49.7899 105.24C47.6099 105.12 49.3199 108.46 44.8899 106.75C43.3699 106.15 42.4899 108.57 40.3899 109.11C39.2599 109.47 38.0399 108.92 37.5599 107.84C36.3099 106.75 35.8899 109.48 34.7099 109.65C33.5299 109.82 31.9499 108.53 30.9399 109.13\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path opacity=\\\"0.25\\\" d=\\\"M120.15 55C123.15 42.71 115.39 30.05 102.77 26.71C90.15 23.37 77.47 30.6 74.45 42.88C71.43 55.16 79.21 67.88 91.83 71.18C104.45 74.48 117.13 67.26 120.15 55V55ZM110.8 43.47C106.63 46.58 101.15 51.73 96.46 55.84C92.99 58.84 91.4 58.53 89.89 57.07C87.74 55 83.13 45.92 83.43 45C83.73 44.08 86.75 43.85 86.75 43.85C87.87 44.66 89.93 49 91.08 51.22C94.9 45.16 98.61 42.22 104.61 39.87C105.64 39.51 114.69 40.57 110.8 43.47V43.47Z\\\" fill=\\\"#3191CF\\\"/>\\n            <path d=\\\"M118.71 53.9C115.15 67.07 102.54 74.57 88.41 71.32C74.28 68.07 67.44 54.2 71 41C74.56 27.8 86.09 19.47 101.3 23.58C114.48 27.14 122.27 40.7 118.72 53.88V53.9H118.71Z\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M83.46 45.67C83.01 44.73 88.68 42.76 89.04 43.35C89.86 44.91 90.57 46.52 91.16 48.18C91.65 49.36 92.51 49.65 93.16 48.7C96.27 44.62 99.94 40.99 104.04 37.91C105.41 36.98 109.04 41.65 108.04 42.33C103.04 46.02 98.17 51.33 93.93 56.72C93.41 57.57 92.37 57.95 91.43 57.62C90.41 57.42 89.4 57.13 88.43 56.75C87.73 56.44 87.21 55.83 87 55.09C86.02 51.88 84.84 48.73 83.46 45.67V45.67Z\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M113 35.72C110.43 31.49 106.45 28.3 101.76 26.72\\\" stroke=\\\"#3191CF\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M20.2899 61.82C20.2899 61.82 21.2899 58.3 23.7099 57.82C26.1299 57.34 28.5899 60.52 29.8799 59.36C33.6399 56.01 33.4199 59.43 35.5999 58.36C37.7799 57.29 42.9199 54.3 43.9499 55.41C45.7099 57.28 48.7799 56.62 48.7799 56.62\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M23.88 75C26.46 74.58 29.56 76.66 30.79 76C33.39 74.61 35.15 72.14 38.34 73.69C40.25 74.61 45.63 72.89 45.63 72.89\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M52.61 70.84C52.61 70.84 53.23 68.75 54.69 68.44C56.15 68.13 57.33 69.59 58.39 69.16C61.55 67.9 65.28 67.37 65.78 67.83\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M27 85.94C27 85.94 30.66 85.16 32.65 86.94C33.82 87.94 40.06 84.83 42.7 83.68C45.34 82.53 44.91 85.86 49.52 82.43C51.11 81.25 53.42 82.62 56.3 82.01C59.18 81.4 59.16 79.68 59.16 79.68C60.16 78.26 62.07 80.11 63.6 79.68C65.13 79.25 66.46 77.5 68.03 77.46\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n        </g>\\n        <defs>\\n            <clipPath id=\\\"clip0_1121_1131\\\">\\n                <rect width=\\\"128\\\" height=\\\"128\\\" fill=\\\"white\\\"/>\\n            </clipPath>\\n        </defs>\\n</svg>\",\"moduleName\":\"tt4/components/all-clear-icon.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/all-clear-icon.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/api-report.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ApiReportComponent;\n\nimport Ember from 'ember';\n\nimport pdfExport from '../mixins/pdf-export';\n\nimport csvExport from '../mixins/csv-export';\n\nimport $ from 'jquery';\n\nApiReportComponent = Ember.Component.extend(pdfExport, csvExport, {\n    Collector: Ember.inject.service('collector-service'),\n    admintool: Ember.inject.service('admintool'),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    translationPrefix: null,\n    path: '',\n    rowsPerPage: 30,\n    initData: Ember.on(\n        'init',\n        Ember.observer('query', 'currentPage', 'url', function () {\n            var c, promise;\n            c = this.get('Collector');\n            if (this.get('host') && this.get('host') === 'ADMINTOOLURL') {\n                promise = this.get('admintool').get(this.get('url'), this.get('query'));\n            } else {\n                promise = c.ttapi({\n                    url: this.get('url'),\n                });\n            }\n            promise.then((data) => {\n                var i, j, key, len, len1, obj, object_data, ref, ret, row;\n                this.set('rows', data.count);\n                if (!this.get('noPagination')) {\n                    this.set('pageCount', Math.ceil(data.count / this.get('rowsPerPage')));\n                }\n                ret = data.data;\n                if (data.count > 0 && data.data[0] instanceof Array) {\n                    object_data = [];\n                    ref = data.data;\n                    for (i = 0, len = ref.length; i < len; i++) {\n                        row = ref[i];\n                        obj = {};\n                        for (key = j = 0, len1 = row.length; j < len1; key = ++j) {\n                            data = row[key];\n                            obj[key] = data;\n                        }\n                        object_data.push(obj);\n                    }\n                    ret = object_data;\n                }\n                return this.set('data', ret);\n            });\n            return promise;\n        }),\n    ),\n    query: Ember.computed.alias('filters'),\n    url: Ember.computed('query', 'currentPage', 'rowsPerPage', 'path', function () {\n        var query, query_str_arr, rowsPerPage, url;\n        url = this.get('path');\n        query = this.get('query');\n        if (query) {\n            query_str_arr = [];\n            $.each(query, function (key, item) {\n                if (!item.value) {\n                    return;\n                }\n                return query_str_arr.push(item.name + '=' + item.value);\n            });\n            url += (url.includes('?') ? '&' : '?') + query_str_arr.join('&');\n        }\n        if (!this.get('noPagination')) {\n            rowsPerPage = this.get('rowsPerPage');\n            url += '&limit=' + rowsPerPage;\n            if (rowsPerPage !== 'all') {\n                url += '&offset=' + rowsPerPage * (this.get('currentPage') - 1);\n            }\n        }\n        // if no query-params, replace first & with ? so url is correct\n        if (url.indexOf('?') === -1) {\n            url = url.replace('&', '?');\n        }\n        return url;\n    }),\n    data: Em.A([]),\n    columns: Em.computed('data', function () {\n        var columns, firstRow;\n        if (!this.get('data')) {\n            return Em.A([]);\n        }\n        firstRow = this.get('data.firstObject');\n        if (!firstRow) {\n            return Em.A([]);\n        }\n        columns = Em.A([]);\n        $.each(firstRow, function (key, item) {\n            return columns.pushObject(key);\n        });\n        return columns;\n    }),\n    translatedColumns: Em.computed('columns', function () {\n        var columns, intl, translated_columns, translationPrefix;\n        translationPrefix = this.get('translationPrefix');\n        if (translationPrefix) {\n            columns = this.get('columns');\n            intl = this.get('intl');\n            translated_columns = [];\n            $.each(columns, (key, item) => {\n                return translated_columns.push(intl.t(translationPrefix + '.' + item));\n            });\n            return translated_columns;\n        }\n        return this.get('columns');\n    }),\n    asPdfElement: Ember.computed('columns', 'data', 'translatedColumns', function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            this.set('rowsPerPage', 'all');\n            return this.initData().then(() => {\n                this.set('rowsPerPage', 30);\n                return resolve(\n                    this.createPdfTableElement(\n                        this.get('columns'),\n                        this.get('data'),\n                        this.get('translatedColumns'),\n                    ),\n                );\n            });\n        });\n    }),\n    asCsvElement: Ember.computed('columns', 'data', 'translatedColumns', function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            this.set('rowsPerPage', 'all');\n            return this.initData().then(() => {\n                return resolve(\n                    this.createCsvElement(\n                        this.get('columns'),\n                        this.get('data'),\n                        this.get('translatedColumns'),\n                    ),\n                );\n            });\n        });\n    }),\n    /*\n\n  PROPERTIES FOR PAGINATION\n\n  */\n    currentPage: 1,\n    showPagination: Ember.computed.gt('pageCount', 1),\n    pages: Ember.computed('pageCount', function () {\n        var ref;\n        return Em.A(\n            function () {\n                var results = [];\n                for (\n                    var i = 1, ref = this.get('pageCount');\n                    1 <= ref ? i <= ref : i >= ref;\n                    1 <= ref ? i++ : i--\n                ) {\n                    results.push(i);\n                }\n                return results;\n            }.apply(this),\n        );\n    }),\n    hasPreviousPage: Ember.computed.gt('currentPage', 1),\n    hasNextPage: Ember.computed('currentPage', 'pageCount', function () {\n        return this.get('currentPage') < this.get('pageCount');\n    }),\n    actions: {\n        catchActions: function (action, params) {\n            if (action === 'checkedRowsAction') {\n                return params.action.func.bind(this)(params.rows);\n            } else {\n                return this.sendAction(action, params);\n            }\n        },\n        nextPage: function () {\n            return this.set('currentPage', this.get('currentPage') + 1);\n        },\n        previousPage: function () {\n            return this.set('currentPage', this.get('currentPage') - 1);\n        },\n        changePage: function (page) {\n            return this.set('currentPage', page);\n        },\n        export_pdf: function () {\n            var c, self, store;\n            self = this;\n            c = this.get('Collector');\n            store = this.get('store');\n            return this.get('asPdfElement').then((element) => {\n                if (self.get('pdfSubHeader')) {\n                    return self.get('query').forEach(function (qPart) {\n                        if (qPart['name'] === self.get('pdfSubHeader')) {\n                            return store\n                                .findRecord(qPart['name'], qPart['value'])\n                                .then(function (data) {\n                                    var addHeader;\n                                    addHeader =\n                                        c.getTranslationForColumn('presence', qPart['name']) +\n                                        ': ' +\n                                        data.get('name');\n                                    return self\n                                        .createPdfFromElements([element], 'download', addHeader, 22)\n                                        .then(function (file) {\n                                            if (\n                                                typeof cordova !== 'undefined' &&\n                                                cordova !== null\n                                            ) {\n                                                return self\n                                                    .get('cordova')\n                                                    .openFile(file, 'application/pdf');\n                                            }\n                                        });\n                                });\n                        }\n                    });\n                } else {\n                    return this.createPdfFromElements([element]).then(function (file) {\n                        if (typeof cordova !== 'undefined' && cordova !== null) {\n                            return self.get('cordova').openFile(file, 'application/pdf');\n                        }\n                    });\n                }\n            });\n        },\n        export_csv: function () {\n            return this.get('asCsvElement').then((element) => {\n                return this.createCsvFromElements(element);\n            });\n        },\n    },\n});\n\nexport default ApiReportComponent;\n","define(\"tt4/components/area-chart\", [\"exports\", \"ember-google-charts/components/area-chart\"], function (_exports, _areaChart) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _areaChart.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/array-input.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ArrayInputComponent;\n\nimport Ember from 'ember';\n\nArrayInputComponent = Ember.Component.extend({\n    makeArray: Em.on('init', function () {\n        var arr, i, item, len, value;\n        value = this.get('value');\n        if (value) {\n            if (typeof value === 'string') {\n                value = JSON.parse(this.get('value'));\n            }\n            if (Array.isArray(value)) {\n                arr = Em.A([]);\n                for (i = 0, len = value.length; i < len; i++) {\n                    item = value[i];\n                    arr.pushObject({\n                        value: parseInt(item, 10),\n                    });\n                }\n                return this.set('array', arr);\n            }\n        }\n    }),\n    setValue: Em.observer('array.[]', 'array.@each.value', function () {\n        var i, item, len, ref, value;\n        value = [];\n        ref = this.get('array');\n        for (i = 0, len = ref.length; i < len; i++) {\n            item = ref[i];\n            if (item.value !== '') {\n                value.push(item.value);\n            }\n        }\n        return Ember.run.once(this, function () {\n            return this.set('value', JSON.stringify(value));\n        });\n    }),\n    setAddText: Em.observer('addText', function () {\n        if (!this.get('addText')) {\n            return this.set('addText', 'general.add');\n        }\n    }),\n    actions: {\n        add: function () {\n            if (!this.get('array')) {\n                this.set('array', Em.A([]));\n            }\n            return this.get('array').pushObject({\n                value: '',\n            });\n        },\n        remove: function (obj) {\n            this.get('array').removeObject(obj);\n            // Re-validate after value updates by triggering focusIn (clears error) + focusOut (validates)\n            var component = this;\n            setTimeout(function () {\n                var input = component.element && component.element.querySelector('input[type=\"text\"]');\n                if (input) {\n                    input.focus();\n                    input.blur();\n                }\n            }, 300);\n        },\n    },\n});\n\nexport default ArrayInputComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/array-input2.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ObjectInputComponent;\n\nimport Ember from 'ember';\n\nimport { t } from 'ember-intl';\n\nObjectInputComponent = Ember.Component.extend({\n    // Where the objects live\n    objects: Em.A([]),\n    // We have to convert to objects instead of plain array so we can bind in template\n    placeholderObjects: Em.computed('objects.[]', function () {\n        var i, len, object, objects, obs;\n        objects = this.get('objects');\n        obs = Em.A([]);\n        for (i = 0, len = objects.length; i < len; i++) {\n            object = objects[i];\n            obs.push({\n                value: object,\n            });\n        }\n        return obs;\n    }),\n    obsPlacehoder: Em.observer('placeholderObjects.@each.value', function () {\n        var i, k, len, obj, obs, results;\n        obs = this.get('placeholderObjects');\n        results = [];\n        for (k = i = 0, len = obs.length; i < len; k = ++i) {\n            obj = obs[k];\n            results.push(this.set('objects.' + k, obj.value));\n        }\n        return results;\n    }),\n    // Save button text\n    saveText: t('general.save'),\n    // Add button text\n    addText: t('general.add'),\n    // You can disable all inputs and buttons\n    disabled: false,\n    actions: {\n        // Add objects to our array\n        add: function () {\n            return this.get('objects').pushObject('');\n        },\n        // Remove objects from our array\n        remove: function (obj, index) {\n            return this.get('objects').removeObject(obj.value);\n        },\n        // Send save action with our array\n        save: function () {\n            if (this.get('save')) {\n                return this.save(this.get('objects'));\n            }\n        },\n    },\n});\n\nexport default ObjectInputComponent;\n","define(\"tt4/components/bar-chart\", [\"exports\", \"ember-google-charts/components/bar-chart\"], function (_exports, _barChart) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _barChart.default;\n    }\n  });\n});\n","define(\"tt4/components/basic-dropdown-content\", [\"exports\", \"ember-basic-dropdown/components/basic-dropdown-content\"], function (_exports, _basicDropdownContent) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _basicDropdownContent.default;\n    }\n  });\n});\n","define(\"tt4/components/basic-dropdown-optional-tag\", [\"exports\", \"ember-basic-dropdown/components/basic-dropdown-optional-tag\"], function (_exports, _basicDropdownOptionalTag) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _basicDropdownOptionalTag.default;\n    }\n  });\n});\n","define(\"tt4/components/basic-dropdown-trigger\", [\"exports\", \"ember-basic-dropdown/components/basic-dropdown-trigger\"], function (_exports, _basicDropdownTrigger) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _basicDropdownTrigger.default;\n    }\n  });\n});\n","define(\"tt4/components/basic-dropdown\", [\"exports\", \"ember-basic-dropdown/components/basic-dropdown\"], function (_exports, _basicDropdown) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _basicDropdown.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/billing-info.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar BillingInfoComponent;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport $ from 'jquery';\n\nBillingInfoComponent = Ember.Component.extend({\n    session: Ember.inject.service(),\n    admintool: Ember.inject.service(),\n    countryLists: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    didInsertElement: function () {\n        return $('#' + this.get('billingtype')).addClass('in');\n    },\n    /*\n  billingTypes: Em.A [\n      Em.Object.create({name:'email',show:true})\n      Em.Object.create({name:'e_invoice',show:false})\n      Em.Object.create({name:'paper',show:false})\n  ]\n  */\n    errors: Ember.Object.create({\n        street: false,\n        zip: false,\n        town: false,\n        country: false,\n    }),\n    showEinvoiceOption: Em.computed(function () {\n        //console.log @get('session.currentUser.company_info.country')\n        if (this.get('session.currentUser.company_info.country') === 'fi') {\n            return true;\n        }\n        return false;\n    }),\n    getEinvoicingOperators: Em.on('init', function () {\n        /*\n    promise = new Ember.RSVP.Promise (resolve, reject) =>\n        promise = @get('admintool').ajax\n            url: \"operators\"\n            method: \"get\"\n\n        promise.then (data) ->\n            resolve data\n    promise.then (data) =>\n    */\n        var data;\n        data = [\n            {\n                id: 'apix',\n                name: 'Apix Messaging Oy (003723327487)',\n            },\n            {\n                id: 'basware',\n                name: 'BasWare Einvoices Oy (BAWCFI22)',\n            },\n            {\n                id: 'basware_oyj',\n                name: 'BasWare Oyj (003705925424)',\n            },\n            {\n                id: 'cgi',\n                name: 'CGI - Logica (003703575029)',\n            },\n            {\n                id: 'danske_bank',\n                name: 'Danske Bank Oyj (DABAFIHH)',\n            },\n            {\n                id: 'enfo',\n                name: 'Enfo Oy (003718062728)',\n            },\n            {\n                id: 'enfo_oyj',\n                name: 'Enfo Oyj (003714377140)',\n            },\n            {\n                id: 'inex',\n                name: 'InExchange Factorum AB (INEXCHANGE)',\n            },\n            {\n                id: 'liaison',\n                name: 'LIAISON Technologies Oy (003708599126)',\n            },\n            {\n                id: 'maventa',\n                name: 'Maventa Services (003721291126)',\n            },\n            {\n                id: 'nordea',\n                name: 'Nordea (NDEAFIHH)',\n            },\n            {\n                id: 'notebeat',\n                name: 'Notebeat Oy (003717203971)',\n            },\n            {\n                id: 'op',\n                name: 'OP-Pohjola-ryhmä (OKOYFIHH)',\n            },\n            {\n                id: 'opus',\n                name: 'OpusCapita Group Oy - Itella (003710948874)',\n            },\n            {\n                id: 'pagero',\n                name: 'Pagero (003723609900)',\n            },\n            {\n                id: 'pop',\n                name: 'POP Pankit (POPFFI22)',\n            },\n            {\n                id: 's_pankki',\n                name: 'S-Pankki Oy (SBANFIHH)',\n            },\n            {\n                id: 'sampo',\n                name: 'Sampo Pankki Oyj (PSPBFIHH)',\n            },\n            {\n                id: 'handelsbank',\n                name: 'Svenska HAndelsbanken AB (HANDFIHH)',\n            },\n            {\n                id: 'saasto',\n                name: 'Säästöpankit (ITELFIHH)',\n            },\n            {\n                id: 'tapiola',\n                name: 'Tapiola Pankki (TAPIFI22)',\n            },\n            {\n                id: 'teliasonera',\n                name: 'TeliaSonera Finland Oyj (003714756079)',\n            },\n            {\n                id: 'tieto',\n                name: 'Tieto Oyj (003701011385)',\n            },\n            {\n                id: 'aland',\n                name: 'Ålandsbanken Abp (AABAFI22)',\n            },\n            {\n                id: 'opus_solutions',\n                name: 'OpusCapita Solutions Oy (E204503)',\n            },\n        ];\n        return this.set('eInvoicingOperators', data);\n    }),\n    billingtype: 'email',\n    invoicingAddress: Em.computed(function () {\n        return {\n            email: this.get('session.currentUser.email'),\n        };\n    }),\n    save_company_info: function () {\n        var promise;\n        promise = this.get('admintool').ajax({\n            url: 'customer_info',\n            method: 'PUT',\n            data: {\n                street: this.get('customerData.street'),\n                zip: this.get('customerData.zip'),\n                town: this.get('customerData.town'),\n                country: this.get('customerData.country'),\n                specifier: this.get('customerData.specifier'),\n            },\n        });\n        return promise.then(() => {\n            // close only if shown in modal\n            if (this.get('close')) {\n                $('.modal').modal('hide');\n                return this.close();\n            } else {\n                return this.get('notifications').success(this.get('intl').t('general.saved'), {\n                    autoClear: true,\n                });\n            }\n        });\n    },\n    actions: {\n        copy_fields: function (checked) {\n            if (checked) {\n                this.set('invoicingAddress.zip', this.get('customerData.zip'));\n                this.set('invoicingAddress.town', this.get('customerData.town'));\n                this.set('invoicingAddress.country', this.get('customerData.country'));\n                return this.set('invoicingAddress.street', this.get('customerData.street'));\n            }\n        },\n        setBillingType: function (btype) {\n            return this.set('billingtype', btype);\n        },\n        edit: function () {\n            this.set('editmode', true);\n            return this.send('save');\n        },\n        close: function () {\n            $('.modal').modal('hide');\n            if (this.get('close')) {\n                return this.close();\n            }\n        },\n        save: function () {\n            var data_arr, field, hasError, i, len, method, promise, ref;\n            data_arr = {};\n            if (this.get('editmode')) {\n                method = 'PUT';\n            } else {\n                method = 'POST';\n            }\n            if (this.get('billingtype') === 'eInvoice') {\n                this.set('invoicingAddress.email', null);\n                this.set('invoicingAddress.zip', null);\n                this.set('invoicingAddress.town', null);\n                this.set('invoicingAddress.country', null);\n                this.set('invoicingAddress.street', null);\n            } else if (this.get('billingtype') === 'email') {\n                this.set('invoicingAddress.zip', null);\n                this.set('invoicingAddress.town', null);\n                this.set('invoicingAddress.country', null);\n                this.set('invoicingAddress.e_invoice_operator', null);\n                this.set('invoicingAddress.e_invoice_address', null);\n            } else if (this.get('billingtype') === 'paper') {\n                this.set('invoicingAddress.e_invoice_operator', null);\n                this.set('invoicingAddress.e_invoice_address', null);\n                this.set('invoicingAddress.email', null);\n            }\n            if (\n                this.get('invoicingAddress.use_company_address') &&\n                this.get('billingtype') === 'paper'\n            ) {\n                data_arr['street'] = this.get('customerData.street');\n                data_arr['zip'] = this.get('customerData.zip');\n                data_arr['town'] = this.get('customerData.town');\n                data_arr['country'] = this.get('customerData.country');\n            } else {\n                data_arr['street'] = this.get('invoicingAddress.street');\n                data_arr['zip'] = this.get('invoicingAddress.zip');\n                data_arr['town'] = this.get('invoicingAddress.town');\n                data_arr['country'] = this.get('invoicingAddress.country');\n            }\n            data_arr['billingtype'] = this.get('billingtype');\n            data_arr['email'] = this.get('invoicingAddress.email');\n            data_arr['e_invoice_operator'] = this.get('invoicingAddress.e_invoice_operator');\n            data_arr['e_invoice_address'] = this.get('invoicingAddress.e_invoice_address');\n            data_arr['invoice_ref'] = this.get('invoicingAddress.invoice_ref');\n            data_arr['use_company_address'] = this.get('invoicingAddress.use_company_address');\n            hasError = false;\n            if (this.get('billingtype') === 'eInvoice') {\n                ref = ['street', 'zip', 'town', 'country'];\n                for (i = 0, len = ref.length; i < len; i++) {\n                    field = ref[i];\n                    if (\n                        !this.get(\n                            'customerData.' + field || this.get('customerData.' + field === ''),\n                        )\n                    ) {\n                        this.set('errors.' + field, true);\n                        hasError = true;\n                    } else {\n                        this.set('errors.' + field, false);\n                    }\n                }\n            }\n            if (!hasError) {\n                promise = this.get('admintool').ajax({\n                    url: 'billinginfo',\n                    method: method,\n                    data: data_arr,\n                });\n                return promise.then(() => {\n                    // save also address-info if \"use company address\" is checked\n                    if (this.get('popup')) {\n                        return this.save_company_info();\n                    } else {\n                        if (this.get('close')) {\n                            $('.modal').modal('hide');\n                            return this.close();\n                        } else {\n                            return this.get('notifications').success(\n                                this.get('intl').t('general.saved'),\n                                {\n                                    autoClear: true,\n                                },\n                            );\n                        }\n                    }\n                });\n            }\n        },\n    },\n});\n\nexport default BillingInfoComponent;\n","import BootstrapDatepickerInlineComponent from 'ember-cli-bootstrap-datepicker/components/bootstrap-datepicker-inline';\n\nexport default BootstrapDatepickerInlineComponent;\n","import BootstrapDatepickerComponent from 'ember-cli-bootstrap-datepicker/components/bootstrap-datepicker';\n\nexport default BootstrapDatepickerComponent;\n","define(\"tt4/components/bs-accordion\", [\"exports\", \"ember-bootstrap/components/bs-accordion\"], function (_exports, _bsAccordion) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _bsAccordion.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-accordion/item\", [\"exports\", \"ember-bootstrap/components/bs-accordion/item\"], function (_exports, _item) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _item.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-accordion/item/body\", [\"exports\", \"ember-bootstrap/components/bs-accordion/item/body\"], function (_exports, _body) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _body.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-accordion/item/title\", [\"exports\", \"ember-bootstrap/components/bs-accordion/item/title\"], function (_exports, _title) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _title.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-button-group\", [\"exports\", \"ember-bootstrap/components/bs-button-group\"], function (_exports, _bsButtonGroup) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _bsButtonGroup.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-button-group/button\", [\"exports\", \"ember-bootstrap/components/bs-button-group/button\"], function (_exports, _button) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _button.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-button\", [\"exports\", \"ember-bootstrap/components/bs-button\"], function (_exports, _bsButton) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _bsButton.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-collapse\", [\"exports\", \"ember-bootstrap/components/bs-collapse\"], function (_exports, _bsCollapse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _bsCollapse.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-dropdown\", [\"exports\", \"ember-bootstrap/components/bs-dropdown\"], function (_exports, _bsDropdown) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _bsDropdown.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-dropdown/button\", [\"exports\", \"ember-bootstrap/components/bs-dropdown/button\"], function (_exports, _button) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _button.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-dropdown/menu\", [\"exports\", \"ember-bootstrap/components/bs-dropdown/menu\"], function (_exports, _menu) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _menu.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-dropdown/menu/divider\", [\"exports\", \"ember-bootstrap/components/bs-dropdown/menu/divider\"], function (_exports, _divider) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _divider.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-dropdown/menu/item\", [\"exports\", \"ember-bootstrap/components/bs-dropdown/menu/item\"], function (_exports, _item) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _item.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-dropdown/menu/link-to\", [\"exports\", \"ember-bootstrap/components/bs-dropdown/menu/link-to\"], function (_exports, _linkTo) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _linkTo.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-dropdown/toggle\", [\"exports\", \"ember-bootstrap/components/bs-dropdown/toggle\"], function (_exports, _toggle) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _toggle.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-modal\", [\"exports\", \"ember-bootstrap/components/bs-modal\"], function (_exports, _bsModal) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _bsModal.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-modal/body\", [\"exports\", \"ember-bootstrap/components/bs-modal/body\"], function (_exports, _body) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _body.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-modal/dialog\", [\"exports\", \"ember-bootstrap/components/bs-modal/dialog\"], function (_exports, _dialog) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _dialog.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-modal/footer\", [\"exports\", \"ember-bootstrap/components/bs-modal/footer\"], function (_exports, _footer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _footer.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-modal/header\", [\"exports\", \"ember-bootstrap/components/bs-modal/header\"], function (_exports, _header) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _header.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-modal/header/close\", [\"exports\", \"ember-bootstrap/components/bs-modal/header/close\"], function (_exports, _close) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _close.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-modal/header/title\", [\"exports\", \"ember-bootstrap/components/bs-modal/header/title\"], function (_exports, _title) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _title.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/cc-report.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CcReportComponent;\n\nimport Ember from 'ember';\n\nimport pdfExport from '../mixins/pdf-export';\n\nimport chartComp from './chart-comp';\n\nimport $ from 'jquery';\n\nimport { isArray } from '@ember/array';\n\nimport { htmlSafe } from '@ember/template';\n\nimport collector from 'tt4/classes/collector';\n\nCcReportComponent = Ember.Component.extend(pdfExport, {\n    Collector: Ember.inject.service('collector-service'),\n    sessionGlobals: Ember.inject.service(),\n    //# integration key in CloudConnector\n    key: null,\n    //# Query parameters for fetching data from api\n    query: null,\n    //# Show data as chart\n    isChart: false,\n    rowsPerPage: 25,\n    currentPage: 1,\n    didInsertElement: function () {\n        return this.refreshSettings();\n    },\n    refreshSettings: function () {\n        var getSettings, self, settings;\n        getSettings = ['key', 'query'];\n        settings = this.get('settings');\n        if (!settings) {\n            return;\n        }\n        self = this;\n        return $.each(getSettings, function (key, item) {\n            var new_value, old_value;\n            if ((!item) in settings) {\n                return;\n            }\n            old_value = self.get(item);\n            new_value = settings[item];\n            if (old_value !== new_value) {\n                return self.set(item, new_value);\n            }\n        });\n    }.observes('settings.key', 'settings.query'),\n    isHtml: Ember.computed('type', function () {\n        return 'html' === this.get('type');\n    }),\n    data: Ember.computed(function () {}),\n    dataFromCC: Ember.on(\n        'init',\n        Ember.observer('query', 'currentPage', function () {\n            var c, key, promise;\n            key = this.get('key');\n            if (!key) {\n                return null;\n            }\n            c = this.get('Collector');\n            this.set('loading', true);\n            this.set('error', false);\n            this.set('error_description', null);\n            this.set('data', null);\n            this.set('chartData', null);\n            this.set('isChart', false);\n            this.set('html', null);\n            promise = c.ccapi({\n                url: this.createUrl(),\n                method: this.requestMethod ? this.requestMethod : 'GET',\n            });\n            promise.then((data) => {\n                var array, error;\n                this.set('loading', false);\n                if (this.get('type') === 'html') {\n                    this.set('html', new Ember.String.htmlSafe(data));\n                    return;\n                }\n                if (!data) {\n                    this.set('data', []);\n                    this.set('chartData', null);\n                    this.set('isChart', false);\n                    return;\n                }\n                try {\n                    array = JSON.parse(data);\n                } catch (error1) {\n                    error = error1;\n                    this.set('error', 'parse_error');\n                    this.set('error_description', data);\n                    throw new Error(\n                        'Could not parse CC response for integration ' + key + ' ' + error,\n                    );\n                }\n                this.set('pageCount', Math.ceil(array.count / this.get('rowsPerPage')));\n                if (array.chart_type === 'table') {\n                    this.set('data', this.getFormattedData(array.data));\n                    this.set('chartData', null);\n                    return this.set('isChart', false);\n                } else {\n                    this.set('data', null);\n                    this.set('chartData', array);\n                    return this.set('isChart', true);\n                }\n            });\n            return promise;\n        }),\n    ),\n    asPdfElement: Ember.computed(function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise;\n            promise = this.dataFromCC();\n            return promise.then(() => {\n                var component;\n                if (this.get('isChart')) {\n                    component = chartComp.create({\n                        api_url: this.get('url'),\n                        type: 'table',\n                        usecontainer: $('<div></div>'),\n                    });\n                    component.set('data', this.get('chartData'));\n                    return resolve({\n                        image: component.get('chart').getImageURI(),\n                        width: 250,\n                    });\n                } else {\n                    return resolve(\n                        this.createPdfTableElement(this.get('columns'), this.get('data')),\n                    );\n                }\n            });\n        });\n    }),\n    asCsvArray: Ember.computed(function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise, rows;\n            promise = this.dataFromCC();\n            rows = [];\n            return promise.then(() => {\n                var column, columns, csv_data, i, j, len, len1, newrow, row;\n                rows.push(this.get('columns'));\n                csv_data = this.get('data');\n                columns = this.get('columns');\n                for (i = 0, len = csv_data.length; i < len; i++) {\n                    row = csv_data[i];\n                    newrow = [];\n                    for (j = 0, len1 = columns.length; j < len1; j++) {\n                        column = columns[j];\n                        newrow.push(row[column]);\n                    }\n                    rows.push(newrow);\n                }\n                return resolve(rows);\n            });\n        });\n    }),\n    //        header: @get 'settings.header'\n    createUrl: function () {\n        var i, item, len, query, query_str_arr, url;\n        url = this.get('key');\n        if (!url) {\n            return;\n        }\n        query = this.get('query');\n        if (!query) {\n            query = this.getDefaultQuery();\n        }\n        if (query) {\n            query_str_arr = [];\n            for (i = 0, len = query.length; i < len; i++) {\n                item = query[i];\n                if (!item.value) {\n                    return;\n                }\n                query_str_arr.push(item.name + '=' + item.value);\n            }\n            url += '?' + query_str_arr.join('&');\n            if (!this.get('isChart')) {\n                url +=\n                    '&limit=' +\n                    this.get('rowsPerPage') +\n                    '&offset=' +\n                    this.get('rowsPerPage') * (this.get('currentPage') - 1);\n            }\n        }\n        return url;\n    },\n    getDefaultQuery: function () {\n        var param, param_arr, params;\n        if (!this.get('query')) {\n            // this is not the correct way to do this but only way I figured out :|\n            // form-filters should be able to update these automatically - Veikko\n            params = this.get('sessionGlobals').get('filters_worktime') || {};\n            if (!params.date) {\n                params.date =\n                    moment().startOf('isoweek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD');\n            }\n            param_arr = Em.A([]);\n            for (param in params) {\n                if (Em.isPresent(params[param])) {\n                    param_arr.push({\n                        name: param,\n                        value: params[param],\n                    });\n                }\n            }\n            return param_arr;\n        }\n    },\n    // This function formats hdfile fields as htmlSafe so they are shown correctly in report and not \"[Object object]\"\n    getFormattedData: function (data) {\n        return data.map((row) => {\n            var obj;\n            obj = {};\n            Object.entries(row).forEach((val) => {\n                var html;\n                html = '';\n                if (isArray(val[1])) {\n                    val[1].forEach((file) => {\n                        var previewFile;\n                        if (file.s3thumb) {\n                            return (html +=\n                                '<div class=\"img-thumb\" style=\"background-image: url(' +\n                                file.s3thumb +\n                                ')\"></div>');\n                        } else if (file.url) {\n                            previewFile = this.get('Collector').makeFileUrl(\n                                collector.api_url() + '/',\n                                file.url,\n                            );\n                            return (html +=\n                                '<a class=\"file-preview\" href=' +\n                                previewFile +\n                                '>' +\n                                file.name +\n                                '</a>');\n                        }\n                    });\n                    return (obj[val[0]] = html ? htmlSafe(html) : val[1]);\n                } else {\n                    return (obj[val[0]] = val[1]);\n                }\n            });\n            return obj;\n        });\n    },\n    columns: Em.computed('data', function () {\n        var columns, firstRow;\n        if (!this.get('data')) {\n            return Em.A([]);\n        }\n        firstRow = this.get('data.firstObject');\n        if (!firstRow) {\n            return Em.A([]);\n        }\n        columns = Em.A([]);\n        $.each(firstRow, function (key, item) {\n            return columns.pushObject(key);\n        });\n        return columns;\n    }),\n});\n\nexport default CcReportComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/chart-comp.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ChartComponent;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nimport { getAssetFolder, getScriptsInOrder } from 'tt4/utils/getScript';\n\nChartComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    layoutName: 'components/chart',\n    name: 'chart',\n    id: null,\n    data: null,\n    // with this chart can fetch its data directly over api\n    datapoint: null,\n    // when using datapoint api request params can be setted with filter (ie. {test: 'value'})\n    filters: null,\n    two_series: false,\n    export_pdf: false,\n    showExport: Ember.computed(function () {\n        var exports;\n        exports = [];\n        if (typeof cordova === 'undefined' || cordova === null) {\n            exports.push('pdf');\n        }\n        return exports;\n    }),\n    didInsertElement: function () {\n        if (this.get('datapoint')) {\n            return this.fetch_data();\n        } else {\n            return this.drawChart();\n        }\n    },\n    fetch_data: function () {\n        var datapoint, filter_arr, filters, self, url;\n        datapoint = this.get('datapoint');\n        if (!datapoint) {\n            return;\n        }\n        filters = this.get('filters');\n        url = this.get('api_url') + datapoint;\n        if (filters) {\n            filter_arr = [];\n            filters.forEach(function (item) {\n                return filter_arr.push(item.key + '=' + item.value);\n            });\n            url += '?' + filter_arr.join('&');\n        }\n        self = this;\n        return $.ajax({\n            url: url,\n            type: 'GET',\n            //headers: {'Authorization': 'Bearer '+localStorage.access_token}\n        }).done(function (data) {\n            return self.set('data', data);\n        });\n    }.observes('datapoint', 'filters'),\n    // draw chart or multiple chart when ever property data changes\n    drawChart: function () {\n        var container, data, parsed, raw_data, type;\n        raw_data = this.get('data');\n        if (typeof raw_data === 'string') {\n            raw_data = JSON.parse(raw_data);\n        }\n        if (!raw_data) {\n            return;\n        }\n        // Instantiate and draw our chart, passing in some options\n        container = this.get('usecontainer') || $('div.chart', this.element);\n        if ('chart_type' in raw_data) {\n            parsed = this.parse_data(raw_data.data, 'nottable');\n            this.draw_single_chart(container.get(0), raw_data.chart_type, parsed.google_data);\n            return;\n        }\n        type = this.get('type');\n        data = this.parse_data(raw_data, type);\n        if (data.constructor !== Array) {\n            return this.draw_single_chart(container.get(0), type, data.google_data);\n        } else {\n            return this.drawMultipleCharts(container, data);\n        }\n    }.observes('data'),\n    // render multiple charts if data contains array\n    drawMultipleCharts: function (container, data) {\n        var self;\n        self = this;\n        container.empty();\n        return $.each(data, function (key, item) {\n            var subcontainer;\n            if (item.header) {\n                $('<h2>' + item.header + '</h2>').appendTo(container);\n            } else {\n                $('<br><br>').appendTo(container);\n            }\n            subcontainer = $('<div class=\"' + key + '\"></div>');\n            subcontainer.appendTo(container);\n            return self.draw_single_chart(subcontainer.get(0), item.type, item.google_data);\n        });\n    },\n    // call the actual google visulization draw method for every chart\n    draw_single_chart: function (container, type, data) {\n        var chart, colors_arr, columns, i, linecolors, multiple_series, options, self, series;\n        switch (type) {\n            case 'table':\n                options = {\n                    cssClassNames: {\n                        tableCell: 'reportCell',\n                    },\n                };\n                chart = new google.visualization.Table(container);\n                break;\n            case 'pie':\n                if (this.get('options')) {\n                    options = this.get('options');\n                } else {\n                    options = {\n                        //is3D: true\n                        chartArea: {\n                            width: '100%',\n                            height: '100%',\n                        },\n                        height: 350,\n                    };\n                }\n                chart = new google.visualization.PieChart(container);\n                if (this.get('onSelect'))\n                    google.visualization.events.addListener(chart, 'select', () => {\n                        var selectedItem = chart.getSelection()[0];\n                        this.get('onSelect')(\n                            selectedItem.row,\n                            this.get('data')[selectedItem.row + 1][0],\n                        );\n                    });\n                break;\n            case 'bars':\n                options = {\n                    //is3D: true\n                    //chartArea:{left:0,top:0,width:\"100%\",height:\"100%\"}\n                    height: 350,\n                };\n                chart = new google.visualization.BarChart(container);\n                break;\n            case 'column':\n                options = {\n                    //is3D: true\n                    //chartArea:{left:0,top:0,width:\"100%\",height:\"100%\"}\n                    height: 350,\n                };\n                chart = new google.visualization.ColumnChart(container);\n                break;\n            case 'tree':\n                chart = new google.visualization.OrgChart(container);\n                options = {\n                    size: 'large',\n                };\n                break;\n            //                    nodeClass: 'org-chart-node'\n            case 'gauge':\n                chart = new google.visualization.Gauge(container);\n                if (this.get('options')) {\n                    options = this.get('options');\n                } else {\n                    options = {\n                        width: 350,\n                        height: 150,\n                    };\n                }\n                break;\n            default:\n                columns = [];\n                series = {};\n                i = 0;\n                while (i < data.getNumberOfColumns()) {\n                    columns.push(i);\n                    if (i > 0) {\n                        series[i - 1] = {};\n                    }\n                    i++;\n                }\n                linecolors = [\n                    '#3366cc',\n                    '#dc3912',\n                    '#ff9900',\n                    '#109618',\n                    '#990099',\n                    '#0099c6',\n                    '#dd4477',\n                    '#66aa00',\n                    '#b82e2e',\n                    '#316395',\n                    '#994499',\n                    '#22aa99',\n                    '#aaaa11',\n                    '#6633cc',\n                    '#e67300',\n                    '#8b0707',\n                    '#651067',\n                    '#329262',\n                    '#5574a6',\n                    '#3b3eac',\n                    '#b77322',\n                    '#16d620',\n                    '#b91383',\n                    '#f4359e',\n                    '#9c5935',\n                    '#a9c413',\n                    '#2a778d',\n                    '#668d1c',\n                    '#bea413',\n                    '#0c5922',\n                    '#743411',\n                ];\n                if (this.get('options')) {\n                    options = this.get('options');\n                } else {\n                    options = {\n                        height: 350,\n                        width: '100%',\n                        colors: [\n                            '#3366cc',\n                            '#dc3912',\n                            '#ff9900',\n                            '#109618',\n                            '#990099',\n                            '#0099c6',\n                            '#dd4477',\n                            '#66aa00',\n                            '#b82e2e',\n                            '#316395',\n                            '#994499',\n                            '#22aa99',\n                            '#aaaa11',\n                            '#6633cc',\n                            '#e67300',\n                            '#8b0707',\n                            '#651067',\n                            '#329262',\n                            '#5574a6',\n                            '#3b3eac',\n                            '#b77322',\n                            '#16d620',\n                            '#b91383',\n                            '#f4359e',\n                            '#9c5935',\n                            '#a9c413',\n                            '#2a778d',\n                            '#668d1c',\n                            '#bea413',\n                            '#0c5922',\n                            '#743411',\n                        ],\n                    };\n                }\n                if (this.get('multiple_series')) {\n                    multiple_series = this.get('multiple_series');\n                    options.vAxes = multiple_series.vAxes;\n                    options.series = multiple_series.series;\n                    options.legend = {\n                        position: 'top',\n                        textStyle: {\n                            fontSize: 14,\n                        },\n                    };\n                }\n                options.chartArea = {\n                    left: 25,\n                    top: 10,\n                    width: '75%',\n                    height: '80%',\n                };\n                chart = new google.visualization.LineChart(container);\n                self = this;\n                google.visualization.events.addListener(chart, 'select', function () {\n                    var col, sel, show_columns, view;\n                    if (self.get('selectionHandler')) {\n                        return self.selectionHandler(chart.getSelection());\n                    } else {\n                        sel = chart.getSelection();\n                        show_columns = [];\n                        if (sel.length > 0) {\n                            // if row is null, we clicked on the legend\n                            if (sel[0].row === null) {\n                                col = sel[0].column;\n                                if (options.colors[col - 1] !== '#CCC') {\n                                    options.colors[col - 1] = '#CCC';\n                                } else {\n                                    options.colors[col - 1] = linecolors[col - 1];\n                                }\n                                view = new google.visualization.DataView(data);\n                                view.setColumns(columns);\n                                chart.draw(view, options);\n                            }\n                        }\n                    }\n                });\n        }\n        if (this.get('selectionHandler')) {\n            options.animation = {};\n        } else if (type === 'column') {\n            options.animation = {\n                startup: true,\n                duration: 200,\n            };\n        } else {\n            options.animation = {\n                startup: true,\n                duration: 1000,\n            };\n        }\n        if (options.hAxis == null) {\n            options.hAxis = {};\n        }\n        if (this.get('Xmax')) {\n            options.hAxis.maxValue = this.get('Xmax');\n        }\n        if (this.get('Xmin')) {\n            options.hAxis.minValue = this.get('Xmin');\n        }\n        if (options.vAxis == null) {\n            options.vAxis = {};\n        }\n        if (this.get('Ymax')) {\n            options.vAxis.maxValue = this.get('Ymax');\n        }\n        if (this.get('Ymin')) {\n            options.vAxis.minValue = this.get('Ymin');\n        }\n        //options.backgroundColor = '#E4E4E4'\n        if (this.get('colors')) {\n            colors_arr = this.get('colors').split(',');\n            options.colors = colors_arr;\n        }\n        this.set('options', options);\n        this.set('drawnData', data);\n        chart.draw(data, options);\n        return this.set('chart', chart);\n    },\n    // parse raw data returned from api to format which can be used to call google visulization\n    // format for single chart is {columns: {...}, rows: [...]}\n    // format when returning multiple charts is [{header: ..., columns: {...}, rows: [...]},...]\n    parse_data: function (raw_data, default_type) {\n        var self, temp;\n        if (raw_data.constructor !== Array || default_type !== 'table') {\n            return this.get_google_chart_data(default_type, raw_data);\n        }\n        // else contains many tables\n        self = this;\n        temp = [];\n        $.each(raw_data, function (index, item) {\n            return temp.push(self.get_google_chart_data(default_type, item));\n        });\n        return temp;\n    },\n    // parse one chart data for google visualization\n    get_google_chart_data: function (default_type, raw_data) {\n        var google_data, type;\n        type = 'type' in raw_data ? raw_data.type : default_type;\n        if (type === 'table') {\n            google_data = this.parse_single_table(raw_data);\n        } else {\n            google_data = google.visualization.arrayToDataTable(raw_data);\n        }\n        return {\n            header: raw_data.header,\n            type: type,\n            google_data: google_data,\n        };\n    },\n    // parses table data for google visualization\n    parse_single_table: function (raw_data) {\n        var data, dk, drow, format, j, k, l, len, len1, len2, m, r, real_rows, ref, ref1, row, self;\n        self = this;\n        data = new google.visualization.DataTable();\n        Ember.assert('table data contains no columns', raw_data.columns);\n        $.each(raw_data.columns, function (index, item) {\n            var t;\n            if (item.type === 'int' || item.type === 'percent') {\n                t = 'number';\n            } else {\n                t = item.type;\n            }\n            return data.addColumn(t, self.get('intl').t('chart.' + item.text));\n        });\n        Ember.assert('table data contains no rows', raw_data.rows);\n        real_rows = [];\n        ref = raw_data.rows;\n        for (k = j = 0, len = ref.length; j < len; k = ++j) {\n            row = ref[k];\n            r = [];\n            ref1 = raw_data.columns;\n            for (dk = l = 0, len1 = ref1.length; l < len1; dk = ++l) {\n                drow = ref1[dk];\n                if (drow.type === 'number') {\n                    r[dk] = {\n                        v: parseFloat(row[dk]),\n                        f: row[dk],\n                    };\n                } else if (drow.type === 'int') {\n                    r[dk] = {\n                        v: parseFloat(row[dk]),\n                        f: row[dk],\n                    };\n                } else if (drow.type === 'percent') {\n                    format = '';\n                    if (row[dk]) {\n                        format = row[dk] + ' %';\n                    }\n                    r[dk] = {\n                        v: parseFloat(row[dk]),\n                        f: format,\n                    };\n                } else {\n                    r[dk] = row[dk];\n                }\n            }\n            real_rows.push(r);\n        }\n        data.addRows(real_rows);\n        for (k = m = 0, len2 = real_rows.length; m < len2; k = ++m) {\n            row = real_rows[k];\n            data.setProperty(k, 0, 'className', 'tableCellFixedWidth');\n        }\n        return data;\n    },\n    willDestroyElement: function () {\n        if (this.get('chart') && Ember.typeOf(this.get('chart').clearChart) === 'function') {\n            return this.get('chart').clearChart();\n        }\n    },\n    actions: {\n        redraw: function () {\n            return this.drawChart();\n        },\n        save_pdf: function (param) {\n            var assetsfolder, chart, docDefinition;\n            this.set('showLoader', true);\n            chart = this.get('chart');\n            docDefinition = {\n                content: {\n                    image: chart.getImageURI(),\n                    width: 800,\n                },\n                pageSize: 'A4',\n                pageOrientation: 'landscape',\n                pageMargins: [0, 20, 0, 0],\n            };\n            assetsfolder = getAssetFolder('assets');\n            return getScriptsInOrder([\n                assetsfolder + 'pdfmake_v0.1.68.min.js',\n                assetsfolder + 'vfs_fonts_v0.1.68.min.js',\n            ]).then(() => {\n                createPdf(docDefinition).download('export.pdf');\n                return this.set('showLoader', false);\n            });\n        },\n    },\n});\n\nexport default ChartComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/collector-field.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport localization from '../classes/localization';\n\nimport collector from '../classes/collector';\n\nimport validatorClass from 'tt4/classes/validations';\n\nimport { htmlSafe } from '@ember/string';\n\nconst { getOwner, get } = Ember;\n\nCollectorFieldComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    localStorageWrapper: Em.inject.service(),\n    session: Em.inject.service(),\n    gui: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    userId: Ember.computed('session.currentUser.id', function () {\n        return this.get('session.currentUser.id');\n    }),\n    title: true,\n    external_errors: Em.A([]),\n    init: function () {\n        var cust_value,\n            defaultValue,\n            default_value,\n            ext,\n            feature,\n            field,\n            fieldExt,\n            fields,\n            j,\n            key,\n            l,\n            len,\n            len1,\n            merged_values,\n            modelName,\n            name,\n            options,\n            ref,\n            ref1,\n            ref2,\n            ref3,\n            v,\n            val,\n            value;\n        this._super();\n        field = this.get('field');\n        if (!field) {\n            return;\n        }\n        // super HAX ...\n        // database fields cannot update model if alias\n        // other fields can but they need to be alias so parent controllers can change their values\n        if ((ref = get(field, 'type')) === 'database' || ref === 'timerlink') {\n            Ember.defineProperty(\n                this,\n                'value',\n                Ember.computed.oneWay('model.' + this.get('field.ext')),\n            );\n        } else {\n            Ember.defineProperty(\n                this,\n                'value',\n                Ember.computed.alias('model.' + this.get('field.ext')),\n            );\n        }\n        ext = this.get('field.ext');\n        if (ext && ext.indexOf('_plus', ext.length - 5) !== -1) {\n            name = ext.substring(0, ext.length - 5);\n            Ember.defineProperty(this, 'plus', Ember.computed.alias('model.' + name + '_plus'));\n            Ember.defineProperty(this, 'minus', Ember.computed.alias('model.' + name + '_minus'));\n            this.set('plusminus', true);\n        }\n        if (ext === 'location') {\n            this.set('field.type', 'gpslocation');\n        }\n        if (ext === 'end_location') {\n            this.set('field.type', 'gpslocation');\n        }\n        if (ext === 'location_map') {\n            this.set('field.type', 'gpslocationmap');\n        }\n        if (\n            ext === 'weather' &&\n            this.get('value') &&\n            Ember.typeOf(this.get('value')) === 'string'\n        ) {\n            this.set('value', JSON.parse(this.get('value')));\n        }\n        if (this.get('field.type') === 'signature') {\n            val = this.get('value');\n            if (val != null && val.length > 0) {\n                val = val[0];\n            }\n            if (val != null && val.url) {\n                if (val.url.substring(0, 4) !== 'http') {\n                    this.set('value.url', collector.api_url() + '/' + val.url);\n                }\n            }\n        }\n        if (this.get('field.type') === 'radio') {\n            modelName = this.model.constructor.modelName;\n            fieldExt = this.field.ext;\n            options = this.get('field.options');\n            if (typeof options[0] !== 'object') {\n                options = options.map(function (val) {\n                    return {\n                        value: val,\n                        text: modelName + '.' + fieldExt + '.' + val,\n                    };\n                });\n                this.set('field.options', options);\n            }\n        }\n        // merge field features with customization features\n        if (this.get('field.customization.features') && field.features) {\n            ref1 = field.features;\n            for (feature in ref1) {\n                value = ref1[feature];\n                //merge if values aren't same\n                if (\n                    this.get('field.customization.features')[feature] !== value &&\n                    this.get('field.customization.features')[feature] !== void 0\n                ) {\n                    merged_values = [];\n                    cust_value = this.get('field.customization.features')[feature];\n                    //put from customization\n                    if (typeof cust_value === 'object') {\n                        cust_value.forEach((val) => {\n                            return merged_values.push(val);\n                        });\n                    } else {\n                        merged_values.push(cust_value);\n                    }\n                    //put features from api to array\n                    if (typeof value === 'object') {\n                        value.forEach((val) => {\n                            return merged_values.push(val);\n                        });\n                    } else {\n                        merged_values.push(value);\n                    }\n                    field.features[feature] = merged_values;\n                }\n            }\n        }\n        // Set default values for the field that comes from forms settings\n        if (\n            field &&\n            field.features.default_value &&\n            this.get('model.isNew') &&\n            this.get('value') == null\n        ) {\n            default_value = (function () {\n                switch (field.features.default_value) {\n                    case 'today':\n                        return moment().format('YYYY-MM-DD');\n                    default:\n                        return field.features.default_value;\n                }\n            })();\n            if (field.type === 'dropdown_values') {\n                default_value = default_value.toString();\n            }\n            default_value = default_value.value != null ? default_value.value : default_value;\n            Ember.run.next(this, () => {\n                this.set('value', default_value);\n                this.set('model.' + this.get('field.ext'), default_value);\n                return this.send('validate');\n            });\n        }\n        //default values for fields\n        if (\n            this.get('model.isNew') &&\n            this.get('field.customization.defaultValue') &&\n            this.get('value') == null\n        ) {\n            defaultValue = this.get('field.customization.defaultValue');\n            this.set('value', defaultValue);\n            this.set('model.' + this.get('field.ext'), defaultValue);\n        }\n        if (field && typeof field.features.mandatory === 'object') {\n            ref2 = field.features.mandatory;\n            for (j = 0, len = ref2.length; j < len; j++) {\n                fields = ref2[j];\n                for (key in fields) {\n                    v = fields[key];\n                    Ember.defineProperty(this, 'conditional', Ember.computed.alias('model.' + key));\n                }\n            }\n        }\n        if (field && typeof field.features.hide === 'object') {\n            ref3 = field.features.hide;\n            for (l = 0, len1 = ref3.length; l < len1; l++) {\n                fields = ref3[l];\n                for (key in fields) {\n                    v = fields[key];\n                    Ember.defineProperty(\n                        this,\n                        'hide_conditional',\n                        Ember.computed.alias('model.' + key),\n                    );\n                }\n            }\n        }\n        if (\n            this.get('field.features.mandatory') &&\n            typeof this.get('field.features.mandatory') !== 'object'\n        ) {\n            this.set('_mandatory', true);\n            if (\n                !(\n                    this.get('field.type') === 'dropdown_country' ||\n                    (this.get('field.options') &&\n                        this.get('field.options.firstObject') !== '' &&\n                        this.get('field.type') !== 'database' &&\n                        this.get('field.type') !== 'dropdown_values')\n                )\n            ) {\n                if (\n                    (this.get('value') instanceof Ember.ObjectProxy ||\n                        this.get('value') instanceof Ember.ArrayProxy) &&\n                    Ember.isEmpty(this.get('value.content')) &&\n                    !this.get('hide')\n                ) {\n                    if (this.get('errors')) {\n                        this.errors.push(this.field.ext);\n                    } else {\n                        this.errors = [this.field.ext];\n                    }\n                } else if (!Ember.isPresent(this.get('value')) && !this.get('hide')) {\n                    if (this.get('errors')) {\n                        this.errors.push(this.field.ext);\n                    } else {\n                        this.errors = [this.field.ext];\n                    }\n                }\n            }\n        }\n        if (this.get('field.type') === 'timeclean_imei') {\n            this.set('buttonText', 'project.add.imei');\n        }\n        if (this.get('field.customization.hide_title' || !this.get('settings.title'))) {\n            this.set('title', false);\n        }\n        if (this.get('field.features.stashed') && !this.get('show_stashed')) {\n            this.set('hide', true);\n        }\n        if (this.get('field.validateOnInit') && this.get('value')) {\n            this.send('validate');\n        }\n        if (typeof this.get === 'function' ? this.get('external_errors') : void 0) {\n            return this.get('external_errors').clear();\n        }\n    },\n    setDefaultValue: Em.on(\n        'init',\n        Em.observer('session.currentUser.id', function () {\n            var defValue, self;\n            if (\n                localStorage &&\n                !this.get('value') &&\n                !this.get('settings.edit') &&\n                !this.get('settings.report')\n            ) {\n                self = this;\n                switch (this.get('field.type')) {\n                    case 'database':\n                        defValue = this.get('localStorageWrapper').getUserSetting(\n                            this.get('field.options.form'),\n                        );\n                        defValue = parseInt(defValue, 10);\n                        if (\n                            defValue &&\n                            this.get('model.isNew') &&\n                            !this.get('hide') &&\n                            !this.get('field.features.do_not_preselect')\n                        ) {\n                            //@set 'value', defValue\n                            return this.Collector.get('store')\n                                .findRecord(this.get('field.options.form'), defValue, {\n                                    reload: true,\n                                })\n                                .then(\n                                    (row) => {\n                                        return Ember.run.next(this, () => {\n                                            if (row.get('row_info.status') !== 'removed') {\n                                                this.set('value', row);\n                                                return this.send('validate');\n                                            }\n                                        });\n                                    },\n                                    (reason) => {\n                                        return this.get('localStorageWrapper').setUserSetting(\n                                            this.get('field.options.form'),\n                                            null,\n                                        );\n                                    },\n                                );\n                        }\n                }\n            }\n        }),\n    ),\n    storeDefaultValue: function () {\n        var ref, tmp_value, value;\n        if (localStorage && this.get('value')) {\n            switch (this.get('field.type')) {\n                case 'database':\n                    value = this.get('value');\n                    if (!((ref = Ember.typeOf(value)) === 'number' || ref === 'string')) {\n                        tmp_value = value.get('id');\n                    } else {\n                        tmp_value = value;\n                    }\n                    return this.get('localStorageWrapper').setUserSetting(\n                        this.get('field.options.form'),\n                        parseInt(tmp_value),\n                    );\n            }\n        }\n    },\n    name: Ember.computed('intl.locale', function () {\n        var name;\n        if (this.get('field.type') === 'checkboxgroup') {\n            name = this.get('field.name')\n                ? this.get('field.name')\n                : this.get('intl').t(\n                      this.get('model.constructor.modelName') + 's.' + this.get('field.ext'),\n                  );\n            return name;\n        }\n        if (this.get('model.constructor.modelName').includes('measurement-custom')) {\n            name = this.get('field.name')\n                ? this.get('field.name')\n                : this.get('intl').t('tr' + '.' + this.get('field.ext'));\n            return name;\n        }\n        if (this.get('field.customization.translation')) {\n            //translation from customization\n            return htmlSafe(this.get('intl').t(this.get('field.customization.translation')));\n        }\n        if (this.get('field.translation')) {\n            return htmlSafe(this.get('intl').t(this.get('field.translation')));\n        }\n        return htmlSafe(\n            this.get('field.name') ||\n                this.get('intl').t(\n                    this.get('model.constructor.modelName') + '.' + this.get('field.ext'),\n                ),\n        );\n    }),\n    unit: Ember.computed(function () {\n        switch (this.get('field.type')) {\n            case 'minutes':\n                return 'min';\n            case 'price':\n                if (this.get('session.currentUser.company_info.country') === 'se') {\n                    return 'SEK';\n                } else {\n                    return '€';\n                }\n                break;\n            case 'big_price':\n                return '€';\n            default:\n                return this.get('field.options');\n        }\n    }),\n    valuePreview: Ember.computed('value', 'intl.locale', function () {\n        var dropdowns, ref, value;\n        value = this.Collector.format(\n            this.get('value'),\n            this.get('field'),\n            null,\n            this.get('model'),\n        );\n        if (this.get('formatter')) {\n            dropdowns = ['dropdown_values'];\n            if (\n                value === this.get('value') &&\n                this.get('field.type') !== 'embedded' &&\n                this.get('field.type') !== 'object'\n            ) {\n                value = this.get('formatter')(this.get('field.ext'), this.get('value'), this);\n            } else if (((ref = this.get('field.type')), indexOf.call(dropdowns, ref) >= 0)) {\n                value = this.get('formatter')(\n                    this.get('field.ext'),\n                    this.get('value'),\n                    this,\n                    value,\n                );\n            }\n        }\n        return value;\n    }),\n    popoverContents: '...',\n    prompt: Ember.computed('intl.locale', function () {\n        return this.get('intl').t('general.select_choose');\n    }),\n    update: Ember.observer('value', function () {\n        if (this.get('field.type') === 'databasearray' || this.get('field.type') === 'work_permit_attachment') {\n            return;\n        }\n        return Ember.run.next(() => {\n            var str;\n            // if record is already deleted do not try to set anything to it\n            if (this.get('model.currentState.stateName') === 'root.deleted.saved') {\n                return;\n            }\n            if (this.isDestroyed || this.isDestroying) {\n                return;\n            }\n            str = 'model.' + this.get('field.ext');\n\n            this.sendAction('FieldValueUpdated', this.get('field.ext'), this.get('value'));\n\n            return this.set(str, this.get('value'));\n        });\n    }),\n    static_content: Ember.computed('intl.locale', function () {\n        var j, l, len, len1, month_count, new_option, obj, option, options, real_options;\n        real_options = [];\n        if (this.get('field.type') === 'dropdown_country') {\n            real_options = this.get('countries');\n        } else if (this.get('field.type') === 'dropdown_userlevel') {\n            options = this.get('field.options');\n            if (Ember.typeOf(options) === 'string' && options.indexOf(',') !== -1) {\n                options = options.split(',');\n            }\n            for (j = 0, len = options.length; j < len; j++) {\n                option = options[j];\n                if (option) {\n                    if (typeof option !== 'object') {\n                        new_option = {};\n                        new_option.id = option;\n                        option = new_option;\n                    }\n                    //hide admin from own roles\n                    if (\n                        parseInt(option.id) === 5 &&\n                        parseInt(this.get('session.currentUser.userlevel')) > 9\n                    ) {\n                        continue;\n                    }\n                    if (parseInt(option.id) > 9) {\n                        option.value = option.id.substring(2);\n                        option.id = parseInt(option.id).toString(); // to remove all but numbers (in case of own userroles)\n                    } else {\n                        option.value = this.get('intl').t(\n                            this.get('model.constructor.modelName') +\n                                '.' +\n                                this.get('field.ext') +\n                                '.' +\n                                option.id,\n                        );\n                    }\n                    real_options.push(option);\n                }\n            }\n        } else if (this.get('field.type') === 'month_dropdown') {\n            month_count = 0;\n            while (month_count < 36) {\n                obj = {\n                    id: moment().subtract(month_count, 'months').format('YYYY-MM'),\n                    value: moment().subtract(month_count, 'months').format('MMMM YYYY'),\n                };\n                real_options.push(obj);\n                month_count++;\n            }\n        } else {\n            options = this.get('field.options');\n            if (options) {\n                for (l = 0, len1 = options.length; l < len1; l++) {\n                    option = options[l];\n                    if (option) {\n                        if (typeof option !== 'object') {\n                            new_option = {};\n                            new_option.id = option;\n                            option = new_option;\n                        }\n                        if (!('name' in this.get('field')) || option.value == null) {\n                            if (\n                                this.get('intl').exists(\n                                    this.get('model.constructor.modelName') +\n                                        '.' +\n                                        this.get('field.ext') +\n                                        '.' +\n                                        option.id,\n                                )\n                            ) {\n                                option.value = this.get('intl').t(\n                                    this.get('model.constructor.modelName') +\n                                        '.' +\n                                        this.get('field.ext') +\n                                        '.' +\n                                        option.id,\n                                );\n                            }\n                        }\n                        real_options.push(option);\n                    }\n                }\n            }\n        }\n        return real_options;\n    }),\n    useAjaxDropdown: Ember.computed.gte('db_options.length', 30),\n    layoutName: 'fields/field',\n    mainLayoutName: Ember.computed('content.name', 'model', 'edit', function () {\n        if (this.get('settings.preview')) {\n            return 'fields/preview';\n        } else if (this.get('settings.report') && !this.get('edit')) {\n            return 'fields/report';\n        }\n        return 'fields/fields-main';\n    }),\n    innerTemplateName: Ember.computed('content.name', 'edit', function () {\n        if (this.get('settings.preview') && !this.get('edit')) {\n            return 'fields/preview';\n        }\n        if (this.get('field.customization.template')) {\n            return this.get('field.customization.template');\n        }\n        switch (this.get('field.type')) {\n            case 'dropdown_values':\n            case 'dropdown_options':\n            case 'dropdown_userlevel':\n            case 'dropdown_country':\n            case 'dropdown_language':\n            case 'month_dropdown':\n                return 'fields/dropdown';\n            case 'database':\n                return 'fields/database';\n            case 'textbox':\n            case 'embedded':\n            case 'object':\n                return 'fields/textbox';\n            case 'number':\n                return 'fields/number';\n            case 'minutes':\n                return 'fields/number';\n            case 'hours':\n                return 'fields/hours';\n            case 'time_new':\n                return 'fields/time';\n            case 'textarea_varchar':\n                return 'fields/textarea';\n            case 'textarea':\n                return 'fields/textarea';\n            case 'price':\n                return 'fields/number';\n            case 'radio':\n                return 'fields/radio';\n            case 'big_price':\n                return 'fields/number';\n            case 'decimal':\n                return 'fields/number';\n            case 'checkbox':\n                return 'fields/checkbox';\n            case 'date':\n                return 'fields/date';\n            case 'checkboxgroup':\n                return 'fields/checkboxgroup';\n            case 'hdfile':\n                return 'fields/file';\n            case 'password':\n                return 'fields/password';\n            case 'username':\n                return 'fields/username';\n            case 'timeclean_imei':\n                return 'fields/array';\n            case 'gpslocation':\n                return 'fields/gpslocation';\n            case 'gpslocationmap':\n                return 'fields/gpslocationmap';\n            case 'multiselect':\n                return 'fields/multiselect';\n            case 'signature':\n                return 'fields/signature';\n            case 'label':\n                return 'fields/label';\n            case 'weather':\n                return 'fields/weather';\n            case 'fileupload':\n            case 'row_linker':\n            case 'rowlink':\n            case 'status':\n                return 'fields/notsupported';\n            case 'databasearray':\n                return 'fields/databasearray';\n            case 'timerlink':\n                return 'fields/timerlink';\n            case 'work_permit_attachment':\n                return 'fields/work_permit_attachment';\n        }\n        return 'fields/notfound';\n    }),\n    img_src: Ember.computed(function () {\n        if (this.get('value.url')) {\n            return collector.api_url() + '/' + this.get('value.url');\n        }\n    }),\n    userlevelInfo: Ember.computed(function () {\n        var linkToCommunity, linkToCommunityMovenium, linkToCommunityOtta;\n        if (this.intl.primaryLocale !== 'fi') {\n            return null;\n        }\n        linkToCommunityMovenium =\n            'https://ohjeet.visma.fi/articles/#!visma-movenium/k-ytt-j-roolit';\n        linkToCommunityOtta = this.get('intl').t('click.help_link.to.community_otta');\n        const brand = get(this, 'gui').getBrand();\n\n        // eslint-disable-next-line no-irregular-whitespace\n        if (brand === 'otta') {\n            linkToCommunity = linkToCommunityOtta;\n        } else {\n            linkToCommunity = linkToCommunityMovenium;\n        }\n        return htmlSafe(\n            this.intl.t('user.userlevel.info', {\n                link:\n                    \"<a href='\" +\n                    linkToCommunity +\n                    \"'>\" +\n                    this.intl.t('user.userlevel.info.link') +\n                    '<span class=\"move move-external-link\"></span></a>',\n            }),\n        );\n    }),\n    mandatory: Ember.computed('_mandatory', 'conditional', function () {\n        var errors, fields, index, mandatory, ref, ref1;\n        if (this.get('_mandatory')) {\n            return this.get('_mandatory');\n        }\n        if (!this.get('model.isDeleted')) {\n            fields = this.get('field.features.mandatory');\n            if (!fields) {\n                return;\n            }\n            if (typeof fields === 'boolean') {\n                return fields;\n            }\n            mandatory = validatorClass._is_visible(\n                this.get('model'),\n                this.get('field.features.mandatory'),\n            );\n            errors = this.errors;\n            if (mandatory && (!this.get('value') || this.get('value') === null)) {\n                if (errors) {\n                    if (((ref = this.get('field.ext')), indexOf.call(errors, ref) < 0)) {\n                        this.errors.push(this.field.ext);\n                    }\n                } else {\n                    this.errors = [this.field.ext];\n                }\n            } else {\n                Ember.run.once(this, function () {\n                    return this.set('error', null);\n                });\n                if (errors) {\n                    if (((ref1 = this.get('field.ext')), indexOf.call(errors, ref1) >= 0)) {\n                        index = errors.indexOf(this.field.ext);\n                        if (index > -1) {\n                            errors.splice(index, 1);\n                        }\n                        this.set('errors', errors);\n                    }\n                }\n            }\n            return mandatory;\n        }\n    }),\n    hide: Ember.computed('hide_conditional', 'innerTemplateName', function () {\n        var field, mandatory, setting;\n        if (this.get('innerTemplateName') === 'fields/notsupported') {\n            return true;\n        }\n        if (this.get('innerTemplateName') === 'fields/notfound') {\n            return true;\n        }\n        if (!this.get('model.isDeleted')) {\n            field = this.get('field');\n            if (this.get('field.customization.hide')) {\n                return true;\n            } else if (this.get('field.customization.hide') === false) {\n                return false;\n            }\n            if (this.get('field.features.hidden') && typeof field.features.hidden !== 'object') {\n                return true;\n            }\n            if (this.get('field.features.hide_tt4') && typeof setting !== 'object') {\n                return true;\n            }\n            setting = get(field, 'features.hide');\n            mandatory = this.get('mandatory'); // used only to trigger mandatory-computed (doesn't trigger automatically if field is hidden)\n            if (!setting) {\n                return;\n            }\n            if (typeof setting === 'boolean') {\n                return setting;\n            }\n            if (setting && typeof setting === 'object' && get(setting, 'condition')) {\n                if (get(setting, 'condition') === '$editing' && !this.get('model.isNew')) {\n                    return true;\n                }\n                if (get(setting, 'condition') === \"'!$editing'\" && this.get('model.isNew')) {\n                    return true;\n                }\n            }\n            return !validatorClass._is_visible(this.get('model'), setting);\n        }\n    }),\n    _templateChanged: Ember.observer('layoutName', function () {\n        return this.rerender();\n    }),\n    focusOut: function (event) {\n        this.send('validate');\n        if (this.get('edit')) {\n            return this.send('save');\n        }\n    },\n    focusIn: function (event) {\n        return this.set('error', false);\n    },\n    show: Ember.computed(function () {\n        return this.get('settings.show');\n    }),\n    observeError: Em.observer('error', function () {\n        var errors, field, ref, ref1;\n        errors = this.get('errors');\n        if (this.get('error')) {\n            this.set('ok', false);\n            this.set('wait', false);\n            if (this.get('errors')) {\n                if (((ref = this.get('field.ext')), indexOf.call(this.get('errors'), ref) < 0)) {\n                    return this.errors.push(this.field.ext);\n                }\n            } else {\n                return Ember.set(this, 'errors', [this.get('field.ext')]);\n            }\n        } else {\n            if (this.get('settings.setOKtoAllFields')) {\n                this.set('ok', true);\n            }\n            if (errors) {\n                if (((ref1 = this.get('field.ext')), indexOf.call(errors, ref1) >= 0)) {\n                    field = this.get('field.ext');\n                    errors.removeObject(field);\n                    return Ember.set(this, 'errors', errors);\n                }\n            }\n        }\n    }),\n    observeErrors: Ember.observer('errors', 'save', function () {\n        var ref;\n        if (this.get('errors')) {\n            if (\n                ((ref = this.get('field.ext')), indexOf.call(this.get('errors'), ref) >= 0) &&\n                this.get('save')\n            ) {\n                return this.send('validate');\n            }\n        }\n    }),\n    fieldRoute: Em.computed('field', 'model', function () {\n        var ref, tmp_value, value;\n        value = this.get('value');\n        if (!value) {\n            tmp_value = null;\n        } else if (\n            !(\n                (ref = Ember.typeOf(value)) === 'number' ||\n                ref === 'string' ||\n                ref === 'object' ||\n                ref === 'array'\n            )\n        ) {\n            tmp_value = value.get('id');\n        } else {\n            tmp_value = value;\n        }\n        return {\n            form: this.get('model.constructor.modelName'),\n            type: this.get('field.type'),\n            value: tmp_value,\n            features: this.get('field.features'),\n            name: this.get('field.ext'),\n            options: this.get('field.options'),\n            filterOptions: this.get('field.filterOptions'),\n        };\n    }),\n    map_visible: false,\n    check_username: function () {\n        var data, promise;\n        data = {\n            validate: true,\n        };\n        data['email'] = this.get('value');\n        promise = this.Collector.ajax({\n            url: 'createService',\n            method: 'post',\n            data: data,\n        });\n        promise.then((back) => {\n            this.set('ok', true);\n            return this.set('wait', false);\n        });\n        return promise.catch((back) => {\n            this.set('wait', false);\n\n            // The back variable only contains a JS error object, so we must determine\n            // the error message displayed based on the message. These messages are returned\n            // from a vendor script and as such are subject to change, so this isn't optimal.\n            // The identified fail case messages here are:\n            // 'Request was formatted incorrectly.' - Invalid characters in username\n            // 'The ajax operation failed due to a conflict' - Username already exists\n\n            // Use this as the default so a value always exists, then override it if necessary.\n            var error_message = 'field.error.username_in_use';\n\n            if ((back?.message ?? '').includes('Request was formatted incorrectly')) {\n                error_message = 'field.error.username_characters';\n            }\n\n            return this.set('error', this.get('intl').t(error_message));\n        });\n    },\n    actions: {\n        dateInputClicked: function (value) {\n            if (this.get('field.features.onclick_default_value') && (!value || value === void 0)) {\n                return this.set('value', this.get('field.features.onclick_default_value'));\n            }\n        },\n        show_map: function () {\n            var map_visible;\n            map_visible = this.get('map_visible');\n            if (map_visible === true) {\n                return this.set('map_visible', false);\n            } else {\n                return this.set('map_visible', true);\n            }\n        },\n        updatePopoverContents: function () {\n            var c, form, ids, promise;\n            // this is now called only by multiselect field\n            c = this.get('Collector');\n            form = this.get('field.options.form');\n            ids = this.get('value');\n            promise = c.getRecordArray(form, ids, true);\n            return promise.then((arr) => {\n                var names;\n                names = Em.A(arr).mapBy('name');\n                return this.set('popoverContents', names.join('<br>'));\n            });\n        },\n        removeFile: function () {\n            this.set('img_src', null);\n            return this.set('value', 'remove');\n        },\n        validate: function () {\n            var arr,\n                check_id,\n                e,\n                isJson,\n                item,\n                item_arr,\n                j,\n                l,\n                len,\n                len1,\n                len2,\n                m,\n                minutes,\n                nationality,\n                ref,\n                ref1,\n                ref2,\n                ref3,\n                self,\n                split,\n                validator,\n                validator_key_arr,\n                value;\n            if (this.get('errors')) {\n                if (((ref = this.get('field.ext')), indexOf.call(this.get('errors'), ref) >= 0)) {\n                    this.set('error', true);\n                }\n            }\n            //@set('errors', Em.A [] )\n            if (this.get('field.features.validate_check')) {\n                validator = {};\n                if (Array.isArray(this.get('field.features.validate_check'))) {\n                    ref1 = this.get('field.features.validate_check');\n                    for (j = 0, len = ref1.length; j < len; j++) {\n                        item = ref1[j];\n                        if (item.substring(0, 9) === 'exact_len') {\n                            item_arr = item.split(':');\n                            validator.length = parseInt(item_arr[1], 10);\n                        }\n                        if (item.substring(0, 9) === 'minLength') {\n                            item_arr = item.split(':');\n                            validator.minLength = parseInt(item_arr[1], 10);\n                        }\n                        if (item.substring(0, 9) === 'maxLength') {\n                            item_arr = item.split(':');\n                            validator.maxLength = parseInt(item_arr[1], 10);\n                        }\n                        if (item === 'number') {\n                            validator.number = true;\n                        }\n                        if (item === 'email') {\n                            validator.email = true;\n                        }\n                        if (item === 'birthdate') {\n                            validator.birthdate = true;\n                        }\n                        if (item.substring(0, 6) === 'remote') {\n                            item_arr = item.split(':');\n                            //SUP-1389 if TT3 has remote:check_rfid_tag-setting, set field as unique\n                            if (item_arr[1] === 'check_rfid_tag') {\n                                this.set('field.features.unique', true);\n                            }\n                            validator.remote = item_arr[1];\n                        }\n                        if (item.substring(0, 5) === 'match') {\n                            item_arr = item.split(':');\n                            validator.match = item_arr[1];\n                        }\n                        if (item.substring(0, 10) === 'date_after') {\n                            item_arr = item.split(':');\n                            validator.date_after = item_arr[1];\n                        }\n                        if (item === 'digits') {\n                            validator.digits = true;\n                        }\n                        if (item === 'phoneNumber') {\n                            validator.phoneNumber = true;\n                        }\n                        if (item === 'positiveNumber') {\n                            validator.positive = true;\n                        }\n                        if (item === 'date_not_past') {\n                            validator.date_not_past = true;\n                        }\n                        if (item === 'password') {\n                            validator.password = true;\n                        }\n                    }\n                } else {\n                    validator[this.get('field.features.validate_check')] = true;\n                }\n            }\n            this.set('error', null);\n            if (this.get('mandatory')) {\n                if (!Ember.isPresent(this.get('value'))) {\n                    this.set('error', this.get('intl').t('field.error.mandatory'));\n                } else if (\n                    (this.get('value') instanceof Ember.ObjectProxy ||\n                        this.get('value') instanceof Ember.ArrayProxy) &&\n                    Ember.isEmpty(this.get('value.content'))\n                ) {\n                    this.set('error', this.get('intl').t('field.error.mandatory'));\n                }\n            }\n            if (\n                this.get('field.minValue') !== void 0 &&\n                this.get('value') < this.get('field.minValue')\n            ) {\n                this.set('error', this.get('intl').t('field.error.number_out_of_bounds'));\n            }\n            if (validator && validator.length) {\n                isJson = false;\n                value = this.get('value');\n                try {\n                    JSON.parse(value);\n                    isJson = true;\n                } catch (error) {\n                    e = error;\n                    isJson = false;\n                }\n                if (isJson && Array.isArray(JSON.parse(value))) {\n                    ref2 = JSON.parse(value);\n                    for (l = 0, len1 = ref2.length; l < len1; l++) {\n                        item = ref2[l];\n                        if (item.toString().trim().length !== validator.length) {\n                            this.set(\n                                'error',\n                                this.get('intl').t('field.error.length', {\n                                    length: validator.length,\n                                }),\n                            );\n                        }\n                    }\n                } else if (value && value.trim().length !== validator.length) {\n                    this.set(\n                        'error',\n                        this.get('intl').t('field.error.length', {\n                            length: validator.length,\n                        }),\n                    );\n                }\n            } else if (validator && Object.keys(validator)[0].indexOf(':') !== -1) {\n                validator_key_arr = Object.keys(validator)[0].split(':');\n                validator = {};\n                validator[validator_key_arr[0]] = parseInt(validator_key_arr[1]);\n            }\n            if (\n                validator &&\n                validator.maxLength &&\n                this.get('value.length') > validator.maxLength\n            ) {\n                this.set(\n                    'error',\n                    this.get('intl').t('field.error.maxLength', {\n                        length: validator.maxLength,\n                    }),\n                );\n            }\n            if (\n                validator &&\n                validator.minLength &&\n                this.get('value.length') < validator.minLength\n            ) {\n                this.set(\n                    'error',\n                    this.get('intl').t('field.error.minLength', {\n                        length: validator.minLength,\n                    }),\n                );\n            }\n            if (validator && validator.number && isNaN(this.get('value'))) {\n                this.set('error', this.get('intl').t('field.error.number'));\n            }\n            if (\n                validator &&\n                validator.email &&\n                this.get('value') &&\n                !/^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i.test(\n                    this.get('value'),\n                )\n            ) {\n                this.set('error', this.get('intl').t('field.error.email'));\n            }\n            if (\n                validator &&\n                validator.birthdate &&\n                moment(this.get('value')).isAfter(moment().subtract(10, 'years'))\n            ) {\n                this.set('error', this.get('intl').t('field.error.birthdate'));\n            }\n            if (validator && validator.match) {\n                if (this.get('model.' + validator.match) !== this.get('value')) {\n                    this.set('error', this.get('intl').t('field.error.no_match'));\n                }\n            }\n            if (validator && validator.digits) {\n                if (Array.isArray(JSON.parse(this.get('value')))) {\n                    ref3 = JSON.parse(this.get('value'));\n                    for (m = 0, len2 = ref3.length; m < len2; m++) {\n                        item = ref3[m];\n                        if (Number(item) !== parseInt(item, 10)) {\n                            this.set('error', this.get('intl').t('field.error.digits'));\n                        }\n                    }\n                } else if (Number(this.get('value')) !== parseInt(this.get('value'), 10)) {\n                    this.set('error', this.get('intl').t('field.error.digits'));\n                }\n            }\n            if (validator && validator.positiveNumber && this.get('value') < 0) {\n                this.set('error', this.get('intl').t('field.error.negative'));\n            }\n            if (\n                validator &&\n                validator.date_not_past &&\n                moment().isAfter(this.get('value'), 'day')\n            ) {\n                this.set('error', this.get('intl').t('field.error.date_not_past'));\n            }\n            if (\n                validator &&\n                validator.password &&\n                this.get('value.length') < 8 &&\n                this.get('value.length') !== 6 &&\n                this.get('value.length') !== 0\n            ) {\n                this.set('error', this.get('intl').t('field.error.password'));\n            }\n            if (validator && validator.date_after) {\n                if (this.get('model.' + validator.date_after) > this.get('value')) {\n                    this.set('error', this.get('intl').t('field.error.date_after'));\n                }\n            }\n            if (\n                this.get('field.type') === 'username' &&\n                this.get('value') &&\n                !/^[a-z\\d_.@-]+$/i.test(this.get('value'))\n            ) {\n                this.set('error', this.get('intl').t('field.error.username_characters'));\n            }\n            // SKV number check..\n            if (this.get('value') && validator && 'skv_number' in validator) {\n                if (!/^([a-z\\d]{13})$/i.test(this.get('value'))) {\n                    this.set('error', this.get('intl').t('field.error.skv'));\n                }\n                this.set('value', this.get('value').toUpperCase());\n            }\n            // Personal identity number check..\n            if (\n                this.get('value') &&\n                this.get('field.features.validate_check') &&\n                this.get('model.personid')\n            ) {\n                check_id = this.get('field.features.validate_check');\n                if (\n                    typeof check_id === 'string' &&\n                    check_id.substring(0, 4) === 'PIN:' &&\n                    this.get('model.homecountry')\n                ) {\n                    nationality = this.get('model.homecountry').toUpperCase();\n                    if (nationality === 'SE') {\n                        if (this.get('value').length !== 13 && this.get('value').length !== 11) {\n                            this.set(\n                                'error',\n                                this.get('intl').t('field.error.personal_identity_number'),\n                            );\n                        }\n                        if (\n                            !/^(([\\d]{2})|([1-2][0|9][\\d]{2}))(0[\\d]|1[012])(0[\\d]|[1-9]\\d)-[\\d]{3}[A-Z\\d]$/i.test(\n                                this.get('value'),\n                            )\n                        ) {\n                            this.set(\n                                'error',\n                                this.get('intl').t('field.error.personal_identity_number'),\n                            );\n                        }\n                    } else if (nationality === 'FI') {\n                        if (\n                            !/^((0[\\d]|[12]\\d|3[01])(0?[\\d]|1[012])[\\d]{2}-[\\d]{3}[a-z\\d])$/i.test(\n                                this.get('value'),\n                            )\n                        ) {\n                            this.set(\n                                'error',\n                                this.get('intl').t('field.error.personal_identity_number'),\n                            );\n                        }\n                    }\n                    this.set('value', this.get('value').toUpperCase());\n                }\n            }\n            // ID06 number check..\n            if (this.get('value') && validator && 'id06_number' in validator) {\n                if (!/^[a-z]{2}-[\\d]{2}(0?[\\d]|1[012])-[\\d]{6}$/i.test(this.get('value'))) {\n                    this.set('error', this.get('intl').t('field.error.id06_number'));\n                }\n                this.set('value', this.get('value').toUpperCase());\n            }\n            // Project number check..\n            if (this.get('value') && validator && 'project_number' in validator) {\n                if (isFinite(this.get('value'))) {\n                    if (parseInt(this.get('value'), 10) === 0) {\n                        this.set('error', this.get('intl').t('field.error.project_number'));\n                    }\n                }\n            }\n            //phone number checking\n            if (this.get('value') && this.get('field.ext') === 'phone') {\n                if (\n                    !/^\\+(9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[^0]\\d{1,14}$/i.test(\n                        this.get('value'),\n                    )\n                ) {\n                    this.set('error', this.get('intl').t('field.error.phone_number'));\n                }\n            }\n            if (validator && validator.phoneNumber && this.get('value')) {\n                if (\n                    !/^\\+(9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[^0]\\d{1,14}$/i.test(\n                        this.get('value'),\n                    )\n                ) {\n                    this.set('error', this.get('intl').t('field.error.phone_number'));\n                }\n            }\n            if (!this.get('error') && this.get('field.features.unique') && this.get('value')) {\n                this.set('wait', true);\n                this.set('ok', false);\n                self = this;\n                arr = {};\n                arr[this.get('field.ext')] = this.get('value');\n                this.Collector.get('store')\n                    .query(this.get('model.constructor.modelName'), arr)\n                    .then(function (rows) {\n                        var fieldname;\n                        fieldname = Ember.String.isHTMLSafe(self.get('name'))\n                            ? self.get('name').string\n                            : self.get('name');\n                        var otherRows = rows.toArray().filter(function (row) {\n                            return row.get('id') !== self.get('model.id');\n                        });\n                        if (otherRows.length > 0) {\n                            // Find which specific values are duplicates\n                            var duplicates = [];\n                            var fieldExt = self.get('field.ext');\n                            var myValues = self.get('value');\n                            try { myValues = JSON.parse(myValues); } catch (e) { myValues = [myValues]; }\n                            if (!Array.isArray(myValues)) myValues = [myValues];\n                            otherRows.forEach(function (row) {\n                                var otherVal = row.get(fieldExt);\n                                try { otherVal = JSON.parse(otherVal); } catch (e) { otherVal = [otherVal]; }\n                                if (!Array.isArray(otherVal)) otherVal = [otherVal];\n                                const otherValStrings = otherVal.map(String);\n                                myValues.forEach(function (v) {\n                                    const vStr = String(v);\n                                    if (otherValStrings.indexOf(vStr) !== -1 && duplicates.indexOf(vStr) === -1) {\n                                        duplicates.push(vStr);\n                                    }\n                                });\n                            });\n                            self.set('duplicateValues', duplicates.length > 0 ? duplicates : null);\n                            self.set(\n                                'error',\n                                self.get('intl').t('field.error.unique', {\n                                    field: fieldname.toLowerCase(),\n                                    value: duplicates.join(', '),\n                                }),\n                            );\n                        } else {\n                            self.set('duplicateValues', null);\n                            self.set('ok', true);\n                        }\n                        return self.set('wait', false);\n                    });\n            }\n            // this is a special validation\n            if (!this.get('error') && validator && validator.remote === 'username') {\n                this.set('value', this.get('model.username'));\n                if (!this.get('value')) {\n                    this.set('error', this.get('intl').t('field.error.mandatory'));\n                } else {\n                    this.set('ok', false);\n                    Em.run.debounce(this, this.check_username, 700);\n                }\n            }\n            if (validator && validator.forced_pause) {\n                if (this.get('model.pause')) {\n                    // check for start-end or work_hours\n                    if (this.get('model.endtime')) {\n                        minutes = moment(\n                            this.get('model.date') + ' ' + this.get('model.endtime'),\n                        ).diff(\n                            moment(this.get('model.date') + ' ' + this.get('model.starttime')),\n                            'minutes',\n                        );\n                        if (minutes < 0) {\n                            minutes += 1440;\n                        }\n                    } else {\n                        split = this.get('model.work_hours').split(':');\n                        minutes = parseInt(split[0], 10) * 60 + parseInt(split[1], 10);\n                    }\n                    if (minutes > 360 && this.get('model.pause') < 30) {\n                        this.set('error', this.get('intl').t('validation.error.forced_pause'));\n                    }\n                }\n            }\n            //return resolve()\n            return this.storeDefaultValue();\n        },\n        check: function (key, way) {\n            if (!way) {\n                if (\n                    this.get('model.' + this.get('field.ext')) === null ||\n                    this.get('model.' + this.get('field.ext')) == null\n                ) {\n                    this.set('model.' + this.get('field.ext'), Em.A([key]));\n                } else {\n                    this.get('model.' + this.get('field.ext')).pushObject(key);\n                }\n            } else {\n                this.get('model.' + this.get('field.ext')).removeObject(key);\n            }\n            return this.set('checkboxes', this.getCheckboxes());\n        },\n        edit: function () {\n            this.set('saving', false);\n            if (this.get('field.features.hide')) {\n                return;\n            }\n            switch (this.get('field.type')) {\n                case 'fileupload':\n                case 'username':\n                case 'row_linker':\n                case 'rowlink':\n                case 'status':\n                case 'gpslocation':\n                case 'signature':\n                    break;\n                default:\n                    return this.toggleProperty('edit');\n            }\n        },\n        cancel: function () {\n            this.get('model').rollbackAttributes();\n            return this.set('edit', false);\n        },\n        save: function () {\n            var model, promise, self;\n            self = this;\n            this.send('validate');\n            if (!(this.get('errors.length') > 0)) {\n                model = this.get('model');\n                if (model.get('hasDirtyAttributes')) {\n                    promise = model.save();\n                    return promise.then(function () {\n                        return self.set('edit', false);\n                    });\n                } else {\n                    return self.set('edit', false);\n                }\n            }\n        },\n        send: function (type, param) {\n            return this.sendAction('generalAddAction', type, param);\n        },\n        bubbleChange: function (value, fieldName) {\n            return this.set('model.' + fieldName, value);\n        },\n        changeValue: function (value, fieldName) {\n            this.set('value', value);\n            if (!value) {\n                this.set('model.' + this.get('field.ext'), null);\n                return this.send('validate');\n            } else {\n                return this.Collector.get('store')\n                    .findRecord(this.get('field.options.form'), value)\n                    .then((row) => {\n                        this.set('model.' + this.get('field.ext'), row);\n                        this.set('value', row);\n                        return this.send('validate');\n                    });\n            }\n        },\n        customChangeValue: function (value, fieldName) {\n            if (this.get('model.isDeleted')) {\n                return;\n            }\n            this.set('model.' + this.get('field.ext'), value);\n            this.set('value', value);\n            Ember.run.next(this, function () {\n                return this.send('validate');\n            });\n            if (this.get('field.type') === 'database' && !Ember.isPresent(value)) {\n                this.get('localStorageWrapper').removeUserSetting(this.get('field.options.form'));\n            }\n            return this.sendAction('generalAddAction', value, fieldName);\n        },\n        changeValueByDOMEvent: function (event) {\n            var value;\n            value = event.target.value;\n            this.set('model.' + this.get('field.ext'), value);\n            this.set('value', value);\n            this.send('validate');\n            return this.sendAction('generalAddAction', value, this.get('field.ext'));\n        },\n        //pass from component to applicationcontroller\n        showSignModal: function (name, model, variable) {\n            return this.sendAction('action', name, model, variable);\n        },\n    },\n    becomeFocused: Ember.on('didRender', function () {\n        if (!this.get('edit')) {\n            return;\n        }\n        return $('select,input', this.element).focus();\n    }),\n    observeUsername: Em.on(\n        'init',\n        Em.observer('model.username', function () {\n            if (this.get('field.type') === 'username' && this.get('model.username')) {\n                return this.send('validate');\n            }\n        }),\n    ),\n    observeHomecountry: Ember.observer('model.homecountry', function () {\n        var check_id;\n        if (this.get('field.features.validate_check') && this.get('model.personid')) {\n            check_id = this.get('field.features.validate_check');\n            if (typeof check_id === 'string' && check_id.substring(0, 4) === 'PIN:') {\n                return this.send('validate');\n            }\n        }\n    }),\n    show_generated_password: true,\n    password_observer: Em.observer('model.password', function () {\n        if (this.get('model.password')) {\n            return this.set('show_generated_password', false);\n        }\n    }),\n    observeValue: Ember.observer('value', function () {\n        var model;\n        model = this.get('model');\n        if (model.get('isDeleted') || model.send == null) {\n            return;\n        }\n        return model.send('becomeDirty');\n    }),\n    saving: false,\n    checkboxes: Ember.computed('field.type', function () {\n        var checkboxes;\n        checkboxes = Em.A([]);\n        if (this.get('field.type') === 'checkboxgroup') {\n            checkboxes = this.getCheckboxes();\n        }\n        return checkboxes;\n    }),\n    getCheckboxes: function () {\n        var checked, key, options_arr, ref, text, value;\n        options_arr = Ember.A([]);\n        ref = this.get('field.options');\n        for (key in ref) {\n            value = ref[key];\n            checked = false;\n            if (Array.isArray(this.get('model.' + this.get('field.ext')))) {\n                if (indexOf.call(this.get('model.' + this.get('field.ext')), key) >= 0) {\n                    checked = true;\n                }\n            }\n            text =\n                value.substring(0, 1) === '$'\n                    ? this.get('intl').t(\n                          this.get('model.constructor.modelName') +\n                              's.' +\n                              this.get('field.ext') +\n                              '.' +\n                              key,\n                      )\n                    : value;\n            if (text === value && this.get('intl').exists(value)) {\n                text = this.get('intl').t(value);\n            }\n            options_arr.pushObject(\n                Ember.Object.create({\n                    checked: checked,\n                    key: key,\n                    text: text,\n                }),\n            );\n        }\n        return options_arr;\n    },\n    disabled: Em.computed('field', 'model', function () {\n        var condition, j, k, len, ref, ref1, set, v;\n        if (\n            get(this, 'model') &&\n            !get(this, 'model.isNew') &&\n            get(this, 'field.features.lock_value')\n        ) {\n            ref = get(this, 'field.features.lock_value');\n            for (j = 0, len = ref.length; j < len; j++) {\n                set = ref[j];\n                for (k in set) {\n                    v = set[k];\n                    if (((ref1 = get(this, 'model.' + k)), indexOf.call(v.split(','), ref1) >= 0)) {\n                        return true;\n                    }\n                }\n            }\n        }\n        if (typeof this.get('field.features.disabled') === 'object') {\n            condition = this.get('field.features.disabled.condition');\n            if (\n                condition &&\n                condition.indexOf('$editing') >= 0 &&\n                this.get('field.features.disabled.value') === true &&\n                this.get('settings.edit') === true &&\n                (condition.indexOf('$wap') === -1 || this.get('field.ext') === 'starttime')\n            ) {\n                return true;\n            } else if (\n                this.get('field.features.disabled.value') === true &&\n                !this.get('field.features.disabled.condition')\n            ) {\n                return true;\n            }\n        } else if (this.get('field.features.disabled')) {\n            return true;\n        }\n        return false;\n    }),\n    dropdown_date: Ember.computed(function () {\n        var arr, date, date_interval, end, i, j, ref, ref1, splitted, start;\n        date_interval = this.get('field.features.date_interval');\n        if (!date_interval) {\n            return null;\n        }\n        //only when adding\n        if (this.get('model.isNew')) {\n            this.set('value', moment().format('YYYY-MM-DD'));\n        }\n        if (date_interval === 'locked') {\n            return 'locked';\n        }\n        arr = Em.A();\n        splitted = ('' + date_interval).split(',');\n        if (splitted.length > 1) {\n            start = splitted[1] * -1;\n            end = splitted[0];\n        } else {\n            start = 0;\n            end = date_interval;\n        }\n        for (\n            i = j = ref = start, ref1 = end;\n            ref <= ref1 ? j < ref1 : j > ref1;\n            i = ref <= ref1 ? ++j : --j\n        ) {\n            date = moment().subtract(i, 'days');\n            arr.push(\n                Ember.Object.create({\n                    id: date.format('YYYY-MM-DD'),\n                    name: date.format('dddd L'),\n                }),\n            );\n        }\n        return arr;\n    }),\n    showPassword: Ember.computed('value', function () {\n        if (this.get('show_generated_password') && this.get('value') !== 'secured') {\n            return true;\n        } else {\n            return this.get('value') === 'secured';\n        }\n    }),\n    countries: [\n        {\n            id: 'fi',\n            value: 'Finland',\n        },\n        {\n            id: 'se',\n            value: 'Sweden',\n        },\n        {\n            id: 'ee',\n            value: 'Estonia',\n        },\n        {\n            id: 'pl',\n            value: 'Poland',\n        },\n        {\n            id: 'lt',\n            value: 'Lithuania',\n        },\n        {\n            id: 'lv',\n            value: 'Latvia',\n        },\n        {\n            id: 'ru',\n            value: 'Russian Federation',\n        },\n        {\n            id: 'af',\n            value: 'Afghanistan',\n        },\n        {\n            id: 'ax',\n            value: 'Aland Islands',\n        },\n        {\n            id: 'al',\n            value: 'Albania',\n        },\n        {\n            id: 'dz',\n            value: 'Algeria',\n        },\n        {\n            id: 'as',\n            value: 'American Samoa',\n        },\n        {\n            id: 'ad',\n            value: 'Andorra',\n        },\n        {\n            id: 'ao',\n            value: 'Angola',\n        },\n        {\n            id: 'ai',\n            value: 'Anguilla',\n        },\n        {\n            id: 'aq',\n            value: 'Antarctica',\n        },\n        {\n            id: 'ag',\n            value: 'Antigua And Barbuda',\n        },\n        {\n            id: 'ar',\n            value: 'Argentina',\n        },\n        {\n            id: 'am',\n            value: 'Armenia',\n        },\n        {\n            id: 'aw',\n            value: 'Aruba',\n        },\n        {\n            id: 'au',\n            value: 'Australia',\n        },\n        {\n            id: 'at',\n            value: 'Austria',\n        },\n        {\n            id: 'az',\n            value: 'Azerbaijan',\n        },\n        {\n            id: 'bs',\n            value: 'Bahamas',\n        },\n        {\n            id: 'bh',\n            value: 'Bahrain',\n        },\n        {\n            id: 'bd',\n            value: 'Bangladesh',\n        },\n        {\n            id: 'bb',\n            value: 'Barbados',\n        },\n        {\n            id: 'by',\n            value: 'Belarus',\n        },\n        {\n            id: 'be',\n            value: 'Belgium',\n        },\n        {\n            id: 'bz',\n            value: 'Belize',\n        },\n        {\n            id: 'bj',\n            value: 'Benin',\n        },\n        {\n            id: 'bm',\n            value: 'Bermuda',\n        },\n        {\n            id: 'bt',\n            value: 'Bhutan',\n        },\n        {\n            id: 'bo',\n            value: 'Bolivia, Plurinational State Of',\n        },\n        {\n            id: 'bq',\n            value: 'Bonaire, Sint Eustatius And Saba',\n        },\n        {\n            id: 'ba',\n            value: 'Bosnia And Herzegovina',\n        },\n        {\n            id: 'bw',\n            value: 'Botswana',\n        },\n        {\n            id: 'bv',\n            value: 'Bouvet Island',\n        },\n        {\n            id: 'br',\n            value: 'Brazil',\n        },\n        {\n            id: 'io',\n            value: 'British Indian Ocean Territory',\n        },\n        {\n            id: 'bn',\n            value: 'Brunei Darussalam',\n        },\n        {\n            id: 'bg',\n            value: 'Bulgaria',\n        },\n        {\n            id: 'bf',\n            value: 'Burkina Faso',\n        },\n        {\n            id: 'bi',\n            value: 'Burundi',\n        },\n        {\n            id: 'kh',\n            value: 'Cambodia',\n        },\n        {\n            id: 'cm',\n            value: 'Cameroon',\n        },\n        {\n            id: 'ca',\n            value: 'Canada',\n        },\n        {\n            id: 'cv',\n            value: 'Cape Verde',\n        },\n        {\n            id: 'ky',\n            value: 'Cayman Islands',\n        },\n        {\n            id: 'cf',\n            value: 'Central African Republic',\n        },\n        {\n            id: 'td',\n            value: 'Chad',\n        },\n        {\n            id: 'cl',\n            value: 'Chile',\n        },\n        {\n            id: 'cn',\n            value: 'China',\n        },\n        {\n            id: 'cx',\n            value: 'Christmas Island',\n        },\n        {\n            id: 'cc',\n            value: 'Cocos (keeling) Islands',\n        },\n        {\n            id: 'co',\n            value: 'Colombia',\n        },\n        {\n            id: 'km',\n            value: 'Comoros',\n        },\n        {\n            id: 'cg',\n            value: 'Congo',\n        },\n        {\n            id: 'cd',\n            value: 'Congo, The Democratic Republic Of The',\n        },\n        {\n            id: 'ck',\n            value: 'Cook Islands',\n        },\n        {\n            id: 'cr',\n            value: 'Costa Rica',\n        },\n        {\n            id: 'ci',\n            value: \"Cote D'ivoire\",\n        },\n        {\n            id: 'hr',\n            value: 'Croatia',\n        },\n        {\n            id: 'cu',\n            value: 'Cuba',\n        },\n        {\n            id: 'cw',\n            value: 'Curacao',\n        },\n        {\n            id: 'cy',\n            value: 'Cyprus',\n        },\n        {\n            id: 'cz',\n            value: 'Czech Republic',\n        },\n        {\n            id: 'dk',\n            value: 'Denmark',\n        },\n        {\n            id: 'dj',\n            value: 'Djibouti',\n        },\n        {\n            id: 'dm',\n            value: 'Dominica',\n        },\n        {\n            id: 'do',\n            value: 'Dominican Republic',\n        },\n        {\n            id: 'ec',\n            value: 'Ecuador',\n        },\n        {\n            id: 'eg',\n            value: 'Egypt',\n        },\n        {\n            id: 'sv',\n            value: 'El Salvador',\n        },\n        {\n            id: 'gq',\n            value: 'Equatorial Guinea',\n        },\n        {\n            id: 'er',\n            value: 'Eritrea',\n        },\n        {\n            // Moved to top\n            // {id: \"ee\", value: \"Estonia\"}\n            id: 'et',\n            value: 'Ethiopia',\n        },\n        {\n            id: 'fk',\n            value: 'Falkland Islands (malvinas)',\n        },\n        {\n            id: 'fo',\n            value: 'Faroe Islands',\n        },\n        {\n            id: 'fj',\n            value: 'Fiji',\n        },\n        {\n            id: 'fr',\n            value: 'France',\n        },\n        {\n            id: 'gf',\n            value: 'French Guiana',\n        },\n        {\n            id: 'pf',\n            value: 'French Polynesia',\n        },\n        {\n            id: 'tf',\n            value: 'French Southern Territories',\n        },\n        {\n            id: 'ga',\n            value: 'Gabon',\n        },\n        {\n            id: 'gm',\n            value: 'Gambia',\n        },\n        {\n            id: 'ge',\n            value: 'Georgia',\n        },\n        {\n            id: 'de',\n            value: 'Germany',\n        },\n        {\n            id: 'gh',\n            value: 'Ghana',\n        },\n        {\n            id: 'gi',\n            value: 'Gibraltar',\n        },\n        {\n            id: 'gr',\n            value: 'Greece',\n        },\n        {\n            id: 'gl',\n            value: 'Greenland',\n        },\n        {\n            id: 'gd',\n            value: 'Grenada',\n        },\n        {\n            id: 'gp',\n            value: 'Guadeloupe',\n        },\n        {\n            id: 'gu',\n            value: 'Guam',\n        },\n        {\n            id: 'gt',\n            value: 'Guatemala',\n        },\n        {\n            id: 'gg',\n            value: 'Guernsey',\n        },\n        {\n            id: 'gn',\n            value: 'Guinea',\n        },\n        {\n            id: 'gw',\n            value: 'Guinea-bissau',\n        },\n        {\n            id: 'gy',\n            value: 'Guyana',\n        },\n        {\n            id: 'ht',\n            value: 'Haiti',\n        },\n        {\n            id: 'hm',\n            value: 'Heard Island And Mcdonald Islands',\n        },\n        {\n            id: 'va',\n            value: 'Holy See (vatican City State)',\n        },\n        {\n            id: 'hn',\n            value: 'Honduras',\n        },\n        {\n            id: 'hk',\n            value: 'Hong Kong',\n        },\n        {\n            id: 'hu',\n            value: 'Hungary',\n        },\n        {\n            id: 'is',\n            value: 'Iceland',\n        },\n        {\n            id: 'in',\n            value: 'India',\n        },\n        {\n            id: 'id',\n            value: 'Indonesia',\n        },\n        {\n            id: 'ir',\n            value: 'Iran, Islamic Republic Of',\n        },\n        {\n            id: 'iq',\n            value: 'Iraq',\n        },\n        {\n            id: 'ie',\n            value: 'Ireland',\n        },\n        {\n            id: 'im',\n            value: 'Isle Of Man',\n        },\n        {\n            id: 'il',\n            value: 'Israel',\n        },\n        {\n            id: 'it',\n            value: 'Italy',\n        },\n        {\n            id: 'jm',\n            value: 'Jamaica',\n        },\n        {\n            id: 'jp',\n            value: 'Japan',\n        },\n        {\n            id: 'je',\n            value: 'Jersey',\n        },\n        {\n            id: 'jo',\n            value: 'Jordan',\n        },\n        {\n            id: 'kz',\n            value: 'Kazakhstan',\n        },\n        {\n            id: 'ke',\n            value: 'Kenya',\n        },\n        {\n            id: 'ki',\n            value: 'Kiribati',\n        },\n        {\n            id: 'kp',\n            value: \"Korea, Democratic People's Republic Of\",\n        },\n        {\n            id: 'kr',\n            value: 'Korea, Republic Of',\n        },\n        {\n            id: 'xk',\n            value: 'Kosovo',\n        },\n        {\n            id: 'kw',\n            value: 'Kuwait',\n        },\n        {\n            id: 'kg',\n            value: 'Kyrgyzstan',\n        },\n        {\n            id: 'la',\n            value: \"Lao People's Democratic Republic\",\n        },\n        {\n            // Moved too top\n            // {id: \"lv\", value: \"Latvia\"}\n            id: 'lb',\n            value: 'Lebanon',\n        },\n        {\n            id: 'ls',\n            value: 'Lesotho',\n        },\n        {\n            id: 'lr',\n            value: 'Liberia',\n        },\n        {\n            id: 'ly',\n            value: 'Libyan Arab Jamahiriya',\n        },\n        {\n            id: 'li',\n            value: 'Liechtenstein',\n        },\n        {\n            // Moved to top\n            // {id: \"lt\", value: \"Lithuania\"}\n            id: 'lu',\n            value: 'Luxembourg',\n        },\n        {\n            id: 'mo',\n            value: 'Macao',\n        },\n        {\n            id: 'mk',\n            value: 'Macedonia, The Former Yugoslav Republic Of',\n        },\n        {\n            id: 'mg',\n            value: 'Madagascar',\n        },\n        {\n            id: 'mw',\n            value: 'Malawi',\n        },\n        {\n            id: 'my',\n            value: 'Malaysia',\n        },\n        {\n            id: 'mv',\n            value: 'Maldives',\n        },\n        {\n            id: 'ml',\n            value: 'Mali',\n        },\n        {\n            id: 'mt',\n            value: 'Malta',\n        },\n        {\n            id: 'mh',\n            value: 'Marshall Islands',\n        },\n        {\n            id: 'mq',\n            value: 'Martinique',\n        },\n        {\n            id: 'mr',\n            value: 'Mauritania',\n        },\n        {\n            id: 'mu',\n            value: 'Mauritius',\n        },\n        {\n            id: 'yt',\n            value: 'Mayotte',\n        },\n        {\n            id: 'mx',\n            value: 'Mexico',\n        },\n        {\n            id: 'fm',\n            value: 'Micronesia, Federated States Of',\n        },\n        {\n            id: 'md',\n            value: 'Moldova, Republic Of',\n        },\n        {\n            id: 'mc',\n            value: 'Monaco',\n        },\n        {\n            id: 'mn',\n            value: 'Mongolia',\n        },\n        {\n            id: 'me',\n            value: 'Montenegro',\n        },\n        {\n            id: 'ms',\n            value: 'Montserrat',\n        },\n        {\n            id: 'ma',\n            value: 'Morocco',\n        },\n        {\n            id: 'mz',\n            value: 'Mozambique',\n        },\n        {\n            id: 'mm',\n            value: 'Myanmar',\n        },\n        {\n            id: 'na',\n            value: 'Namibia',\n        },\n        {\n            id: 'nr',\n            value: 'Nauru',\n        },\n        {\n            id: 'np',\n            value: 'Nepal',\n        },\n        {\n            id: 'nl',\n            value: 'Netherlands',\n        },\n        {\n            id: 'nc',\n            value: 'New Caledonia',\n        },\n        {\n            id: 'nz',\n            value: 'New Zealand',\n        },\n        {\n            id: 'ni',\n            value: 'Nicaragua',\n        },\n        {\n            id: 'ne',\n            value: 'Niger',\n        },\n        {\n            id: 'ng',\n            value: 'Nigeria',\n        },\n        {\n            id: 'nu',\n            value: 'Niue',\n        },\n        {\n            id: 'nf',\n            value: 'Norfolk Island',\n        },\n        {\n            id: 'mp',\n            value: 'Northern Mariana Islands',\n        },\n        {\n            id: 'no',\n            value: 'Norway',\n        },\n        {\n            id: 'om',\n            value: 'Oman',\n        },\n        {\n            id: 'pk',\n            value: 'Pakistan',\n        },\n        {\n            id: 'pw',\n            value: 'Palau',\n        },\n        {\n            id: 'ps',\n            value: 'Palestinian Territory, Occupied',\n        },\n        {\n            id: 'pa',\n            value: 'Panama',\n        },\n        {\n            id: 'pg',\n            value: 'Papua New Guinea',\n        },\n        {\n            id: 'py',\n            value: 'Paraguay',\n        },\n        {\n            id: 'pe',\n            value: 'Peru',\n        },\n        {\n            id: 'ph',\n            value: 'Philippines',\n        },\n        {\n            id: 'pn',\n            value: 'Pitcairn',\n        },\n        {\n            // Moved to top\n            // {id: \"pl\", value: \"Poland\"}\n            id: 'pt',\n            value: 'Portugal',\n        },\n        {\n            id: 'pr',\n            value: 'Puerto Rico',\n        },\n        {\n            id: 'qa',\n            value: 'Qatar',\n        },\n        {\n            id: 're',\n            value: 'Reunion',\n        },\n        {\n            id: 'ro',\n            value: 'Romania',\n        },\n        {\n            // Moved to top\n            // {id: \"ru\", value: \"Russian Federation\"}\n            id: 'rw',\n            value: 'Rwanda',\n        },\n        {\n            id: 'bl',\n            value: 'Saint Barthelemy',\n        },\n        {\n            id: 'sh',\n            value: 'Saint Helena, Ascension And Tristan Da Cunha',\n        },\n        {\n            id: 'kn',\n            value: 'Saint Kitts And Nevis',\n        },\n        {\n            id: 'lc',\n            value: 'Saint Lucia',\n        },\n        {\n            id: 'mf',\n            value: 'Saint Martin (french Part)',\n        },\n        {\n            id: 'pm',\n            value: 'Saint Pierre And Miquelon',\n        },\n        {\n            id: 'vc',\n            value: 'Saint Vincent And The Grenadines',\n        },\n        {\n            id: 'ws',\n            value: 'Samoa',\n        },\n        {\n            id: 'sm',\n            value: 'San Marino',\n        },\n        {\n            id: 'st',\n            value: 'Sao Tome And Principe',\n        },\n        {\n            id: 'sa',\n            value: 'Saudi Arabia',\n        },\n        {\n            id: 'sn',\n            value: 'Senegal',\n        },\n        {\n            id: 'rs',\n            value: 'Serbia',\n        },\n        {\n            id: 'sc',\n            value: 'Seychelles',\n        },\n        {\n            id: 'sl',\n            value: 'Sierra Leone',\n        },\n        {\n            id: 'sg',\n            value: 'Singapore',\n        },\n        {\n            id: 'sx',\n            value: 'Sint Maarten (dutch Part)',\n        },\n        {\n            id: 'sk',\n            value: 'Slovakia',\n        },\n        {\n            id: 'si',\n            value: 'Slovenia',\n        },\n        {\n            id: 'sb',\n            value: 'Solomon Islands',\n        },\n        {\n            id: 'so',\n            value: 'Somalia',\n        },\n        {\n            id: 'za',\n            value: 'South Africa',\n        },\n        {\n            id: 'gs',\n            value: 'South Georgia And The South Sandwich Islands',\n        },\n        {\n            id: 'es',\n            value: 'Spain',\n        },\n        {\n            id: 'lk',\n            value: 'Sri Lanka',\n        },\n        {\n            id: 'sd',\n            value: 'Sudan',\n        },\n        {\n            id: 'sr',\n            value: 'Suriname',\n        },\n        {\n            id: 'sj',\n            value: 'Svalbard And Jan Mayen',\n        },\n        {\n            id: 'sz',\n            value: 'Swaziland',\n        },\n        {\n            // Moved to top\n            //{id: \"se\", value: \"Sweden\"}\n            id: 'ch',\n            value: 'Switzerland',\n        },\n        {\n            id: 'sy',\n            value: 'Syrian Arab Republic',\n        },\n        {\n            id: 'tw',\n            value: 'Taiwan, Province Of China',\n        },\n        {\n            id: 'tj',\n            value: 'Tajikistan',\n        },\n        {\n            id: 'tz',\n            value: 'Tanzania, United Republic Of',\n        },\n        {\n            id: 'th',\n            value: 'Thailand',\n        },\n        {\n            id: 'tl',\n            value: 'Timor-leste',\n        },\n        {\n            id: 'tg',\n            value: 'Togo',\n        },\n        {\n            id: 'tk',\n            value: 'Tokelau',\n        },\n        {\n            id: 'to',\n            value: 'Tonga',\n        },\n        {\n            id: 'tt',\n            value: 'Trin{idad And Tobago',\n        },\n        {\n            id: 'tn',\n            value: 'Tunisia',\n        },\n        {\n            id: 'tr',\n            value: 'Turkey',\n        },\n        {\n            id: 'tm',\n            value: 'Turkmenistan',\n        },\n        {\n            id: 'tc',\n            value: 'Turks And Caicos Islands',\n        },\n        {\n            id: 'tv',\n            value: 'Tuvalu',\n        },\n        {\n            id: 'ug',\n            value: 'Uganda',\n        },\n        {\n            id: 'ua',\n            value: 'Ukraine',\n        },\n        {\n            id: 'ae',\n            value: 'United Arab Emirates',\n        },\n        {\n            id: 'gb',\n            value: 'United Kingdom',\n        },\n        {\n            id: 'us',\n            value: 'United States',\n        },\n        {\n            id: 'um',\n            value: 'United States Minor Outlying Islands',\n        },\n        {\n            id: 'uy',\n            value: 'Uruguay',\n        },\n        {\n            id: 'uz',\n            value: 'Uzbekistan',\n        },\n        {\n            id: 'vu',\n            value: 'Vanuatu',\n        },\n        {\n            id: 'va',\n            value: 'Vatican City State',\n        },\n        {\n            id: 've',\n            value: 'Venezuela, Bolivarian Republic Of',\n        },\n        {\n            id: 'vn',\n            value: 'Viet Nam',\n        },\n        {\n            id: 'vg',\n            value: 'Virgin Islands, British',\n        },\n        {\n            id: 'vi',\n            value: 'Virgin Islands, U.s.',\n        },\n        {\n            id: 'wf',\n            value: 'Wallis And Futuna',\n        },\n        {\n            id: 'eh',\n            value: 'Western Sahara',\n        },\n        {\n            id: 'ye',\n            value: 'Yemen',\n        },\n        {\n            id: 'zm',\n            value: 'Zambia',\n        },\n        {\n            id: 'zw',\n            value: 'Zimbabwe',\n        },\n    ],\n});\n\nexport default CollectorFieldComponent;\n","define(\"tt4/components/copy-button\", [\"exports\", \"ember-cli-clipboard/components/copy-button\"], function (_exports, _copyButton) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _copyButton.default;\n    }\n  });\n});\n","import Component from '@glimmer/component';\n\nexport default class DashBoardWidgetsTimecard2Component extends Component {}\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/date-input.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DateInputComponent;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nDateInputComponent = Ember.TextField.extend({\n    tagName: 'input',\n    attributeBindings: ['type', 'min'],\n    type: 'text',\n    isValueNull: Ember.computed('value', function () {\n        if (this.get('value') === null && !Modernizr.inputtypes.date) {\n            return $(this.element).val('');\n        }\n    }),\n    showNativeControl: Ember.computed('value', {\n        get: function () {\n            if (this._value) {\n                return this._value;\n            }\n            if (window.navigator.userAgent.indexOf('Edge') > -1) {\n                return false;\n            }\n            return Modernizr.inputtypes.date;\n        },\n        set: function (key, value) {\n            return (this._value = value);\n        },\n    }),\n    didInsertElement: function () {\n        var nowDate, onChangeDate, self, startdate;\n        if (!this.get('showNativeControl')) {\n            //            @set 'type', 'text'\n            self = this;\n            onChangeDate = function (e) {\n                return self.set('value', moment(e.date).format('YYYY-MM-DD'));\n            };\n            startdate = '';\n            if (this.get('startDate')) {\n                startdate = new Date(this.get('startDate'));\n            } else {\n                nowDate = new Date();\n                startdate = new Date('1900', nowDate.getMonth(), nowDate.getDate(), 0, 0, 0, 0); //ugly hack to get datepicker work\n            }\n            return $(this.element)\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    language: localStorage.lang,\n                    autoclose: true,\n                    todayHighlight: true,\n                    startDate: startdate,\n                    clearBtn: true,\n                    disableTouchKeyboard: true,\n                    orientation: 'bottom',\n                })\n                .on('changeDate', onChangeDate);\n        }\n    },\n    didReceiveAttrs: function () {\n        if (this.get('showNativeControl')) {\n            this.set('type', 'date');\n        }\n        if (this.get('startDate')) {\n            return this.set('min', this.get('startDate'));\n        }\n    },\n});\n\nexport default DateInputComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/draggable_dropzone.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DraggableDropzoneComponent;\n\nimport Ember from 'ember';\n\nDraggableDropzoneComponent = Ember.Component.extend({\n    classNames: ['draggable-dropzone'],\n    classNameBindings: ['dragClass'],\n    dragClass: 'deactivated',\n    attributeBindings: ['data-field'],\n    dragLeave: function (event) {\n        event.preventDefault();\n        return this.set('dragClass', 'deactivated');\n    },\n    dragOver: function (event) {\n        event.stopPropagation();\n        this.set('dragClass', 'activated');\n        return false;\n    },\n    dragEnter: function (event) {\n        event.stopPropagation();\n        return false;\n    },\n    drop: function (event) {\n        var data, msie, setDataString, trident, userAgent;\n        this.set('dragClass', 'deactivated');\n        userAgent = window.navigator.userAgent;\n        msie = userAgent.indexOf('MSIE ');\n        trident = userAgent.indexOf('Trident/');\n        if (msie > 0 || trident > 0) {\n            setDataString = 'text';\n        } else {\n            setDataString = 'text/data';\n        }\n        //console.log setDataString\n        data = event.dataTransfer.getData(setDataString);\n        //console.log \"dropped\", data\n        if (this.get('dropped')) {\n            return this.dropped(data, event);\n        }\n    },\n});\n\nexport default DraggableDropzoneComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/draggable_item.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DraggableItemComponent;\n\nimport Ember from 'ember';\n\nDraggableItemComponent = Ember.Component.extend({\n    classNames: ['draggable-item'],\n    attributeBindings: ['draggable'],\n    draggable: 'true',\n    dragStart: function (event) {\n        var msie, setDataString, trident, userAgent;\n        //console.log \"drag start: \",  @get('content')\n        userAgent = window.navigator.userAgent;\n        msie = userAgent.indexOf('MSIE ');\n        trident = userAgent.indexOf('Trident/');\n        if (msie > 0 || trident > 0) {\n            setDataString = 'text';\n        } else {\n            setDataString = 'text/data';\n        }\n        return event.dataTransfer.setData(setDataString, this.get('content'));\n    },\n});\n\nexport default DraggableItemComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/drop-down-search-input.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DropDownSearchInputComponent;\n\nimport Ember from 'ember';\n\nimport DropDownSearch from './drop-down-search';\n\nDropDownSearchInputComponent = DropDownSearch.extend({\n    layoutName: 'components/drop-down-search',\n    placeholder: 'general.write_or_search',\n    actions: {\n        focusOut: function () {\n            return this.set('showOptions', false);\n        },\n    },\n});\n\nexport default DropDownSearchInputComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/drop-down-search.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DropDownSearchComponent;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nDropDownSearchComponent = Ember.Component.extend({\n    // If we show options or not\n    showOptions: false,\n    // Field value\n    value: null,\n    // default class\n    classes: 'form-control',\n    // All options\n    options: [],\n    observeValue: Ember.observer('value', function () {\n        if (this.get('value.string')) {\n            return this.sendAction('change', this.get('value.string'));\n        } else {\n            return this.sendAction('change', this.get('value'));\n        }\n    }),\n    // Filtered options by search value\n    _options: Ember.computed('options', 'value', function () {\n        var regexp;\n        if (this.get('value')) {\n            regexp = new RegExp(this.get('value'), 'i');\n            return this.get('options').filter(function (item) {\n                if (typeof item === 'object') {\n                    return regexp.test(item.name);\n                }\n                return regexp.test(item);\n            });\n        } else {\n            return this.get('options');\n        }\n    }),\n    setValue: Em.on(\n        'init',\n        Em.observer('input', function () {\n            if (!this.get('input')) {\n                return;\n            }\n            if (Array.isArray(this.get('options')[0])) {\n                return this.set('value', this.get('options').find(this.get('input')));\n            } else {\n                return this.set('value', this.get('options').findBy('id', this.get('input')).name);\n            }\n        }),\n    ),\n    actions: {\n        focusIn: function () {\n            return this.set('showOptions', true);\n        },\n        touched: function () {},\n        // this is dummy method.. for some reason browser click fails without this\n        focusOut: function () {\n            this.set('showOptions', false);\n            return this.send('hasOption');\n        },\n        select: function (option) {\n            var value;\n            $('input', this.element).blur();\n            if (option) {\n                if (option.get != null) {\n                    value = option.get('name');\n                } else if (option.id) {\n                    value = option.name;\n                } else {\n                    value = option;\n                }\n                this.set('value', value);\n            } else {\n                this.set('value', null);\n            }\n            return this.sendAction('bubbleChange', option);\n        },\n        hasOption: function () {\n            var empty, i, len, option, options, val;\n            empty = false;\n            options = this.get('_options');\n            if (options.length === 0) {\n                empty = true;\n            }\n            for (i = 0, len = options.length; i < len; i++) {\n                option = options[i];\n                val = option.id ? option.name : option;\n                if (this.get('value') === !val) {\n                    empty = true;\n                } else {\n                    this.sendAction('bubbleChange', option);\n                }\n            }\n            if (empty) {\n                return this.set('value', null);\n            }\n        },\n    },\n});\n\nexport default DropDownSearchComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/drop-down.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DropDownComponent;\n\nimport Ember from 'ember';\n\nDropDownComponent = Ember.Component.extend({\n    sessionGlobals: Ember.inject.service(),\n\n    // Properties\n\n    // Value of the selected option\n    value: null,\n    // Prompt that is shown if nothing is selected\n    prompt: null,\n    autoclear: false,\n    // Options to show in the dropdown\n    // FORMAT: [\n    //   {id: <string|number>, name: <string|number>}\n    // ]\n    options: null,\n    // default class\n    classes: 'form-control',\n    optionGroups: null,\n    disabled: false,\n    didRender: function () {\n        var select;\n        // hax for ff .. https://stackoverflow.com/a/10096033\n        select = this.element.getElementsByTagName('select')[0];\n        return (select.value = this.get('value') ? this.get('value') : '');\n    },\n    showingRemoved: Em.computed('value', function () {\n        var show_removed_arr;\n        if (this.get('useAsFilter')) {\n            show_removed_arr = this.get('sessionGlobals').get('show_removed');\n            if (show_removed_arr && show_removed_arr[this.get('field.name')]) {\n                return true;\n            } else {\n                return false;\n            }\n        }\n    }),\n\n    // Actions\n\n    actions: {\n        // Sets the selected ID to components property VALUE\n        select: function (id) {\n            // if we use this as a filter, do not update value as it can overwrite database-field defaultValueForNormalDropdown-computed\n            if (this.get('useAsFilter')) {\n                if (id === 'show_removed') {\n                    this.set('showingRemoved', true);\n                }\n                if (id === 'hide_removed') {\n                    this.set('showingRemoved', false);\n                }\n                this.sendAction('bubbleChange', id);\n                return;\n            }\n            if (id !== 'show_removed' && id !== 'hide_removed') {\n                this.set('value', id);\n            }\n            // very ugly hack but does it's thing\n            if (this.get('autoclear')) {\n                this.set('optionGroups', true);\n                Em.run.later(\n                    this,\n                    () => {\n                        this.set('value', null);\n                        return this.set('optionGroups', false);\n                    },\n                    100,\n                );\n            }\n            return this.sendAction('bubbleChange', id);\n        },\n    },\n});\n\nexport default DropDownComponent;\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if (needs \\\"development\\\")}}<span class=\\\"label label-warning\\\">{{@text}}</span>{{/if}}\", {\"contents\":\"{{#if (needs \\\"development\\\")}}<span class=\\\"label label-warning\\\">{{@text}}</span>{{/if}}\",\"moduleName\":\"tt4/components/dump-dev.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/dump-dev.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","define(\"tt4/components/ember-modal-dialog-positioned-container\", [\"exports\", \"ember-modal-dialog/components/positioned-container\"], function (_exports, _positionedContainer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _positionedContainer.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-modal-dialog/-basic-dialog\", [\"exports\", \"ember-modal-dialog/components/basic-dialog\"], function (_exports, _basicDialog) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _basicDialog.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-modal-dialog/-in-place-dialog\", [\"exports\", \"ember-modal-dialog/components/in-place-dialog\"], function (_exports, _inPlaceDialog) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _inPlaceDialog.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-modal-dialog/-liquid-dialog\", [\"exports\", \"ember-modal-dialog/components/liquid-dialog\"], function (_exports, _liquidDialog) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _liquidDialog.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-modal-dialog/-liquid-tether-dialog\", [\"exports\", \"ember-modal-dialog/components/liquid-tether-dialog\"], function (_exports, _liquidTetherDialog) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _liquidTetherDialog.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-modal-dialog/-tether-dialog\", [\"exports\", \"ember-modal-dialog/components/tether-dialog\"], function (_exports, _tetherDialog) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _tetherDialog.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-popover\", [\"exports\", \"ember-tooltips/components/ember-popover\"], function (_exports, _emberPopover) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPopover.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-popper-targeting-parent\", [\"exports\", \"ember-popper/components/ember-popper-targeting-parent\"], function (_exports, _emberPopperTargetingParent) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPopperTargetingParent.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-popper\", [\"exports\", \"ember-popper/components/ember-popper\"], function (_exports, _emberPopper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPopper.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-table\", [\"exports\", \"ember-table/components/ember-table/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-tbody\", [\"exports\", \"ember-table/components/ember-tbody/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-td\", [\"exports\", \"ember-table/components/ember-td/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-tether\", [\"exports\", \"ember-tether/components/ember-tether\"], function (_exports, _emberTether) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberTether.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-tfoot\", [\"exports\", \"ember-table/components/ember-tfoot/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-th\", [\"exports\", \"ember-table/components/ember-th/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-th/resize-handle\", [\"exports\", \"ember-table/components/ember-th/resize-handle/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-th/sort-indicator\", [\"exports\", \"ember-table/components/ember-th/sort-indicator/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-thead\", [\"exports\", \"ember-table/components/ember-thead/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-tooltip\", [\"exports\", \"ember-tooltips/components/ember-tooltip\"], function (_exports, _emberTooltip) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberTooltip.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-tr\", [\"exports\", \"ember-table/components/ember-tr/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-wormhole\", [\"exports\", \"ember-wormhole/components/ember-wormhole\"], function (_exports, _emberWormhole) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberWormhole.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/error-popup.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ErrorPopupComponent;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nErrorPopupComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    didInsertElement: function () {\n        return $('.error_msg').hide();\n    },\n    error_msg: Ember.computed('error', function () {\n        var message, msg, translated;\n        $('.error_msg').show();\n        msg = this.get('error.responseText');\n        // go to top of the page\n        $(document).scrollTop(0);\n        translated = this.get('intl').t('errors.' + msg);\n        if (translated.string && translated.string.substring(0, 19) !== 'Missing translation') {\n            message = translated.string;\n        } else {\n            message =\n                msg + ' ' + this.get('error.statusText') + ' (' + this.get('error.status') + ')';\n        }\n        // fadeout with delay\n        setTimeout(function () {\n            return $('.error_msg').fadeOut('slow');\n        }, 4000);\n        return message;\n    }),\n});\n\nexport default ErrorPopupComponent;\n","define(\"tt4/components/export-selector-onselect\", [\"exports\", \"ember-cli-data-export/components/export-selector-onselect\"], function (_exports, _exportSelectorOnselect) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _exportSelectorOnselect.default;\n    }\n  });\n});\n","define(\"tt4/components/export-selector\", [\"exports\", \"ember-cli-data-export/components/export-selector\"], function (_exports, _exportSelector) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _exportSelector.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/fast-select.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FastSelectComponent;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nFastSelectComponent = Ember.Component.extend({\n    didInsertElement: function () {\n        var self;\n        self = this;\n        this.renderOptions();\n        return $('select', this.element).change(function () {\n            var optionid;\n            optionid = $(this).find('option:selected').get(0).id;\n            return self.set('value', optionid);\n        });\n    },\n    renderOptions: function () {\n        var content, first, prompt, select, self, value;\n        self = this;\n        content = this.get('content');\n        select = $('select', this.element);\n        prompt = this.get('prompt');\n        value = this.get('value');\n        if (prompt) {\n            select.append('<option id=\"\">' + prompt + '</option>');\n        }\n        //try to get object id\n        first = content.get('firstObject.id');\n        //try to get string\n        if (!first) {\n            first = content.get('firstObject.string');\n        }\n        //get whole object\n        if (!first) {\n            first = content.get('firstObject');\n        }\n        if (!prompt && !value) {\n            self.set('value', first);\n        }\n        return content.forEach(function (item) {\n            if (!item.id) {\n                return select.append(\n                    '<option id=\"' +\n                        item +\n                        '\"' +\n                        (value && (value === item || value === item.string)\n                            ? ' selected=\"selected\"'\n                            : '') +\n                        '>' +\n                        item +\n                        '</option>',\n                );\n            } else {\n                return select.append(\n                    '<option id=\"' +\n                        item.id +\n                        '\"' +\n                        (value && value === item.id ? ' selected=\"selected\"' : '') +\n                        '>' +\n                        item.value +\n                        '</option>',\n                );\n            }\n        });\n    },\n    didReceiveAttrs: function () {\n        if (!this.get('class')) {\n            if (this.get('parentView.edit')) {\n                return this.set('class', 'form-control inline-input');\n            } else {\n                return this.set('class', 'form-control');\n            }\n        }\n    },\n    obs: function () {\n        var select;\n        select = $('select', this.element);\n        if (select) {\n            return select.find(\"option[id='\" + this.get('value') + \"']\").prop('selected', true);\n        }\n    }.observes('value'),\n});\n\nexport default FastSelectComponent;\n","define(\"tt4/components/file-dropzone\", [\"exports\", \"ember-file-upload/components/file-dropzone/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/file-upload\", [\"exports\", \"ember-file-upload/components/file-upload/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/fileupload-preview.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FileuploadPreviewComponent;\n\nimport Ember from 'ember';\n\nFileuploadPreviewComponent = Ember.Component.extend({\n    tagName: 'canvas',\n    attributeBindings: ['width', 'height'],\n    didInsertElement: function () {\n        var canvas;\n        canvas = this.get('element').getContext('2d');\n        this.set('canvas', canvas);\n        this._empty(canvas);\n        return this.draw();\n    },\n    draw: function () {\n        var canvas, image, self;\n        self = this;\n        canvas = this.get('canvas');\n        this._empty(canvas);\n        image = new Image();\n        image.onload = function () {\n            canvas = self.get('canvas');\n            return canvas.drawImage(image, 0, 0, image.width, image.height);\n        };\n        return (image.src = this.get('data'));\n    }.observes('data'),\n    _empty: function (canvas) {\n        if (canvas) {\n            canvas.fillStyle = '#fff';\n            return canvas.fillRect(0, 0, this.get('width'), this.get('height'));\n        }\n    },\n});\n\nexport default FileuploadPreviewComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/general-report-row.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GeneralReportRowComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport config from '../config/environment';\n\nimport { pluralize } from 'ember-inflector';\n\nGeneralReportRowComponent = Ember.Component.extend({\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    analytics: Ember.inject.service(),\n    moment: Ember.inject.service(),\n    capi: Ember.inject.service(),\n    tagName: 'tr',\n    classNameBindings: ['showLock'],\n    fieldSettings: Em.A({\n        report: true,\n        title: false,\n    }),\n    editModal: Ember.computed('form', 'model', function () {\n        return [this.get('form'), this.get('model.id')];\n    }),\n    dynamicEditParams: Ember.computed('form', 'model', function () {\n        var fields, params;\n        fields = this.get('editRoute.fields');\n        params = [this.get('editRoute.route')];\n        fields.forEach((field) => {\n            var value;\n            value = this.get('model.' + field);\n            if (Ember.typeOf(value) === 'instance') {\n                value = value.get('id');\n            }\n            return params.push(value);\n        });\n        return params;\n    }),\n    historyModal: Ember.computed('form', 'model', function () {\n        return [this.get('form'), this.get('model.id'), 'history'];\n    }),\n    click: function () {\n        return this.sendAction('rowAction', this.get('model'));\n    },\n    showLock: Ember.computed('form', 'canEdit', function () {\n        if (this.get('model.row_info.status') === 'locked' && this.get('canEdit') === false) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n    form: null,\n    didInsertElement: function () {\n        return this.set('form', this.get('model.constructor.modelName'));\n    },\n    //    edit: true\n    canEdit: Ember.computed('form', 'canRestore', function () {\n        var canEdit;\n        if (this.get('canRestore')) {\n            return false;\n        }\n        // a bit bubblegum, but this is needed because capi does not have this kind of privilege-thing\n        if (\n            this.get('settings.disableStatus') &&\n            this.get('model.status') === this.get('settings.disableStatus')\n        ) {\n            return false;\n        }\n        canEdit = true;\n        if (this.get('settings.hideEdit')) {\n            canEdit = false;\n        } else {\n            canEdit =\n                collector.getPrivilege(this.get('form'), 'edit') && this.get('model.isEditable');\n        }\n        return canEdit;\n    }),\n    canShow: Ember.computed('canEdit', function () {\n        if (this.get('canEdit') === false) {\n            return !this.get('settings.hideShow');\n        }\n        return true;\n    }),\n    canRemove: Ember.computed('form', 'canRestore', function () {\n        if (this.get('canRestore')) {\n            return false;\n        }\n        if (!this.get('settings.hideRemove') && !collector.hasErrors(this.get('form'))) {\n            return (\n                collector.getPrivilege(this.get('form'), 'remove') && this.get('model.isRemovable')\n            );\n        }\n    }),\n    canRestore: Ember.computed('form', function () {\n        if (this.get('rowStatus') === 'removed' && !collector.hasErrors(this.get('form'))) {\n            return true;\n        }\n    }),\n    rowColumns: Ember.on(\n        'init',\n        Ember.observer('columns.[]', 'model', 'checked.[]', 'edit', function () {\n            var col, cols, fields, i, len, ref, self;\n            self = this;\n            fields = Em.A([]);\n            cols = this.get('columns');\n            if (!cols) {\n                return;\n            }\n            for (i = 0, len = cols.length; i < len; i++) {\n                col = cols[i];\n                Ember.set(col, 'obj.ext', col.ext);\n                Ember.set(\n                    col,\n                    'obj.clickable',\n                    (ref = col.obj.type) === 'multiselect' || ref === 'databasearray',\n                );\n                fields.pushObject(col.obj);\n            }\n            return this.set('fields', fields);\n        }),\n    ),\n    checkedClass: 'unchecked',\n    checked: function () {\n        var self;\n        self = this;\n        this.set('isChecked', false);\n        this.set('checkedClass', 'unchecked');\n        if (!this.get('allChecked')) {\n            return;\n        }\n        return this.get('allChecked').forEach(function (item) {\n            if (item.get == null) {\n                // shared application items are not ember objects\n                item = Ember.Object.create(item);\n            }\n            if (item.get('id') === self.get('model.id')) {\n                self.set('checkedClass', 'checked');\n                return self.set('isChecked', true);\n            }\n        });\n    }.observes('allChecked.[]'),\n    editRoute: Ember.computed('settings.editRoute', function () {\n        var settings;\n        settings = this.get('settings');\n        if (settings != null) {\n            if (settings.get('editRoute')) {\n                return settings.get('editRoute');\n            }\n        }\n        return this.get('form') + 's.edit';\n    }),\n    historyRoute: Ember.computed('settings.historyRoute', function () {\n        var settings;\n        settings = this.get('settings');\n        if (settings != null) {\n            if (settings.get('historyRoute')) {\n                return settings.get('historyRoute');\n            }\n        }\n        return this.get('form') + 's.history';\n    }),\n    modified_class: Em.computed('model.row_info.modified', function () {\n        var created_days, created_diff, days, diff;\n        if (!this.get('model.row_info.modified')) {\n            return false;\n        }\n        diff =\n            moment.utc().startOf('day').unix() -\n            moment.utc(this.get('model.row_info.modified')).startOf('day').unix();\n        days = moment.duration(diff, 'seconds').asDays();\n        //return false if edited in the same day\n        created_diff =\n            moment.utc(this.get('model.row_info.modified')).startOf('day').unix() -\n            moment.utc(this.get('model.row_info.created')).startOf('day').unix();\n        created_days = moment.duration(created_diff, 'seconds').asDays();\n        if (created_days === 0) {\n            if (days > 0) {\n                return false;\n            }\n            return 'general-report-modified modified-since-today';\n        }\n        if (days > 14) {\n            return false;\n        }\n        return 'general-report-modified modified-since-' + days;\n    }),\n    modified_tooltip_format: Em.computed('modified_class', function () {\n        if (this.get('modified_class') === 'general-report-modified modified-since-today') {\n            return 'LT';\n        } else {\n            return 'L';\n        }\n    }),\n    actions: {\n        clicked: function (field) {\n            var ref;\n            if (!((ref = field.type) === 'multiselect' || ref === 'databasearray')) {\n                return;\n            }\n            return this.sendAction('bubbleTransition', {\n                queryParams: {\n                    modal: ['modalrows', this.get('form') + '.' + field.ext, this.get('model.id')],\n                },\n            });\n        },\n        openlock: function (row) {\n            var form, form_plural, model;\n            model = this.get('model');\n            if (!model.get('row_info.privilege_openlock')) {\n                return;\n            }\n            form = this.get('form');\n            form_plural = pluralize(this.get('form')).camelize();\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_openlock'))\n                .then((con) => {\n                    var data;\n                    if (con) {\n                        data = {};\n                        data[form] = {\n                            locked: false,\n                        };\n                        return this.get('capi')\n                            .request('/' + form_plural + '/' + row.get('id') + '?validation=off', {\n                                dataType: 'json',\n                                type: 'PUT',\n                                data: JSON.stringify(data),\n                            })\n                            .then(() => {\n                                model.set('export_salary', '');\n                                model.set('export_absence', '');\n                                model.set('row_info.privilege_edit', true);\n                                model.set('row_info.privilege_remove', true);\n                                model.set('row_info.status', 'normal');\n                                model.set('row_info.modified', true);\n                                return model.save();\n                            });\n                    }\n                });\n        },\n        delete: function (row) {\n            if (collector.hasErrors(this.get('form'))) {\n                return;\n            }\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    if (con) {\n                        return row.destroyRecord().then((ret) => {\n                            row.unloadRecord();\n                            if (this.isDestroyed || this.isDestroying) {\n                                return;\n                            }\n                            return this.sendAction('bubbleAction', 'delete', row);\n                        });\n                    }\n                });\n        },\n        //        show: ->\n        //            self = @\n        //            currentController = @get('parentController.currentController')\n        //            #controller.set 'model', @get 'model'\n        //            currentController.transitionToRoute(\"show\", @get 'model').then (newRoute) ->\n        //                if self.get('parentController.currentController.cancelRoute')\n        //                    newRoute.controller.set 'cancelRoute', self.get('parentController.currentController.cancelRoute')\n        restore: function (row) {\n            var form, form_camelcase, form_plural;\n            if (collector.hasErrors(this.get('form'))) {\n                return;\n            }\n            form = this.get('form');\n            form_plural = pluralize(this.get('form')).camelize();\n            form_camelcase = this.get('form').camelize(); // form has to be camelcased if it has underscores\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_restore'))\n                .then((con) => {\n                    if (con) {\n                        return this.get('capi')\n                            .request('/' + form_plural + '/' + row.id + '?validation=off', {\n                                dataType: 'json',\n                                type: 'PUT',\n                                data: '{\"' + form_camelcase + '\":{\"row_info.status\":\"normal\"}}',\n                            })\n                            .then(() => {\n                                return row.unloadRecord();\n                            });\n                    }\n                });\n        },\n        save: function () {\n            var self;\n            self = this;\n            if (collector.hasErrors(this.get('form'))) {\n                this.set('edit', false);\n                this.get('model').rollbackAttributes();\n                return;\n            }\n            return this.get('model')\n                .save()\n                .then(function () {\n                    return self.set('edit', false);\n                });\n        },\n        check: function () {\n            if (this.get('isChecked')) {\n                this.set('checkedClass', 'unchecked');\n                return this.get('allChecked').removeObject(this.get('model'));\n            } else {\n                this.set('checkedClass', 'checked');\n                return this.get('allChecked').pushObject(this.get('model'));\n            }\n        },\n        clickRowAction: function (type) {\n            return this.get('analytics').trackEvent({\n                category: this.form + ' report row actions',\n                action: type,\n                label: 'General-report',\n            });\n        },\n    },\n});\n\nexport default GeneralReportRowComponent;\n","define(\"tt4/components/geo-chart\", [\"exports\", \"ember-google-charts/components/geo-chart\"], function (_exports, _geoChart) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _geoChart.default;\n    }\n  });\n});\n","define(\"tt4/components/google-chart\", [\"exports\", \"ember-google-charts/components/google-chart\"], function (_exports, _googleChart) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _googleChart.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/gps-forced-dropdown.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GpsForcedDropdown;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nGpsForcedDropdown = Ember.Component.extend({\n    store: Ember.inject.service(),\n    classes: 'form-control add-fields',\n    actions: {\n        changeValue: function (value) {\n            return this.sendAction('change', value, 'project');\n        },\n    },\n});\n\nexport default GpsForcedDropdown;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/gps-location-map.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GpsLocationMapComponent;\n\nimport Ember from 'ember';\n\nimport { getImageFromUrl, resizeImage } from 'tt4/utils/file-util';\n\nimport $ from 'jquery';\n\nGpsLocationMapComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    google: Ember.inject.service(),\n    map: null,\n    //tmp array for markers\n    markers: [],\n    allMarkers: Em.A([]),\n    allCircles: Em.A([]),\n    allPaths: Em.A([]),\n    zoomLevel: 8,\n    skipPositionUpdate: false,\n    //initialize map\n    insertMap: Em.on('didInsertElement', function () {\n        var container, firstobj, lat, lng, loc, map, options, self, styleArray;\n        container = $('.map-canvas', this.element)[0];\n        styleArray = [\n            {\n                featureType: 'road',\n                elementType: 'geometry.fill',\n                stylers: [\n                    {\n                        color: '#0c9d58',\n                    },\n                ],\n            },\n            {\n                featureType: 'water',\n                stylers: [\n                    {\n                        hue: '#00ccff',\n                    },\n                    {\n                        saturation: -22,\n                    },\n                ],\n            },\n            {\n                featureType: 'landscape',\n                stylers: [\n                    {\n                        hue: '#00ff5e',\n                    },\n                    {\n                        saturation: -56,\n                    },\n                    {\n                        lightness: 23,\n                    },\n                ],\n            },\n            {\n                stylers: [\n                    {\n                        lightness: 21,\n                    },\n                    {\n                        saturation: -26,\n                    },\n                ],\n            },\n        ];\n        self = this;\n        if (this.get('value')) {\n            loc = JSON.parse(this.get('value'));\n            lat = loc.latitude;\n            lng = loc.longitude;\n        } else if (this.get('wtmarkers') && this.get('wtmarkers.firstObject.wStartLoc')) {\n            firstobj = this.get('wtmarkers.firstObject.wStartLoc');\n            lat = firstobj.latitude;\n            lng = firstobj.longitude;\n        } else if (this.get('wtmarkers') && this.get('wtmarkers.firstObject.wEndLoc')) {\n            firstobj = this.get('wtmarkers.firstObject.wEndLoc');\n            lat = firstobj.latitude;\n            lng = firstobj.longitude;\n        } else if (this.get('projectmarkers') && this.get('projectmarkers.firstObject.project')) {\n            firstobj = this.get('projectmarkers.firstObject.project');\n            lat = firstobj.latitude;\n            lng = firstobj.longitude;\n        } else {\n            lat = 61.084857;\n            lng = 26.087036;\n            if (navigator.geolocation) {\n                navigator.geolocation.watchPosition(function (location) {\n                    var locs;\n                    lat = location.coords.latitude;\n                    lng = location.coords.longitude;\n                    locs = new window.google.maps.LatLng(lat, lng);\n                    map.panTo(locs);\n                    return map.setZoom(15);\n                });\n            }\n        }\n        options = {\n            center: new window.google.maps.LatLng(lat, lng),\n            zoom: self.get('zoomLevel'),\n            styles: styleArray,\n            disableDefaultUI: true,\n            zoomControl: true,\n        };\n        map = new window.google.maps.Map(container, options);\n        if (this.get('value')) {\n            self.placeMarkerAndPanTo(new window.google.maps.LatLng(lat, lng), map);\n        }\n        if (this.get('projectmode')) {\n            map.addListener('click', function (e) {\n                return self.placeMarkerAndPanTo(e.latLng, map);\n            });\n        }\n        if (this.get('wtmarkers')) {\n            this.addWtMarkers(map);\n        }\n        if (this.get('projectmarkers')) {\n            this.addProjectMarkers(map);\n        }\n        return this.set('map', map);\n    }),\n    observeMarkers: Em.observer('wtmarkers.[]', function () {\n        this.clearMarkers();\n        this.clearCircles();\n        this.clearPaths();\n        return this.addWtMarkers(this.get('map'));\n    }),\n    observeProjectMarkers: Em.observer('projectmarkers.[]', function () {\n        this.clearMarkers();\n        this.clearPaths();\n        return this.addProjectMarkers(this.get('map'));\n    }),\n    clearMarkers: function () {\n        this.setMap(null, this.get('allMarkers'));\n        return this.set('allMarkers', Em.A([]));\n    },\n    clearCircles: function () {\n        this.setMap(null, this.get('allCircles'));\n        return this.set('allCircles', Em.A([]));\n    },\n    clearPaths: function () {\n        this.setMap(null, this.get('allPaths'));\n        return this.set('allPaths', Em.A([]));\n    },\n    setMap: function (map, objs) {\n        var i, len, obj, results1;\n        results1 = [];\n        for (i = 0, len = objs.length; i < len; i++) {\n            obj = objs[i];\n            results1.push(obj.setMap(map));\n        }\n        return results1;\n    },\n    //add only project markers\n    addProjectMarkers: function (map) {\n        var count, i, label, len, m, plat, platlng, plng, ref, results1, self;\n        self = this;\n        count = 1;\n        ref = this.projectmarkers;\n        results1 = [];\n        for (i = 0, len = ref.length; i < len; i++) {\n            m = ref[i];\n            plat = m.project.latitude;\n            plng = m.project.longitude;\n            platlng = new window.google.maps.LatLng(plat, plng);\n            label = m.project.label;\n            self.placeMarkerWithDelay('project', platlng, map, count * 100, label);\n            results1.push(count++);\n        }\n        return results1;\n    },\n    //add worktime markers\n    addWtMarkers: function (map) {\n        var coords,\n            count,\n            endCoords,\n            i,\n            len,\n            m,\n            plat,\n            platlng,\n            plng,\n            radius,\n            ref,\n            results1,\n            self,\n            wEndLat,\n            wEndLatLng,\n            wEndLng,\n            wStartLat,\n            wStartLatLng,\n            wStartLng;\n        self = this;\n        count = 1;\n        ref = this.wtmarkers;\n        results1 = [];\n        for (i = 0, len = ref.length; i < len; i++) {\n            m = ref[i];\n            //worktime markers\n            if (m.wStartLoc) {\n                wStartLat = m.wStartLoc.latitude;\n                wStartLng = m.wStartLoc.longitude;\n                wStartLatLng = new window.google.maps.LatLng(wStartLat, wStartLng);\n            }\n            if (m.wEndLoc) {\n                wEndLat = m.wEndLoc.latitude;\n                wEndLng = m.wEndLoc.longitude;\n                wEndLatLng = new window.google.maps.LatLng(wEndLat, wEndLng);\n            }\n            //if accuracy is bigger than 100m (and lower than 10km), show circle around marker\n            radius = 0;\n            if (m.wStartLoc && m.wStartLoc.accuracy < 10000 && m.wStartLoc.accuracy > 100) {\n                radius = m.wStartLoc.accuracy;\n            }\n            if (m.wStartLoc && m.wEndLoc) {\n                self.placeMarkerWithDelay('worktimeEnd', wEndLatLng, map, count * 100, m.wLabel);\n                self.placeMarkerWithDelay(\n                    'worktimeStart',\n                    wStartLatLng,\n                    map,\n                    count * 100,\n                    m.wLabel,\n                    radius,\n                );\n            } else if (!m.wStartLoc && m.wEndLoc) {\n                self.placeMarkerWithDelay('worktime', wEndLatLng, map, count * 100, m.wLabel);\n            } else {\n                self.placeMarkerWithDelay(\n                    'worktime',\n                    wStartLatLng,\n                    map,\n                    count * 100,\n                    m.wLabel,\n                    radius,\n                );\n            }\n            count++;\n            //add also project marker and line\n            if (m.project) {\n                //project markers\n                plat = m.project.latitude;\n                plng = m.project.longitude;\n                platlng = new window.google.maps.LatLng(plat, plng);\n                self.placeMarkerWithDelay('project', platlng, map, count * 100, m.project.label);\n                coords = [wStartLatLng, platlng];\n                self.placeLineWithDelay(coords, map, count * 100);\n                endCoords = [wEndLatLng, platlng];\n                self.placeLineWithDelay(endCoords, map, count * 100);\n                results1.push(count++);\n            } else {\n                results1.push(void 0);\n            }\n        }\n        return results1;\n    },\n    //add marker with animation and delay\n    placeMarkerWithDelay: function (type, latLng, map, delay, label, radius = 0) {\n        return Ember.run.later(() => {\n            var icon, marker;\n            if (type === 'worktime') {\n                icon = 'img/gpsmap-user-icon.png';\n            } else if (type === 'worktimeStart') {\n                icon = {\n                    url: 'img/Play.png',\n                    anchor: new google.maps.Point(12, 12),\n                };\n            } else if (type === 'worktimeEnd') {\n                icon = {\n                    url: 'img/Stop.png',\n                    anchor: new google.maps.Point(12, 12),\n                };\n            } else if (type === 'project') {\n                icon = 'img/gpsmap-project-icon.png';\n            }\n            marker = new window.google.maps.Marker({\n                position: latLng,\n                map: map,\n                icon: icon,\n                animation: google.maps.Animation.DROP,\n                title: label,\n            });\n            if (radius > 0) {\n                radius = new google.maps.Circle({\n                    strokeColor: '#24E268',\n                    strokeOpacity: 0.5,\n                    strokeWeight: 1,\n                    fillColor: '#24E268',\n                    fillOpacity: 0.2,\n                    map: map,\n                    center: latLng,\n                    radius: radius,\n                });\n                this.get('allCircles').pushObject(radius);\n            }\n            return this.get('allMarkers').pushObject(marker);\n        }, delay);\n    },\n    //add line with delay\n    placeLineWithDelay: function (coords, map, delay) {\n        return Ember.run.later(() => {\n            var path;\n            path = new google.maps.Polyline({\n                path: coords,\n                geodesic: true,\n                strokeColor: '#FF0000',\n                strokeOpacity: 1.0,\n                strokeWeight: 2,\n            });\n            path.setMap(map);\n            return this.get('allPaths').pushObject(path);\n        }, delay);\n    },\n    //add marker by click and remove previous\n    placeMarkerAndPanTo: function (latLng, map) {\n        var i, len, loc, m, marker, ref;\n        ref = this.get('markers');\n        for (i = 0, len = ref.length; i < len; i++) {\n            m = ref[i];\n            m.setMap(null);\n        }\n        this.set('markers', []);\n        marker = new window.google.maps.Marker({\n            position: latLng,\n            map: map,\n        });\n        this.get('markers').push(marker);\n        //set location to value\n        loc = {};\n        loc.latitude = marker.position.lat();\n        loc.longitude = marker.position.lng();\n        this.set('value', JSON.stringify(loc));\n        return map.panTo(latLng);\n    },\n    updateLocation: true,\n    //listen changes in address fields\n    addressObserver: Ember.observer('model.address', 'model.zip', 'model.city', function () {\n        //dont run every model change, only after 1.5s of last change\n        if (this.get('updateLocation')) {\n            return Ember.run.debounce(this, this.geocodeAddress, 1500);\n        }\n    }),\n    updateCenterPoint: function () {\n        var map, pos, value;\n        map = this.get('map');\n        value = JSON.parse(this.get('value'));\n        pos = new window.google.maps.LatLng(value.latitude, value.longitude);\n        map.setCenter(pos);\n        this.placeMarkerAndPanTo(pos, map);\n        map.setZoom(15);\n    },\n    //listen changes in value field and update address\n    locationObserver: Ember.observer('value', function () {\n        var geocoder, latlng, self, value;\n        value = JSON.parse(this.get('value'));\n        latlng = {\n            lat: value.latitude,\n            lng: value.longitude,\n        };\n        //if model not set, just update map\n        if (!this.get('model')) {\n            if (this.get('skipPositionUpdate') === false) {\n                Em.run.debounce(this, this.updateCenterPoint, 1500);\n            }\n            return;\n        }\n        //get address\n        geocoder = new window.google.maps.Geocoder();\n        self = this;\n        return geocoder.geocode(\n            {\n                location: latlng,\n            },\n            function (results, status) {\n                var address, city, url, zip;\n                if (status !== 'OK') {\n                    return;\n                }\n                if (results[0].address_components.length === 4) {\n                    address = results[0].address_components[0]['long_name'];\n                    zip = results[0].address_components[3]['short_name'];\n                    city = results[0].address_components[1]['short_name'];\n                } else if (results[0].address_components.length === 5) {\n                    address =\n                        results[0].address_components[1]['long_name'] +\n                        ' ' +\n                        results[0].address_components[0]['short_name'];\n                    //zip = results[0].address_components[4]['short_name']\n                    zip = results[0].address_components[4]['short_name'];\n                    city = results[0].address_components[2]['short_name'];\n                } else if (results[0].address_components.length === 8) {\n                    address =\n                        results[0].address_components[1]['long_name'] +\n                        ' ' +\n                        results[0].address_components[0]['short_name'];\n                    //zip = results[0].address_components[4]['short_name']\n                    zip = results[0].address_components[7]['short_name'];\n                    city = results[0].address_components[2]['short_name'];\n                } else if (results[0].address_components.length === 6) {\n                    address =\n                        results[0].address_components[1]['long_name'] +\n                        ' ' +\n                        results[0].address_components[0]['short_name'];\n                    zip = results[0].address_components[5]['short_name'];\n                    city = results[0].address_components[2]['short_name'];\n                    self.set('updateLocation', false);\n                } else {\n                    address =\n                        results[0].address_components[1]['long_name'] +\n                        ' ' +\n                        results[0].address_components[0]['short_name'];\n                    zip = results[0].address_components[4]['short_name'];\n                    city = results[0].address_components[2]['short_name'];\n                }\n                self.set('updateLocation', false);\n                if (self.get('model')) {\n                    if (!(typeof self.get === 'function' ? self.get('model.image') : void 0)) {\n                        url = self.get('google').streetViewUrl(value);\n                        getImageFromUrl(url).then((file) => {\n                            var file_data;\n                            file_data = {};\n                            file_data.name = 'file';\n                            return resizeImage(file, 600, 300, 60).then((resized) => {\n                                file_data.file = resized;\n                                return resizeImage(resized, 200, 100, 60).then((resized) => {\n                                    file_data.preview = resized;\n                                    return self.set('model.image', [file_data]);\n                                });\n                            });\n                        });\n                    }\n                    if (!(typeof self.get === 'function' ? self.get('model.address') : void 0)) {\n                        self.set('model.address', address);\n                    }\n                    if (!(typeof self.get === 'function' ? self.get('model.zip') : void 0)) {\n                        self.set('model.zip', zip);\n                    }\n                    if (!(typeof self.get === 'function' ? self.get('model.city') : void 0)) {\n                        return self.set('model.city', city);\n                    }\n                }\n            },\n        );\n    }),\n    //geocode address\n    geocodeAddress: function () {\n        var address, geocoder, self;\n        self = this;\n        if (this.get('model.address') && this.get('model.city')) {\n            address = this.get('model.address') + ', ' + this.get('model.city');\n            geocoder = new window.google.maps.Geocoder();\n            return geocoder.geocode(\n                {\n                    address: address,\n                },\n                function (results, status) {\n                    var map;\n                    if (status === window.google.maps.GeocoderStatus.OK) {\n                        map = self.get('map');\n                        map.setCenter(results[0].geometry.location);\n                        self.placeMarkerAndPanTo(results[0].geometry.location, map);\n                        return map.setZoom(15);\n                    }\n                },\n            );\n        }\n    },\n});\n\nexport default GpsLocationMapComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/gps-location.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GpsLocationComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nGpsLocationComponent = Ember.Component.extend({\n    gps: Ember.inject.service(),\n    store: Ember.inject.service(),\n    notSupported: Ember.computed.alias('gps.lastError'),\n    lockedPosition: Ember.computed(\n        'gps.lockedPosition',\n        'gps.lockedLatitude',\n        'gps.lockedLongitude',\n        'gps.lockedAccuracy',\n        function () {\n            var position;\n            if (!this.get('gps.lockedPosition')) {\n                Ember.run.next(this, () => {\n                    return this.set('value', null);\n                });\n                return null;\n            } else {\n                position = {\n                    latitude: this.get('gps.lockedLatitude'),\n                    longitude: this.get('gps.lockedLongitude'),\n                    accuracy: this.get('gps.lockedAccuracy'),\n                };\n                Ember.run.next(this, () => {\n                    return this.set('value', JSON.stringify(position));\n                });\n                return position;\n            }\n        },\n    ),\n    distance: Ember.computed('model.project.id', 'lockedPosition', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                return this.get('store')\n                    .query(\n                        'project',\n                        {\n                            id: this.get('model.project.id'),\n                        },\n                        {\n                            reload: true,\n                        },\n                    )\n                    .then((project) => {\n                        var distance, projectCoords;\n                        if (!project.get('location_map')) {\n                            resolve({\n                                value: null,\n                            });\n                            return;\n                        }\n                        projectCoords = JSON.parse(project.get('location_map'));\n                        distance = this.get('gps').getDistance(\n                            {\n                                lat: projectCoords.latitude,\n                                lon: projectCoords.longitude,\n                            },\n                            {\n                                lat: this.get('lockedPosition.latitude'),\n                                lon: this.get('lockedPosition.longitude'),\n                            },\n                        );\n                        return resolve({\n                            value: Math.round(distance) + 'm',\n                        });\n                    });\n            }),\n        });\n    }),\n});\n\nexport default GpsLocationComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/help-dialog.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar HelpDialogComponent;\n\nimport Ember from 'ember';\n\nHelpDialogComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    loadText: function () {\n        var promise;\n        promise = this.get('Collector').ttapi({\n            method: 'get',\n            url: 'get_translation',\n            data: {\n                translation_key: this.get('translation_key'),\n                lang: this.get('intl.primaryLocale'),\n            },\n        });\n        return promise.then((back) => {\n            return this.set('content', new Ember.String.htmlSafe(back.string));\n        });\n    },\n    actions: {\n        show_help: function () {\n            this.loadText();\n            return this.set('show_dialog', true);\n        },\n        removeModal: function () {\n            $('.modal').modal('hide');\n            return this.set('show_dialog', false);\n        },\n    },\n});\n\nexport default HelpDialogComponent;\n","define(\"tt4/components/line-chart\", [\"exports\", \"ember-google-charts/components/line-chart\"], function (_exports, _lineChart) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _lineChart.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/loader-icon.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar LoaderIconComponent;\n\nimport Ember from 'ember';\n\nLoaderIconComponent = Ember.Component.extend();\n\nexport default LoaderIconComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/mass-edit.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MassEditComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nMassEditComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    dialogs: Em.inject.service(),\n    evented: Em.inject.service(),\n    flags: Em.inject.service(),\n    didReceiveAttrs: function () {\n        var c, fields, i, item, len, results;\n        this._super(...arguments);\n        this.set('values', {});\n        c = this.get('Collector');\n        fields = c.fieldArray(this.get('form'));\n        results = [];\n        for (i = 0, len = fields.length; i < len; i++) {\n            item = fields[i];\n            Ember.set(item.features, 'selected', false);\n            if (item.features.mandatory === true) {\n                results.push(Ember.set(item.features, 'dontshowCheckbox', true));\n            } else {\n                results.push(void 0);\n            }\n        }\n        return results;\n    },\n    executing: false,\n    recalculations: Ember.computed(function () {\n        var list;\n        list = [];\n        if (\n            this.get('form') === 'worktime' &&\n            this.get('Collector').testNeeds(['products.overtime'])\n        ) {\n            list.push({\n                value: 'overtime',\n                text: 'settings.timetracker.overtime',\n            });\n        }\n        if (\n            this.get('form') === 'worktime' &&\n            this.get('Collector').testNeeds(['products.saldo'])\n        ) {\n            list.push({\n                value: 'saldo',\n                text: 'settings.timetracker.saldo',\n            });\n        }\n        if (\n            this.get('flags').test('recalculate-autopause') &&\n            this.get('form') === 'worktime' &&\n            this.get('Collector').testNeeds(['products.autopause'])\n        ) {\n            list.push({\n                value: 'autopause',\n                text: 'settings.timetracker.autopause',\n            });\n        }\n        return list;\n    }),\n    clearValueArray: ['date', 'dropdown_userlevel'],\n    // when cancel is clicked this is set and executing is halted\n    die_signal: false,\n    alldone: false,\n    values: {},\n    progress: Ember.computed('numericalProgress', function () {\n        return this.get('numericalProgress') + ' %';\n    }),\n    progressStyle: Ember.computed('progress', function () {\n        return Ember.String.htmlSafe('width: ' + this.get('numericalProgress') + '%');\n    }),\n    ids: Ember.computed('idsStr', function () {\n        return this.get('idsStr').split(',');\n    }),\n    rowCount: Ember.computed(function () {\n        var filtered_rows, ids, rows;\n        ids = this.get('ids');\n        rows = this.get('store').peekAll(this.get('form'));\n        filtered_rows = rows.filter((row) => {\n            if (ids.indexOf(row.get('id')) > -1 && row.get('row_info.status') !== 'locked') {\n                return true;\n            }\n        });\n        return 0 + filtered_rows.get('length');\n    }),\n    locked_rows: Em.computed(function () {\n        var ids, locked_rows, rows;\n        ids = this.get('ids');\n        rows = this.get('store').peekAll(this.get('form'));\n        locked_rows = rows.filter((row) => {\n            if (ids.indexOf(row.get('id')) > -1 && row.get('row_info.status') === 'locked') {\n                return true;\n            }\n        });\n        return locked_rows.length;\n    }),\n    fields: Ember.computed('form', function () {\n        var acceptedFieldNames, acceptedFields, c, fields, hideFields, intl, usableFields;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        acceptedFields = [\n            'dropdown_values',\n            'database',\n            'date',\n            'number',\n            'dropdown_userlevel',\n            'multiselect',\n            'checkbox',\n            'checkboxgroup',\n            'dropdown_options',\n            'hours',\n            'decimal',\n            'time_new',\n            'price',\n            'minutes',\n            'datetime',\n        ];\n        acceptedFieldNames = ['export_salary', 'export_absence', 'id06control'];\n        hideFields = ['worktime.worktype', 'user.emp_relation'];\n        fields = c.fieldArray(this.get('form'));\n        usableFields = fields.filter((field) => {\n            var ref, ref1, ref2;\n            if (((ref = field.name), indexOf.call(acceptedFieldNames, ref) >= 0)) {\n                return true;\n            }\n            if (field.features.disabled) {\n                return false;\n            }\n            // hide field form massedit if it is hidden from normal adding\n            if (field.features.hide && field.features.hide.condition !== '!$editing') {\n                return false;\n            }\n            if (\n                ((ref1 = this.get('form') + '.' + field.name), indexOf.call(hideFields, ref1) >= 0)\n            ) {\n                return false;\n            }\n            if (((ref2 = field.type), indexOf.call(acceptedFields, ref2) >= 0)) {\n                return true;\n            }\n        });\n        return usableFields.map(function (item) {\n            var options;\n            item.prompt = intl.t('massedit.nochange');\n            if (item.features.remove_empty_selection) {\n                item.show_prompt = true;\n            }\n            if (item.type === 'checkbox') {\n                options = [\n                    {\n                        id: '1',\n                        value: intl.t('general.yes'),\n                    },\n                    {\n                        id: '2',\n                        value: intl.t('general.no'),\n                    },\n                ];\n                item.options = options;\n                item.type = 'dropdown_values';\n                Ember.set(item.features, 'dontshowCheckbox', true);\n            }\n            return item;\n        });\n    }),\n    getChanges: function () {\n        var key, ref, ret, value;\n        ret = [];\n        ref = this.get('values');\n        for (key in ref) {\n            value = ref[key];\n            if (value === '(empty)') {\n                ret.push({\n                    key: key,\n                    value: null,\n                });\n            } else {\n                if (Em.isPresent(value)) {\n                    ret.push({\n                        key: key,\n                        value: value,\n                    });\n                }\n            }\n        }\n        return ret;\n    },\n    execute_one: function (heap, count) {\n        var change, changes, form, i, id, len, originals, promise, record, store, userId;\n        id = heap.popObject();\n        userId = this.get('session.currentUser.id');\n        if (!id) {\n            return;\n        }\n        store = this.get('store');\n        form = this.get('form');\n        record = store.peekRecord(form, id);\n        // locked rows cannot be edited\n        if (record.get('row_info.status') === 'locked') {\n            return this.goNext(heap, count);\n        } else {\n            changes = this.getChanges();\n            originals = {};\n            originals[record.get('id')] = record.serialize();\n            for (i = 0, len = changes.length; i < len; i++) {\n                change = changes[i];\n                if (change.key === 'userlevel' && id === userId && form === 'user') {\n                    this.get('dialogs').alert(this.get('intl').t('massedit.self_selected'));\n                    continue;\n                } else {\n                    record.set(change.key, change.value);\n                }\n            }\n            if (this.get('selectedRecalculation')) {\n                record.set('metadata', {\n                    recalculate: this.get('selectedRecalculation'),\n                });\n            }\n            promise = record.save();\n            return promise.then(\n                () => {\n                    return this.goNext(heap, count);\n                },\n                (e) => {\n                    this.pushError(record, e, originals);\n                    return this.goNext(heap, count);\n                },\n            );\n        }\n    },\n    pushError: function (record, e, originals) {\n        var attr, c, field, key, ref;\n        c = this.get('Collector');\n        ref = originals[record.get('id')];\n        // Sadly we have to do it like this because ember still doesn't support rolling back relationships\n        for (key in ref) {\n            attr = ref[key];\n            if (key === 'row_info') {\n                continue;\n            }\n            field = c.field(record.get('constructor.modelName'), key);\n            if (field.type === 'database' && attr) {\n                record.set(key, this.get('store').peekRecord(field.options.form, attr));\n            } else {\n                record.set(key, attr);\n            }\n        }\n        record.rollbackAttributes();\n        return this.get('errors').pushObject(\n            Ember.Object.create({\n                row: record,\n                error: e,\n            }),\n        );\n    },\n    modelFields: Ember.computed('form', function () {\n        return this.get('Collector').fieldArray(this.get('form'));\n    }),\n    goNext: function (heap, count) {\n        this.set('numericalProgress', Math.floor(((count - heap.length) / count) * 1000) / 10);\n        if (heap.length === 0) {\n            this.evented.storeEvent('update', this.form, null);\n            this.set('alldone', true);\n            this.set('values', {});\n            if (this.close && this.errors.length < 1) {\n                this.close();\n            }\n        }\n        if (this.get('die_signal')) {\n            alert('Mass edit cancelled!');\n            this.set('alldone', true);\n            this.set('values', {});\n            return;\n        }\n        return this.execute_one(heap, count);\n    },\n    actions: {\n        clearValue: function (object) {\n            if (Ember.get(object.features, 'selected')) {\n                Ember.set(object.features, 'selected', false);\n                return Ember.set(this, 'values.' + object.name, null);\n            } else {\n                Ember.set(object.features, 'selected', true);\n                return Ember.set(this, 'values.' + object.name, '(empty)');\n            }\n        },\n        start: function () {\n            var heap;\n            this.set('executing', true);\n            this.set('errors', Em.A());\n            this.set('numericalProgress', 0);\n            heap = Em.A(this.get('ids'));\n            return this.execute_one(heap, heap.length);\n        },\n        cancel: function () {\n            return this.set('die_signal', true);\n        },\n        back: function () {\n            if (this.inModal) {\n                if (this.close) {\n                    return this.close();\n                }\n            } else {\n                if (this.getback) {\n                    return this.getback();\n                }\n            }\n        },\n        valueChanged: function (value, fieldName) {\n            return Ember.set(this, 'values.' + fieldName, value);\n        },\n    },\n});\n\nexport default MassEditComponent;\n","define(\"tt4/components/maybe-in-element\", [\"exports\", \"ember-maybe-in-element/components/maybe-in-element\"], function (_exports, _maybeInElement) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _maybeInElement.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/menu-bar.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MenuComponent,\n    indexOf = [].indexOf;\n\nimport collector from '../classes/collector';\n\nimport config from '../config/environment';\n\nimport $ from 'jquery';\n\nEmber.LinkComponent.reopen({\n    attributeBindings: ['role'],\n});\n\nMenuComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    layoutName: 'menu',\n    tagName: 'ul',\n    classNames: ['nav'],\n    classNameBindings: ['sidemenu:nav-tabs:nav-sidebar'],\n    attributeBindings: ['role'],\n    refreshMenu: false,\n    role: Ember.computed(function () {\n        if (this.get('sidemenu')) {\n            return 'tablist';\n        }\n    }),\n    // go thru menu_settings and return all menus that has right privileges\n    menus: Ember.computed(\n        'active',\n        'settings',\n        'intl.primaryLocale',\n        'refreshMenu',\n        'session.currentUser',\n        function () {\n            var active_menu, c, menu_skeleton, menu_variables, self, temp;\n            self = this;\n            menu_skeleton = this.get('settings');\n            menu_variables = this.get('variables');\n            active_menu = this.get('active');\n            c = this.get('Collector');\n            temp = Ember.A([]);\n            $.each(menu_skeleton, function (item) {\n                var variables;\n                if (menu_variables[item] && !menu_variables[item].show_only_add) {\n                    variables = menu_variables[item];\n                    variables.keyname = item;\n                    if (\n                        collector.getPrivilege(variables.form, variables.action) ||\n                        config.APP.KIOSK\n                    ) {\n                        Ember.set(variables, 'active', item === active_menu);\n                        if (!(variables.hide_leftmenu && self.get('hide_extra'))) {\n                            return temp.push(variables);\n                        }\n                    }\n                }\n            });\n            if (c.testNeeds(['worktime'])) {\n                temp.push(menu_variables.comboreport);\n            }\n            if (!config.APP.KIOSK) {\n                temp = this.customLinks(temp);\n            }\n            return temp;\n        },\n    ),\n    customLinks: function (links) {\n        var forms, hide_menus, self;\n        self = this;\n        forms = this.Collector.forms();\n        if (!forms) {\n            return links;\n        }\n        hide_menus = [];\n        if (localStorage && localStorage.hide_menus) {\n            hide_menus = JSON.parse(localStorage.hide_menus);\n        }\n        $.each(forms, function (key, item) {\n            var hide, name;\n            hide = false;\n            if (indexOf.call(hide_menus, key) >= 0) {\n                hide = true;\n            }\n            if (hide && self.get('hide_extra')) {\n                return;\n            }\n            if (key.substring(0, 11) === 'measurement') {\n                if (collector.getPrivilege(key, 'add')) {\n                    name = key.substring(12).toLowerCase();\n                    if (item.name != null) {\n                        name = item.name;\n                    }\n                    return links.push(\n                        Em.Object.create({\n                            link: 'site_safety.measurement.graphs',\n                            link_param: key.substring(12).toLowerCase(),\n                            icon: 'move move-Length',\n                            text: name,\n                            hide_leftmenu: hide,\n                            keyname: key,\n                        }),\n                    );\n                }\n            } else if (item.name != null) {\n                name = item.name;\n                return links.push(\n                    Em.Object.create({\n                        link: 'forms.form-report',\n                        link_param: key,\n                        icon: 'move move-Length',\n                        text: name,\n                        hide_leftmenu: hide,\n                        keyname: key,\n                    }),\n                );\n            }\n        });\n        return links;\n    },\n    //    setHideMenus: Em.on('init', ->\n    //        if localStorage && localStorage.hide_menus\n    //            @set('hide_menus', Em.A(JSON.parse(localStorage.hide_menus)))\n    //    )\n    hide_menus: Em.A([]),\n    sidebar: Ember.computed.equal('type', 'sidebar'),\n    sidr: Ember.computed.equal('type', 'sidr'),\n    actions: {\n        closeSidr: function () {\n            this.set('editmode', false);\n            return $.sidr('close');\n        },\n        editmode: function () {\n            return this.toggleProperty('editmode');\n        },\n        invalidateSession: function () {\n            delete localStorage['first-time-loader-greeting'];\n            localStorage.removeItem('ember_simple_auth-session');\n            return location.reload();\n        },\n        toggleMenuVisibility: function (item) {\n            return item.toggleProperty('hide_leftmenu');\n        },\n        saveMenuState: function (items) {\n            var a;\n            a = items.filterBy('hide_leftmenu', true).mapBy('keyname');\n            this.set('hide_menus', Em.A(a));\n            localStorage.setItem('hide_menus', JSON.stringify(a));\n            this.toggleProperty('refreshMenu');\n            return this.send('closeSidr');\n        },\n    },\n});\n\nexport default MenuComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/message-board-forced.coffee.old\n// Generated by CoffeeScript 2.6.1\n\n/*\n * this component gets forced and unread messages and shows them in modal\n */\nvar MessageBoardForcedComponent;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport $ from 'jquery';\n\nMessageBoardForcedComponent = Ember.Component.extend({\n    session: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    forcedArr: Em.A([]),\n    didInsertElement: function () {\n        var self;\n        self = this;\n        //do not fetch forced messaged if impersonated user\n        if (this.get('session.session.content.authenticated.scope')) {\n            return;\n        }\n        return $.ajax({\n            url: self.get('ttapi').host + '/messageboard/forced',\n            type: 'GET',\n            headers: {\n                Authorization: 'Bearer ' + self.get('session.session.authenticated.access_token'),\n            },\n            success: function (data) {\n                var error, json;\n                //convert to json object and set as ember object\n                if (data != null) {\n                    try {\n                        if ('string' === typeof data) {\n                            json = $.parseJSON(data);\n                        }\n                    } catch (error1) {\n                        error = error1;\n                        throw new Ember.Error('unvalid JSON from messageboard forced: ' + data);\n                    }\n                    if (json) {\n                        return Ember.run(function () {\n                            var msg, msgs;\n                            msgs = Ember.Object.create(json);\n                            if (msgs.messageboards == null) {\n                                return;\n                            }\n                            msg = msgs.messageboards;\n                            return msg.forEach(function (tmp) {\n                                if (tmp.forced) {\n                                    return self.forcedArr.pushObject(tmp);\n                                }\n                            });\n                        });\n                    }\n                }\n            },\n        });\n    },\n});\n\nexport default MessageBoardForcedComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/modal-array.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ModalArrayComponent;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport $ from 'jquery';\n\nModalArrayComponent = Ember.Component.extend({\n    session: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    tagName: '',\n    to_users: Em.A([]),\n    didInsertElement: function () {\n        if (this.get('array.firstObject')) {\n            this.set('currentMessage', this.get('array.firstObject'));\n            this.getNames();\n            return $('#array-modal').modal('show');\n        }\n    },\n    getNames: function () {\n        var readed_users, self, session;\n        session = this.get('session');\n        if (session) {\n            if (this.Collector.getUserlevel(session) !== 5) {\n                return;\n            }\n        }\n        self = this;\n        readed_users = this.get('currentMessage.readed');\n        return this.get('store')\n            .findByIds('user', this.get('currentMessage.to'))\n            .then(function (arr) {\n                var i, len, to_users, user, user_obj;\n                to_users = [];\n                for (i = 0, len = arr.length; i < len; i++) {\n                    user = arr[i];\n                    user_obj = {};\n                    user_obj.name = user.get('lastname') + ' ' + user.get('firstname');\n                    //check if user is in \"readed\"-array\n                    if (readed_users != null) {\n                        if (readed_users.indexOf(user.get('id')) !== -1) {\n                            user_obj.readed = true;\n                        }\n                    }\n                    to_users.push(user_obj);\n                }\n                return self.set('to_users', to_users);\n            });\n    },\n    actions: {\n        closeAndMarkAsRead: function (row) {\n            var arr, params;\n            // here we have to somehow mark message as read\n            params = {};\n            params.rowid = row.id;\n            this.get('ttapi').request('/msgboard', {\n                type: 'POST',\n                data: params,\n            });\n            arr = this.get('array');\n            arr.removeAt(0);\n            this.set('currentMessage', this.get('array.firstObject'));\n            if (arr.length === 0) {\n                return $('#array-modal').modal('hide');\n            }\n        },\n    },\n});\n\nexport default ModalArrayComponent;\n","define(\"tt4/components/modal-dialog\", [\"exports\", \"ember-modal-dialog/components/modal-dialog\"], function (_exports, _modalDialog) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _modalDialog.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/multi-buttons.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MultiButtonsComponent;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nMultiButtonsComponent = Ember.Component.extend({\n    // button array Em.A Ember.Object.create {id: id,name: text}\n    content: null,\n    orderable: false,\n    initValues: Ember.on('init', 'didReceiveAttrs',  function () {\n        var content, counter, values;\n        values = this.get('values');\n        content = this.get('content');\n        if (values) {\n            counter = 1;\n            return $.each(values, (key, item) => {\n                var object;\n                object = content.find(function (test) {\n                    return test.id === item;\n                });\n                if (!object) {\n                    return;\n                }\n                object.set('active', true);\n                if (this.get('orderable')) {\n                    return object.set('order', counter++);\n                }\n            });\n        } else {\n            return Ember.run.next(this, function () {\n                return this.set('values', Em.A([]));\n            });\n        }\n    }),\n    updateValues: function () {\n        var content, values;\n        values = Em.A([]);\n        content = this.get('content');\n        $.each(content.sortBy('order'), (key, item) => {\n            if (item.get('active')) {\n                return values.pushObject(item.get('id'));\n            }\n        });\n        return Ember.run.next(this, function () {\n            return this.set('values', values);\n        });\n    },\n    reorderButtons: function () {\n        var content, counter;\n        content = this.get('content');\n        counter = 1;\n        return $.each(content.sortBy('order'), (key, item) => {\n            if (item.get('active')) {\n                return item.set('order', counter++);\n            }\n        });\n    },\n    actions: {\n        click: function (button) {\n            var values;\n            if (this.get('singleSelectMode')) {\n                this.get('content').forEach((btn) => {\n                    return btn.set('active', false);\n                });\n                button.set('active', true);\n                this.updateValues();\n                return;\n            }\n            values = this.get('values');\n            if (button.get('active')) {\n                button.set('order', null);\n                button.set('active', false);\n                if (this.get('orderable')) {\n                    this.reorderButtons();\n                }\n            } else {\n                if (this.get('orderable')) {\n                    button.set('order', values.length + 1);\n                }\n                button.set('active', true);\n            }\n            return this.updateValues();\n        },\n    },\n});\n\nexport default MultiButtonsComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/notices-graph.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar NoticesGraphComponent;\n\nimport Ember from 'ember';\n\nNoticesGraphComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    classNames: ['notices-graph-container'],\n    // DATA\n    data: Ember.computed('all', 'overdue', function () {\n        var all, intl, overdue, solved;\n        intl = this.get('intl');\n        all = this.get('all');\n        overdue = this.get('overdue');\n        solved = all - this.get('not_solved');\n        return [\n            ['Title', 'Value'],\n            [intl.t('site-safety.overview.notices_total'), all],\n            [intl.t('site-safety.overview.notices_solved'), solved],\n            [intl.t('site-safety.overview.notices_overdue'), overdue],\n        ];\n    }),\n    // COLORS\n    colors: '#FFC56C,#5CB85C,#D9534F',\n    // OPTIONS\n    options: {\n        pieHole: 0.9,\n        chartArea: {\n            width: '90%',\n            height: '95%',\n        },\n        height: 200,\n        width: 350,\n        pieSliceTextStyle: {\n            color: 'black',\n            fontSize: 20,\n        },\n        pieSliceText: 'value',\n    },\n});\n\n//        slices: {\n//            1: {offset: 0.05}\n//            2: {offset: 0.05}\n//            3: {offset: 0.05}\n//        }\nexport default NoticesGraphComponent;\n","define(\"tt4/components/notification-container\", [\"exports\", \"ember-cli-notifications/components/notification-container\"], function (_exports, _notificationContainer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _notificationContainer.default;\n    }\n  });\n});\n","import NotificationMessage from 'ember-cli-notifications/components/notification-message';\n\nimport config from 'ember-get-config';\n\nconst globals = config['ember-cli-notifications'] || {}; // Import app config object\n\nexport default NotificationMessage.extend({\n  init() {\n    this._super(...arguments);\n    this.icons = globals.icons || 'svg';\n    this.svgs = {\n        'success': 'success',\n        'warning': 'warning',\n        'info': 'info',\n        'error': 'error',\n    };\n  }\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/object-input.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ObjectInputComponent;\n\nimport Ember from 'ember';\n\nimport { t } from 'ember-intl';\n\nObjectInputComponent = Ember.Component.extend({\n    // Where the objects live\n    objects: Em.A([]),\n    session: Em.inject.service(),\n    intl: Em.inject.service(),\n    impersonate: Em.computed(function () {\n        return this.get('session.session.content.authenticated.scope');\n    }),\n    // We have to convert to objects instead of plain array so we can bind in template\n    placeholderObjects: Em.computed('objects.[]', function () {\n        var i, len, locked, object, objects, obs;\n        objects = this.get('objects');\n        obs = Em.A([]);\n        for (i = 0, len = objects.length; i < len; i++) {\n            object = objects[i];\n            if (object['id'] !== '') {\n                locked = true;\n            } else {\n                locked = false;\n            }\n            obs.push({\n                name: object['name'],\n                id: object['id'],\n                locked: locked,\n                check_id: Math.random().toString(32).substr(7),\n            });\n        }\n        return obs;\n    }),\n    // Save button text\n    saveText: null,\n    // Add button text\n    addText: null,\n    // You can disable all inputs and buttons\n    disabled: false,\n    actions: {\n        // Add objects to our array\n        add: function () {\n            return this.get('placeholderObjects').pushObject({\n                id: '',\n                name: '',\n            });\n        },\n        // Remove objects from our array\n        remove: function (obj) {\n            this.get('placeholderObjects').removeObject(obj);\n            return this.send('save');\n        },\n        // Send save action with our array\n        save: function () {\n            var arr, i, k, len, obj, ref;\n            //console.log @get('placeholderObjects')\n            arr = [];\n            ref = this.get('placeholderObjects');\n            for (k = i = 0, len = ref.length; i < len; k = ++i) {\n                obj = ref[k];\n                arr.push({\n                    id: obj['id'],\n                    name: obj['name'],\n                });\n            }\n            this.set('objects', arr);\n            if (this.get('save')) {\n                return this.save(this.get('objects'));\n            }\n        },\n        // validate external\n        validateKeys: function (obj) {\n            var i, len, name, object, objects, ref, string;\n            if (obj['name'] === '') {\n                return Ember.set(obj, 'id', '');\n            } else {\n                if (!obj['locked']) {\n                    name = obj['name'];\n                    string = name\n                        .toString()\n                        .underscore()\n                        .replace(/[^\\w\\s]/gi, '')\n                        .substr(0, 20);\n                    if (string === '') {\n                        string = Math.random()\n                            .toString(32)\n                            .replace(/[^a-z]+/g, '')\n                            .substr(2, 5);\n                    }\n                    // check if key already exists and add some random crap\n                    objects = this.get('objects');\n                    ref = this.get('placeholderObjects');\n                    for (i = 0, len = ref.length; i < len; i++) {\n                        object = ref[i];\n                        if (object['check_id'] !== obj['check_id']) {\n                            if (object['id'] === string) {\n                                string +=\n                                    '_' +\n                                    Math.random()\n                                        .toString(32)\n                                        .replace(/[^a-z]+/g, '')\n                                        .substr(2, 5);\n                                break;\n                            }\n                        }\n                    }\n                    return Ember.set(obj, 'id', string);\n                }\n            }\n        },\n    },\n    init: function () {\n        this._super();\n        this.set('saveText', this.get('intl').t('general.save'));\n        return this.set('addText', this.get('intl').t('general.add'));\n    },\n});\n\nexport default ObjectInputComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/pagi-nate.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PagiNateComponent;\n\nimport Ember from 'ember';\n\nPagiNateComponent = Ember.Component.extend({\n    // Evil Markus commented this because should be handled in controller/parent company and was messing up in reports with loading state.\n    // Let's see what breaks\n    //    didInsertElement: ->\n    //        @set 'currentPage', 1\n    currentPage: null,\n    showPagination: Ember.computed.gt('pageCount', 1),\n    pages: Ember.computed('pageCount', 'currentPage', function () {\n        var currentPage,\n            end,\n            limiter,\n            middle,\n            midpoint,\n            pageCount,\n            pages,\n            ref,\n            ref1,\n            ref2,\n            ref3,\n            start;\n        pageCount = this.get('pageCount');\n        currentPage = this.get('currentPage');\n        limiter = function (item) {\n            return item >= 1 && item <= pageCount;\n        };\n        start = [1, 2, 3, 4].filter(limiter);\n        end = function () {\n            var results = [];\n            for (\n                var j = (ref = pageCount - 3), ref1 = pageCount + 1;\n                ref <= ref1 ? j < ref1 : j > ref1;\n                ref <= ref1 ? j++ : j--\n            ) {\n                results.push(j);\n            }\n            return results;\n        }\n            .apply(this)\n            .filter(limiter);\n        pages = this.union(start, end);\n        midpoint = currentPage;\n        if (currentPage < 8) {\n            midpoint = 8;\n        }\n        if (currentPage + 8 > pageCount) {\n            midpoint = pageCount - 8;\n        }\n        middle = function () {\n            var results = [];\n            for (\n                var j = (ref2 = midpoint - 3), ref3 = midpoint + 4;\n                ref2 <= ref3 ? j < ref3 : j > ref3;\n                ref2 <= ref3 ? j++ : j--\n            ) {\n                results.push(j);\n            }\n            return results;\n        }\n            .apply(this)\n            .filter(limiter);\n        pages = this.union(pages, middle);\n        return this.fillCaps(pages);\n    }),\n    showCurrentpageOverLimit: Ember.computed('currentPage', function () {\n        return (\n            this.get('queryLimitFull') &&\n            this.get('currentPage') !== this.get('pageCount') &&\n            !this.get('hasNextPage')\n        );\n    }),\n    // if there are caps between numbers fill those with ... (or with number if cap length is only 1)\n    fillCaps: function (array) {\n        var break_indexes, i, j, last, len, ref;\n        last = 0;\n        break_indexes = [];\n        array.forEach(function (val, key) {\n            if (last + 1 !== val) {\n                break_indexes.push([key, last + 2 === val ? last + 1 : '...']);\n            }\n            return (last = val);\n        });\n        ref = break_indexes.reverse();\n        for (j = 0, len = ref.length; j < len; j++) {\n            i = ref[j];\n            array.splice(i[0], 0, i[1]);\n        }\n        return array;\n    },\n    // union two arrays of numbers to one array with unique values\n    union: function (arr1, arr2) {\n        var onlyUnique, sortNumber;\n        onlyUnique = function (value, index, self) {\n            return self.indexOf(value) === index;\n        };\n        sortNumber = function (a, b) {\n            return a - b;\n        };\n        return arr1.concat(arr2).filter(onlyUnique).sort(sortNumber);\n    },\n    hasPreviousPage: Ember.computed.gt('currentPage', 1),\n    hasNextPage: Ember.computed('currentPage', 'pageCount', function () {\n        return this.get('currentPage') < this.get('pageCount');\n    }),\n    actions: {\n        nextPage: function () {\n            this.set('currentPage', parseInt(this.get('currentPage'), 10) + 1);\n            if (this.get('pageChange')) {\n                return this.get('pageChange')(this.get('currentPage'));\n            }\n        },\n        previousPage: function () {\n            this.set('currentPage', parseInt(this.get('currentPage'), 10) - 1);\n            if (this.get('pageChange')) {\n                return this.get('pageChange')(this.get('currentPage'));\n            }\n        },\n        changePage: function (page) {\n            if (page === '...') {\n                return;\n            }\n            this.set('currentPage', page);\n            if (this.get('pageChange')) {\n                return this.get('pageChange')(this.get('currentPage'));\n            }\n        },\n    },\n});\n\nexport default PagiNateComponent;\n","define(\"tt4/components/pie-chart\", [\"exports\", \"ember-google-charts/components/pie-chart\"], function (_exports, _pieChart) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _pieChart.default;\n    }\n  });\n});\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<svg class={{if @disabled \\\"play-button-disabled\\\"\\\"play-button\\\"}} xmlns=\\\"http://www.w3.org/2000/svg\\\" width={{if @width @width \\\"70\\\"}} height={{if @height @height \\\"70\\\"}} viewBox=\\\"0 0 99 99\\\" {{action @click}}>\\n    <circle cx=\\\"49.5\\\" cy=\\\"49.5\\\" r=\\\"49.5\\\"/>\\n    <path d=\\\"M17.521,6.129a4,4,0,0,1,6.957,0l14.13,24.9A4,4,0,0,1,35.13,37H6.87a4,4,0,0,1-3.479-5.974Z\\\" transform=\\\"translate(75 28.5) rotate(90)\\\" fill=\\\"#fff\\\"/>\\n</svg>\", {\"contents\":\"<svg class={{if @disabled \\\"play-button-disabled\\\"\\\"play-button\\\"}} xmlns=\\\"http://www.w3.org/2000/svg\\\" width={{if @width @width \\\"70\\\"}} height={{if @height @height \\\"70\\\"}} viewBox=\\\"0 0 99 99\\\" {{action @click}}>\\n    <circle cx=\\\"49.5\\\" cy=\\\"49.5\\\" r=\\\"49.5\\\"/>\\n    <path d=\\\"M17.521,6.129a4,4,0,0,1,6.957,0l14.13,24.9A4,4,0,0,1,35.13,37H6.87a4,4,0,0,1-3.479-5.974Z\\\" transform=\\\"translate(75 28.5) rotate(90)\\\" fill=\\\"#fff\\\"/>\\n</svg>\",\"moduleName\":\"tt4/components/play-button.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/play-button.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/plus-menu.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PlusMenuComponent;\n\nimport Ember from 'ember';\n\nimport menu from '../mixins/menu';\n\nPlusMenuComponent = Ember.Component.extend(menu, {\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    analytics: Ember.inject.service(),\n\n    init() {\n        this._super(...arguments);\n        // we need to bind this components context to the function 'trackDropdownOpen' so we can call analytics from within the function\n        this.trackDropdownOpen = this.trackDropdownOpen.bind(this);\n    },\n\n    didInsertElement: function () {\n        //close display-menu only if clicked outside of it\n        return $('body').on('click touchend', (e) => {\n            $('#add-menu-desktop').attr('data-anchor', 'navigation-top-plus');\n\n            if (\n                !$('#add-menu-desktop').is(e.target) &&\n                $('#add-menu-desktop').has(e.target).length === 0\n            ) {\n                $('#add-menu-desktop').addClass('plusClose');\n\n                if (this.get('isDestroyed')) {\n                    return;\n                }\n                this.set('plusState', false);\n            }\n        });\n    },\n    plusState: false,\n    isAddPage: Ember.computed('path', 'session.currentUser', function () {\n        var i, len, link, links, path;\n        if (!this.get('session.currentUser')) {\n            return;\n        }\n        path = this.get('path');\n        if (!path) {\n            return;\n        }\n        if (path.slice(-6) === '.index') {\n            path = path.slice(0, -6);\n        }\n        if (path === 'loading' || path === 'error') {\n            return false;\n        }\n        links = this.getAddLinks();\n        for (i = 0, len = links.length; i < len; i++) {\n            link = links[i];\n            if (path.indexOf('saved') !== -1) {\n                return true;\n            }\n            if (Ember.isArray(link.link) && path.indexOf(link.link[0]) !== -1) {\n                return true;\n            }\n        }\n        return false;\n    }),\n    addLinks: Ember.computed(\n        'session.currentUser',\n        'intl.primaryLocale',\n        'refreshMenus',\n        function () {\n            if (!this.get('session.currentUser')) {\n                return;\n            }\n            return this.getAddLinks();\n        },\n    ),\n    plusLinks: Ember.computed(\n        'session.currentUser',\n        'intl.primaryLocale',\n        'refreshMenus',\n        function () {\n            var even, links, odd, plusarray, v;\n            if (!this.get('session.currentUser')) {\n                return;\n            }\n            links = this.getAddLinks();\n            if (links.length < 10) {\n                return false;\n            } else {\n                odd = (function () {\n                    var i, len, results;\n                    results = [];\n                    for (i = 0, len = links.length; i < len; i += 2) {\n                        v = links[i];\n                        results.push(v);\n                    }\n                    return results;\n                })();\n                even = (function () {\n                    var i, len, ref, results;\n                    ref = links.slice(1);\n                    results = [];\n                    for (i = 0, len = ref.length; i < len; i += 2) {\n                        v = ref[i];\n                        results.push(v);\n                    }\n                    return results;\n                })();\n                plusarray = [odd, even];\n                return plusarray;\n            }\n        },\n    ),\n    addLinksReversed: Ember.computed(\n        'session.currentUser',\n        'intl.primaryLocale',\n        'refreshMenus',\n        function () {\n            var links;\n            if (!this.get('session.currentUser')) {\n                return;\n            }\n            links = this.getAddLinks();\n            links.reverse();\n            return links;\n        },\n    ),\n    // set the analytics category for the plus menu\n    trackDropdownOpen: function () {\n        return this.set('analytics.customData', { category: 'plus-menu' });\n    },\n    actions: {\n        toggleplusMenu: function () {\n            if (this.get('isDestroyed')) {\n                return;\n            }\n            this.toggleProperty('plusState');\n            return false;\n        },\n        closeplusMenu: function () {\n            this.toggleProperty('plusmobileState');\n            return false;\n        },\n        toggleScroll: function () {\n            Ember.run.later(\n                this,\n                function () {\n                    var elmt;\n                    elmt = $(this.get('element')).find('.mobile-button-inner')[0];\n                    if (!elmt) {\n                        return this.send('toggleScroll');\n                    }\n                    return (elmt.scrollTop = elmt.scrollHeight);\n                },\n                50,\n            );\n            return false;\n        },\n        goToSkvLink: function (link) {\n            return window.open(link, '_blank');\n        },\n    },\n});\n\nexport default PlusMenuComponent;\n","define(\"tt4/components/power-calendar-multiple\", [\"exports\", \"ember-power-calendar/components/power-calendar-multiple\"], function (_exports, _powerCalendarMultiple) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerCalendarMultiple.default;\n    }\n  });\n});\n","define(\"tt4/components/power-calendar-multiple/days\", [\"exports\", \"ember-power-calendar/components/power-calendar-multiple/days\"], function (_exports, _days) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _days.default;\n    }\n  });\n});\n","define(\"tt4/components/power-calendar-range\", [\"exports\", \"ember-power-calendar/components/power-calendar-range\"], function (_exports, _powerCalendarRange) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerCalendarRange.default;\n    }\n  });\n});\n","define(\"tt4/components/power-calendar-range/days\", [\"exports\", \"ember-power-calendar/components/power-calendar-range/days\"], function (_exports, _days) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _days.default;\n    }\n  });\n});\n","define(\"tt4/components/power-calendar\", [\"exports\", \"ember-power-calendar/components/power-calendar\"], function (_exports, _powerCalendar) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerCalendar.default;\n    }\n  });\n});\n","define(\"tt4/components/power-calendar/days\", [\"exports\", \"ember-power-calendar/components/power-calendar/days\"], function (_exports, _days) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _days.default;\n    }\n  });\n});\n","define(\"tt4/components/power-calendar/nav\", [\"exports\", \"ember-power-calendar/components/power-calendar/nav\"], function (_exports, _nav) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _nav.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select-multiple-with-create\", [\"exports\", \"ember-power-select-with-create/components/power-select-multiple-with-create\"], function (_exports, _powerSelectMultipleWithCreate) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerSelectMultipleWithCreate.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select-multiple\", [\"exports\", \"ember-power-select/components/power-select-multiple\"], function (_exports, _powerSelectMultiple) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerSelectMultiple.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select-multiple/trigger\", [\"exports\", \"ember-power-select/components/power-select-multiple/trigger\"], function (_exports, _trigger) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _trigger.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select-with-create\", [\"exports\", \"ember-power-select-with-create/components/power-select-with-create\"], function (_exports, _powerSelectWithCreate) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerSelectWithCreate.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select-with-create/suggested-option\", [\"exports\", \"ember-power-select-with-create/components/power-select-with-create/suggested-option\"], function (_exports, _suggestedOption) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _suggestedOption.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select\", [\"exports\", \"ember-power-select/components/power-select\"], function (_exports, _powerSelect) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerSelect.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select/before-options\", [\"exports\", \"ember-power-select/components/power-select/before-options\"], function (_exports, _beforeOptions) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _beforeOptions.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select/no-matches-message\", [\"exports\", \"ember-power-select/components/power-select/no-matches-message\"], function (_exports, _noMatchesMessage) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _noMatchesMessage.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select/options\", [\"exports\", \"ember-power-select/components/power-select/options\"], function (_exports, _options) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _options.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select/placeholder\", [\"exports\", \"ember-power-select/components/power-select/placeholder\"], function (_exports, _placeholder) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _placeholder.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select/power-select-group\", [\"exports\", \"ember-power-select/components/power-select/power-select-group\"], function (_exports, _powerSelectGroup) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerSelectGroup.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select/search-message\", [\"exports\", \"ember-power-select/components/power-select/search-message\"], function (_exports, _searchMessage) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _searchMessage.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select/trigger\", [\"exports\", \"ember-power-select/components/power-select/trigger\"], function (_exports, _trigger) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _trigger.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/project-help.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectHelpComponent;\n\nimport Ember from 'ember';\n\nProjectHelpComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    helptext: null,\n    projectidObs: Ember.observer('projectid', function () {\n        return Ember.run.once(this, this.processProjectChange);\n    }),\n    // Ensure we also run once on initial attrs when projectid already set\n    didReceiveAttrs() {\n        this._super(...arguments);\n        if (this.get('projectid')) {\n            Ember.run.once(this, this.processProjectChange);\n        }\n    },\n    processProjectChange: function () {\n        var self, store;\n        self = this;\n        this.set('helptext', null);\n        //get project info\n        store = this.get('store');\n        if (this.get('projectid')) {\n            return store\n                .findRecord('project', this.get('projectid'), {\n                    reload: true,\n                })\n                .then(function (data) {\n                    return self.set('helptext', data.get('help'));\n                });\n        } else {\n            return self.set('helptext', null);\n        }\n    },\n});\n\nexport default ProjectHelpComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/project-info.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectInfoComponent;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nProjectInfoComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    ttapi: Ember.inject.service(),\n    record: Ember.computed('project', function () {\n        return this.get('store').findRecord('project', this.get('project'));\n    }),\n    tr: Ember.computed('project', function () {\n        var c, project;\n        c = this.get('Collector');\n        project = this.get('project');\n        if (c.testNeedsOne('tr')) {\n            return this.get('store').query('tr', {\n                project: project,\n                date:\n                    moment().subtract(1, 'months').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD'),\n            });\n        }\n    }),\n    tr_mean: Ember.computed('tr', function () {\n        var color, mean, trs;\n        trs = this.get('tr');\n        mean = this.calculateMean(trs, 'tr_rating');\n        color = this.getRatingColor(mean);\n        return {\n            mean: mean.toFixed(0) + '%',\n            color: color,\n        };\n    }),\n    mvr: Ember.computed('project', function () {\n        var c, project;\n        c = this.get('Collector');\n        project = this.get('project');\n        if (c.testNeedsOne('mvr')) {\n            return this.get('store').query('mvr', {\n                project: project,\n                date:\n                    moment().subtract(1, 'months').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD'),\n            });\n        }\n    }),\n    mvr_mean: Ember.computed('mvr', function () {\n        var color, mean, mvrs;\n        mvrs = this.get('mvr');\n        mean = this.calculateMean(mvrs, 'mvr_rating');\n        color = this.getRatingColor(mean);\n        return {\n            mean: mean.toFixed(0) + '%',\n            color: color,\n        };\n    }),\n    getRatingColor: function (value) {\n        if (value >= 95) {\n            return 'good-rating';\n        } else if (value >= 90) {\n            return 'decent-rating';\n        } else if (value < 90) {\n            return 'bad-rating';\n        } else {\n            return 'default';\n        }\n    },\n    calculateMean: function (data, field) {\n        var total;\n        if (data.get('content.meta.count') === 0) {\n            return '-';\n        }\n        total = 0;\n        data.forEach(function (item) {\n            return (total += item.get(field));\n        });\n        return total / data.get('content.meta.count');\n    },\n    events: Em.computed('project', function () {\n        var c, project;\n        c = this.get('Collector');\n        project = this.get('project');\n        if (c.testNeedsOne('worksitediary')) {\n            return this.get('store').query('worksitediary', {\n                project: project,\n                date:\n                    moment().startOf('week').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('week').format('YYYY-MM-DD'),\n                sideload: ['user.firstname', 'user.lastname', 'user.image'],\n            });\n        }\n    }),\n    event_fields: Ember.computed(function () {\n        var obj;\n        obj = {\n            first_row: this.hasFields(['title'], 'worksitediary'),\n            rows: [\n                this.hasFields(['description'], 'worksitediary'),\n                this.hasFields(['weather'], 'worksitediary'),\n                this.hasFields(['images'], 'worksitediary'),\n            ],\n        };\n        return obj;\n    }),\n    hasFields: function (fields, form = null) {\n        var c, field, i, len, ret;\n        c = this.get('Collector');\n        if (!form) {\n            form = 'user';\n        }\n        ret = [];\n        for (i = 0, len = fields.length; i < len; i++) {\n            field = fields[i];\n            if (c.fieldExists(form, field)) {\n                ret.push(field);\n            }\n        }\n        return ret;\n    },\n    actions: {\n        openSkvLink: function () {\n            return window.open(\n                this.get('ttapi').host +\n                    '/personalliggare?partnerid=' +\n                    this.get('session.currentUser.partnerid') +\n                    '&pl_number=' +\n                    this.get('record.skv_number'),\n                '_blank',\n            );\n        },\n        toggleMap: function () {\n            var elmt;\n            elmt = $(this.get('element')).find('.project-info-content')[0];\n            this.toggleProperty('show_map');\n            return Ember.run.later(\n                this,\n                function () {\n                    return (elmt.scrollTop = elmt.scrollHeight);\n                },\n                50,\n            );\n        },\n        removeProjectModal: function () {\n            return this.set('project', '');\n        },\n    },\n});\n\nexport default ProjectInfoComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/promo-component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PromoComponentComponent;\n\nimport Ember from 'ember';\n\nPromoComponentComponent = Ember.Component.extend({\n    showMessage: Em.computed(function () {\n        if (\n            this.get('start') &&\n            this.get('end') &&\n            moment().format('YYYY-MM-DD') >= this.get('start') &&\n            moment().format('YYYY-MM-DD') <= this.get('end')\n        ) {\n            return true;\n        }\n        return false;\n    }),\n});\n\nexport default PromoComponentComponent;\n","import Ember from 'ember';\nimport { get, set } from '@ember/object';\nimport Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\nimport EmberError from '@ember/error';\nimport { htmlSafe } from '@ember/template';\nimport { later } from '@ember/runloop';\n\n//get promotion messages from AT2\n\nconst PromoMessagesComponent = Component.extend({\n    session: service(),\n    Collector: service('collector-service'),\n    localStorageWrapper: service(),\n    dialogs: service(),\n    router: service(),\n    promoMessages: service(),\n\n    forcedArr: A([]),\n\n    didInsertElement() {\n        if (!Ember.testing) {\n            return later(\n                this,\n                () => {\n                    return this.checkmessages();\n                },\n                6000,\n            );\n        }\n    },\n\n    actions: {\n        closeModal() {\n            return set(this, 'show', false);\n        },\n    },\n\n    checkmessages() {\n        // do not show promo-messages on the day that service was created\n        if (\n            moment(get(this, 'session.currentUser.company_info.row_info.created')).format(\n                'YYYY-MM-DD',\n            ) === moment().format('YYYY-MM-DD')\n        ) {\n            return;\n        }\n        // do not show promo-messages if service has company name as empty, trying to not show welcome wizard and promomessages on each other\n        if (get(this, 'session.currentUser.company_info.company_name') === 'empty') {\n            return;\n        }\n        // do not show promo-messages if new user who is changing password\n        if (get(this, 'router.currentRouteName') === 'changepassword') {\n            return;\n        }\n\n        //do not fetch messages if impersonated user\n        if (get(this, 'session.session.content.authenticated.scope')) {\n            return;\n        }\n\n        //const products = get(\"Collector\").get(\"products\");\n        const products = get(this, 'Collector.products');\n        const country = get(this, 'session.currentUser.company_info.country');\n        const userlevel = get(this, 'session.currentUser.userlevel');\n\n        //return if any of the parameter is null\n        if (!products || !country || !userlevel) {\n            return;\n        }\n\n        const promise = this.promoMessages.getMessages({\n            country,\n            userlevel,\n            prods: products,\n            new: true,\n        });\n        const read_msgs = A([]);\n        const subtle_msgs = A([]);\n        const ls_key = get(this, 'session.currentUser.id') + '_promomessages';\n        const ls_sub_key = get(this, 'session.currentUser.id') + '_promomessages_subtle';\n        const already_read = A(get(this, 'localStorageWrapper').getItem(ls_key));\n\n        return promise.then(\n            (data) => {\n                //convert to json object and set as ember object\n                if (data != null) {\n                    const msg = data.data;\n                    if (msg != null) {\n                        msg.forEach((tmp) => {\n                            if (already_read.indexOf(tmp.id) === -1) {\n                                tmp.message = htmlSafe(tmp.message);\n                                tmp.short_description = htmlSafe(tmp.short_description);\n                                if (tmp.forced === true) {\n                                    get(this, 'forcedArr').pushObject(tmp);\n                                    return read_msgs.push(tmp.id);\n                                } else {\n                                    return subtle_msgs.push(tmp);\n                                }\n                            }\n                        });\n\n                        const all_read = already_read.concat(read_msgs);\n\n                        get(this, 'localStorageWrapper').setItems(ls_key, all_read);\n                        return get(this, 'localStorageWrapper').setItems(ls_sub_key, subtle_msgs);\n                    }\n                }\n            },\n\n            function (reason) {\n                throw new EmberError(\n                    'promomessages fetch fail: ' +\n                        (() => {\n                            try {\n                                return JSON.stringify(reason);\n                            } catch (error) {\n                                return (reason = error);\n                            }\n                        })(),\n                );\n            },\n        );\n    },\n});\n\nexport default PromoMessagesComponent;\n","define(\"tt4/components/radio-button-input\", [\"exports\", \"ember-radio-button/components/radio-button-input\"], function (_exports, _radioButtonInput) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _radioButtonInput.default;\n    }\n  });\n});\n","define(\"tt4/components/radio-button\", [\"exports\", \"ember-radio-button/components/radio-button\"], function (_exports, _radioButton) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _radioButton.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/range-picker.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RangePickerComponent;\n\nimport Ember from 'ember';\n\nimport { t } from 'ember-intl';\n\nimport $ from 'jquery';\n\nRangePickerComponent = Ember.Component.extend({\n    store: Em.inject.service(),\n    classNames: [],\n    attributeBindings: ['start', 'end', 'serverFormat'],\n    start: void 0,\n    end: void 0,\n    timePicker: false,\n    format: moment.localeData().longDateFormat('L'),\n    serverFormat: 'YYYY-MM-DD',\n    rangeText: Ember.computed('start', 'end', 'value', function () {\n        var end, format, serverFormat, split, start, value;\n        format = this.get('format');\n        serverFormat = this.get('serverFormat');\n        start = this.get('start');\n        end = this.get('end');\n        if ((value = this.get('value'))) {\n            split = value.split('_');\n            return (\n                moment(split[0], serverFormat).format(format) +\n                this.get('separator') +\n                moment(split[1], serverFormat).format(format)\n            );\n        } else if (!Ember.isEmpty(start) && !Ember.isEmpty(end)) {\n            return (\n                moment(start, serverFormat).format(format) +\n                this.get('separator') +\n                moment(end, serverFormat).format(format)\n            );\n        }\n        return '';\n    }),\n    opens: null,\n    drops: null,\n    separator: ' - ',\n    singleDatePicker: false,\n    placeholder: null,\n    buttonClasses: ['btn'],\n    applyClass: null,\n    cancelClass: null,\n    limit: {\n        days: 365,\n    },\n    ranges: {\n        Today: [moment(), moment()],\n        Yesterday: [moment().subtract(1, 'days'), moment().subtract(1, 'days')],\n        'Last 7 Days': [moment().subtract(6, 'days'), moment()],\n        'Last 30 Days': [moment().subtract(29, 'days'), moment()],\n        'This Month': [moment().startOf('month'), moment().endOf('month')],\n        'Last Month': [\n            moment().subtract(1, 'month').startOf('month'),\n            moment().subtract(1, 'month').endOf('month'),\n        ],\n    },\n    removeDropdownOnDestroy: false,\n    cancelLabel: t('general.cancel'),\n    applyAction: null,\n    cancelAction: null,\n    customRangeLabel: t('rangepicker.custom_range'),\n    //Init the dropdown when the component is added to the DOM\n    didInsertElement: function () {\n        var d, endDate, momentEndDate, momentStartDate, self, splitted, startDate, value;\n        self = this;\n        value = this.get('value');\n        if (value) {\n            splitted = value.split('_');\n            momentStartDate = moment(splitted[0], this.get('serverFormat'));\n            momentEndDate = moment(splitted[1], this.get('serverFormat'));\n        } else {\n            momentStartDate = moment(this.get('start'), this.get('serverFormat'));\n            momentEndDate = moment(this.get('end'), this.get('serverFormat'));\n        }\n        startDate = momentStartDate.isValid() ? momentStartDate : void 0;\n        endDate = momentEndDate.isValid() ? momentEndDate : void 0;\n        d = new $.Deferred();\n        if (this.get('ranges')) {\n            this.get('ranges').then(function (ranges) {\n                return d.resolve(ranges);\n            });\n        } else {\n            d.resolve();\n        }\n        return d.then((ranges) => {\n            var options;\n            options = {\n                locale: {\n                    cancelLabel: this.get('cancelLabel'),\n                    format: this.get('format'),\n                    customRangeLabel: this.get('customRangeLabel'),\n                },\n                autoUpdateInput: false,\n                startDate: startDate,\n                endDate: endDate,\n                opens: this.get('opens'),\n                autoApply: this.get('autoApply'),\n                timePicker: this.get('timePicker'),\n                buttonClasses: this.get('buttonClasses'),\n                applyClass: this.get('applyClass'),\n                cancelClass: this.get('cancelClass'),\n                separator: this.get('separator'),\n                singleDatePicker: this.get('singleDatePicker'),\n                drops: this.get('drops'),\n                linkedCalendars: false,\n                dateLimit: this.get('limit'),\n                alwaysShowCalendars: true,\n            };\n            if (ranges && !$.isEmptyObject(ranges)) {\n                options.ranges = ranges;\n            }\n            $('.daterangepicker-input', this.element).daterangepicker(options);\n            $('.daterangepicker-input', this.element).on(\n                'show.daterangepicker',\n                function (ev, picker) {\n                    var serverFormat;\n                    serverFormat = self.get('serverFormat');\n                    startDate = moment(self.get('start'), serverFormat);\n                    endDate = moment(self.get('end'), serverFormat);\n                    value = self.get('value');\n                    if (value) {\n                        splitted = value.split('_');\n                        picker.setStartDate(moment(splitted[0], serverFormat));\n                        return picker.setEndDate(moment(splitted[1], serverFormat));\n                    } else if (startDate.isValid() && endDate.isValid()) {\n                        picker.setStartDate(startDate);\n                        return picker.setEndDate(endDate);\n                    }\n                },\n            );\n            $('.daterangepicker-input', this.element).on(\n                'apply.daterangepicker',\n                function (ev, picker) {\n                    var applyAction, end, start;\n                    start = picker.startDate.format(self.get('serverFormat'));\n                    end = picker.endDate.format(self.get('serverFormat'));\n                    applyAction = self.get('applyAction');\n                    if (applyAction) {\n                        Ember.assert(\n                            'applyAction for date-range-picker must be a function',\n                            typeof applyAction === 'function',\n                        );\n                        return applyAction(start, end);\n                    } else {\n                        self.setProperties({ start, end });\n                        return self.set('value', start + '_' + end);\n                    }\n                },\n            );\n            return $('.daterangepicker-input', this.element).on(\n                'cancel.daterangepicker',\n                function () {\n                    var cancelAction;\n                    cancelAction = self.get('cancelAction');\n                    if (cancelAction) {\n                        Ember.assert(\n                            'cancelAction for date-range-picker must be a function',\n                            typeof cancelAction === 'function',\n                        );\n                        return cancelAction();\n                    } else {\n                        self.set('start', self.get('start'));\n                        return self.set('end', self.get('end'));\n                    }\n                },\n            );\n        });\n    },\n    //Remove the hidden dropdown when this component is destroyed\n    willDestroy: function () {\n        if (this.get('removeDropdownOnDestroy')) {\n            return $('.daterangepicker').remove();\n        }\n    },\n});\n\nexport default RangePickerComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/record-comp-export.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RecordCompExportComponent;\n\nimport Ember from 'ember';\n\nimport recordComp from '../pods/collector/record-comp/component';\n\nimport config from '../config/environment';\n\nimport { isTimeoutError } from 'ember-ajax/errors';\n\nRecordCompExportComponent = recordComp.extend({\n    layoutName: 'collector/record-comp',\n    Collector: Em.inject.service('collector-service'),\n    intl: Em.inject.service(),\n    store: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    ttapi: Em.inject.service(),\n    session: Em.inject.service(),\n    error: Em.inject.service(),\n    ajax: Em.inject.service(),\n    cc: Em.inject.service(),\n    flags: Em.inject.service(),\n    save_record: function () {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var record, user;\n            record = this.get('record');\n            //get user before saving, because that gets somehow current user\n            user = record.get('user');\n            // we must save the record (the export row) once here so we can get it's id before calling cc\n            return record.save().then((back) => {\n                return this.get('store')\n                    .findRecord('wage_period', record.get('export_period_name.id'), {\n                        reload: true,\n                    })\n                    .then(() => {\n                        var field, fields, include_old_rows, options, params;\n                        if (record.get('include_old_rows')) {\n                            params = [\n                                'date=' +\n                                    moment(record.get('export_period_name.period_start_date'))\n                                        .subtract(3, 'months')\n                                        .format('YYYY-MM-DD') +\n                                    '_' +\n                                    record.get('export_period_name.period_end_date'),\n                            ];\n                        } else {\n                            params = [\n                                'date=' +\n                                    record.get('export_period_name.period_start_date') +\n                                    '_' +\n                                    record.get('export_period_name.period_end_date'),\n                            ];\n                        }\n                        params.push('exportid=' + back.id);\n                        if (user) {\n                            params.push('user=' + user.get('id'));\n                        }\n                        if ((include_old_rows = record.get('include_old_rows'))) {\n                            params.push('include_old_rows=' + include_old_rows);\n                        }\n                        if (record.get('worktimegroup')) {\n                            params.push('worktimegroup=' + record.get('worktimegroup.id'));\n                        }\n                        params.push('export_wage_period_id=' + record.get('export_period_name.id'));\n                        fields = this.get('Collector').fields(this.get('form'));\n                        for (field in fields) {\n                            options = fields[field];\n                            if (\n                                !(\n                                    field === 'worktimegroup' ||\n                                    field === 'date' ||\n                                    field === 'export_description' ||\n                                    field === 'export_name' ||\n                                    field === 'export_period_file' ||\n                                    field === 'export_period_name' ||\n                                    field === 'include_old_rows' ||\n                                    field === 'user'\n                                )\n                            ) {\n                                params.push(\n                                    field +\n                                        '=' +\n                                        (options.type === 'database'\n                                            ? record.get(field + '.id')\n                                            : record.get(field)),\n                                );\n                            }\n                        }\n                        Ember.assert(\n                            !this.get('selectedIntegration'),\n                            'integration is not selected.. this should never happen',\n                        );\n                        return this.callCC(\n                            this.get('selectedIntegration'),\n                            params,\n                            record,\n                            resolve,\n                            reject,\n                        );\n                    });\n            });\n        });\n    },\n    callCC: function (key, params, record, resolve, reject) {\n        var access_token, data, promise, queryParams, queryParamsString, timeout;\n        data = {};\n        params.forEach((item) => {\n            return (data[item.split('=')[0]] = item.split('=')[1]);\n        });\n        if (config.environment === 'development') {\n            data.capi_url = 'http://capi/';\n            data.ttapi_url = 'http://ttapi/';\n            data.cc_url = 'http://ccbackend/trigger/';\n        } else {\n            data.capi_url = config.APP.COLLECTOR_API_URL + '/';\n            data.ttapi_url = this.get('ttapi').host + '/';\n            data.cc_url = this.get('cc').host + '/';\n        }\n        access_token = this.get('session.session.authenticated.access_token');\n        data.token = access_token;\n        data.exportName = record.get('constructor.modelName');\n        timeout = 50000;\n        //promise = @get('ttapi')._post \"/ccrequest/\" + key, JSON.stringify(data)\n        queryParams = [];\n        if (this.getSalaryVersion() !== 1) {\n            queryParams.push('salaryversion=' + this.getSalaryVersion());\n        }\n        // removing the flag\n        // Remove these lines and ttapi ccController row that supports this \"private\" queryParam. And change ttapi so public=true is never used.\n        if (this.get('flags').test('private-export-files')) {\n            queryParams.push('private=true');\n        }\n        if (this.get('flags').test('export-slow-ccrequest')) {\n            queryParams.push('slowRequest=true'); // this parameter makes ttapi to call cc with webhooks that saves the response file when cc is done\n            timeout = 1000; // we timeout request every time so user is informed that file is returned later\n        }\n\n        // if key already has ? in it (for example ?_v=1), do not add ? again, use & instead\n        if (key.indexOf('?') === -1) {\n            queryParamsString = queryParams.length > 0 ? '?' + queryParams.join('&') : '';\n        } else {\n            queryParamsString = queryParams.length > 0 ? '&' + queryParams.join('&') : '';\n        }\n        promise = this.get('ajax').request(\n            this.get('ttapi').host + '/ccrequest/' + key + queryParamsString,\n            {\n                method: 'post',\n                timeout: timeout,\n                headers: {\n                    Authorization: 'Bearer ' + access_token,\n                },\n                data: JSON.stringify(data),\n            },\n        );\n        return promise\n            .then((back, textStatus, jqXHR) => {\n                var downloadFile, message;\n                back = back.ret;\n                downloadFile = true;\n                if (back === '') {\n                    this.get('dialogs').alert(this.get('intl').t('export.no_data'));\n                    reject();\n                    return;\n                }\n                if (back.error != null) {\n                    message = this.get('intl').t('general.ccerror', {\n                        error: back.error,\n                    });\n                    this.get('dialogs').alert(\n                        new Ember.String.htmlSafe(message.replace('\\n', '<br>')),\n                    );\n                    reject();\n                    return;\n                }\n                if (Ember.typeOf(back) === 'array') {\n                    message = this.get('intl').t('general.ccresponsemessage', {\n                        response: back.mapBy('response').join('\\n'),\n                    });\n                    this.get('dialogs').alert(\n                        new Ember.String.htmlSafe(message.replace(/\\n/g, '<br>')),\n                    );\n                    back = back.mapBy('response').join('\\n');\n                    downloadFile = false;\n                }\n                return this.get('store')\n                    .findRecord(record.get('constructor.modelName'), record.get('id'), {\n                        reload: true,\n                    })\n                    .then((back) => {\n                        var a, file_url, files;\n                        files = back.get('export_period_file');\n                        file_url = config.APP.COLLECTOR_API_URL + '/' + files[0].url;\n                        if (downloadFile) {\n                            a = document.createElement('a');\n                            a.href = file_url;\n                            a.target = '_blank';\n                            a.download = files[0].name;\n                            document.body.appendChild(a);\n                            a.click();\n                        }\n                        return resolve();\n                    });\n            })\n            .catch((reason) => {\n                if (isTimeoutError(reason)) {\n                    this.get('dialogs').alert(this.get('intl').t('export.timeout_error'));\n                    return resolve();\n                } else {\n                    this.get('error').notify(reason);\n                    return resolve();\n                }\n            });\n    },\n    getFilename: function (record, jqXHR) {\n        var default_name, given, given_arr;\n        default_name = record.get('export_name').replace(/[^A-Za-z0-9]/g, '') || 'export';\n        default_name += '.csv';\n        given = jqXHR.getResponseHeader('Content-Disposition');\n        if (given) {\n            given_arr = given.split('=');\n            if (given_arr[0] === 'filename' && given_arr.length === 2) {\n                return given_arr[1];\n            }\n        }\n        return default_name;\n    },\n    getSalaryVersion: function () {\n        if (this.get('Collector').testNeeds(['products.salarytype_v2'])) {\n            return 2;\n        } else {\n            return 1;\n        }\n    },\n});\n\nexport default RecordCompExportComponent;\n","import { inject as service } from '@ember/service';\n\nimport Component from '@ember/component';\nimport pdf_measurement_mixin from '../mixins/sitesafety-export';\nimport formatted_pdf_measurement_mixin from '../mixins/sitesafety-formatted-export';\nimport { get, set, computed } from '@ember/object';\nimport { A } from '@ember/array';\n\nconst RecordListComponent = Component.extend(\n    pdf_measurement_mixin,\n    formatted_pdf_measurement_mixin,\n    {\n        store: service(),\n        analytics: service(),\n        Collector: service('collector-service'),\n        error: service(),\n        fileExports: service(),\n        intl: service(),\n        tagName: 'ul',\n        class: 'list-group',\n        fieldSettings: A({\n            report: true,\n            preview: true,\n            title: true,\n            show: true,\n        }),\n\n        currentForm: computed('model', function () {\n            return get(this, 'model.constructor.modelName');\n        }),\n\n        exports: computed('model', function () {\n            if (\n                get(this, 'model.constructor.modelName') === 'tr' ||\n                get(this, 'model.constructor.modelName') === 'mvr'\n            ) {\n                return [\n                    {\n                        export: 'measurement_pdf',\n                        translation: get(this, 'intl').t('general.export'),\n                    },\n                    {\n                        export: 'formatted_measurement_pdf',\n                        translation: get(this, 'intl').t('site_safety.export_formatted'),\n                    },\n                ];\n            } else {\n                return [{ export: 'pdf', translation: get(this, 'intl').t('general.export') }];\n            }\n        }),\n        actions: {\n            async export(type) {\n                get(this, 'analytics').trackEvent({ category: 'Show page export', action: type });\n                set(this, 'showLoader', true);\n                if (type === 'pdf') {\n                    try {\n                        const form = get(this, 'model.constructor.modelName').replace(/-/g, '_');\n                        await this.fileExports.createPdfFull(\n                            form,\n                            [{ id: get(this, 'model.id') }],\n                            {},\n                        );\n                    } catch (error) {\n                        this.error.notify(error);\n                    } finally {\n                        set(this, 'showLoader', false);\n                    }\n                } else if (type === 'measurement_pdf') {\n                    this.exportMeasurementPdf(get(this, 'fields'), get(this, 'model'));\n                    return set(this, 'showLoader', false);\n                } else if (type === 'formatted_measurement_pdf') {\n                    let this_fields;\n                    const modelsArr = [get(this, 'model')];\n                    if (get(this, 'model.constructor.modelName') === 'tr') {\n                        this_fields = this.Collector.fields('tr');\n                    } else {\n                        this_fields = this.Collector.fields('mvr');\n                    }\n                    return this.createMeasurementPdf(this_fields, modelsArr).then(() =>\n                        this._setLoaderFalse(),\n                    );\n                }\n            },\n\n            filterFields(field) {\n                return !field.features?.hide_column;\n            },\n        },\n        _setLoaderFalse() {\n            return set(this, 'showLoader', false);\n        },\n    },\n);\n\nexport default RecordListComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/salary-period-adder.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SalaryPeriodAdderComponent;\n\nimport Ember from 'ember';\n\nSalaryPeriodAdderComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    multi: false,\n    amount: 2,\n    period: 'month',\n    from: moment().startOf('month').format('YYYY-MM-DD'),\n    amount_options: Ember.computed(function () {\n        return [\n            {\n                id: 2,\n                name: this.get('intl').t('salary_period.adder.amount.2'),\n            },\n            {\n                id: 4,\n                name: this.get('intl').t('salary_period.adder.amount.4'),\n            },\n            {\n                id: 6,\n                name: this.get('intl').t('salary_period.adder.amount.6'),\n            },\n            {\n                id: 8,\n                name: this.get('intl').t('salary_period.adder.amount.8'),\n            },\n            {\n                id: 12,\n                name: this.get('intl').t('salary_period.adder.amount.12'),\n            },\n        ];\n    }),\n    period_options: Ember.computed(function () {\n        return [\n            {\n                id: 'month',\n                name: this.get('intl').t('salary_period.adder.period.month'),\n            },\n            {\n                id: 'week2',\n                name: this.get('intl').t('salary_period.adder.period.week2'),\n            },\n            {\n                id: 'week4',\n                name: this.get('intl').t('salary_period.adder.period.week4'),\n            },\n        ];\n    }),\n    actions: {\n        create: function () {\n            var amount, end, from, i, period, promises, records, ref, store;\n            this.set('saving', true);\n            this.set('disabled', true);\n            store = this.get('store');\n            amount = this.get('amount');\n            period = this.get('period');\n            from = this.get('from');\n            records = [];\n            for (i = 1, ref = amount; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n                end = (function () {\n                    switch (period) {\n                        case 'month':\n                            return moment(from)\n                                .add(1, 'month')\n                                .subtract(1, 'day')\n                                .format('YYYY-MM-DD');\n                        case 'week2':\n                            return moment(from)\n                                .add(2, 'week')\n                                .subtract(1, 'day')\n                                .format('YYYY-MM-DD');\n                        case 'week4':\n                            return moment(from)\n                                .add(4, 'week')\n                                .subtract(1, 'day')\n                                .format('YYYY-MM-DD');\n                    }\n                })();\n                records.push(\n                    store.createRecord('wage-period', {\n                        period_name: moment(from).format('L') + ' - ' + moment(end).format('L'),\n                        period_start_date: from,\n                        period_end_date: end,\n                    }),\n                );\n                from = (function () {\n                    switch (period) {\n                        case 'month':\n                            return moment(from).add(1, 'month').format('YYYY-MM-DD');\n                        case 'week2':\n                            return moment(from).add(2, 'week').format('YYYY-MM-DD');\n                        case 'week4':\n                            return moment(from).add(4, 'week').format('YYYY-MM-DD');\n                    }\n                })();\n            }\n            promises = records.invoke('save');\n            return Ember.RSVP.Promise.all(promises).then(() => {\n                if (this.get('closeEditor')) {\n                    this.closeEditor(this.get('settings'));\n                }\n                this.set('saving', true);\n                return this.set('disabled', true);\n            });\n        },\n        setmulti: function (multi) {\n            return this.set('multi', multi);\n        },\n        closeEditor: function () {\n            if (this.get('closeEditor')) {\n                return this.closeEditor(this.get('settings'));\n            }\n        },\n        recordSaved: function (settings, record) {\n            if (this.get('closeEditor')) {\n                return this.closeEditor(settings, record);\n            }\n        },\n    },\n});\n\nexport default SalaryPeriodAdderComponent;\n","define(\"tt4/components/scatter-chart\", [\"exports\", \"ember-google-charts/components/scatter-chart\"], function (_exports, _scatterChart) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _scatterChart.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/select-comp.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SelectCompComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport $ from 'jquery';\n\nSelectCompComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    content: [],\n    value: null,\n    init: function () {\n        this._super(...arguments);\n        if (this.get('promptTranslation')) {\n            this.set('prompt', this.get('intl').t(this.get('promptTranslation')));\n        }\n        if (!this.get('value') && !this.get('prompt')) {\n            return this.set('value', this.get('content.firstObject.id'));\n        }\n    },\n    options: Ember.computed(function () {\n        var field;\n        field = collector.getFormObject(this.get('form') + '.' + this.get('field'));\n        if (field && field.options.fields != null) {\n            return field.options.fields;\n        }\n        return ['name'];\n    }),\n    actions: {\n        change: function () {\n            var content, selectedEl, selectedIndex, selectedValue;\n            selectedEl = $('select', this.element)[0];\n            selectedIndex = selectedEl.selectedIndex;\n            if (this.get('prompt')) {\n                selectedIndex--;\n            }\n            if (typeof content === 'undefined' || content === null) {\n                //            content = @get 'content.content.content'\n                content = this.get('content');\n            }\n            selectedValue = content.objectAt(selectedIndex);\n            if (!selectedValue) {\n                return this.set('value', null);\n            } else if (this.get('relation')) {\n                if (selectedValue.record) {\n                    return this.set('value', selectedValue.record);\n                } else {\n                    return this.set('value', selectedValue);\n                }\n            } else {\n                return this.set('value', selectedValue.get('id'));\n            }\n        },\n    },\n});\n\nexport default SelectCompComponent;\n","import SelectList from 'ember-select-list/components/select-list';\n\nexport default SelectList;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/side-menu.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SideMenuComponent;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport menu from '../mixins/menu';\n\nSideMenuComponent = Ember.Component.extend(menu, {\n    session: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    skvReport: Ember.inject.service(),\n    layoutName: 'side-menu',\n    editmode: false,\n    init: function () {\n        this._super(...arguments);\n        if (typeof cordova !== 'undefined' && cordova !== null) {\n            return cordova.getAppVersion.getVersionNumber().then((version) => {\n                return this.set(\n                    'version',\n                    this.get('intl').t('application.version') +\n                        ': ' +\n                        this.get('gui').version() +\n                        ' APP: ' +\n                        version,\n                );\n            });\n        } else {\n            return this.set(\n                'version',\n                this.get('intl').t('application.version') + ': ' + this.get('gui').version(),\n            );\n        }\n    },\n    skv_report: Ember.computed('session.currentUser', function () {\n        return this.get('skvReport.skvReportLink');\n    }),\n    actions: {\n        close: function (menu) {\n            if (this.get('close')) {\n                this.close();\n            }\n            if (menu && this.get('transition')) {\n                return this.transition(menu.link);\n            }\n        },\n        editmode: function () {\n            return this.toggleProperty('editmode');\n        },\n        toggleMenuVisibility: function (item) {\n            return item.toggleProperty('hide_leftmenu');\n        },\n        saveMenuState: function () {\n            this.saveLeftmenuHidings(this.get('menus'));\n            return this.send('close');\n        },\n        invalidateSession: function () {\n            delete localStorage['first-time-loader-greeting'];\n            if (this.get('logout')) {\n                return this.logout();\n            }\n        },\n        openLink: function (url) {\n            return window.open(url, '_blank');\n        },\n        openFeedbackModal: function () {\n            this.send('close');\n            return this.set('showFeedbackModal', true);\n        },\n        closeModal: function () {\n            return this.set('showFeedbackModal', false);\n        },\n    },\n});\n\nexport default SideMenuComponent;\n","import sortableGroup from 'ember-sortable/components/sortable-group';\n\nexport default sortableGroup;\n","import sortableHandle from 'ember-sortable/components/sortable-handle';\n\nexport default sortableHandle;\n\n","import sortableItem from 'ember-sortable/components/sortable-item';\n\nexport default sortableItem;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/spin-button.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SpinButtonComponent;\n\nimport Ember from 'ember';\n\nSpinButtonComponent = Ember.Component.extend({\n    classNames: ['button'],\n    classes: 'btn-warning',\n    spinIsLoading: false,\n    saveButtonText: null,\n    showDisable: Ember.computed('spinIsLoading', 'disabled', function () {\n        if (this.get('disabled')) {\n            return true;\n        } else if (this.get('spinIsLoading')) {\n            return true;\n        }\n        return false;\n    }),\n    actions: {\n        showLoading: function () {\n            if (!this.get('spinIsLoading')) {\n                this.set('spinIsLoading', true);\n                if (this.get('action')) {\n                    this.action();\n                }\n            }\n        },\n    },\n});\n\nexport default SpinButtonComponent;\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" style=\\\"margin-bottom: -2px\\\" width=\\\"{{@size}}px\\\" height=\\\"{{@size}}px\\\" viewBox=\\\"0 0 100 100\\\" preserveAspectRatio=\\\"xMidYMid\\\" data-darkreader-inline-bgimage=\\\"\\\" data-darkreader-inline-bgcolor=\\\"\\\">\\n<g transform=\\\"rotate(0 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.9523809523809523s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(17.142857142857142 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.9047619047619048s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(34.285714285714285 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.8571428571428571s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(51.42857142857143 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.8095238095238095s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(68.57142857142857 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.7619047619047619s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(85.71428571428571 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.7142857142857143s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(102.85714285714286 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.6666666666666666s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(120 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.6190476190476191s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(137.14285714285714 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.5714285714285714s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(154.28571428571428 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.5238095238095238s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(171.42857142857142 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.47619047619047616s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(188.57142857142858 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.42857142857142855s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(205.71428571428572 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.38095238095238093s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(222.85714285714286 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.3333333333333333s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(240 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.2857142857142857s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(257.14285714285717 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.23809523809523808s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(274.2857142857143 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.19047619047619047s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(291.42857142857144 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.14285714285714285s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(308.57142857142856 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.09523809523809523s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(325.7142857142857 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.047619047619047616s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(342.85714285714283 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"0s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g>\\n</svg>\", {\"contents\":\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" style=\\\"margin-bottom: -2px\\\" width=\\\"{{@size}}px\\\" height=\\\"{{@size}}px\\\" viewBox=\\\"0 0 100 100\\\" preserveAspectRatio=\\\"xMidYMid\\\" data-darkreader-inline-bgimage=\\\"\\\" data-darkreader-inline-bgcolor=\\\"\\\">\\n<g transform=\\\"rotate(0 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.9523809523809523s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(17.142857142857142 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.9047619047619048s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(34.285714285714285 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.8571428571428571s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(51.42857142857143 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.8095238095238095s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(68.57142857142857 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.7619047619047619s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(85.71428571428571 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.7142857142857143s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(102.85714285714286 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.6666666666666666s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(120 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.6190476190476191s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(137.14285714285714 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.5714285714285714s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(154.28571428571428 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.5238095238095238s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(171.42857142857142 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.47619047619047616s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(188.57142857142858 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.42857142857142855s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(205.71428571428572 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.38095238095238093s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(222.85714285714286 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.3333333333333333s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(240 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.2857142857142857s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(257.14285714285717 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.23809523809523808s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(274.2857142857143 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.19047619047619047s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(291.42857142857144 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.14285714285714285s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(308.57142857142856 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.09523809523809523s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(325.7142857142857 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.047619047619047616s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(342.85714285714283 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"0s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g>\\n</svg>\",\"moduleName\":\"tt4/components/spinner.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/spinner.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<svg class={{if @disabled \\\"stop-button-disabled\\\"\\\"stop-button\\\"}} xmlns=\\\"http://www.w3.org/2000/svg\\\" class=\\\"play\\\" width={{if @width @width \\\"70\\\"}} height={{if @height @height \\\"70\\\"}} viewBox=\\\"0 0 99 99\\\" {{action @click}}>\\n    <circle cx=\\\"49.5\\\" cy=\\\"49.5\\\" r=\\\"49.5\\\" />\\n    <rect width=\\\"32\\\" height=\\\"32\\\" rx=\\\"5\\\" transform=\\\"translate(34 34)\\\" fill=\\\"#fff\\\"/>\\n</svg>\", {\"contents\":\"<svg class={{if @disabled \\\"stop-button-disabled\\\"\\\"stop-button\\\"}} xmlns=\\\"http://www.w3.org/2000/svg\\\" class=\\\"play\\\" width={{if @width @width \\\"70\\\"}} height={{if @height @height \\\"70\\\"}} viewBox=\\\"0 0 99 99\\\" {{action @click}}>\\n    <circle cx=\\\"49.5\\\" cy=\\\"49.5\\\" r=\\\"49.5\\\" />\\n    <rect width=\\\"32\\\" height=\\\"32\\\" rx=\\\"5\\\" transform=\\\"translate(34 34)\\\" fill=\\\"#fff\\\"/>\\n</svg>\",\"moduleName\":\"tt4/components/stop-button.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/stop-button.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/table-comp.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TableCompComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport pdfExport from '../mixins/pdf-export';\n\nimport $ from 'jquery';\n\nimport { observer } from '@ember/object';\n\nTableCompComponent = Ember.Component.extend(pdfExport, {\n    intl: Ember.inject.service(),\n    translationPrefix: '',\n    checkClass: 'unchecked',\n    checkedClass: 'unchecked',\n    rowAction: null,\n    checkable: false,\n    //when status field in form, always checkable\n    ch: observer('canChangeStatus', function () {\n        return this.set('checkable', this.get('canChangeStatus'));\n    }),\n    // noRows flag is true if data is loaded but it contains zero rows\n    noRows: Em.computed('data.length', function () {\n        var data;\n        data = this.get('data');\n        if (data == null) {\n            return true;\n        }\n        if (!Ember.isArray(data)) {\n            return false;\n        }\n        return data.length === 0;\n    }),\n    // get translation for every column\n    _translatedColumns: Em.computed('columns', function () {\n        var columns, intl, translated_columns, translationPrefix;\n        translationPrefix = this.get('translationPrefix');\n        if (translationPrefix) {\n            columns = this.get('columns');\n            intl = this.get('intl');\n            translated_columns = [];\n            $.each(columns, (key, item) => {\n                return translated_columns.push(intl.t(translationPrefix + '.' + item));\n            });\n            return translated_columns;\n        }\n        return this.get('translated_columns');\n    }),\n    lockedActions: Em.computed('rowActions', function () {\n        var filteredActions;\n        filteredActions = this.get('rowActions').filter((rowAction) => {\n            return !['remove', 'edit', 'delete'].find((actionSubString) => {\n                return rowAction.action.includes(actionSubString);\n            });\n        });\n        filteredActions.push({\n            icon: 'move move-Lock',\n        });\n        return filteredActions;\n    }),\n    notEditableActions: Em.computed('rowActions', function () {\n        var filteredActions;\n        filteredActions = this.get('rowActions').filter((rowAction) => {\n            return !['remove', 'edit', 'delete'].find((actionSubString) => {\n                return rowAction.action.includes(actionSubString);\n            });\n        });\n        return filteredActions;\n    }),\n    // order property for showing by what column we are ordering\n    order: null,\n    checked: Em.computed('data.@each.checkedClass', function () {\n        var chk;\n        chk = [];\n        if (this.get('data')) {\n            this.get('data').forEach((row) => {\n                if (row.checkedClass === 'checked') {\n                    return chk.pushObject(row);\n                }\n            });\n        }\n        if (chk.length === 0 || chk.length !== this.get('data.length')) {\n            this.set('checkClass', 'unchecked');\n        }\n        if (chk.length === this.get('data.length')) {\n            this.set('checkClass', 'checked');\n        }\n        return chk;\n    }),\n    defaultChangeStatus: Em.computed(function () {\n        var obj;\n        obj = {};\n        obj.action = 'approved';\n        obj.btn_class = 'btn-primary';\n        obj.text = this.get('intl').t('report.approve_rows');\n        return obj;\n    }),\n    showDefaultChangeStatus: Ember.computed('canChangeStatus', 'statusTypes', function () {\n        var approvingIsAllowed;\n        if (!this.get('canChangeStatus')) {\n            return false;\n        }\n        approvingIsAllowed = this.get('statusTypes').mapBy('id').indexOf('approved') !== -1;\n        return approvingIsAllowed;\n    }),\n    defaultChangeStatusAction: 'approved',\n    canChangeStatus: Em.computed(function () {\n        var field;\n        field = collector.getFormObject(this.get('form') + '.status');\n        if (field) {\n            if (!field.features.readonly) {\n                return true;\n            }\n        }\n        return false;\n    }),\n    statusTypes: Em.computed('form', function () {\n        var c, field, fieldOptions, intl, option, options;\n        if (!this.get('form')) {\n            return [];\n        }\n        c = this.get('Collector');\n        intl = this.get('intl');\n        field = c.field(this.get('form'), 'status');\n        if (field.features.only_options) {\n            fieldOptions = field.features.only_options.split(',');\n        } else {\n            fieldOptions = field.options;\n        }\n        options = (function () {\n            var i, len, results;\n            results = [];\n            for (i = 0, len = fieldOptions.length; i < len; i++) {\n                option = fieldOptions[i];\n                if (intl.exists('status.' + option)) {\n                    results.push({\n                        id: option,\n                        name: intl.t('report.' + option + '_rows'),\n                    });\n                } else {\n                    results.push({\n                        id: option,\n                        name: intl.t('report.change_status') + option,\n                    });\n                }\n            }\n            return results;\n        })();\n        return options;\n    }),\n    asPdfElement: Ember.computed(function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return resolve(\n                this.createPdfTableElement(\n                    this.get('columnList'),\n                    this.get('data'),\n                    this.get('_translatedColumns'),\n                ),\n            );\n        });\n    }),\n    columnList: Ember.computed('columns', function () {\n        return this.get('columns').map((item) => {\n            return this.columnKey(item);\n        });\n    }),\n    columnKey: function (column) {\n        var subfields, subform;\n        [subform, subfields] = this.parseColumn(column);\n        return subform + (subfields ? subfields[0] : '');\n    },\n    parseColumn: function (column) {\n        var subfields, subform;\n        if (column.indexOf('.') !== -1) {\n            [subform, subfields] = column.split('.');\n            subfields = [subfields];\n        } else {\n            subform = column;\n            subfields = null;\n        }\n        return [subform, subfields];\n    },\n    canLock: Em.computed(function () {\n        return this.get('Collector').testNeeds(['userlevel=5']);\n    }),\n    showMassedit: Ember.computed('settings.massedit', function () {\n        if (this.get('Collector').testNeeds(['userlevel=3,4,5,6'])) {\n            return true;\n        }\n    }),\n    selectedRows: Ember.computed('checked.[]', function () {\n        return this.get('checked').mapBy('id').join(',');\n    }),\n    getPdfFilters: function (rows) {\n        var c, filter, filterName, filterValue, i, len, pdf_filters_body, ref, value;\n        c = this.get('Collector');\n        pdf_filters_body = [];\n        ref = this.get('filters');\n        for (i = 0, len = ref.length; i < len; i++) {\n            filter = ref[i];\n            if (filter.get('value') && filter.get('name') !== 'groupBy') {\n                if (Ember.isArray(filter.get('value')) && filter.get('value.length') === 0) {\n                    continue;\n                }\n                if (filter.get('type') === 'database') {\n                    value = parseInt(filter.get('value'));\n                } else {\n                    value = filter.get('value');\n                }\n                if (filter.get('bindto') && !filter.get('field')) {\n                    filterValue = value;\n                    filterName = this.get('intl').t('filters.free_search');\n                } else {\n                    filterValue = c._format_(\n                        value,\n                        filter.get('form'),\n                        filter.get('field'),\n                        'pdf',\n                        rows,\n                    );\n                    filterName = this.get('intl').t(filter.get('form') + '.' + filter.get('name'));\n                }\n                if (this.get('full_pdf_export')) {\n                    pdf_filters_body.push([\n                        {\n                            text: filterName + ': ' + filterValue,\n                            style: 'headertext',\n                        },\n                    ]);\n                } else {\n                    pdf_filters_body.push([filterName + ':', filterValue]);\n                }\n            }\n        }\n        return pdf_filters_body;\n    },\n    actions: {\n        multisortColumns: function (key) {\n            var c, obj;\n            c = this.get('Collector');\n            if (this.get('columns')[key] === 'row_info.created') {\n                obj = {\n                    form: this.get('form'),\n                    type: 'row_info',\n                    features: {},\n                    ext: 'row_info.created',\n                };\n            } else {\n                obj = c.field(this.get('form'), this.get('columns')[key]);\n            }\n            return this.sendAction('bubbleActions', 'columnClickedMulti', obj);\n        },\n        columnClicked: function (key) {\n            if (this.get('multiSort')) {\n                return this.send('multisortColumns', key);\n            } else {\n                return this.send('sortColumns', key);\n            }\n        },\n        sortColumns: function (key) {\n            var columns, currentOrder;\n            columns = this.get('columns');\n            currentOrder = this.get('order');\n            if (currentOrder === key || currentOrder === null) {\n                currentOrder = key + '-';\n            } else {\n                currentOrder = key;\n            }\n            this.set('order', currentOrder);\n            return this.sendAction('bubbleActions', 'columnClicked', columns[key]);\n        },\n        check: function (row) {\n            var params;\n            if (Ember.get(row, 'checkedClass') === 'checked') {\n                Ember.set(row, 'checkedClass', 'unchecked');\n                params = {\n                    id: Ember.get(row, 'id'),\n                    action: 'remove',\n                };\n                this.sendAction('bubbleActions', 'checkRow', params);\n            } else {\n                Ember.set(row, 'checkedClass', 'checked');\n                params = {\n                    id: Ember.get(row, 'id'),\n                    action: 'add',\n                };\n                this.sendAction('bubbleActions', 'checkRow', params);\n            }\n            return this.sendAction('bubbleActions', 'checkedRows', this.get('checked'));\n        },\n        checkAll: function () {\n            this.toggleProperty('checkAll');\n            this.get('data').forEach((row) => {\n                var params;\n                if (this.get('checkAll')) {\n                    Ember.set(row, 'checkedClass', 'checked');\n                    this.set('checkClass', 'checked');\n                    params = {\n                        id: Ember.get(row, 'id'),\n                        action: 'add',\n                    };\n                    return this.sendAction('bubbleActions', 'checkRow', params);\n                } else {\n                    Ember.set(row, 'checkedClass', 'unchecked');\n                    this.set('checkClass', 'unchecked');\n                    params = {\n                        id: Ember.get(row, 'id'),\n                        action: 'remove',\n                    };\n                    return this.sendAction('bubbleActions', 'checkRow', params);\n                }\n            });\n            return this.sendAction('bubbleActions', 'checkedRows', this.get('checked'));\n        },\n        changeStatus: function (status) {\n            var params;\n            params = {};\n            params.rows = this.get('checked');\n            params.status = status;\n            return this.sendAction('bubbleActions', 'changeStatus', params);\n        },\n        rowAction: function (action, row) {\n            if (Em.isNone(action)) {\n                return;\n            }\n            return this.sendAction('bubbleActions', action, row);\n        },\n        checkedActionClicked: function (action) {\n            return this.sendAction('bubbleActions', 'checkedRowsAction', {\n                action: action,\n                rows: this.get('checked'),\n            });\n        },\n        mutateRows: function (mutation) {\n            return this.sendAction('bubbleActions', mutation);\n        },\n        export_pdf: function () {\n            return this.get('asPdfElement').then((element) => {\n                var elements, pdf_filters_body;\n                elements = [element];\n                if (this.get('filters')) {\n                    pdf_filters_body = this.getPdfFilters(this.get('data'));\n                    if (pdf_filters_body.length > 0) {\n                        elements.unshift({\n                            table: {\n                                body: pdf_filters_body,\n                            },\n                            layout: 'noBorders',\n                        });\n                    }\n                }\n                return this.createPdfFromElements(elements).then((file) => {\n                    if (typeof cordova !== 'undefined' && cordova !== null) {\n                        return this.get('cordova').openFile(file, 'application/pdf');\n                    }\n                });\n            });\n        },\n        lockRows: function (act, row) {\n            var params, rows;\n            rows = row ? [row] : this.get('checked');\n            params = { act, rows };\n            return this.sendAction('bubbleActions', 'lockRows', params);\n        },\n    },\n});\n\nexport default TableCompComponent;\n","define(\"tt4/components/tag-input\", [\"exports\", \"ember-tag-input/components/tag-input\"], function (_exports, _tagInput) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _tagInput.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/user-select.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserSelect;\n\nimport Ember from 'ember';\n\nUserSelect = Ember.Component.extend({\n    users: null,\n    currentUser: Ember.computed('users.[]', 'user', 'filterEmployer', function () {\n        var filterEmployer, first, found, last, next, previous, temp, userid, users;\n        users = this.get('users');\n        if (!users) {\n            return;\n        }\n        filterEmployer = this.get('filterEmployer');\n        if (filterEmployer) {\n            users = users.filter(function (user) {\n                return user.get('employer.id') === filterEmployer;\n            });\n        }\n        userid = this.get('user');\n        last = temp = next = previous = null;\n        found = false;\n        if (!userid) {\n            first = users.get('firstObject');\n            if (!first) {\n                return;\n            }\n            userid = first.get('id');\n        }\n        users.forEach(function (user) {\n            if (found && !next) {\n                next = user;\n            }\n            if (user.get('id') === userid) {\n                found = true;\n                temp = user;\n                previous = last;\n            }\n            return (last = user);\n        });\n        //        unless found\n        //            @set 'user', null\n        // Todo should be written as computeds\n        Ember.run.next(this, function () {\n            if (this.get('isDestroyed')) {\n                return;\n            }\n            this.set('nextUser', next);\n            return this.set('previousUser', previous);\n        });\n        return temp;\n    }),\n    nextUser: null,\n    previousUser: null,\n    actions: {\n        gotoNextUser: function () {\n            //@set 'page', 1\n            return this.set('user', this.get('nextUser.id'));\n        },\n        gotoPreviousUser: function () {\n            //@set 'page', 1\n            return this.set('user', this.get('previousUser.id'));\n        },\n    },\n});\n\nexport default UserSelect;\n","define(\"tt4/components/vertical-collection\", [\"exports\", \"@html-next/vertical-collection/components/vertical-collection/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/week-report.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WeekReportComponent;\n\nimport Ember from 'ember';\n\nWeekReportComponent = Ember.Component.extend({\n    intl: Em.inject.service(),\n    gui: Em.inject.service(),\n    didInsertElement: function () {\n        this._super();\n        return this.get('gui').setBreakpointObserver('md');\n    },\n    willDestroyElement: function () {\n        this._super();\n        return this.get('gui').removeBreakpointObserver();\n    },\n    actions: {\n        click: function (row) {\n            if (this.get('rowClicked')) {\n                return this.rowClicked(row);\n            }\n        },\n    },\n});\n\nexport default WeekReportComponent;\n","define(\"tt4/components/x-toggle-label\", [\"exports\", \"ember-toggle/components/x-toggle-label/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/x-toggle-switch\", [\"exports\", \"ember-toggle/components/x-toggle-switch/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","\nimport XToggle from 'ember-toggle/components/x-toggle/component';\nimport ENV from '../config/environment';\n\nconst config = ENV['ember-toggle'] || {};\n\nexport default XToggle.extend({\n  /* eslint-disable ember/avoid-leaking-state-in-ember-objects */\n  theme: config.defaultTheme || 'default',\n  defaultOffLabel: config.defaultOffLabel || 'Off::off',\n  defaultOnLabel: config.defaultOnLabel || 'On::on',\n  showLabels: config.defaultShowLabels || false,\n  size: config.defaultSize || 'medium'\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/config.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar addLinkList,\n    branding_needs,\n    defaultFirstPages,\n    possibleFirstPages,\n    savedCustomization,\n    staticMenus;\n\nstaticMenus = [\n    {\n        needs: ['worktime||presence||orientation||tr||mvr'],\n        link: ['dashboard'],\n        icon: 'move move-Dashboard',\n        text: 'menu.dashboard',\n        id: 'dashboard',\n        submenus: [],\n    },\n    {\n        needs: ['worktime||presence||orientation||tr||mvr'],\n        link: ['my-sites'],\n        icon: 'move move-MySites',\n        text: 'menu.my-sites',\n        id: 'my-sites',\n        submenus: [],\n    },\n    {\n        needs: ['worktime', 'modulecontrol.worktimes', 'worktime@access'],\n        link: ['timetracker.worktime-list'],\n        icon: 'move move-Time',\n        text: 'menu.worktimes',\n        id: 'worktime',\n        pdfHeaders: ['date', 'project'],\n        submenus: [\n            {\n                text: 'menu.worktime-list',\n                link: 'timetracker.worktime-list',\n            },\n            {\n                text: 'menu.anomalyreport',\n                link: 'timetracker.anomalies',\n                needs: ['!worktime.status@readonly', 'development'],\n            },\n            {\n                text: 'menu.approval',\n                link: 'timetracker.approval',\n                needs: ['!worktime.status@readonly'],\n            },\n            {\n                text: 'menu.timetracker.realtime',\n                link: 'timetracker.realtime',\n                needs: ['!userlevel=1'],\n            },\n            {\n                text: 'menu.timetracker.comp-report',\n                link: 'timetracker.comp-report',\n                needs: ['!userlevel=1?', 'abcense'],\n            },\n            {\n                text: 'menu.timetracker.week-report',\n                link: 'timetracker.week-report',\n                needs: ['mobileView'],\n            },\n            {\n                text: 'menu.worktime_bank',\n                link: 'timetracker.bank',\n                needs: ['products.worktimebank'],\n            },\n            {\n                text: 'menu.worktime_bank',\n                link: 'timetracker.bank_ad',\n                needs: ['products.mini_entry', '!products.worktimebank'],\n            },\n            {\n                text: 'report.orientations.avi',\n                link: 'timetracker.avi',\n                needs: [\n                    '!userlevel=1?',\n                    'products.rakentajanpaketti||orientation',\n                    'serviceCountry@fi',\n                ],\n            },\n            {\n                //{text: 'report.export_salary', link: 'salary.export-salary', needs: [\"userlevel=2,3,5\", \"export_salary\", \"export_salary@access\"]}\n                text: 'menu.worktime_calendar',\n                link: 'timetracker.calendar',\n            },\n            {\n                text: 'menu.timetracker.aggregated',\n                link: 'timetracker.aggregated',\n                needs: ['!userlevel=1?', 'worktime', 'abcense', '!mobileView'],\n                subroutes: ['timetracker.aggregated.rows'],\n            },\n            {\n                text: 'menu.timetracker.salary-category',\n                link: 'timetracker.salary-category',\n                needs: ['!userlevel=1?', 'worktime', 'salarytype||salarytypev2', '!mobileView'],\n            },\n        ],\n    },\n    {\n        needs: ['drive@add', 'modules.drivinglog', '!userlevel=9'],\n        link: ['drivinglog'],\n        icon: 'move move-Mileage',\n        text: 'menu.drivinglog',\n        id: 'drivinglog',\n    },\n    {\n        needs: [\n            'export_contact_person||urakkaraportointi',\n            'export_taxman@access',\n            'products.rakentajanpaketti', //,'development']\n        ],\n        link: ['taxman.taxreport'],\n        icon: 'move move-Law',\n        text: 'menu.taxman',\n        id: 'taxman',\n        submenus: [\n            {\n                text: 'menu.taxreport',\n                link: 'taxman.taxreport',\n            },\n            {\n                text: 'menu.taxman-contracts-list',\n                link: 'taxman.contract-list',\n                needs: ['urakkaraportointi'],\n            },\n            {\n                text: 'menu.taxman-contracts',\n                link: 'taxman.taxreport-contract',\n                needs: ['urakkaraportointi'],\n            },\n            {\n                text: 'menu.taxman-archive',\n                link: 'taxman.archive',\n            },\n        ],\n    },\n    {\n        needs: [\n            'export_contact_person||urakkaraportointi',\n            'userlevel=5',\n            '!products.rakentajanpaketti', //,'development']\n        ],\n        link: ['taxman.taxreport'],\n        icon: 'move move-Law',\n        text: 'menu.taxman',\n        id: 'taxman',\n        submenus: [\n            {\n                text: 'menu.taxreport',\n                link: 'taxman.taxreport',\n            },\n            {\n                text: 'menu.taxman-contracts-list',\n                link: 'taxman.contract-list',\n                needs: ['urakkaraportointi'],\n            },\n            {\n                text: 'menu.taxman-contracts',\n                link: 'taxman.taxreport-contract',\n                needs: ['urakkaraportointi'],\n            },\n            {\n                text: 'menu.taxman-archive',\n                link: 'taxman.archive',\n            },\n        ],\n    },\n    {\n        needs: ['diaryreport@add'],\n        link: ['worksitediary'],\n        icon: 'move move-LiteratureFilled',\n        text: 'menu.worksitediary',\n        id: 'worksitediary',\n        submenus: [\n            {\n                text: 'menu.worksitediary',\n                link: 'worksitediary.index',\n            },\n            {\n                text: 'menu.worksitediary-events',\n                link: 'worksitediary.events',\n            },\n            {\n                text: 'menu.worksitediary-supervisor-notes-report',\n                link: 'worksitediary.supervisor-notes-report',\n                needs: ['diaryreport_supervisor_note'],\n            },\n            {\n                text: 'menu.worksitediary-offering-report',\n                link: 'worksitediary.offering-report',\n                needs: ['diaryreport_given_offer'],\n            },\n            {\n                text: 'menu.worksitediary-other-entries-report',\n                link: 'worksitediary.other-entries-report',\n                needs: ['diaryreport_other_note'],\n            },\n            {\n                text: 'menu.worksitediary.calendar',\n                link: 'worksitediary.calendar',\n                needs: ['diaryreport@add'],\n            },\n            {\n                text: 'menu.worksitediary.diaryreport_note',\n                link: 'worksitediary.notes',\n                needs: ['diaryreport_note@add'],\n            },\n            {\n                text: 'menu.worksitediary.automation',\n                link: 'worksitediary.automation',\n                needs: ['worksitediary@add'],\n            },\n        ],\n    },\n    {\n        needs: ['diary@access||worksitediary@add'],\n        link: ['diary'],\n        icon: 'move move-LiteratureFilled',\n        text: 'menu.diary',\n        id: 'diary',\n        submenus: [\n            {\n                text: 'menu.diary',\n                link: 'diary.index',\n                needs: ['diary@access'],\n            },\n            {\n                text: 'menu.diaryevents',\n                link: 'diary.events',\n                needs: ['worksitediary@add'],\n            },\n            {\n                text: 'menu.diarycalendar',\n                link: 'diary.calendar',\n                needs: ['diary@access'],\n            },\n            {\n                text: 'menu.diarycombo',\n                link: 'diary.combo',\n                needs: ['diary@access', 'worktime@access'],\n            },\n        ],\n    },\n    {\n        needs: [\n            'products.resource_planning',\n            'userfieldcheck.resourcePlanner||userfieldcheck.showInRP',\n        ],\n        link: ['resource-planning.gantt'],\n        icon: 'move move-LiteratureFilled',\n        text: 'menu.resource-planning',\n        id: 'resource-planning',\n        submenus: [\n            {\n                text: 'report.resource-planning-gantt',\n                link: 'resource-planning.gantt',\n                needs: ['userfieldcheck.resourcePlanner'],\n            },\n            {\n                text: 'report.resource-planning-week-list',\n                link: 'resource-planning.week',\n                needs: ['userfieldcheck.showInRP'],\n            },\n        ],\n    },\n    {\n        needs: [\n            'products.shift_planning',\n            'userfieldcheck.resourcePlanner||userfieldcheck.showInRP',\n        ],\n        link: ['shift-planning.gantt'],\n        icon: 'move move-Calendar',\n        text: 'menu.shift-planning',\n        id: 'shift-planning',\n        submenus: [\n            {\n                text: 'report.shift-planning-gantt',\n                link: 'shift-planning.gantt',\n                needs: ['userfieldcheck.resourcePlanner'],\n            },\n            {\n                text: 'report.shift-planning-week-list',\n                link: 'shift-planning.week',\n                needs: ['userfieldcheck.showInRP'],\n            },\n        ],\n    },\n    {\n        needs: ['presence', 'presence@add||userlevel=2'],\n        link: ['presences'],\n        icon: 'move move-Marker',\n        text: 'menu.presences',\n        id: 'presence',\n        submenus: [\n            {\n                text: 'report.presences',\n                link: 'presences.index',\n            },\n            {\n                text: 'menu.accident',\n                link: 'presences.accident',\n                needs: ['user.id06kort'],\n            },\n            {\n                text: 'menu.report',\n                link: 'presences.report',\n            },\n            {\n                text: 'menu.emp_sums',\n                link: 'presences.employer-sums',\n                needs: ['user.id06kort'],\n            },\n            {\n                text: 'menu.location_report',\n                link: 'presences.location',\n                needs: ['products.entrytracker||products.wirepas'],\n            },\n            {\n                text: 'report.orientations.avi',\n                link: 'presences.avi',\n                needs: [\n                    '!userlevel=1?',\n                    'products.rakentajanpaketti||orientation',\n                    'serviceCountry@fi',\n                ],\n            },\n        ],\n    },\n    {\n        needs: ['abcense@add||userlevel=2', 'worktime', 'modulecontrol.worktimes'],\n        link: ['abcenses'],\n        icon: 'move move-Cup',\n        text: 'menu.abcenses',\n        id: 'absence',\n        submenus: [\n            {\n                text: 'menu.abcenses',\n                link: 'abcenses.index',\n            },\n            {\n                text: 'menu.absence_gantt',\n                link: 'abcenses.gantt',\n            },\n            {\n                text: 'menu.holidays',\n                link: 'abcenses.holidays',\n                needs: ['!tt3', '!customersetting.hide_holidays'],\n            },\n            {\n                text: 'menu.holidaypays',\n                link: 'abcenses.holidaypays',\n                needs: ['modules.holiday_pay', 'flag.holidaypay_v2'],\n            },\n        ],\n    },\n    {\n        //        {text: 'report.export_abcense', link: 'salary.export-abcense', needs: [\"userlevel=2,3,5\", \"export_absence\"]}\n        needs: ['orientation@add'],\n        link: ['orientations.reports'],\n        icon: 'move move-TodoList',\n        text: 'menu.orientations',\n        id: 'orientation',\n        submenus: [\n            {\n                text: 'report.orientations',\n                link: 'orientations.reports',\n            },\n            {\n                text: 'report.orientations.passes',\n                link: 'orientations.passes',\n            },\n            {\n                text: 'report.orientations.inactive-passes',\n                link: 'orientations.inactive-passes',\n            },\n            {\n                text: 'report.orientations.withoutori',\n                link: 'orientations.withoutori',\n                needs: ['user@add', '!userlevel=1'],\n            },\n            {\n                text: 'report.orientations.employeetree',\n                link: 'orientations.employeetree',\n                needs: ['products.orientations_parent', '!userlevel=1'],\n            },\n        ],\n    },\n    {\n        needs: ['tr', 'trnotice@add', '!mvr'],\n        link: ['site_safety.report.tr.graphs'],\n        icon: 'move move-Length',\n        text: 'menu.site_safety',\n        id: 'site-safety',\n        submenus: [\n            {\n                text: 'tr.graphs',\n                link: 'site_safety.report.tr.graphs',\n                needs: ['tr@add'],\n            },\n            {\n                text: 'tr.data',\n                link: 'site_safety.report.tr.data',\n                needs: ['tr@add'],\n            },\n            {\n                text: 'tr.notices',\n                link: 'site_safety.report.tr.notices',\n            },\n            {\n                text: 'menu.site_safety_observation',\n                link: 'site_safety.report.observation',\n                needs: ['site_safety_observation'],\n            },\n            {\n                text: 'menu.site_safety_event',\n                link: 'site_safety.report.event',\n                needs: [\n                    'site_safety_observation',\n                    'site_safety_observation@access',\n                    'site_safety_event@access',\n                ],\n            },\n        ],\n    },\n    {\n        needs: ['mvr', 'trnotice@add', '!tr'],\n        link: ['site_safety.report.mvr.graphs'],\n        icon: 'move move-Humidity',\n        text: 'menu.site_safety',\n        id: 'site-safety',\n        submenus: [\n            {\n                text: 'mvr.graphs',\n                link: 'site_safety.report.mvr.graphs',\n                needs: ['mvr@add'],\n            },\n            {\n                text: 'mvr.data',\n                link: 'site_safety.report.mvr.data',\n                needs: ['mvr@add'],\n            },\n            {\n                text: 'mvr.notices',\n                link: 'site_safety.report.mvr.notices',\n            },\n            {\n                text: 'menu.site_safety_observation',\n                link: 'site_safety.report.observation',\n                needs: ['site_safety_observation'],\n            },\n            {\n                text: 'menu.site_safety_event',\n                link: 'site_safety.report.event',\n                needs: [\n                    'site_safety_observation',\n                    'site_safety_observation@access',\n                    'site_safety_event@access',\n                ],\n            },\n        ],\n    },\n    {\n        needs: ['mvr', 'trnotice@add', 'tr'],\n        link: ['site_safety.report.tr.graphs'],\n        icon: 'move move-Humidity',\n        text: 'menu.site_safety',\n        id: 'site-safety',\n        submenus: [\n            {\n                text: 'tr.graphs',\n                link: 'site_safety.report.tr.graphs',\n                needs: ['tr@add'],\n            },\n            {\n                text: 'tr.data',\n                link: 'site_safety.report.tr.data',\n                needs: ['tr@add'],\n            },\n            {\n                text: 'tr.notices',\n                link: 'site_safety.report.tr.notices',\n            },\n            {\n                text: 'mvr.graphs',\n                link: 'site_safety.report.mvr.graphs',\n                needs: ['mvr@add'],\n            },\n            {\n                text: 'mvr.data',\n                link: 'site_safety.report.mvr.data',\n                needs: ['mvr@add'],\n            },\n            {\n                text: 'mvr.notices',\n                link: 'site_safety.report.mvr.notices',\n            },\n            {\n                text: 'menu.site_safety_observation',\n                link: 'site_safety.report.observation',\n                needs: ['site_safety_observation'],\n            },\n            {\n                text: 'menu.site_safety_event',\n                link: 'site_safety.report.event',\n                needs: [\n                    'site_safety_observation',\n                    'site_safety_observation@access',\n                    'site_safety_event@access',\n                ],\n            },\n        ],\n    },\n    {\n        needs: ['skyddsrond', 'notice@add'],\n        link: ['skyddsronds.dashboard'],\n        icon: 'move move-Length',\n        text: 'menu.skyddsrond',\n        id: 'skyddsrond',\n        submenus: [\n            {\n                text: 'skyddsronds.dashboard',\n                link: 'skyddsronds.dashboard',\n            },\n            {\n                text: 'skyddsronds.report',\n                link: 'skyddsronds.report',\n                needs: ['skyddsrond@add'],\n            },\n            {\n                text: 'skyddsronds.notices',\n                link: 'skyddsronds.notices',\n            },\n        ],\n    },\n    {\n        needs: ['worktask@edit', 'userlevel=1,4'],\n        link: ['worktasks.list'],\n        icon: 'move move-Checklist',\n        text: 'menu.worktask',\n        id: 'worktask',\n        submenus: [\n            {\n                text: 'menu.worktask',\n                link: ['worktasks.list'],\n                needs: ['worktask@edit', 'userlevel=1,4'],\n                showMobile: true,\n            },\n            {\n                //{text: \"menu.add_presence\", link: ['presences.add'], needs: ['presence@add'], showMobile: true}\n                //{text: \"menu.clockcard\", link: ['timetracker.timecard.add'], needs: ['userlevel=1,4', 'worktime', 'worktime.starttime@disabled||products.timetracker_hybrid', 'modulecontrol.worktimes'], showMobile: true}\n                //{text: \"menu.add_worktime\", link: ['timetracker.add'], needs: ['userlevel=1,4', 'worktime@add', '!worktime.starttime@disabled', '!products.timetracker_hybrid', 'modulecontrol.worktimes'], showMobile: true}\n                //{text: \"menu.add_worktime\", link: ['timetracker.add'], needs: ['!userlevel=1,4', 'worktime@add', 'modulecontrol.worktimes'], showMobile: true}\n                text: 'report.worktasks.calendar',\n                link: 'worktasks.calendar',\n            },\n            {\n                text: 'report.worktasks.report',\n                link: 'worktasks.report',\n            },\n        ],\n    },\n    {\n        needs: ['worktask@add||worktask@access', '!userlevel=1,4'],\n        link: ['worktasks.calendar'],\n        icon: 'move move-Checklist',\n        text: 'menu.worktask',\n        id: 'worktask',\n        submenus: [\n            {\n                text: 'menu.worktask',\n                link: ['worktasks.list'],\n                needs: ['worktask@edit'],\n                showMobile: true,\n            },\n            {\n                text: 'report.worktasks.calendar',\n                link: 'worktasks.calendar',\n            },\n            {\n                text: 'report.worktasks.report',\n                link: 'worktasks.report',\n            },\n            {\n                text: 'report.worktasks.gantt',\n                link: 'worktasks.gantt',\n            },\n        ],\n    },\n    {\n        needs: ['materiallog@add', '!userlevel=1?'],\n        link: ['materiallog.report'],\n        icon: 'move move-Checklist',\n        text: 'menu.materiallog',\n        id: 'material',\n        submenus: [\n            {\n                text: 'report.materials.index',\n                link: 'materiallog.report',\n            },\n            {\n                text: 'report.materials.groups',\n                link: 'materiallog.groups',\n                needs: ['products.materialgroups', 'materialgroup@access'],\n            },\n            {\n                text: 'report.materials.list',\n                link: 'materiallog.list',\n                needs: ['products.materialgroups', 'materialtype@access'],\n            },\n        ],\n    },\n    {\n        needs: ['multitask@add'],\n        link: ['multitask.report'],\n        icon: 'move move-Checklist',\n        text: 'menu.multitask',\n        id: 'multitask',\n    },\n    {\n        needs: ['user@add'],\n        link: ['users'],\n        icon: 'move move-Users',\n        text: 'menu.users',\n        id: 'users',\n        submenus: [\n            {\n                text: 'report.users.index',\n                link: 'users.index',\n            },\n            {\n                text: 'report.users.id06card',\n                link: 'users.card',\n                needs: ['user.id06valid'],\n            },\n            {\n                text: 'report.users.subcontractor',\n                link: 'users.subcontractor',\n                needs: ['user.taxnumber'],\n            },\n            {\n                text: 'report.users.linked_users',\n                link: 'users.linked',\n            },\n            {\n                text: 'report.users.removed',\n                link: 'users.removed',\n            },\n            {\n                text: 'report.users.inactive',\n                link: 'users.inactive',\n            },\n            {\n                text: 'report.users.saldos',\n                link: 'users.saldos',\n                needs: ['products.saldo'],\n            },\n            {\n                text: 'report.users.saldos',\n                link: 'users.saldos_ad',\n                needs: ['!products.saldo', 'products.mini_entry'],\n            },\n            {\n                text: 'report.users.saldocalendar',\n                link: 'users.saldocalendar',\n                needs: ['products.saldo'],\n            },\n            {\n                text: 'report.users.saldohistory',\n                link: 'users.saldohistory',\n                needs: ['products.saldo', 'saldodeducter@access'],\n            },\n            {\n                text: 'report.users.firecard',\n                link: 'firecards.index',\n                needs: ['products.firecard'],\n            },\n            {\n                text: 'report.users.cardregister',\n                link: 'users.cardregister',\n                needs: ['products.cardregister'],\n            },\n            {\n                text: 'report.users.superior_replacements',\n                link: 'users.superior_replacements',\n                needs: ['products.superior_replacement', 'userlevel=5'],\n            },\n            {\n                text: 'report.users.worktimegroup_changes',\n                link: 'users.worktimegroup_changes',\n                needs: ['products.worktimegroup_changes', 'userlevel=5'],\n            },\n        ],\n    },\n    {\n        needs: ['project@add'],\n        link: ['projects'],\n        icon: 'move move-GeoFence',\n        text: 'menu.projects',\n        id: 'projects',\n        submenus: [\n            {\n                text: 'report.projects.show_all',\n                link: 'projects.index',\n            },\n            {\n                text: 'report.projects.show_closed',\n                link: 'projects.removed',\n            },\n            {\n                text: 'report.projects.inactive',\n                link: 'projects.inactive',\n                needs: ['userlevel=5', 'presence||worktime'],\n            },\n            {\n                text: 'report.projects.rfiddevices',\n                link: 'projects.rfiddevices',\n                needs: ['userlevel=5', 'modules.famoco'],\n            },\n            {\n                text: 'report.projects.report',\n                link: 'projects.report',\n                needs: ['userlevel=5', 'abcense', 'worktime'],\n            },\n            {\n                text: 'report.projects.tasks',\n                link: 'projects.tasks',\n                needs: ['userlevel=6,5', 'task'],\n            },\n        ],\n    },\n    {\n        needs: ['products.nova_costcenter', 'novacostcenter@access'],\n        link: ['nova_costcenters'],\n        icon: 'move move-GeoFence',\n        text: 'menu.nova_costcenters',\n        id: 'nova_costcenters',\n    },\n    {\n        needs: ['lockgroup@access', 'lockpermission@access'],\n        link: ['worksite-areas.report'],\n        icon: 'move move-Password',\n        text: 'menu.worksite-areas',\n        id: 'worksite-areas',\n        submenus: [\n            {\n                text: 'report.worksite-areas.report',\n                link: 'worksite-areas.report',\n            },\n            {\n                text: 'report.worksite-areas.log',\n                link: 'worksite-areas.log-report',\n            },\n        ],\n    },\n    {\n        needs: ['employer@add'],\n        link: ['employers'],\n        icon: 'move move-AdministratorFilled',\n        text: 'menu.employers',\n        id: 'employers',\n        submenus: [\n            {\n                text: 'employer.list',\n                link: 'employers.index',\n            },\n            {\n                text: 'employer.tree',\n                link: 'employers.tree',\n                needs: [\n                    'employer.parent',\n                    '!products.generic_timetracker',\n                    '!flag.hide_employer_tree',\n                ],\n            },\n            {\n                text: 'employer.check',\n                link: 'employers.check',\n                needs: ['employer.tv_status', '!products.vg_reliable_partner_disabled'],\n            },\n            {\n                text: 'employer.removed',\n                link: 'employers.removed',\n            },\n            {\n                text: 'employer.inactive',\n                link: 'employers.inactive',\n            },\n        ],\n    },\n    {\n        needs: ['transaction@access'],\n        link: ['machines.transactions'],\n        icon: 'move move-Hammer',\n        text: 'menu.machines',\n        id: 'machines',\n        submenus: [\n            {\n                text: 'machines.transactions',\n                link: 'machines.transactions',\n                needs: ['transaction@access'],\n            },\n            {\n                text: 'machines.transactions_history',\n                link: 'machines.transactions-history',\n                needs: ['transaction@access'],\n            },\n            {\n                text: 'machines.machine',\n                link: 'machines.machine',\n                needs: ['tooltype@access'],\n            },\n            {\n                text: 'machines.map',\n                link: 'machines.map',\n                needs: ['transaction@access'],\n            },\n            {\n                text: 'machines.prices',\n                link: 'machines.prices',\n                needs: ['transaction@access'],\n            },\n        ],\n    },\n    {\n        needs: ['worktime', 'userlevel=2,5'],\n        link: ['salary'],\n        icon: 'move move-Money',\n        text: 'menu.salary',\n        id: 'salary',\n        submenus: [\n            {\n                text: 'report.export_salary',\n                link: 'salary.export-salary',\n                needs: ['userlevel=2,3,5'],\n            },\n            {\n                text: 'report.export_abcense',\n                link: 'salary.export-abcense',\n                needs: ['userlevel=2,3,5', 'export_absence'],\n            },\n            {\n                text: 'settings.custom-export',\n                link: 'salary.custom-export',\n                needs: ['products.custom_export'],\n            },\n            {\n                text: 'settings.custom-export',\n                link: 'salary.custom-export-ad',\n                needs: ['products.mini_entry', '!products.custom_export'],\n            },\n            {\n                text: 'settings.wage_period',\n                link: 'salary.salaryperiods',\n            },\n            {\n                text: 'settings.salarytype',\n                link: 'salary.salarytypes',\n                needs: ['salarytype', '!modules.salarytype_v2'],\n            },\n            {\n                text: 'settings.workday-calendar',\n                link: 'salary.workday-calendar',\n                needs: ['!mobileView'],\n            },\n        ],\n    },\n    {\n        needs: ['worktime||products.admintool', '!userlevel=4'],\n        link: ['thereport'],\n        icon: 'move move-PieChart',\n        text: 'menu.comboreport',\n        id: 'own-report',\n    },\n    {\n        /*\n    AT2 LINKS\n    */\n        needs: ['products.admintool'],\n        link: ['forms.form-report', 'customer'],\n        icon: 'move move-Time',\n        text: 'menu.admintool',\n        submenus: [\n            {\n                text: 'menu.customers',\n                link: ['forms.form-report', 'customer'],\n                needs: ['customer@access'],\n            },\n            {\n                text: 'menu.products',\n                link: ['forms.form-report', 'customerproduct'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.bills',\n                link: ['forms.form-report', 'bill'],\n                needs: ['bill@access'],\n            },\n            {\n                text: 'menu.rcbills',\n                link: ['forms.form-report', 'rcbill'],\n                needs: ['rcbill@access'],\n            },\n            {\n                text: 'menu.campaigns',\n                link: ['forms.form-report', 'campaign'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.productcampaigns',\n                link: ['forms.form-report', 'productcampaign'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.customercampaigns',\n                link: ['forms.form-report', 'customercampaign'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.promocodes',\n                link: ['forms.form-report', 'promocode'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.timecleandevices',\n                link: ['forms.form-report', 'timecleandevice'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.invoices',\n                link: ['forms.custom-report', 'invoices'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.invoicesat2.netvisor',\n                link: ['forms.custom-report', 'invoicesat2Netvisor'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.invoicesat2',\n                link: ['forms.custom-report', 'invoicesat2'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.invoicesat1',\n                link: ['forms.custom-report', 'invoicesat1'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.invoicesat2legacy',\n                link: ['forms.custom-report', 'invoicesat2legacy'],\n                needs: ['userlevel=5', 'development'],\n            },\n            {\n                text: 'menu.invoicesat1legacy',\n                link: ['forms.custom-report', 'invoicesat1legacy'],\n                needs: ['userlevel=5', 'development'],\n            },\n            {\n                text: 'menu.comissions',\n                link: ['forms.custom-report', 'comissions'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.activity',\n                link: ['forms.custom-report', 'activity'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.billinginfomissing',\n                link: ['forms.custom-report', 'billinginfomissing'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.subcontractor',\n                link: ['forms.form-report', 'subcontractor'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.billingrun',\n                link: ['forms.form-report', 'billingrun'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.billinginfo',\n                link: ['forms.form-report', 'billinginfo'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.promomessages',\n                link: ['forms.form-report', 'promomessage'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.tos',\n                link: ['forms.custom-report', 'tos'],\n                needs: ['userlevel=5'],\n            },\n        ],\n    },\n    {\n        needs: ['products.admintool', 'userlevel=5'],\n        link: ['admintool.reports.bi.timecleanlog'],\n        icon: 'move move-Timeclean',\n        text: 'menu.timecleanlog',\n        submenus: [],\n    },\n    {\n        needs: ['products.admintool', 'userlevel=5'],\n        link: ['admintool.reports.featureflags'],\n        icon: 'move move-Toggle',\n        text: 'menu.featureflags',\n        submenus: [],\n    },\n    {\n        needs: ['products.admintool', 'userlevel=5'],\n        link: ['groups'],\n        icon: 'move move-Users',\n        text: 'menu.groups',\n        submenus: [],\n    },\n    {\n        /*\n    AT2 LINKS END\n    */\n        needs: ['userlevel=5'],\n        link: ['settings'],\n        icon: 'move move-Settings',\n        text: 'menu.settings',\n        id: 'settings',\n        submenus: [\n            {\n                text: 'settings.general',\n                link: 'settings.general-v2',\n            },\n            {\n                text: 'settings.notifications',\n                link: 'settings.notificationpanel',\n                needs: ['!flag.notification-settings-v2'],\n            },\n            {\n                text: 'settings.integrations',\n                link: 'settings.integrations',\n                needs: ['products.admintool'],\n            },\n            {\n                //{text: \"settings.pl\", link: 'settings.pl', needs: [\"presence\"]}\n                text: 'settings.measurement_custom',\n                link: 'settings.measurement_custom',\n                needs: ['products.measurement_custom'],\n            },\n            {\n                text: 'settings.forms',\n                link: 'settings.forms',\n                subroutes: ['settings.forms.form'],\n                needs: ['!products.mini_entry'],\n            },\n            {\n                text: 'settings.products',\n                link: 'settings.products',\n                needs: ['!products.mini_entry'],\n            },\n            {\n                text: 'settings.billing',\n                link: 'settings.billing',\n                needs: ['userlevel=5', 'products', '!products.generic_timetracker'],\n            },\n            {\n                text: 'settings.history',\n                link: 'settings.history',\n            },\n        ],\n    },\n    {\n        //{text: \"settings.activitylog\", link: 'settings.activitylog', needs: [\"userlevel=5\"]}\n        needs: ['!customersetting.new_messageboard', '!products.admintool'],\n        link: ['messageboard'],\n        icon: 'move move-Message',\n        text: 'menu.messageboard',\n        id: 'messageboard',\n    },\n    {\n        needs: ['customersetting.new_messageboard', '!products.admintool'],\n        link: ['messages.list'],\n        icon: 'move move-Message',\n        text: 'menu.messages',\n        id: 'messages',\n        submenus: [\n            {\n                text: 'menu.messages',\n                link: 'messages.list',\n            },\n            {\n                text: 'menu.messages.email-approvals',\n                link: 'messages.email-approvals',\n                needs: ['email_approval', 'userlevel=5,6', 'email_approval@access'],\n            },\n        ],\n    },\n    {\n        needs: ['products.mapon', 'userlevel=5'],\n        link: ['mapon'],\n        icon: 'move move-ComboChart',\n        text: 'menu.mapon',\n        id: 'mapon',\n    },\n    {\n        needs: ['ccbutton', 'userlevel=5'],\n        link: ['integrations'],\n        icon: 'move move-puzzle',\n        text: 'menu.integrations',\n        id: 'integrations',\n        submenus: [\n            {\n                text: 'menu.integrations.run',\n                link: 'integrations.index',\n            },\n            {\n                text: 'menu.integrations.report',\n                link: 'integrations.report',\n            },\n            {\n                text: 'menu.integrations.list',\n                link: 'integrations.list',\n                needs: ['development'],\n            },\n            {\n                text: 'menu.integrations.fondionerrors',\n                link: 'integrations.fondionerrors',\n                needs: ['products.fondion'],\n            },\n        ],\n    },\n    {\n        needs: ['development'],\n        link: ['development'],\n        icon: 'move move-Settings',\n        text: 'development',\n        id: 'development',\n        submenus: [\n            {\n                text: 'development',\n                link: 'development.index',\n            },\n            {\n                text: 'Service validator',\n                link: 'development.servicevalidator',\n            },\n            {\n                text: 'cron',\n                link: 'development.cron',\n            },\n            {\n                text: 'data creator',\n                link: 'development.datacreator',\n                needs: ['devMode'],\n            },\n            {\n                text: 'react',\n                link: 'development.react',\n            },\n            {\n                text: 'integrations',\n                link: 'development.integrations',\n            },\n            {\n                text: 'notifications',\n                link: 'development.notifications',\n            },\n            {\n                text: 'sms logs',\n                link: 'development.smslogs',\n            },\n            {\n                text: 'functions',\n                link: 'development.functions',\n            },\n            {\n                text: 'own reports',\n                link: 'development.ownreports',\n            },\n            {\n                text: 'own roles',\n                link: 'development.ownroles',\n            },\n            {\n                text: 'products',\n                link: 'development.products',\n            },\n            {\n                text: 'rollock',\n                link: 'development.rollock',\n                needs: ['products.rollock'],\n            },\n            {\n                //{text: \"activity\", link: 'development.activitylog'}\n                text: 'import',\n                link: 'development.import',\n            },\n        ],\n    },\n];\n\naddLinkList = [\n    {\n        // if modal-add-form-worktime\n        icon: 'move move-Time',\n        text: 'menu.clockcard',\n        link: 'modal',\n        query: 'timecard',\n        id: 'worktime',\n        needs: [\n            'userlevel=1?',\n            'worktime',\n            'worktime.starttime@disabled||products.timetracker_hybrid',\n            'modulecontrol.worktimes',\n            'flag.modal-add-form-worktime',\n        ],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n                modal: 'presence',\n            },\n            {\n                text: 'menu.clockcard',\n                link: ['timetracker.timecard.add'],\n                needs: [\n                    'userlevel=1?',\n                    'worktime',\n                    'worktime.starttime@disabled||products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                modal: 'timecard',\n            },\n        ],\n    },\n    {\n        icon: 'move move-Time',\n        text: 'menu.add_worktime',\n        link: 'modal',\n        query: 'worktime',\n        id: 'worktime',\n        needs: [\n            'userlevel=1?',\n            'worktime@add',\n            '!worktime.starttime@disabled',\n            '!products.timetracker_hybrid',\n            'modulecontrol.worktimes',\n            'flag.modal-add-form-worktime',\n        ],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n                modal: 'presence',\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: [\n                    'userlevel=1?',\n                    'worktime@add',\n                    '!worktime.starttime@disabled',\n                    '!products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                modal: 'worktime',\n            },\n        ],\n    },\n    {\n        icon: 'move move-Time',\n        text: 'menu.add_worktime',\n        link: 'modal',\n        query: 'worktime',\n        id: 'worktime',\n        needs: [\n            '!userlevel=1?',\n            'worktime@add',\n            'modulecontrol.worktimes',\n            'flag.modal-add-form-worktime',\n        ],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n                modal: 'presence',\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: ['!userlevel=1?', 'worktime@add', 'modulecontrol.worktimes'],\n                modal: 'worktime',\n            },\n            {\n                text: 'header.path.add.timecard',\n                link: ['timetracker.timecard.add'],\n                needs: [\n                    '!userlevel=1?',\n                    'worktime',\n                    'products.timetracker_clockcard||products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                modal: 'timecard',\n            },\n        ],\n    },\n    {\n        // else\n        icon: 'move move-Time',\n        text: 'menu.clockcard',\n        link: ['timetracker.timecard.add'],\n        id: 'worktime',\n        needs: [\n            'userlevel=1?',\n            'worktime',\n            'worktime.starttime@disabled||products.timetracker_hybrid',\n            'modulecontrol.worktimes',\n            '!flag.modal-add-form-worktime',\n        ],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n            },\n            {\n                text: 'menu.clockcard',\n                link: ['timetracker.timecard.add'],\n                needs: [\n                    'userlevel=1?',\n                    'worktime',\n                    'worktime.starttime@disabled||products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n            },\n        ],\n    },\n    {\n        icon: 'move move-Time',\n        text: 'menu.add_worktime',\n        link: ['timetracker.add'],\n        id: 'worktime',\n        needs: [\n            'userlevel=1?',\n            'worktime@add',\n            '!worktime.starttime@disabled',\n            '!products.timetracker_hybrid',\n            'modulecontrol.worktimes',\n            '!flag.modal-add-form-worktime',\n        ],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: [\n                    'userlevel=1?',\n                    'worktime@add',\n                    '!worktime.starttime@disabled',\n                    '!products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n            },\n        ],\n    },\n    {\n        icon: 'move move-Time',\n        text: 'menu.add_worktime',\n        link: ['timetracker.add'],\n        id: 'worktime',\n        needs: [\n            '!userlevel=1?',\n            'worktime@add',\n            'modulecontrol.worktimes',\n            '!flag.modal-add-form-worktime',\n        ],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: ['!userlevel=1?', 'worktime@add', 'modulecontrol.worktimes'],\n            },\n            {\n                text: 'header.path.add.timecard',\n                link: ['timetracker.timecard.add'],\n                needs: [\n                    '!userlevel=1?',\n                    'worktime',\n                    'products.timetracker_clockcard||products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n            },\n        ],\n    },\n    {\n        icon: 'move move-Mileage',\n        text: 'menu.toggle_drive',\n        link: ['drivinglog.toggle'],\n        id: 'drivinglog',\n        needs: ['drive@add','!userlevel=9'],\n    },\n    {\n        //if flag\n        icon: 'move move-LiteratureFilled',\n        text: 'menu.add_worksitediary',\n        link: 'modal',\n        query: 'worksitediary',\n        id: 'worksitediary',\n        needs: ['worksitediary@add', 'flag.ember-movenium-form-add-worksitediary'],\n    },\n    {\n        //else\n        icon: 'move move-LiteratureFilled',\n        text: 'menu.add_worksitediary',\n        link: ['worksitediary.add'],\n        id: 'worksitediary',\n        needs: ['worksitediary@add', '!flag.ember-movenium-form-add-worksitediary'],\n    },\n    {\n        //if flag\n        icon: 'move move-LiteratureFilled',\n        text: 'menu.diary',\n        link: 'modal',\n        query: 'diary',\n        id: 'diary',\n        needs: ['diary@add', 'flag.ember-movenium-form-add-diary'],\n    },\n    {\n        //else\n        icon: 'move move-LiteratureFilled',\n        text: 'menu.diary',\n        link: ['diary.report'],\n        id: 'diary',\n        needs: ['diary@add', '!flag.ember-movenium-form-add-diary'],\n    },\n    {\n        icon: 'move move-Cup',\n        text: 'menu.add_abcense',\n        link: 'modal',\n        query: 'abcense',\n        id: 'absence',\n        needs: ['abcense@add', 'worktime', 'modulecontrol.worktimes'],\n        submenus: [\n            {\n                text: 'menu.add_abcense_multiple',\n                link: ['abcenses.add-multiple'],\n                needs: ['abcense@add', 'worktime', 'modulecontrol.worktimes'],\n            },\n            {\n                text: 'menu.add_abcense_single',\n                link: ['abcenses.add'],\n                needs: ['abcense@add', 'worktime', 'modulecontrol.worktimes'],\n            },\n        ],\n    },\n    {\n        icon: 'move move-Signature',\n        text: 'menu.add_pass',\n        link: ['pass.add'],\n        id: 'pass',\n        needs: ['orientation@add'],\n    },\n    {\n        // Swedish Presence Links\n        // if no flag (or userlevel=1)\n        icon: 'move move-Marker',\n        text: 'menu.add_presence',\n        link: ['presences.add'],\n        id: 'presence',\n        needs: ['presence@add', 'serviceCountry@se', '!flag.modal-add-form-worktime||userlevel=1?'],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n                showMobile: true,\n            },\n            {\n                text: 'menu.clockcard',\n                link: ['timetracker.timecard.add'],\n                needs: [\n                    'userlevel=1',\n                    'worktime',\n                    'worktime.starttime@disabled||products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                showMobile: true,\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: [\n                    'userlevel=1',\n                    'worktime@add',\n                    '!worktime.starttime@disabled',\n                    '!products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                showMobile: true,\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: ['!userlevel=1', 'worktime@add', 'modulecontrol.worktimes'],\n                showMobile: true,\n            },\n        ],\n    },\n    {\n        //flag\n        icon: 'move move-Marker',\n        text: 'menu.add_presence',\n        link: 'modal',\n        query: 'presence',\n        id: 'presence',\n        needs: [\n            'presence@add',\n            'serviceCountry@se',\n            'flag.modal-add-form-worktime',\n            '!userlevel=1?',\n        ],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n                showMobile: true,\n                modal: 'presence',\n            },\n            {\n                text: 'menu.clockcard',\n                link: ['timetracker.timecard.add'],\n                needs: [\n                    'userlevel=1',\n                    'worktime',\n                    'worktime.starttime@disabled||products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                showMobile: true,\n                modal: 'timecard',\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: [\n                    'userlevel=1',\n                    'worktime@add',\n                    '!worktime.starttime@disabled',\n                    '!products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                showMobile: true,\n                modal: 'timecard',\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: ['!userlevel=1', 'worktime@add', 'modulecontrol.worktimes'],\n                showMobile: true,\n                modal: 'worktime',\n            },\n        ],\n    },\n    {\n        // Finnish Presence Links for Workers\n        // if no flag\n        icon: 'move move-Marker',\n        text: 'menu.add_presence',\n        link: ['presences.add'],\n        id: 'presence',\n        needs: [\n            'presence@add',\n            'serviceCountry@fi',\n            'userlevel=1?',\n            '!flag.modal-add-form-worktime',\n        ],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n                showMobile: true,\n            },\n            {\n                text: 'menu.clockcard',\n                link: ['timetracker.timecard.add'],\n                needs: [\n                    'userlevel=1',\n                    'worktime',\n                    'worktime.starttime@disabled||products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                showMobile: true,\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: [\n                    'userlevel=1',\n                    'worktime@add',\n                    '!worktime.starttime@disabled',\n                    '!products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                showMobile: true,\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: ['!userlevel=1', 'worktime@add', 'modulecontrol.worktimes'],\n                showMobile: true,\n            },\n        ],\n    },\n    {\n        // flag\n        icon: 'move move-Marker',\n        text: 'menu.add_presence',\n        link: 'modal',\n        query: 'presence',\n        id: 'presence',\n        needs: [\n            'presence@add',\n            'serviceCountry@fi',\n            'userlevel=1?',\n            'flag.modal-add-form-worktime',\n        ],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n                showMobile: true,\n                modal: 'presence',\n            },\n            {\n                text: 'menu.clockcard',\n                link: ['timetracker.timecard.add'],\n                needs: [\n                    'userlevel=1',\n                    'worktime',\n                    'worktime.starttime@disabled||products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                showMobile: true,\n                modal: 'timecard',\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: [\n                    'userlevel=1',\n                    'worktime@add',\n                    '!worktime.starttime@disabled',\n                    '!products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                showMobile: true,\n                modal: 'worktime',\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: ['!userlevel=1', 'worktime@add', 'modulecontrol.worktimes'],\n                showMobile: true,\n                modal: 'worktime',\n            },\n        ],\n    },\n    {\n        // Finnish Presence Links for non Workers\n        icon: 'move move-Marker',\n        text: 'menu.add_presence',\n        link: 'modal',\n        query: 'presence',\n        id: 'presence',\n        needs: ['presence@add', 'serviceCountry@fi', '!userlevel=1?'],\n    },\n    {\n        icon: 'move move-TodoList',\n        text: 'menu.add_orientation',\n        link: ['orientations.add'],\n        id: 'orientation',\n        needs: ['orientation@add'],\n    },\n    {\n        icon: 'move move-Length',\n        text: 'menu.add_tr',\n        link: ['site_safety.measurement.add', 'add', 'tr'],\n        id: 'tr',\n        needs: ['tr@add'],\n    },\n    {\n        icon: 'move move-Humidity',\n        text: 'menu.add_mvr',\n        link: ['site_safety.measurement.add', 'add', 'mvr'],\n        id: 'mvr',\n        needs: ['mvr@add'],\n    },\n    {\n        icon: 'move move-Length',\n        text: 'menu.add_skyddsrond',\n        link: ['skyddsronds.add'],\n        id: 'skyddsrond',\n        needs: ['skyddsrond@add'],\n    },\n    {\n        icon: 'move move-Note',\n        text: 'menu.add_notice',\n        link: ['site_safety.addnotice'],\n        id: 'trnotice',\n        needs: [\n            'trnotice@add',\n            'products.measurement_tr||products.measurement_mvr',\n            '!userlevel=1',\n        ],\n    },\n    {\n        icon: 'move move-Note',\n        text: 'menu.add_notice',\n        link: 'modal',\n        query: 'notice',\n        id: 'notice',\n        needs: ['notice@add', '!userlevel=1'],\n    },\n    {\n        icon: 'move move-Checklist',\n        text: 'menu.add_worktask',\n        link: 'modal',\n        query: 'worktask',\n        id: 'worktask',\n        needs: ['worktask@add'],\n    },\n    {\n        icon: 'move move-Users',\n        text: 'menu.add_user',\n        link: ['users.add'],\n        id: 'user',\n        needs: ['user@add'],\n    },\n    {\n        //if flag\n        icon: 'move move-GeoFence',\n        text: 'menu.add_project',\n        link: 'modal',\n        query: 'project',\n        id: 'project',\n        needs: ['project@add', 'flag.ember-movenium-form-add-projects'],\n    },\n    {\n        //else\n        icon: 'move move-GeoFence',\n        text: 'menu.add_project',\n        link: ['projects.add'],\n        id: 'project',\n        needs: ['project@add', '!flag.ember-movenium-form-add-projects'],\n    },\n    {\n        icon: 'move move-Hammer',\n        text: 'menu.add_transaction',\n        link: ['machines.transaction.project'],\n        id: 'transaction',\n        needs: ['transaction@add'],\n    },\n    {\n        icon: 'move move-Hammer',\n        text: 'menu.machine',\n        link: 'modal',\n        query: 'tooltype',\n        id: 'tooltype',\n        needs: ['tooltype@add'],\n    },\n    {\n        icon: 'move move-GeoFence',\n        text: 'menu.give_magickey',\n        link: ['projects.magickey'],\n        id: 'magickey',\n        needs: ['!products.generic_timetracker'],\n    },\n    {\n        //if ember-movenium-form-add-employers flag\n        icon: 'move move-AdministratorFilled',\n        text: 'menu.add_employer',\n        link: 'modal',\n        query: 'employer',\n        id: 'employer',\n        needs: ['employer@add', 'flag.ember-movenium-form-add-employers'],\n    },\n    {\n        //else\n        icon: 'move move-AdministratorFilled',\n        text: 'menu.add_employer',\n        link: ['employers.add'],\n        id: 'employer',\n        needs: ['employer@add', '!flag.ember-movenium-form-add-employers'],\n    },\n    {\n        icon: 'move move-Message',\n        text: 'menu.add_message',\n        link: ['messageboard.add'],\n        id: 'messageboard',\n        needs: ['!customersetting.new_messageboard', 'userlevel=5', '!products.admintool'],\n    },\n    {\n        icon: 'move move-Message',\n        text: 'menu.add_message',\n        link: ['messages.add'],\n        id: 'message',\n        needs: [\n            'customersetting.new_messageboard',\n            'userlevel=5||userlevel=6',\n            '!products.admintool',\n        ],\n    },\n    {\n        //{text: \"menu.send_skatteverket\", link: ['send_skatteverket'], needs: ['userlevel=5','presence']}\n        icon: 'move move-Users',\n        text: 'menu.invite_users',\n        link: ['invite-users'],\n        id: 'invite-users',\n        needs: ['userlevel=2,3,4,5,6', '!products.generic_timetracker'],\n    },\n    {\n        // AT2 LINKS\n        text: 'menu.add_product',\n        link: ['forms.form-add', 'customerproduct'],\n        id: 'product',\n        needs: ['products.admintool', 'customerproduct@add'],\n    },\n    {\n        text: 'menu.add_campaign',\n        link: ['forms.form-add', 'campaign'],\n        id: 'campaign',\n        needs: ['products.admintool', 'campaign@add'],\n    },\n    {\n        text: 'menu.add_productcampaign',\n        link: ['forms.form-add', 'productcampaign'],\n        id: 'productcampaign',\n        needs: ['products.admintool', 'productcampaign@add'],\n    },\n    {\n        text: 'menu.add_customercampaign',\n        link: ['forms.form-add', 'customercampaign'],\n        id: 'customercampaign',\n        needs: ['products.admintool', 'customercampaign@add'],\n    },\n    {\n        text: 'menu.add_promocode',\n        link: ['forms.form-add', 'promocode'],\n        id: 'promocode',\n        needs: ['products.admintool', 'promocode@add'],\n    },\n    {\n        text: 'menu.add_billrow',\n        link: ['forms.form-add', 'bill'],\n        id: 'billrow',\n        needs: ['products.admintool', 'bill@add', 'development', '!userlevel=7,8'],\n    },\n    {\n        text: 'menu.add_rcbill',\n        link: ['forms.form-add', 'rcbill'],\n        id: 'rcbill',\n        needs: ['products.admintool', 'rcbill@add', 'development', '!userlevel=7,8'],\n    },\n    {\n        text: 'menu.add_timecleandevice',\n        link: 'modal',\n        query: 'timecleandevice',\n        id: 'timecleandevice',\n        needs: ['products.admintool', 'timecleandevice@add'],\n    },\n    {\n        text: 'menu.add_promomessage',\n        link: ['forms.form-add', 'promomessage'],\n        id: 'promomessage',\n        needs: ['products.admintool', 'promomessage@add'],\n    },\n    {\n        text: 'menu.createservice',\n        link: ['admintool.createservice'],\n        id: 'createservice',\n        needs: ['products.admintool'],\n    },\n    {\n        text: 'menu.at_billing',\n        link: ['admintool.billing'],\n        id: 'atbilling',\n        needs: ['products.admintool', 'bill@access', '!userlevel=7'],\n    },\n    {\n        text: 'menu.add_group',\n        link: 'modal',\n        query: 'group',\n        id: 'group',\n        needs: ['products.admintool', 'userlevel=5'],\n    },\n    {\n        // AT2 LINKS END\n        icon: 'move move-Law',\n        text: 'menu.add_taxman_contract',\n        id: 'taxman_contract',\n        link: ['taxman.contract-list.add'],\n        needs: ['userlevel=5', 'urakkaraportointi'],\n    },\n    {\n        icon: 'move move-GeoFence',\n        text: 'menu.skv_number',\n        id: 'skv_number',\n        link: 'https://www.skatteverket.se/foretag/etjansterochblanketter/allaetjanster/tjanster/seanmalandraochavanmalbyggarbetsplatser.4.309a41aa1672ad0c8372766.html',\n        needs: ['userlevel=5', 'products.personalliggareandid06'],\n    },\n    {\n        icon: 'move move-LiteratureFilled',\n        text: 'menu.worksitediary.report.add.basic-info',\n        id: 'worksitediary-info',\n        link: ['worksitediary.report.first'],\n        needs: ['diaryreport@add'],\n    },\n    {\n        // if ember-movenium-form-add-siteSafetyObservation flag\n        icon: 'move move-Note',\n        text: 'menu.add.site_safety_observation',\n        link: 'modal',\n        id: 'site_safety_observation',\n        query: 'site_safety_observation',\n        needs: ['site_safety_observation', 'flag.ember-movenium-form-add-siteSafetyObservation'],\n    },\n    {\n        //else\n        icon: 'move move-Note',\n        text: 'menu.add.site_safety_observation',\n        link: ['site_safety.observation.add'],\n        id: 'site_safety_observation',\n        needs: ['site_safety_observation', '!flag.ember-movenium-form-add-siteSafetyObservation'],\n    },\n    {\n        icon: 'move move-Note',\n        text: 'menu.add.site_safety_event',\n        link: 'modal',\n        query: 'site_safety_event',\n        id: 'site_safety_event',\n        needs: ['site_safety_event', 'site_safety_event@add'],\n    },\n    {\n        icon: 'move move-Note',\n        text: 'menu.add.firecard',\n        link: ['firecards.add'],\n        id: 'firecard',\n        needs: ['firecard@add'],\n    },\n    {\n        icon: 'move move-Marker',\n        text: 'menu.add_card',\n        link: 'modal',\n        query: 'card',\n        id: 'card',\n        needs: ['card@add', 'userlevel=1?'],\n    },\n    {\n        icon: 'move move-Checklist',\n        text: 'menu.add.task',\n        link: 'modal',\n        query: 'task',\n        id: 'task',\n        needs: ['task@add', 'userlevel=6,5'],\n    },\n    {\n        icon: 'move move-qr-code',\n        text: 'menu.add.qrcode',\n        link: 'modal',\n        query: 'qrcode',\n        id: 'qrcode',\n        needs: ['products.qrcode'],\n    },\n    {\n        icon: 'move move-puzzle',\n        text: 'menu.add.integration',\n        link: 'modal',\n        query: 'ccbutton',\n        id: 'ccbutton',\n        needs: ['ccbutton', 'development'],\n    },\n];\n\ndefaultFirstPages = [\n    {\n        route: 'forms.form-report@customer',\n        needs: ['products.admintool'],\n    },\n    {\n        route: 'presences.add',\n        needs: ['userlevel=1', 'presence'],\n    },\n    {\n        route: 'my-sites',\n        needs: ['userlevel=3', 'project'],\n    },\n    {\n        route: 'timetracker.timecard.add',\n        needs: [\n            'userlevel=1',\n            'worktime',\n            'worktime.starttime@disabled||products.timetracker_hybrid',\n        ],\n    },\n    {\n        route: 'timetracker.add',\n        needs: [\n            'userlevel=1',\n            'worktime@add',\n            '!worktime.starttime@disabled',\n            '!products.timetracker_hybrid',\n        ],\n    },\n    {\n        route: 'presences.report',\n        needs: ['userlevel=5||userlevel=2', 'presence'],\n    },\n    {\n        route: 'timetracker.worktime-list',\n        needs: ['userlevel=5||userlevel=2', 'worktime'],\n    },\n    {\n        route: 'my-sites',\n        needs: ['worktime||presence||orientation||tr||mvr'],\n    },\n];\n\nsavedCustomization = {\n    worktime: {\n        endtime: {\n            features: {\n                hide: false,\n            },\n        },\n    },\n};\n\nbranding_needs = {\n    whitelist: [\n        {\n            needs: ['products.generic_timetracker'],\n            product_page: [\n                'famoco',\n                'drivinglog',\n                'fivaldi_salary_soap',\n                'fivaldi_salary_csv',\n                'netvisor_salary_rest',\n                'lon600_salary_xml',\n                'taskmanagement',\n                'plentry',\n                'nova_salary_csv',\n            ],\n        },\n    ],\n    blacklist: [\n        {\n            needs: ['!products.generic_timetracker'],\n            product_page: ['plentry'],\n        },\n    ],\n};\n\npossibleFirstPages = [\n    'dashboard',\n    'my-sites.index',\n    'timetracker.worktime-list',\n    'timetracker.week-report',\n    'users.index',\n    'projects.index',\n    'presences.index',\n    'forms.form-report',\n];\n\nexport default {\n    staticMenus: staticMenus,\n    addLinkList: addLinkList,\n    defaultFirstPages: defaultFirstPages,\n    savedCustomization: savedCustomization,\n    branding_needs: branding_needs,\n    possibleFirstPages: possibleFirstPages,\n};\n","export default {\n    generalSettings: [\n        {\n            title: 'settings.general',\n        },\n        {\n            name: 'new_messageboard',\n            random: true,\n            title: 'settings.general.new_messageboard',\n            needs: [],\n        },\n        {\n            title: 'settings.general.terms',\n            needs: ['modules.timetracker'],\n            component: 'collector/field-setting-comp/terms-setting',\n        },\n        {\n            title: 'settings.general.recipients',\n            random: true,\n            productsOn: ['products.recipients'],\n            productsOff: ['!products.recipients'],\n            needs: ['products.timetracker'],\n        },\n        {\n            name: 'orientations_check_all',\n            title: 'settings.general.orientations',\n            needs: ['modules.orientations'],\n        },\n        {\n            title: 'settings.general.self_orientation',\n            productsOn: ['products.orientations_self'],\n            productsOff: ['!products.orientations_self'],\n            needs: ['modules.orientations'],\n        },\n        {\n            title: 'settings.general.orientations_parent',\n            random: true,\n            productsOn: ['products.orientations_parent'],\n            productsOff: ['!products.orientations_parent'],\n            needs: ['modules.orientations'],\n        },\n        {\n            title: 'settings.worksitediary.state',\n            random: true,\n            productsOn: ['products.worksitediary_state'],\n            productsOff: ['!products.worksitediary_state'],\n            needs: ['products.worksitediary'],\n        },\n        {\n            title: 'settings.phasetitle',\n            random: true,\n            form: 'phasetitle',\n            productsOn: ['products.worksitediary_phasetitle'],\n            productsOff: ['!products.worksitediary_phasetitle'],\n            needs: ['products.worksitediary'],\n        },\n        {\n            title: 'settings.general.superior_for_user',\n            productsOn: ['products.superior_for_user'],\n            productsOff: ['!products.superior_for_user'],\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.general.employer',\n            productsOn: ['products.employer_standalone'],\n            productsOff: ['!products.employer_standalone'],\n            needs: ['products.timetracker', '!products.rakentajanpaketti'],\n        },\n        {\n            name: 'push_notification_time',\n            setting: {\n                name: 'push_notification_time',\n            },\n            title: 'settings.general.push_notifications_fixed_time',\n            component: 'collector/field-setting-comp/push-setting',\n            needs: ['modules.timetracker', 'serviceCountry@fi'],\n            secondary_setting: 'push_notification_time_hours_fi',\n        },\n        {\n            name: 'push_notification_time',\n            setting: {\n                name: 'push_notification_time',\n            },\n            title: 'settings.general.push_notifications_fixed_time',\n            component: 'collector/field-setting-comp/push-setting',\n            needs: ['modules.timetracker', 'serviceCountry@se'],\n            secondary_setting: 'push_notification_time_hours_se',\n        },\n        {\n            title: 'settings.general.gps_distance',\n            component: 'collector/field-setting-comp/number-field',\n            setting: {\n                setting: 'gps_distance',\n                minVal: 0,\n                defaultVal: 700,\n                unit: 'm',\n            },\n            needs: ['products.gps_force'],\n        },\n        {\n            name: 'email_approval_for_all',\n            title: 'settings.general.email_approval_for_all',\n            needs: ['modules.timetracker'],\n            random: true,\n        },\n    ],\n    timetrackerSettings: [\n        {\n            title: 'settings.timetracker',\n        },\n        {\n            name: 'postpopulated_worktimes',\n            random: true,\n            title: 'settings.general.postpopulated_worktimes',\n            needs: ['modules.timetracker'],\n            groupEditable: true,\n            groupEditableSettings: true,\n            groupEditableIf: {\n                needs: ['!customersetting.postpopulated_worktimes'],\n                title: 'settings.general.postpopulated_worktimes.worktimegroup_needs',\n            },\n            component: 'collector/field-setting-comp/postpopulated-worktimes',\n        },\n        {\n            title: 'settings.tasks',\n            options: [\n                {\n                    products: ['!products.tasks', '!products.multitasking'],\n                    title: 'general.off',\n                },\n                {\n                    products: ['products.tasks', '!products.multitasking'],\n                    title: 'general.on',\n                },\n                {\n                    products: ['!products.tasks', 'products.multitasking'],\n                    title: 'settings.tasks.multitasking',\n                },\n                {\n                    products: ['products.tasks', 'products.multitasking'],\n                    title: 'settings.tasks.both',\n                },\n            ],\n            form: 'task',\n            needs: ['modules.timetracker'],\n            groupEditable: true,\n        },\n        {\n            title: 'settings.subtasks',\n            productsOn: ['products.subtasks'],\n            productsOff: ['!products.subtasks'],\n            form: 'subtask',\n            needs: ['modules.timetracker', 'products.tasks||products.multitasking'],\n        },\n        {\n            title: 'settings.timetracker.timeclean',\n            random: true,\n            component: 'collector/nfc-comp',\n            productsOn: ['products.rfid'],\n            productsOff: ['!products.rfid'],\n            needs: ['modules.timetracker||products.personalliggareandid06', 'debug'],\n        },\n        {\n            title: 'settings.materials',\n            productsOn: ['products.materiallog'],\n            productsOff: ['!products.materiallog'],\n            form: 'materialtype',\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.materialgroups',\n            productsOn: ['products.materialgroups'],\n            productsOff: ['!products.materialgroups'],\n            needs: ['modules.timetracker', 'products.materiallog'],\n        },\n        {\n            title: 'settings.timetracker.km_automatic',\n            productsOn: ['products.timetracker_km_automatic', 'products.timetracker_km'],\n            productsOff: ['!products.timetracker_km_automatic', '!products.timetracker_km'],\n            needs: ['modules.timetracker'],\n            component: 'collector/field-setting-comp/autokm-setting',\n            groupEditable: true,\n            groupEditableSettings: true,\n        },\n        {\n            title: 'settings.timetracker.traveltime_automatic',\n            productsOn: ['products.timetracker_traveltime'],\n            productsOff: ['!products.timetracker_traveltime'],\n            needs: [\n                'modules.timetracker',\n                'serviceCountry@fi',\n                '!products.generic_timetracker',\n                'products.timetracker_km_automatic',\n            ],\n        },\n        {\n            title: 'settings.absencetype',\n            random: true,\n            productsOn: ['products.absences_hours'],\n            productsOff: ['!products.absences_startandend', '!products.absences_hours'],\n            needs: ['modules.absences', '!products.generic_timetracker'],\n        },\n        {\n            title: 'settings.holiday_pay',\n            random: true,\n            productsOn: ['products.holiday_pay'],\n            productsOff: ['!products.holiday_pay'],\n            needs: ['modules.absences', 'products.worktimebank'],\n        },\n        {\n            name: 'vacation_week_length',\n            random: true,\n            title: 'settings.vacation_week_length5',\n            needs: ['modules.absences', 'serviceCountry@fi'],\n        },\n        {\n            title: 'settings.overlapping_worktimes',\n            random: true,\n            productsOn: ['products.timetracker_disable_overlapping'],\n            productsOff: [\n                '!products.timetracker_overlap',\n                '!products.timetracker_disable_overlapping',\n            ],\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.prevent_multiple_worktimes',\n            random: true,\n            productsOn: ['products.timetracker_prevent_multiple'],\n            productsOff: ['!products.timetracker_prevent_multiple'],\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.groups',\n            random: true,\n            options: [\n                {\n                    products: ['!products.groups', '!products.multigroups'],\n                    title: 'settings.timetracker.nogroups',\n                },\n                {\n                    products: ['products.groups', '!products.multigroups'],\n                    title: 'settings.timetracker.groups',\n                },\n                {\n                    products: ['!products.groups', 'products.multigroups'],\n                    title: 'settings.timetracker.multigroups',\n                },\n            ],\n            form: 'group',\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.subprojects',\n            random: true,\n            options: [\n                {\n                    products: ['!products.subprojects', '!products.subprojectsmulti'],\n                    title: 'general.off',\n                },\n                {\n                    products: ['products.subprojects', '!products.subprojectsmulti'],\n                    title: 'settings.timetracker.subprojects',\n                },\n                {\n                    products: ['!products.subprojects', 'products.subprojectsmulti'],\n                    title: 'settings.timetracker.subprojectsmulti',\n                },\n            ],\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.absences',\n            productsOn: ['products.absences'],\n            productsOff: ['!products.absences'],\n            form: 'abcensetype',\n            needs: ['modules.timetracker'],\n            groupEditable: true,\n        },\n        {\n            title: 'settings.absence_projects',\n            random: true,\n            productsOn: ['products.absence_projects'],\n            productsOff: ['!products.absence_projects'],\n            needs: ['abcense'],\n        },\n        {\n            title: 'settings.customers',\n            random: true,\n            productsOn: ['products.customer'],\n            productsOff: ['!products.customer'],\n            form: 'customer',\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.timetracker.customer.projects',\n            random: true,\n            productsOn: ['products.projects_by_customer'],\n            productsOff: ['!products.projects_by_customer'],\n            needs: ['products.customer', 'modules.timetracker', '!products.base_basic'],\n        },\n        {\n            title: 'settings.mainproject',\n            productsOn: ['products.mainproject'],\n            productsOff: ['!products.mainproject'],\n            form: 'mainproject',\n            needs: ['modules.timetracker', 'products.projects_by_customer', '!products.base_basic'],\n        },\n        {\n            title: 'settings.timetracker.pause',\n            productsOn: ['products.pause'],\n            productsOff: ['!products.pause'],\n            component: 'collector/field-setting-comp/pause-setting',\n            setting: {\n                form: 'worktime',\n                field: 'pause',\n                setting: { title: 'default_value', value: 30 },\n            },\n            needs: ['modules.timetracker'],\n            groupEditable: true,\n            groupEditableSettings: true,\n        },\n        {\n            title: 'settings.timetracker.saldo',\n            productsOn: ['products.saldo'],\n            productsOff: ['!products.saldo'],\n            component: 'collector/field-setting-comp/saldo-setting',\n            needs: ['modules.timetracker'],\n            groupEditable: true,\n        },\n        {\n            title: 'settings.timetracker.overtime',\n            productsOn: ['products.overtime'],\n            productsOff: ['!products.overtime'],\n            component: 'collector/field-setting-comp/overtime-setting',\n            needs: ['modules.timetracker'],\n            groupEditableSettings: true,\n            groupEditable: true,\n        },\n        {\n            title: 'settings.project_owner',\n            random: true,\n            productsOn: ['products.project_owner'],\n            productsOff: ['!products.project_owner'],\n            needs: ['modules.timetracker'],\n        },\n\n        {\n            title: 'settings.timetracker.multiple_companies',\n            random: true,\n            productsOn: ['products.multiple_companies'],\n            productsOff: ['!products.multiple_companies'],\n            needs: ['project', 'products.rakentajanpaketti'],\n        },\n        {\n            title: 'settings.absences',\n            tt3valueOn: 'absences.none',\n            tt3valueOff: 'absences.on',\n            productsOn: ['abcensetype'],\n            productsOff: ['!abcensetype'],\n            form: 'abcensetype',\n            needs: ['worktime', '!modules.timetracker'],\n        },\n        {\n            title: 'settings.customers',\n            random: true,\n            tt3valueOn: 'customers.none',\n            tt3valueOff: 'customers.on',\n            productsOn: ['customer'],\n            productsOff: ['!customer'],\n            form: 'customer',\n            needs: ['worktime', '!modules.timetracker'],\n        },\n        {\n            title: 'settings.groups',\n            tt3valueOn: 'groups.none',\n            tt3valueOff: 'groups.group',\n            productsOn: ['group'],\n            productsOff: ['!group'],\n            form: 'group',\n            needs: ['worktime', '!modules.timetracker'],\n        },\n        {\n            title: 'settings.worktimegroup',\n            random: true,\n            productsOn: ['products.worktimegroup'],\n            productsOff: ['!products.worktimegroup'],\n            form: 'worktimegroup',\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.timetracker_allow_nfc_edit',\n            productsOn: ['products.timetracker_allow_nfc_edit'],\n            productsOff: ['!products.timetracker_allow_nfc_edit'],\n            needs: ['products.rfid', '!products.generic_timetracker'],\n        },\n        {\n            title: 'settings.timetracker.time_adding_type',\n            options: [\n                {\n                    products: [\n                        '!products.timetracker_hybrid',\n                        '!products.timetracker_hours',\n                        '!products.timetracker_clockcard',\n                    ],\n                    title: 'settings.timetracker.startandend',\n                },\n                {\n                    products: [\n                        '!products.timetracker_hybrid',\n                        'products.timetracker_hours',\n                        '!products.timetracker_clockcard',\n                    ],\n                    title: 'settings.timetracker.hours',\n                    notGroupEditable: true,\n                },\n                {\n                    products: [\n                        'products.timetracker_hybrid',\n                        '!products.timetracker_hours',\n                        '!products.timetracker_clockcard',\n                    ],\n                    title: 'settings.timetracker.hybrid',\n                },\n                {\n                    products: [\n                        '!products.timetracker_hybrid',\n                        '!products.timetracker_hours',\n                        'products.timetracker_clockcard',\n                    ],\n                    title: 'settings.timetracker.clockcard',\n                },\n            ],\n            needs: ['modules.timetracker'],\n            groupEditable: true,\n            groupEditableSettings: true,\n            groupEditableIf: {\n                needs: [\n                    '!products.timetracker_hybrid',\n                    '!products.timetracker_hours',\n                    '!products.timetracker_clockcard',\n                ],\n                title: 'settings.timetracker.startandend.worktimegroup_needs',\n            },\n            addition: true,\n        },\n        {\n            title: 'settings.timetracker.km_type',\n            options: [\n                {\n                    products: [\n                        '!products.timetracker_km',\n                        '!products.timetracker_kmsade',\n                        '!products.timetracker_kmandsade',\n                    ],\n                    title: 'settings.timetracker.km_none',\n                },\n                {\n                    products: [\n                        'products.timetracker_km',\n                        '!products.timetracker_kmsade',\n                        '!products.timetracker_kmandsade',\n                    ],\n                    title: 'settings.timetracker.km',\n                },\n                {\n                    products: [\n                        'products.timetracker_kmsade',\n                        '!products.timetracker_km',\n                        '!products.timetracker_kmandsade',\n                    ],\n                    title: 'settings.timetracker.kmsade',\n                },\n                {\n                    products: ['products.timetracker_kmsade', 'products.timetracker_km'],\n                    title: 'settings.timetracker.kmandsade',\n                },\n            ],\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.timetracker.perdiem',\n            options: [\n                {\n                    products: [\n                        '!products.timetracker_perdiem',\n                        '!products.timetracker_perdiem_meal',\n                    ],\n                    title: 'settings.timetracker.perdiem_none',\n                },\n                {\n                    products: [\n                        'products.timetracker_perdiem',\n                        '!products.timetracker_perdiem_meal',\n                    ],\n                    title: 'settings.timetracker.perdiem_def',\n                },\n                {\n                    products: [\n                        '!products.timetracker_perdiem',\n                        'products.timetracker_perdiem_meal',\n                    ],\n                    title: 'settings.timetracker.perdiem_meal',\n                },\n            ],\n            needs: ['modules.timetracker', 'serviceCountry@fi'],\n        },\n        {\n            title: 'settings.timetracker.worktype',\n            random: true,\n            options: [\n                {\n                    products: [\n                        '!products.timetracker_worktype',\n                        '!products.timetracker_worktype_extra',\n                    ],\n                    title: 'settings.timetracker.worktype_none',\n                },\n                {\n                    products: [\n                        'products.timetracker_worktype',\n                        '!products.timetracker_worktype_extra',\n                    ],\n                    title: 'settings.timetracker.worktype_def',\n                },\n                {\n                    products: [\n                        '!products.timetracker_worktype',\n                        'products.timetracker_worktype_extra',\n                    ],\n                    title: 'settings.timetracker.worktype_extra',\n                },\n            ],\n            needs: [\n                'modules.timetracker',\n                '!products.generic_timetracker',\n                'products.timetracker_worktype||products.timetracker_worktype_extra',\n            ],\n        },\n        {\n            title: 'settings.timetracker.salarytype',\n            random: true,\n            productsOn: ['products.salarytype'],\n            productsOff: ['!products.salarytype'],\n            needs: [\n                'modules.timetracker',\n                '!products.timetracker_worktype',\n                '!products.timetracker_worktype_extra',\n            ],\n        },\n        {\n            title: 'settings.gps',\n            options: [\n                {\n                    products: ['!products.gps', '!products.gps_force'],\n                    title: 'settings.gps_none',\n                },\n                {\n                    products: ['products.gps', '!products.gps_force'],\n                    title: 'settings.gps_def',\n                },\n                {\n                    products: ['!products.gps', 'products.gps_force'],\n                    title: 'settings.gps_force',\n                },\n            ],\n            needs: ['modules.timetracker'],\n        },\n\n        {\n            title: 'settings.eventtitle',\n            form: 'eventtitle',\n            needs: ['eventtitle'],\n        },\n        {\n            title: 'settings.round_times',\n            random: true,\n            form: 'rounding_rule',\n            needs: ['modules.timetracker', 'worktime.formFeature.round_times;10'],\n        },\n        {\n            title: 'settings.round_times',\n            random: true,\n            productsOn: ['products.rounding_rule_v2'],\n            productsOff: ['!products.rounding_rule_v2'],\n            form: 'rounding_rule_v2',\n            needs: ['modules.timetracker', '!worktime.formFeature.round_times;10'],\n        },\n        {\n            title: 'settings.wage_period',\n            form: 'wage_period',\n            component: 'salary-period-adder',\n            needs: ['worktime', 'wage_period'],\n        },\n        {\n            title: 'settings.export_contact_person',\n            random: true,\n            form: 'export_contact_person',\n            needs: ['export_contact_person'],\n        },\n        {\n            title: 'settings.timetracker.edit_time',\n            component: 'collector/field-setting-comp',\n            setting: {\n                form: 'worktime',\n                field: 'date',\n                setting: { name: 'date_interval', userlevel: '1', value: 'locked' },\n                type: 'number',\n            },\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.timetracker.banks',\n            random: true,\n            productsOn: ['products.worktimebank'],\n            productsOff: ['!products.worktimebank'],\n            needs: ['modules.timetracker'],\n        },\n\n        // TT3 support\n        {\n            title: 'settings.timetracker.km_type',\n            options: [\n                {\n                    tt3value: 'mileage.none',\n                    products: ['!worktime.km', '!worktime.kmsade'],\n                    title: 'settings.timetracker.km_none',\n                },\n                {\n                    tt3value: 'mileage.km',\n                    products: ['worktime.km', '!worktime.kmsade'],\n                    title: 'settings.timetracker.km',\n                },\n                {\n                    tt3value: 'mileage.kmsade',\n                    products: ['!worktime.km', 'worktime.kmsade'],\n                    title: 'settings.timetracker.kmsade',\n                },\n                {\n                    tt3value: 'mileage.both',\n                    products: ['worktime.km', 'worktime.kmsade'],\n                    title: 'settings.timetracker.kmandsade',\n                },\n            ],\n            needs: ['worktime', '!modules.timetracker'],\n        },\n\n        {\n            title: 'settings.timetracker.hourprice',\n            random: true,\n            options: [\n                {\n                    //tt3value: \"hourly_rates.none\"\n                    products: ['!products.hourprice_user', '!products.hourprice_project'],\n                    title: 'settings.timetracker.hourprice_none',\n                },\n                {\n                    //tt3value: \"hourly_rates.user\"\n                    products: ['products.hourprice_user', '!products.hourprice_project'],\n                    title: 'settings.timetracker.hourprice_user',\n                },\n                {\n                    //tt3value: \"hourly_rates.project\"\n                    products: ['!products.hourprice_user', 'products.hourprice_project'],\n                    title: 'settings.timetracker.hourprice_project',\n                },\n            ],\n            needs: ['modules.timetracker'],\n        },\n        {\n            name: 'stampout_worktime_fi',\n            setting: {\n                name: 'stampout_worktime_fi',\n                secondary_setting_name: 'stampout_worktime_time_fi',\n            },\n            title: 'settings.general.stampout_worktime',\n            component: 'collector/field-setting-comp/time-setting',\n            needs: ['modules.timetracker', 'serviceCountry@fi'],\n            random: true,\n        },\n        {\n            name: 'stampout_worktime_se',\n            setting: {\n                name: 'stampout_worktime_se',\n                secondary_setting_name: 'stampout_worktime_time_se',\n            },\n            title: 'settings.general.stampout_worktime',\n            component: 'collector/field-setting-comp/time-setting',\n            needs: ['modules.timetracker', 'serviceCountry@se'],\n            random: true,\n        },\n        {\n            name: 'unapproved_worktimes',\n            setting: {\n                name: 'unapproved_worktimes',\n            },\n            title: 'settings.general.unapproved_worktimes',\n            component: 'collector/field-setting-comp/time-setting',\n            needs: ['worktime', 'serviceCountry@fi'],\n            random: true,\n        },\n        {\n            name: 'hide_holidays',\n            setting: {\n                name: 'hide_holidays',\n            },\n            title: 'settings.general.hide_holidays',\n            needs: ['abcense'],\n            random: true,\n        },\n        {\n            title: 'settings.general.midweek_holiday_pay',\n            productsOn: ['products.midweek_holiday_pay'],\n            productsOff: ['!products.midweek_holiday_pay'],\n            needs: ['worktime'],\n            random: true,\n        },\n    ],\n    taskSettings: [\n        {\n            title: 'settings.worktasks',\n        },\n        {\n            title: 'settings.tasks',\n            form: 'task',\n            needs: ['task', '!modules.timetracker'],\n        },\n        {\n            title: 'settings.taskmanagement.worktask_involved',\n            productsOn: ['products.worktask_involved'],\n            productsOff: ['!products.worktask_involved'],\n            needs: ['products.taskmanagement'],\n        },\n        {\n            title: 'settings.taskmanagement.worktask_signature',\n            productsOn: ['products.worktask_signature'],\n            productsOff: ['!products.worktask_signature'],\n            needs: ['products.taskmanagement'],\n        },\n        {\n            title: 'settings.taskmanagement.worktask_enddate',\n            productsOn: ['products.worktask_enddate'],\n            productsOff: ['!products.worktask_enddate'],\n            needs: ['products.taskmanagement'],\n        },\n        {\n            title: 'settings.taskmanagement.worktask_starttime',\n            productsOn: ['products.worktask_starttime'],\n            productsOff: ['!products.worktask_starttime'],\n            needs: ['products.taskmanagement'],\n        },\n    ],\n    drivingLogSettings: [\n        {\n            title: 'menu.drivinglog',\n        },\n        {\n            title: 'settings.general.drivinglog.gauge',\n            productsOn: ['products.drivinglog_gauge'],\n            productsOff: ['!products.drivinglog_gauge'],\n            needs: ['products.drivinglog'],\n        },\n        {\n            title: 'settings.general.drivinglog.project',\n            productsOn: ['products.drivinglog_project'],\n            productsOff: ['!products.drivinglog_project'],\n            needs: ['products.drivinglog'],\n        },\n        {\n            title: 'settings.general.drivinglog.date',\n            productsOn: ['products.drivinglog_date'],\n            productsOff: ['!products.drivinglog_date'],\n            needs: ['products.drivinglog'],\n        },\n        {\n            title: 'settings.general.drivinglog.private',\n            productsOn: ['products.drivinglog_private'],\n            productsOff: ['!products.drivinglog_private'],\n            needs: ['products.drivinglog'],\n        },\n        {\n            title: 'settings.general.drivinglog.plate',\n            productsOn: ['products.drivinglog_plate'],\n            productsOff: ['!products.drivinglog_plate'],\n            needs: ['products.drivinglog'],\n        },\n        {\n            title: 'settings.general.drivinglog.desc',\n            productsOn: ['products.drivinglog_desc'],\n            productsOff: ['!products.drivinglog_desc'],\n            needs: ['products.drivinglog'],\n        },\n    ],\n    measurementSettings: [\n        {\n            title: 'settings.measurements',\n        },\n        {\n            name: 'hide_measurement_index',\n            title: 'settings.general.hide_measurement_index',\n            needs: ['products.measurement_tr||products.measurement_mvr'],\n        },\n        {\n            title: 'settings.general.measurement_mandatory_signatures',\n            productsOn: ['products.measurement_mandatory_signatures'],\n            productsOff: ['!products.measurement_mandatory_signatures'],\n            needs: ['products.measurement_tr||products.measurement_mvr'],\n        },\n        {\n            title: 'settings.general.measurement_status',\n            productsOn: ['products.measurement_status'],\n            productsOff: ['!products.measurement_status'],\n            needs: ['products.measurement_tr||products.measurement_mvr'],\n        },\n    ],\n    pl_settings: [\n        {\n            title: 'settings.pl',\n        },\n        {\n            title: 'settings.plgps',\n            options: [\n                {\n                    products: ['!products.plgps_off', '!products.plgps_end'],\n                    title: 'settings.plgps_on',\n                },\n                {\n                    products: ['!products.plgps_off', 'products.plgps_end'],\n                    title: 'settings.plgps_also_end',\n                },\n                {\n                    products: ['products.plgps_off', '!products.plgps_end'],\n                    title: 'settings.plgps_off',\n                },\n            ],\n            needs: ['products.personalliggareandid06||products.personalliggare'],\n        },\n        {\n            name: 'stampout_presence_fi',\n            setting: {\n                name: 'stampout_presence_fi',\n                secondary_setting_name: 'stampout_presence_time_fi',\n            },\n            title: 'settings.general.stampout_presence',\n            component: 'collector/field-setting-comp/time-setting',\n            needs: ['presence', 'serviceCountry@fi'],\n            random: true,\n        },\n        {\n            title: 'settings.export_contact_person',\n            form: 'export_contact_person',\n            needs: ['export_contact_person', '!worktime'],\n        },\n        {\n            title: 'settings.customers',\n            productsOn: ['products.customer'],\n            productsOff: ['!products.customer'],\n            form: 'customer',\n            needs: ['presence', '!products.timetracker'],\n        },\n        {\n            title: 'settings.groups',\n            options: [\n                {\n                    products: ['!products.groups', '!products.multigroups'],\n                    title: 'settings.timetracker.nogroups',\n                },\n                {\n                    products: ['products.groups', '!products.multigroups'],\n                    title: 'settings.timetracker.groups',\n                },\n                {\n                    products: ['!products.groups', 'products.multigroups'],\n                    title: 'settings.timetracker.multigroups',\n                },\n            ],\n            form: 'group',\n            needs: ['presence', '!products.timetracker'],\n        },\n    ],\n    admintoolSettings: [\n        {\n            title: 'settings.groups',\n            form: 'group',\n            needs: ['products.admintool', 'group'],\n        },\n    ],\n    saldoSettings: [\n        {\n            title: 'settings.saldo',\n        },\n        {\n            name: 'saldo_skip_pieceworkdays',\n            title: 'settings.saldo.skip_pieceworkdays',\n            needs: ['products.saldo', 'worktime.typeofwork'],\n        },\n        {\n            name: 'saldo_skip_weekends',\n            title: 'settings.saldo.skip_weekends',\n            needs: ['products.saldo'],\n        },\n    ],\n    machineSettings: [\n        {\n            title: 'settings.machine',\n        },\n        {\n            title: 'settings.toolgroups',\n            productsOn: ['products.toolgroups'],\n            productsOff: ['!products.toolgroups'],\n            needs: ['products.machine'],\n            form: 'toolgroup',\n        },\n    ],\n};\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/application.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ApplicationController,\n    indexOf = [].indexOf;\n\nimport SettingsAdapter from '../adapters/settings';\n\nimport collector from '../classes/collector';\n\nimport config from '../config/environment';\n\nimport { t } from 'ember-intl';\n\nimport menu from '../mixins/menu';\n\nimport configurations from '../config';\n\nimport { captureException } from '@sentry/browser';\n\nimport { getOwner } from '@ember/application';\n\nimport { getCommunityLink } from 'tt4/utils/communityLink-util';\n\nimport { action } from '@ember/object';\n\n// login controller has logic for authentication actions\nApplicationController = Ember.Controller.extend(menu, {\n    session: Ember.inject.service(),\n    sessionhelper: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    admintool: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    PushNotification: Ember.inject.service(),\n    gps: Ember.inject.service(),\n    routing: Ember.inject.service('-routing'),\n    router: Ember.inject.service(),\n    initapp: Ember.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    analytics: Ember.inject.service(),\n    evented: Ember.inject.service(),\n    welcomeTour: Ember.inject.service(),\n    loadTranslations: Ember.inject.service(),\n    moment: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    trialClock: Ember.inject.service('trial-clock'),\n    queryParams: ['modal', 'wizard'],\n    modal: null,\n    trialLength: 14,\n    flags: Ember.inject.service(),\n    useFormAdd: Ember.computed('modal', function () {\n        var form, type;\n        type = this.get('modal').split(',')[2];\n        form = this.get('modal').split(',')[0];\n        if (type === 'history') {\n            return false;\n        }\n        if (\n            form !== 'worktime' &&\n            form !== 'project' &&\n            form !== 'diary' &&\n            form !== 'worksitediary' &&\n            form !== 'worktask' &&\n            form !== 'presence' &&\n            form !== 'site_safety_observation' &&\n            form !== 'tooltype' &&\n            form !== 'abcense'\n        ) {\n            return false;\n        }\n        if (form == 'abcense')\n            return (\n                this.get('flags').test('form-add') ||\n                this.get('flags').test(`ember-movenium-form-add-absence`)\n            );\n        return this.get('flags').test('form-add');\n    }),\n    sessionOutDated: Ember.computed.alias('session.session.authenticated.offline'),\n    isSeasonTheme: Em.computed(function () {\n        if (\n            (moment().format('YYYY-MM-DD') >= '2018-12-17' &&\n                moment().format('YYYY-MM-DD') <= '2018-12-26') ||\n            localStorage.getItem('season-theme')\n        ) {\n            return true;\n        }\n        return false;\n    }),\n    modaltype: Ember.computed('modal', function () {\n        if (typeof this.get('modal') === 'string') {\n            return this.get('modal').split(',')[0];\n        }\n        return false;\n    }),\n    sideMenus: Ember.computed(\n        'session.currentUser',\n        'intl.primaryLocale',\n        'Ember.devModeOn',\n        'active_menu',\n        'refreshMenus',\n        function () {\n            if (!this.get('session.currentUser')) {\n                return;\n            }\n            return this.getMenus();\n        },\n    ),\n    sidemenuCheck: Ember.computed(\n        'session.currentUser',\n        'intl.primaryLocale',\n        'Ember.devModeOn',\n        'refreshMenus',\n        'active_menu',\n        function () {\n            var hidden, ls, menucount, menus;\n            if (!this.get('session.currentUser')) {\n                return;\n            }\n            ls = this.get('localStorageWrapper');\n            hidden = ls.getUserSetting('hidden_menus');\n            menus = this.getMenus();\n            menucount = menus.length - hidden.length;\n            if (menucount <= 6) {\n                return true;\n            }\n            return false;\n        },\n    ),\n    subMenus: Ember.computed('path', 'session.currentUser', function () {\n        if (!this.get('session.currentUser')) {\n            return;\n        }\n        return this.getSubMenus(this.get('path'));\n    }),\n    priceList: Em.computed('session.currentUser.company_info', function () {\n        var base, company, country, full_url, url;\n        company = this.get('session.currentUser.company_info');\n        if (!company) {\n            return false;\n        }\n        country = company.get('country');\n        full_url = '';\n        url = (function () {\n            switch (country) {\n                case 'se':\n                    base = config.APP.CDN_URL;\n                    url = 'se/movenium-pris.pdf';\n                    if (\n                        base.substring(base.length - 1, base.length) !== '/' &&\n                        url.substring(url.length - 1, url.length) !== '/'\n                    ) {\n                        base += '/';\n                    }\n                    return (full_url = base + url);\n            }\n        })();\n        if (this.get('session.currentUser.userlevel') !== '5') {\n            // only admin can see price list\n            return false;\n        } else {\n            if (full_url.length > 0) {\n                return full_url;\n            } else {\n                return false;\n            }\n        }\n    }),\n    sidebar: Em.computed.alias('gui.sidebar'),\n    communityLink: Em.computed('session.currentUser.company_info', function () {\n        var company;\n        company = this.get('session.currentUser.company_info');\n        return getCommunityLink(config.brand, company);\n    }),\n    init: function () {\n        //@get('gps').start()\n        this.initOnResume();\n        this._super();\n        this.trialClock;\n        return this.showAppVersionWarning();\n    },\n    //@initRequestNotificator()\n    initRequestNotificator: function () {\n        var $, TRANSFORM_TYPES;\n        $ = jQuery;\n        TRANSFORM_TYPES = ['PUT', 'POST', 'DELETE'];\n        $.activeTransforms = 0;\n        $(document).ajaxSend(function (e, xhr, settings) {\n            var ref;\n            if (((ref = settings.type), indexOf.call(TRANSFORM_TYPES, ref) < 0)) {\n                return;\n            }\n            return ($.activeTransforms += 1);\n        });\n        $(document).ajaxComplete(function (e, xhr, settings) {\n            var ref;\n            if (((ref = settings.type), indexOf.call(TRANSFORM_TYPES, ref) < 0)) {\n                return;\n            }\n            return ($.activeTransforms -= 1);\n        });\n        return (\n            window.onbeforeunload ||\n            (window.onbeforeunload = function () {\n                if ($.activeTransforms) {\n                    return true;\n                }\n            })\n        );\n    },\n    initOnResume: function () {\n        if (typeof cordova === 'undefined' || cordova === null) {\n            window.onfocus = (event) => {\n                if (event.target === window) {\n                    return this.onresume();\n                }\n            };\n        }\n        return document.addEventListener(\n            'deviceready',\n            () => {\n                return document.addEventListener(\n                    'resume',\n                    () => {\n                        return this.onresume();\n                    },\n                    false,\n                );\n            },\n            false,\n        );\n    },\n    onresume: function () {\n        var promise, session;\n        session = this.get('session');\n        if (\n            session.get('currentUser.id') &&\n            session.get('data.authenticated.user_id') &&\n            parseInt(session.get('currentUser.id')) !== session.get('data.authenticated.user_id')\n        ) {\n            location.reload();\n        }\n        this.showAppVersionWarning();\n        // if token is about to expirein 5 mins, create new\n        if (this.get('sessionhelper').tokenWillExpireIn(5)) {\n            console.log('application onresume tokenHasExpired');\n            this.set('gui.overlay_loader', true);\n            promise = this.get('sessionhelper').refresh();\n            return promise.then(\n                () => {\n                    console.log('application onresume refreshed token'); // this is to see if there were any requests while we were refreshing token\n                    this.set('gui.overlay_loader', false);\n                    return this.get('sessionhelper').resumed();\n                },\n                (error) => {\n                    captureException(error);\n                    return this.set('gui.overlay_loader', false);\n                },\n            );\n        } else {\n            this.get('sessionhelper').resumed();\n            return this.get('evented').resumed();\n        }\n    },\n    hide_sidebar: Ember.computed('router.currentRouteName', function () {\n        if (!this.get('router.currentRouteName')) {\n            return;\n        }\n        if (this.get('router.currentRouteName').substring(0, 13) === 'register.user') {\n            return true;\n        }\n        return false;\n    }),\n    hide_topbar: Ember.computed('router.currentRouteName', function () {\n        if (!this.get('router.currentRouteName')) {\n            return;\n        }\n        if (\n            this.get('router.currentRouteName') &&\n            this.get('router.currentRouteName').substring(0, 13) === 'register.user'\n        ) {\n            return true;\n        }\n        return false;\n    }),\n    userImage: Em.computed('session.currentUser.image', function () {\n        var img, ret_img;\n        img = this.get('session.currentUser.image');\n        ret_img = '';\n        if (img != null && img.length > 0) {\n            if (img[0].name === 'naama.png') {\n                img[0].thumb = img[0].url;\n            }\n            if (img[0].thumb) {\n                ret_img = config.APP.COLLECTOR_API_URL + '/' + img[0].thumb;\n            } else if (img[0].file) {\n                ret_img = img[0].file;\n            } else {\n                ret_img = 'img/user-profile-lg.png';\n            }\n        } else {\n            ret_img = 'img/user-profile-lg.png';\n        }\n        return Ember.String.htmlSafe('background-image:url(' + ret_img + ')');\n    }),\n    actions: {\n        qrcoderead: function (code, action) {\n            if (action.type === 'transition') {\n                this.set('modal', null);\n                // needs to have this delay it makes sure queryParameters are really emptyed and going back in history won't open popup again\n                return Ember.run.later(() => {\n                    return this.get('router').transitionTo(action.path);\n                }, 100);\n            }\n        },\n        buttonClicked: function () {\n            this.toggleProperty('plusAnimate');\n            return false;\n        },\n        toggleSidebar: function () {\n            var state;\n            state = this.get('sidebar');\n            if (state) {\n                localStorage.setItem('sidebar', 'open');\n            } else {\n                localStorage.setItem('sidebar', 'collapsed');\n            }\n            this.toggleProperty('sidebar');\n            return false;\n        },\n        toggleHamburger: function () {\n            this.toggleProperty('hamburgerMenu');\n            return false;\n        },\n        closeHamburger: function () {\n            this.set('hamburgerMenu', false);\n            this.toggleProperty('refreshMenus');\n            return false;\n        },\n        closeBillingModal: function () {\n            return this.set('showBillingTypeSelection', false);\n        },\n        transition: function (link) {\n            if (Em.isArray(link)) {\n                if (link.length > 1) {\n                    return this.transitionToRoute(link[0], link[1]);\n                } else {\n                    return this.transitionToRoute(link[0]);\n                }\n            } else {\n                return this.transitionToRoute(link);\n            }\n        },\n        invalidateSession: function () {\n            return this.transitionToRoute('logout');\n        },\n        bubbleTransition: function (to, params) {\n            return this.transitionToRoute(to, params);\n        },\n        guiAction: function (action) {\n            if (action === 'abort') {\n                return this.get('gui').abort();\n            } else if (action === 'close') {\n                return this.get('gui').set('showStickyNote', false);\n            }\n        },\n        reloadApp: function () {\n            this.set('gui.overlay_loader', true);\n            this.transitionToRoute('index');\n            return Ember.run.later(\n                this,\n                function () {\n                    return location.reload();\n                },\n                200,\n            );\n        },\n        removeTourModal: function () {\n            return this.get('gui').set('mobileWelcomeTour', false);\n        },\n        removeFeedbackModal: function () {\n            this.set('showFeedbackModal', false);\n            return this.set('email_message_sent', false);\n        },\n        sendFeedback: function () {\n            var send;\n            this.set('emailSending', true);\n            send = this.Collector.ttapi({\n                url: 'sendEmail',\n                data: {\n                    type: 'feedback',\n                    country: this.get('session.currentUser.company_info.country'),\n                    content: this.get('feedback_text'),\n                    email:\n                        'customerservice_' + this.get('session.currentUser.company_info.country'),\n                    sender: this.get('session.currentUser.email'),\n                },\n                method: 'post',\n            });\n            return send.then((resp) => {\n                if (resp.error != null) {\n                    this.set('error_view', true);\n                    this.set('emailSending', false);\n                    return this.set('error', resp.error_msg);\n                } else {\n                    this.set('email_message_sent', true);\n                    this.set('emailSending', false);\n                    return this.set('feedback_text', null);\n                }\n            });\n        },\n        closeAndRefresh: function () {\n            this.send('refreshReport');\n            return this.set('modal', null);\n        },\n        refreshReport: function () {\n            var controller, route, routeName;\n            controller = getOwner(this).lookup('controller:application');\n            routeName = this.get('router.currentRouteName');\n            if (routeName.includes('worktime-list')) {\n                route = getOwner(this).lookup('route:' + controller.get('currentRouteName'));\n                return route.refresh();\n            }\n        },\n        changeLanguage: function (lang) {\n            moment.locale(lang);\n            localStorage['lang'] = lang;\n\n            // save selected lang to ttapi\n            this.Collector.ttapi({\n                url: 'api/setUserLang?lang=' + lang,\n                method: 'post',\n            });\n\n            return this.loadTranslations.fetch().then(() => {\n                return (this.intl.locale = lang);\n            });\n        },\n        setTrialStatus: function (status) {\n            return this.set('trialStatus', status);\n        },\n        copyPartnerId: function () {\n            navigator.clipboard.writeText(this.get('session.currentUser.partnerid'));\n            var intl = this.get('intl');\n            this.notifications.info(intl.t('header.actions.profile.copyPartnerId.notification'), {\n                autoClear: true,\n            });\n        },\n    },\n    isLoading: Em.computed('Tt4.isLoading', function () {\n        return Tt4.get('isLoading');\n    }),\n\n    last_error: Em.computed('Tt4.last_error', function () {\n        return Tt4.get('last_error');\n    }),\n    spinIsLoading: false,\n    buttonText: 'submit',\n    showMySitesView: Ember.computed('session.currentUser.userlevel', function () {\n        var ref;\n        return (\n            (ref = this.get('session.currentUser.userlevel')) === '1' || ref === '3' || ref === '4'\n        );\n    }),\n    sublinks: Em.A([]),\n    active_menu: Ember.computed('path', function () {\n        var custom, split, toppath;\n        if (!this.get('path')) {\n            return;\n        }\n        toppath = this.get('path')[0];\n        if (location.href.includes('custom')) {\n            custom = location.href.split('/').filter((item) => {\n                return item.includes('custom');\n            });\n            return custom[0];\n        }\n        if (toppath === 'workday') {\n            return 'worktimes';\n        }\n        if (toppath === 'site_safety') {\n            return this.get('path')[1];\n        }\n        if (toppath === 'forms') {\n            split = location.href.split('/');\n            return split[split.indexOf('forms') + 1];\n        } else {\n            return toppath;\n        }\n    }),\n    path: Ember.computed('router.currentRouteName', function () {\n        var path;\n        path = this.get('router.currentRouteName');\n        if (path) {\n            return path.split('.');\n        }\n    }),\n    additionalMainViewClasses: Ember.computed('router.currentRouteName', function () {\n        var path;\n        path = this.get('router.currentRouteName');\n        if (path === 'settings.general-v2') {\n            return 'main-view-settings-v2';\n        }\n        // if path contains \".edit\" or \".add\" we want to add class to main-view\n        if (path.includes('.edit') || path.includes('.add')) {\n            return 'main-view-form-open';\n        }\n        return '';\n    }),\n    headerText: Ember.computed('path', function () {\n        var c, form, formName, intl, name, path, routeObject, split;\n        path = this.get('path');\n        intl = this.get('intl');\n        c = this.get('Collector');\n        if (!path) {\n            return;\n        }\n        if (path[0].slice(-8) === '_loading') {\n            path[0] = path[0].slice(0, -8);\n        }\n        routeObject = this.get('routing.currentState.routerJsState.params');\n        if (path[0] === 'forms') {\n            if (routeObject['forms.form-report'] != null) {\n                formName = routeObject['forms.form-report']['form'];\n            } else if (routeObject['forms.form-add'] != null) {\n                formName = routeObject['forms.form-add']['form'];\n            } else if (routeObject['forms.form-edit'] != null) {\n                formName = routeObject['forms.form-edit']['form'];\n            }\n        }\n        if (formName && path[0] === 'forms' && c.formExists(formName)) {\n            form = c.forms()[formName];\n            if (Ember.isPresent(form.name)) {\n                return form.name;\n            }\n        }\n        if (path[0] === 'site_safety') {\n            split = location.href.split('/');\n            name = split[split.indexOf('measurement') + 1];\n            if (c.formExists('measurement_' + name)) {\n                form = c.forms()['measurement_' + name];\n                if (Ember.isPresent(form.name)) {\n                    return form.name;\n                }\n            }\n            if (path[1] === 'report') {\n                return intl.t('header.path.' + path[2]);\n            } else {\n                return intl.t('header.path.' + path[1]);\n            }\n        } else if (!intl.exists('header.path.' + path[0]) && intl.exists('menu.' + path[0])) {\n            return intl.t('menu.' + path[0]);\n        } else if (path) {\n            return intl.t('header.path.' + path[0]);\n        }\n    }),\n    showBillingTypeSelection: false,\n    // check if client has billing-info and if not, ask user to add it\n    billingtypeObs: Em.on(\n        'init',\n        Ember.observer('session.currentUser.partnerid', function () {\n            var c, created, promise, self, test_passed;\n            created = this.get('session.currentUser.company_info.row_info.created');\n            if (created && created > '2016-04-20') {\n                if (moment().diff(moment(created), 'days') > 7) {\n                    self = this;\n                    c = this.get('Collector');\n                    test_passed = false;\n                    // show this only if tt or pl is active\n                    if (\n                        c.testNeedsOne('products.personalliggareandid06') ||\n                        c.testNeedsOne('products.timetracker') ||\n                        c.testNeedsOne('products.personalliggare')\n                    ) {\n                        test_passed = true;\n                    }\n                    if (\n                        this.get('session.currentUser.partnerid') &&\n                        parseInt(this.get('session.currentUser.userlevel')) === 5 &&\n                        test_passed\n                    ) {\n                        promise = this.get('admintool').ajax({\n                            url: 'billinginfo',\n                            method: 'get',\n                        });\n                        return promise.then(\n                            function (data) {\n                                // billing-info was found for this client, do not show billing-dialog\n                                return self.set('showBillingTypeSelection', false);\n                            },\n                            (reason) => {\n                                // billing-info not found, show dialog\n                                if (reason.status === 404) {\n                                    // get address-data\n                                    promise = this.get('admintool').ajax({\n                                        url: 'customer_info',\n                                        method: 'get',\n                                    });\n                                    return promise.then((data) => {\n                                        if (data['status'] !== 'demo') {\n                                            this.set('customerData', data);\n                                            return self.set('showBillingTypeSelection', true);\n                                        }\n                                    });\n                                }\n                            },\n                        );\n                    }\n                }\n            }\n        }),\n    ),\n    startTour: Em.on('init', function () {\n        if (localStorage.getItem('welcome-tour')) {\n            localStorage.removeItem('welcome-tour');\n            return Em.run.later(\n                this,\n                () => {\n                    return this.get('welcomeTour').start();\n                },\n                100,\n            );\n        }\n    }),\n    impersonate: Em.computed(function () {\n        if (this.get('session.session.content.authenticated.scope')) {\n            return true;\n        }\n    }),\n    trialDaysLeft: Em.computed(function () {\n        var created, days;\n        created = this.get('session.currentUser.company_info.row_info.created');\n        days = moment().diff(moment(created), 'days');\n        return this.get('trialLength') - days;\n    }),\n    billingInfo: function () {\n        var promise;\n        promise = this.get('admintool').ajax({\n            url: 'billinginfo',\n            method: 'get',\n        });\n        return promise.then(\n            (res) => {\n                return res;\n            },\n            (reason) => {\n                return false; // billinginfo returned 404 - no billing info found\n            },\n        );\n    },\n    trialMode: Em.computed('session.currentUser', 'trialClock.time', function () {\n        if (!this.get('Collector').testNeedsOne('products.mini_entry')) {\n            return false;\n        }\n        return this.billingInfo().then((binfo) => {\n            var mode;\n            if (this.get('Collector').testNeedsOne('products.readonly')) {\n                mode = 'locked';\n            } else if (binfo['payment_status'] === 'failed' && this.get('trialDaysLeft') <= 0) {\n                mode = 'payment_failed';\n            } else if (!binfo && this.get('trialDaysLeft') <= 0) {\n                mode = 'payment_failed';\n            } else if (this.get('trialDaysLeft') >= 0) {\n                mode = 'normal_trial';\n            }\n            return mode;\n        });\n    }),\n    canSubscriptionBeCanceled: Em.computed('trialStatus', function () {\n        if (this.get('trialStatus') === 'disabled') {\n            return false;\n        }\n        return this.billingInfo().then((binfo) => {\n            return binfo['is_trial_active'];\n        });\n    }),\n    showAppVersionWarning: function () {\n        var currentVersionTimeStamp, status, versions;\n        if (\n            !this.get('session.currentUser') ||\n            typeof cordova === 'undefined' ||\n            cordova === null\n        ) {\n            return false;\n        }\n        versions = this.get('flags').test('versions');\n        if (!versions || versions['force-update'] === void 0) {\n            return false;\n        }\n        currentVersionTimeStamp = this.get('gui').version_timestamp();\n        if (\n            moment(currentVersionTimeStamp)\n                .add(versions['force-update'], 'days')\n                .diff(moment(), 'days') === 0\n        ) {\n            status = 'expired';\n        } else if (\n            moment(currentVersionTimeStamp).add(versions['force-update'], 'days').isBefore(moment())\n        ) {\n            status = 'expired';\n        } else if (\n            moment(currentVersionTimeStamp)\n                .add(versions['suggest-update'], 'days')\n                .isBefore(moment())\n        ) {\n            status = 'deprecated';\n        } else {\n            status = false;\n        }\n        this.set('showAppWarning', true);\n        return this.set('appVersion', {\n            status: status,\n            version: this.get('gui').version(),\n            days_until_expires: moment(currentVersionTimeStamp)\n                .add(versions['force-update'], 'days')\n                .diff(moment(), 'days'),\n        });\n    },\n    brandLogo: Em.computed('session.currentUser', function () {\n        if (this.gui.getBrand() === 'otta') {\n            return config.APP.CDN_URL + '/images/otta/otta_logo_white_rgb.svg';\n        } else {\n            return config.APP.CDN_URL + '/images/movenium/move_logo_white.svg';\n        }\n    }),\n});\n\nexport default ApplicationController;\n","define(\"tt4/controllers/array\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = Ember.Controller;\n  _exports.default = _default;\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/changepassword.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ChangepasswordController;\n\nimport Ember from 'ember';\n\nChangepasswordController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    flags: Ember.inject.service(),\n    securedPassword: Em.computed('session.currentUser', function () {\n        if (this.get('session.currentUser.password') === 'secured') {\n            return true;\n        }\n        return false;\n    }),\n    emailErrors: [],\n    phoneErrors: [],\n    showEmail: Em.computed('user', function () {\n        if (this.get('user') && this.get('user.email') === null) {\n            return true;\n        }\n        return false;\n    }),\n    showPhone: Em.computed('user', function () {\n        if (this.get('user') && this.get('user.phone') === null) {\n            return true;\n        }\n        return false;\n    }),\n    showTitle: Em.computed('showPhone', 'showEmail', 'session.currentUser', function () {\n        if (this.get('showPhone') || this.get('showEmail')) {\n            return true;\n        }\n        return false;\n    }),\n    user: Em.computed('session.currentUser', function () {\n        return this.store.peekRecord('user', this.get('session.currentUser.id'));\n    }),\n    showModal: true,\n    hideCross: Em.computed('session.currentUser', function () {\n        if (\n            this.flags.test('old-password-change') &&\n            this.get('session.currentUser.password') === 'secured'\n        ) {\n            return false;\n        }\n        return true;\n    }),\n    actions: {\n        closeModal: function () {\n            if (\n                this.flags.test('old-password-change') &&\n                this.get('session.currentUser.password') === 'secured'\n            ) {\n                history.back();\n            }\n        },\n    },\n});\n\nexport default ChangepasswordController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/general-add.coffee.old\n// Generated by CoffeeScript 2.6.1\n\n/*\n\nCustomizations:\n  any field on general add form can be replaced in controller by\n\n    customization:\n        <field name>:\n            template: \"something\"\n\n  Sending actions back to controller:\n    template: {{action \"send\" \"someaction\"}}\n    controller:\n        actions:\n            generalAddAction: (type) -> # type is going to be \"someaction\"\n\n*/\nvar GeneralAddController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport config from '../config/environment';\n\nimport $ from 'jquery';\n\nGeneralAddController = Ember.Controller.extend({\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    saved: Ember.inject.controller(),\n    fieldtypes_not_to_show: ['device'],\n    external_errors: Em.A([]),\n    fieldSettings: Ember.Object.create({\n        title: true,\n    }),\n    hasError: Ember.computed(function () {\n        var error_types, errors;\n        errors = collector.getErrors(this.get('form'));\n        error_types = this.Collector.parseFormErrors(errors);\n        this.set('errorMessages', error_types);\n        if (errors) {\n            this.set('disabled', true);\n            return true;\n        }\n        return false;\n    }),\n    observeExternalErrors: Em.observer('external_errors.[]', function () {\n        var err, error_msg, i, intl, len, ref;\n        intl = this.get('intl');\n        //        Ember.set(@,\"disabled\", false)\n        if (this.get('external_errors.length') > 0) {\n            //            Ember.set(@,\"disabled\", true)\n            error_msg = '';\n            ref = this.get('external_errors');\n            for (i = 0, len = ref.length; i < len; i++) {\n                err = ref[i];\n                error_msg += intl.t(err) + '<br>';\n            }\n            return this.set('validationMessage', Ember.String.htmlSafe(error_msg));\n        } else {\n            //            Ember.set(@,\"disabled\", false)\n            return this.set('validationMessage', null);\n        }\n    }),\n    form: Ember.computed.alias('model._internalModel.modelName'),\n    formName: Ember.computed(function () {\n        var form;\n        form = this.get('Collector').forms()[this.get('form').underscore()];\n        if (Ember.isPresent(form.name)) {\n            return form.name;\n        }\n    }),\n    fields: Ember.computed('model', function () {\n        var customization, fields, form_name, objects, self;\n        self = this;\n        form_name = this.get('form');\n        if (form_name) {\n            form_name = form_name.underscore();\n        }\n        customization = this.get('customization');\n        if (!form_name) {\n            objects = this.get('model.objects');\n        } else {\n            objects = JSON.parse(JSON.stringify(collector.forms[form_name].objects));\n        }\n        fields = [];\n        if (!objects) {\n            return;\n        }\n        $.each(objects, function (index, obj) {\n            var feature, item, k, ref, ref1, value;\n            obj.ext = index;\n            obj.form = form_name;\n            if (customization) {\n                ref = customization[index];\n                for (k in ref) {\n                    item = ref[k];\n                    if (typeof item === 'object' && obj[k] != null) {\n                        for (feature in item) {\n                            value = item[feature];\n                            if (typeof value === 'object') {\n                                if (!obj[k][feature]) {\n                                    obj[k][feature] = value;\n                                }\n                            } else {\n                                obj[k][feature] = value;\n                            }\n                        }\n                    } else {\n                        obj[k] = item;\n                    }\n                }\n                if (index in customization) {\n                    obj.customization = customization[index];\n                }\n            }\n            // if parent has set customization default we set it to model directly\n            // (used at least with user status = ok)\n            if (obj.customization && obj.customization.default) {\n                if (Ember.typeOf(obj.customization.default) === 'string') {\n                    self.set('model.' + obj.ext, obj.customization.default);\n                } else {\n                    self.set('model.' + obj.ext, obj.customization.default());\n                }\n            }\n            if (((ref1 = obj.type), indexOf.call(self.get('fieldtypes_not_to_show'), ref1) < 0)) {\n                return fields.push(obj);\n            }\n        });\n        this.setInitialFilters(fields);\n        return fields;\n    }),\n    // This just doesn't work with conditional mandatory and no idea how to fix it\n    // disabled: Ember.computed('errors.[]', ->\n    //     if @get('submitted') == false\n    //         return false\n    //     else if @get('errors.length') > 0\n    //         return true\n    //     false\n    // )\n    submitted: false,\n    setErrorMessage: Ember.observer('validationMessageData', function () {\n        var data;\n        data = this.get('validationMessageData');\n        if (Ember.isArray(data) && Ember.isPresent(data[0]) && Ember.isPresent(data[0].title)) {\n            return this.setErrorMsg(data[0].detail);\n        } else if (Ember.isArray(data)) {\n            data = data[0];\n        }\n        switch (data.error) {\n            case 'overlap':\n                return this.setOverlapMessage(data.errorMeta);\n            case 'not_only_row':\n                return this.setErrorMsg(data.error);\n            case 'validation_error':\n                return this.setValidationMsg(data.error_msg);\n            default:\n                return this.set(\n                    'validationMessage',\n                    Ember.String.htmlSafe(\n                        'unknown error: <br>' + data.error + ' - ' + data.error_msg,\n                    ),\n                );\n        }\n    }),\n    setOverlapMessage: function (meta) {\n        var intl, start, store;\n        store = this.get('store');\n        intl = this.get('intl');\n        if (meta.hits === 'worktime') {\n            start = intl.t('validation.worktime_overlap');\n            this.set('validationMessage', start);\n            store\n                .query('worktime', {\n                    id: meta.ids.join(','),\n                    sideload: true,\n                })\n                .then((worktimes) => {\n                    var add;\n                    add = '';\n                    worktimes.forEach((item) => {\n                        return (add +=\n                            '<br> - ' +\n                            item.get('project.name') +\n                            ' ' +\n                            item.get('starttime') +\n                            ' - ' +\n                            item.get('endtime'));\n                    });\n                    return this.set(\n                        'validationMessage',\n                        Ember.String.htmlSafe(start + '<br>' + add),\n                    );\n                });\n        }\n        if (meta.hits === 'absence') {\n            start = intl.t('validation.absence_overlap');\n            this.set('validationMessage', start);\n            store\n                .query('abcense', {\n                    id: meta.ids.join(','),\n                    sideload: true,\n                })\n                .then((absences) => {\n                    var add;\n                    add = '';\n                    absences.forEach((item) => {\n                        return (add +=\n                            '<br> - ' +\n                            item.get('abcensetype.name') +\n                            ' ' +\n                            moment(item.get('startdate')).format('L') +\n                            ' - ' +\n                            moment(item.get('enddate')).format('L'));\n                    });\n                    return this.set(\n                        'validationMessage',\n                        Ember.String.htmlSafe(start + '<br>' + add),\n                    );\n                });\n        }\n        if (meta.hits === 'comp') {\n            start = intl.t('validation.comp_overlap');\n            this.set('validationMessage', start);\n            return store\n                .query('worktime', {\n                    id: meta.ids.join(','),\n                    sideload: true,\n                })\n                .then((worktimes) => {\n                    var add;\n                    add = '';\n                    worktimes.forEach((item) => {\n                        return (add +=\n                            '<br> - ' +\n                            item.get('project.name') +\n                            ' ' +\n                            moment(item.get('date')).format('L'));\n                    });\n                    return this.set(\n                        'validationMessage',\n                        Ember.String.htmlSafe(start + '<br>' + add),\n                    );\n                });\n        }\n    },\n    validationMessage: null,\n    setErrorMsg: function (msg) {\n        switch (msg) {\n            case 'The adapter operation was aborted':\n                return this.set(\n                    'validationMessage',\n                    Ember.String.htmlSafe(this.get('intl').t('validation.network_error')),\n                );\n            case 'not_only_row':\n                return this.set(\n                    'validationMessage',\n                    Ember.String.htmlSafe(this.get('intl').t('validation.worktime_not_only_row')),\n                );\n        }\n    },\n    setValidationMsg: function (msg) {\n        //will display translated message for validation.msg if the key exists in intl: if msg is \"network_error\" will translate validation.network_error,\n        //else if the translation key does not exist will default to \"Validation error: validation message\"\n        return this.set(\n            'validationMessage',\n            Ember.String.htmlSafe(\n                this.get('intl').t('validation.' + msg, {\n                    default: 'Validation error <br>' + msg,\n                }),\n            ),\n        );\n    },\n    custom_projects: Em.A([]),\n    stashed_fields: Em.computed('fields', function () {\n        var field, fields, i, len, stashed_arr;\n        fields = this.get('fields');\n        if (!fields) {\n            return;\n        }\n        stashed_arr = [];\n        for (i = 0, len = fields.length; i < len; i++) {\n            field = fields[i];\n            if (field.features.stashed) {\n                stashed_arr.push(field);\n            }\n        }\n        return stashed_arr;\n    }),\n    setInitialFilters: function (fields) {\n        return fields.forEach((field) => {\n            var fieldObj, reloadFields;\n            fieldObj = this.get('Collector').fieldArray(this.get('form')).findBy('name', field.ext);\n            if (!fieldObj) {\n                return;\n            }\n            if (!this.get('model.' + field.ext)) {\n                return;\n            }\n            if (fieldObj.features.reload) {\n                reloadFields = fieldObj.features.reload;\n                if (Ember.isArray(reloadFields)) {\n                    return reloadFields.forEach((fieldObj) => {\n                        return this.setFiltersForField(\n                            fields,\n                            this.get('model.' + field.ext),\n                            field.ext,\n                            fieldObj,\n                        );\n                    });\n                } else {\n                    return this.setFiltersForField(\n                        fields,\n                        this.get('model.' + field.ext),\n                        field.ext,\n                        reloadFields,\n                    );\n                }\n            }\n        });\n    },\n    setFilterOptionsByLinkings: function (value, field) {\n        var fieldObj, reloadFields;\n        fieldObj = this.get('Collector').fieldArray(this.get('form')).findBy('name', field);\n        if (!fieldObj) {\n            return;\n        }\n        if (fieldObj.features.reload) {\n            reloadFields = fieldObj.features.reload;\n            if (Ember.isArray(reloadFields)) {\n                return reloadFields.forEach((fieldObj) => {\n                    return this.setFiltersForField(this.get('fields'), value, field, fieldObj);\n                });\n            } else {\n                return this.setFiltersForField(this.get('fields'), value, field, reloadFields);\n            }\n        }\n    },\n    setFiltersForField: function (fields, value, fieldName, reloadFieldName) {\n        var reloadField;\n        reloadField = fields.findBy('ext', reloadFieldName);\n        if (!reloadField) {\n            return;\n        }\n        return Ember.set(reloadField, 'filter', this.createFilterOptions(fieldName, value));\n    },\n    createFilterOptions: function (fieldName, value) {\n        var filterOptions;\n        filterOptions = {};\n        filterOptions[fieldName] = value;\n        return filterOptions;\n    },\n    actions: {\n        employerSelect: function (id) {\n            return console.log(id);\n        },\n        specialAction: function (field) {\n            return false;\n        },\n        show_stashed_fields: function () {\n            this.toggleProperty('stashed_visible');\n            return false;\n        },\n        generalAddAction: function (value, field) {\n            this.setFilterOptionsByLinkings(value, field);\n            return false;\n        },\n        FieldValueUpdated: function (value, field) {\n            return false\n        },\n    },\n});\n\nexport default GeneralAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/general-report.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GeneralReportController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport reportmixin from '../mixins/general-report';\n\nimport initController from '../mixins/init-controller';\n\nGeneralReportController = Ember.Controller.extend(reportmixin, initController, {\n    application: Ember.inject.controller(),\n    intl: Ember.inject.service(),\n    filterMode: false,\n    form: Ember.computed.alias('model.firstObject.constructor.modelName'),\n    order: Ember.computed.alias('settings.sortByColumn'),\n    row_info_status: Ember.computed.alias('settings.showStatus'),\n    settings: Em.Object.create,\n    setFilters: function () {\n        if (this.get('settings')) {\n            this.set('settings.filters', this.get('filters'));\n            return this.set('settings.limit', this.get('limit'));\n        } else {\n            return this.set(\n                'settings',\n                Em.Object.create({\n                    filters: this.get('filters'),\n                }),\n            );\n        }\n    },\n    init_functions: function () {\n        if (this.get('settings')) {\n            this.set('settings.defaultOrder', this.get('settings.sortByColumn'));\n        }\n        this.setFilters();\n        return this.getFilterData();\n    },\n    page: 1,\n    limit: 25,\n    getFilterData: function () {\n        var blackListFieldNames,\n            c,\n            fields,\n            filterArr,\n            filters,\n            form,\n            intl,\n            queryParams,\n            self,\n            whitelistMores;\n        self = this;\n        if (!this.get('filters')) {\n            return;\n        }\n        filters = this.get('filters');\n        c = this.get('Collector');\n        intl = this.get('intl');\n        form = this.get('form');\n        if (c.formExists(form)) {\n            fields = c.fieldArray(form);\n            queryParams = this.get('queryParams');\n            filterArr = filters.mapBy('field');\n            whitelistMores = {\n                user: ['worktimegroup', 'employer', 'group'],\n                project: ['owner'],\n            };\n            blackListFieldNames = [\n                '*.superior',\n                '*.project_owner',\n                'worktime.project',\n                'orientation.pass_start',\n                'orientation.pass_end',\n                'orientation.ori_date',\n                'presence.date',\n                'diary.event',\n            ];\n            fields.forEach((field) => {\n                var ref, ref1, ref2, ref3;\n                if (\n                    ((ref = field.type) === 'date' ||\n                        ref === 'database' ||\n                        ref === 'databasearray' ||\n                        ref === 'multiselect' ||\n                        ref === 'option_values' ||\n                        ref === 'dropdown_options' ||\n                        ref === 'dropdown_values' ||\n                        ref === 'dropdown_userlevel' ||\n                        ref === 'checkbox') &&\n                    ((ref1 = field.name), indexOf.call(filterArr, ref1) < 0)\n                ) {\n                    if (this.get('hideMoreFilters') && !queryParams.includes(field.name)) {\n                        return;\n                    }\n                    if (\n                        ((ref2 = field.form + '.' + field.name),\n                        indexOf.call(blackListFieldNames, ref2) >= 0)\n                    ) {\n                        return;\n                    }\n                    if (((ref3 = field.options) != null ? ref3.form : void 0) === 'trnotice') {\n                        return;\n                    }\n                    filters.push(\n                        Em.Object.create({\n                            field: field.name,\n                            extra: true,\n                        }),\n                    );\n                }\n                if (\n                    field.type === 'database' &&\n                    Ember.isPresent(whitelistMores[field.options.form])\n                ) {\n                    if (this.get('hideMoreFilters') && !queryParams.includes(field.name)) {\n                        return;\n                    }\n                    return whitelistMores[field.options.form].forEach((f) => {\n                        var ref4, ref5, ref6;\n                        // Check that\n                        // - Other forms field is not in filters already\n                        // - Field is not in filters already\n                        // - Check that this form doesn't have the \"subfield\", the field that we are trying to filter by from other form\n                        // - That the original field exists on this form checked from field options\n                        if (\n                            ((ref4 = field.options.form + '-' + f),\n                            indexOf.call(filterArr, ref4) < 0) &&\n                            indexOf.call(filterArr, f) < 0 &&\n                            !c.fieldExists(form, f) &&\n                            c.fieldExists(form, field.options.form)\n                        ) {\n                            if (\n                                ((ref5 = '*.' + field.name),\n                                indexOf.call(blackListFieldNames, ref5) >= 0)\n                            ) {\n                                return;\n                            }\n                            if (\n                                ((ref6 = field.form + '.' + field.name),\n                                indexOf.call(blackListFieldNames, ref6) >= 0)\n                            ) {\n                                return;\n                            }\n                            return filters.push(\n                                Em.Object.create({\n                                    field: f,\n                                    extra: true,\n                                    form: field.options.form,\n                                    subform: true,\n                                }),\n                            );\n                        }\n                    });\n                }\n            });\n        }\n        return filters.forEach(function (item, index) {\n            var arr, field, ref;\n            if (item.type === 'searchbox') {\n                Em.defineProperty(\n                    self,\n                    item.get('bindto'),\n                    Em.computed.alias('filters.' + index + '.tmpvalue'),\n                );\n                return;\n            }\n            //if item.type == 'groupByFilter'\n            //    Em.defineProperty(self, \"_\" + item.get(\"field\"), Em.computed.alias(\"filters.\"+index+\".value\"))\n            if (item.get('field').includes('-')) {\n                arr = item.get('field').split('-');\n                item.set('field', arr[1]);\n                item.set('form', arr[0]);\n                item.set('subform', true);\n            }\n            form = self.get('form');\n            if (item.get('form')) {\n                form = item.get('form');\n            } else {\n                item.set('form', form);\n            }\n            field = collector.getFormObject(form + '.' + item.get('field'));\n            if (!item.get('type')) {\n                item.set('type', field.type);\n            }\n            if (!field) {\n                return;\n            }\n            if (field.features.hide_filter) {\n                item.set('hide_filter', true);\n            }\n            if (!item.get('prompt') && field.options) {\n                if (field.name) {\n                    item.set(\n                        'prompt',\n                        intl.t('general.select_with_fieldname') +\n                            ' ' +\n                            field.name.toLowerCase() +\n                            '...',\n                    );\n                } else if (field.options.form) {\n                    item.set('prompt', 'general.select.' + field.options.form);\n                }\n            }\n            // Find contents for dropdown\n            //            if field.type == 'database' or item.get('type') == 'database'\n            //                item.set('data', self.Collector.findFormRelations(form, item.get('field')))\n            if (\n                ((ref = field.type) === 'dropdown_options' ||\n                    ref === 'dropdown_values' ||\n                    ref === 'dropdown_userlevel') &&\n                field.options\n            ) {\n                item.set('options', field.options);\n            }\n            if (field.type === 'date') {\n                item.set('type', 'date');\n                if (!item.get('start')) {\n                    item.set('start', moment().startOf('month').format('YYYY-MM-DD'));\n                }\n                if (!item.get('end')) {\n                    item.set('end', moment().endOf('month').format('YYYY-MM-DD'));\n                }\n            }\n            if (field.type === 'status') {\n                item.set('value', self.get('status'));\n            }\n            if (Ember.isPresent(field.features.reload)) {\n                item.set('reload', field.features.reload);\n            }\n            if (Ember.isPresent(item.get('subform'))) {\n                return Em.defineProperty(\n                    self,\n                    item.get('form') + '-' + item.get('field'),\n                    Em.computed.alias('filters.' + index + '.value'),\n                );\n            } else {\n                return Em.defineProperty(\n                    self,\n                    item.get('field'),\n                    Em.computed.alias('filters.' + index + '.value'),\n                );\n            }\n        });\n    },\n    dates: Ember.computed('model.content', function () {\n        var dates, item, k, model, ret;\n        if (this.get('sortByDates')) {\n            model = this.get('model').sortBy('date');\n            dates = Em.A({});\n            model.forEach(function (item) {\n                var date;\n                date = item.get('date');\n                if (dates[date]) {\n                    return dates[date].rows.pushObject(item);\n                } else {\n                    return (dates[date] = {\n                        date: item.get('date'),\n                        rows: [item],\n                    });\n                }\n            });\n            ret = Em.A([]);\n            for (k in dates) {\n                item = dates[k];\n                ret.pushObject(item);\n            }\n            return ret;\n        }\n    }),\n    setAdditionalParamsForModel: function (field, value) {\n        var additionalParamsForModel, foundItem, moreArr, thisFilter;\n        if (!field) {\n            return;\n        }\n        if (indexOf.call(this.get('queryParams'), field) >= 0) {\n            return;\n        }\n        // if this is special-field do not use it in additional params\n        thisFilter = this.get('filters').filterBy('field', field);\n        if (thisFilter.get('firstObject.bindto')) {\n            return;\n        }\n        additionalParamsForModel = Em.A([]);\n        if (this.get('more')) {\n            this.get('more')\n                .split('|')\n                .forEach(function (param) {\n                    var splitted;\n                    splitted = param.split(':');\n                    return additionalParamsForModel.pushObject({\n                        field: splitted[0],\n                        value: splitted[1],\n                    });\n                });\n        }\n        foundItem = additionalParamsForModel.findBy('field', field);\n        if (!value) {\n            if (foundItem) {\n                additionalParamsForModel.removeObject(foundItem);\n            }\n        } else {\n            if (value.get != null && value.get('id')) {\n                value = value.get('id');\n            }\n            if (foundItem) {\n                foundItem.value = value;\n            } else {\n                additionalParamsForModel.pushObject({\n                    field: field,\n                    value: value,\n                });\n            }\n        }\n        moreArr = [];\n        additionalParamsForModel.forEach(function (item) {\n            return moreArr.push(item.field + ':' + item.value);\n        });\n        if (moreArr.length > 0) {\n            return this.set('more', moreArr.join('|'));\n        } else {\n            return this.set('more', void 0);\n        }\n    },\n    actions: {\n        filterChanged: function (value, fieldName) {\n            var filter, obj, sideload_field;\n            if (fieldName === 'groupBy') {\n                this.set('groupBy', value);\n            }\n            this.setAdditionalParamsForModel(fieldName, value);\n            sideload_field = this.get('filters').filter((filter) => {\n                if (filter.get('field') === fieldName && filter.get('sideload')) {\n                    return true;\n                }\n            });\n            if (sideload_field.length > 0) {\n                filter = sideload_field.get('firstObject');\n                obj = {};\n                if (!value) {\n                    this.set('user', null);\n                } else if (filter['bindto']) {\n                    obj[filter['bindto']] = value;\n                } else {\n                    obj[fieldName] = value;\n                }\n                this.set('user', obj);\n            }\n            return this.set('page', 1);\n        },\n        bubbleTransition: function (to, params) {\n            if (Ember.typeOf(to) === 'object') {\n                return this.transitionToRoute(to);\n            } else {\n                return this.transitionToRoute(to, params);\n            }\n        },\n    },\n});\n\nexport default GeneralReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/index.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar IndexController;\n\nimport Ember from 'ember';\n\nimport configurations from '../config';\n\nIndexController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    LocalStorageWrapper: Ember.inject.service(),\n    application: Ember.inject.controller(),\n    intl: Ember.inject.service(),\n    welcomeMessage: Ember.computed(\n        'session.currentUser.firstname',\n        'session.currentUser.lastname',\n        'intl.primaryLocale',\n        function () {\n            var firstname, greeting, lastname;\n            greeting = this.Collector.get_greeting();\n            firstname = this.get('session.currentUser.firstname');\n            lastname = this.get('session.currentUser.lastname');\n            if (firstname) {\n                return greeting + ' ' + firstname + '!';\n            } else if (lastname) {\n                return greeting + ' ' + lastname + '!';\n            } else {\n                return greeting + '!';\n            }\n        },\n    ),\n});\n\nexport default IndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/login.coffee.old\n// Generated by CoffeeScript 2.6.1\n// app/controllers/login.js\nvar LoginController;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport collector from '../classes/collector';\n\nLoginController = Ember.Controller.extend({\n    session: Ember.inject.service('session'),\n    application: Ember.inject.controller(),\n    currentMobile: false,\n    localStorageWrapper: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    initapp: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    gps: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    isTrackingAllowed: true,\n    init: function () {\n        if (this.get('session.session.isAuthenticated')) {\n            this.transitionToRoute('my-sites');\n        }\n        this._super();\n        if (this.get('gui').isIOS) {\n            return this.askTrackingPermissions();\n        }\n    },\n    isOtta: Em.computed(function () {\n        if (config.brand === 'otta') {\n            return true;\n        }\n        return false;\n    }),\n    logoUrl: Ember.computed(function () {\n        if (config.brand === 'visma') {\n            return config.APP.CDN_URL + '/images/entry/logo_nega.png';\n        } else if (config.brand === 'otta') {\n            return config.APP.CDN_URL + '/images/otta/logo_nega.png';\n        }\n        return config.APP.CDN_URL + '/images/movenium/logo_nega.png';\n    }),\n    googlessourl: Ember.computed(function () {\n        return config.APP.GOOGLESSOURL;\n    }),\n    vismassourl: Ember.computed(function () {\n        return config.APP.VISMASSOURL;\n    }),\n    isSeasonTheme: Em.computed(function () {\n        return this.get('application.isSeasonTheme');\n    }),\n    loginLink: Ember.computed('devModeOn', function () {\n        if (this.get('Collector').testNeeds(['development'])) {\n            return 'register.index';\n        } else {\n            return 'register.user.code';\n        }\n    }),\n    showRegisterLink: Ember.computed('hideRegister', function () {\n        if (this.get('hideRegister')) {\n            return false;\n        }\n        if (config.brand !== 'default') {\n            return false;\n        }\n        return true;\n    }),\n    showSavedUsername: Ember.on('init', function () {\n        var ls, username;\n        ls = this.get('localStorageWrapper');\n        username = ls.getSavedUsername();\n        return this.set('identification', username);\n    }),\n    observeIdentification: Ember.observer('identification', function () {\n        var ls, username;\n        username = this.get('identification');\n        ls = this.get('localStorageWrapper');\n        if (username === '') {\n            return ls.setSavedUsername('');\n        }\n    }),\n    mobile_devices: Ember.computed(function () {\n        var devices, obj, re;\n        devices = Em.A([]);\n        if (typeof cordova === 'undefined' || cordova === null) {\n            for (obj in config.mobile_links) {\n                re = new RegExp(config.mobile_links[obj].device_identifier, 'i');\n                if (navigator.userAgent.match(re)) {\n                    devices.pushObject(config.mobile_links[obj]);\n                }\n            }\n        }\n        return devices;\n    }),\n    isCordova: Ember.computed(function () {\n        return typeof cordova !== 'undefined' && cordova !== null;\n    }),\n    modal_title: Ember.computed(function () {\n        return this.get('intl').t('general.get_app');\n    }),\n    askTrackingPermissions: function () {\n        var fail, self, win;\n        self = this;\n        win = function (res) {\n            if (res === 2) {\n                self.set('isTrackingAllowed', false);\n            }\n            if (res === 3) {\n                self.set('isTrackingAllowed', true);\n            }\n        };\n        fail = function (res) {\n            self.set('isTrackingAllowed', false);\n        };\n        return window.cordova.exec(win, fail, 'idfa', 'requestPermission', []);\n    },\n    create_account_link: Ember.computed('isOtta', function () {\n        var browser, country;\n        if (this.get('isOtta')) {\n            return 'https://www.otta.fi/ei-tilia';\n        }\n        browser = window.navigator.userLanguage || window.navigator.language;\n        country = browser.substring(0, 2).toLowerCase();\n        if (country === 'sv') {\n            return 'https://www.visma.se/tid-och-projekthantering/byggbranschen/';\n        }\n        return 'https://www.movenium.fi/ei-tilia';\n    }),\n    actions: {\n        vismassologin: function () {\n            let url = this.get('vismassourl');\n            window.open(url, '_system');\n        },\n        authenticate: function () {\n            var data, ls, self;\n            this.get('initapp').clearInit();\n            self = this;\n            ls = this.get('localStorageWrapper');\n            data = this.getProperties('identification', 'password');\n            if (!data.identification || !data.password) {\n                this.set('errorMessage', this.get('intl').t('login.give_username_and_password'));\n                this.set('isAuthenticating', false);\n                return;\n            }\n            this.set('isAuthenticating', true);\n            this.set('errorMessage', null);\n            return this.get('session')\n                .authenticate(\n                    'authenticator:collector-auth',\n                    data.identification.trim(),\n                    data.password.trim(),\n                )\n                .then(() => {\n                    self.set('isAuthenticating', false);\n                    ls.setSavedUsername(data.identification);\n                    return this.get('initapp').start();\n                })\n                .catch(function (resp) {\n                    var error;\n                    //simple-auth 3.0 responds errors according to ember-fetch so check if this is the case\n                    if (resp.responseJSON) {\n                        resp = resp.responseJSON;\n                    }\n                    self.set('isAuthenticating', false);\n                    if (!resp) {\n                        self.set(\n                            'errorMessage',\n                            self.get('intl').t('login.failed') +\n                                '<br>' +\n                                self.get('intl').t('login.network_connection_error'),\n                        );\n                        return;\n                    }\n                    error = resp.error;\n                    if (!isNaN(error)) {\n                        return self.set('errorMessage', resp.error_description);\n                    } else {\n                        return self.set('errorMessage', self.get('intl').t('login.' + error));\n                    }\n                });\n        },\n        setLowercased: function () {\n            return this.set('identification', this.get('identification').toLowerCase());\n        },\n        testcaps: function (value, e) {\n            var IS_MAC, capsLock, key, shiftKey;\n            IS_MAC = /Mac/.test(navigator.platform);\n            key = e.originalEvent.key;\n            if (key === 'CapsLock' && typeof this.get('capsOn') !== 'undefined') {\n                this.toggleProperty('capsOn');\n            }\n            if (!key || key.length > 1) {\n                return;\n            }\n            shiftKey = e.originalEvent.shiftKey;\n            if (key >= 'A' && key <= 'Z') {\n                capsLock = !shiftKey;\n            } else if (key >= 'a' && key <= 'z' && !(shiftKey && IS_MAC)) {\n                capsLock = shiftKey;\n            } else {\n                return false;\n            }\n            this.set('capsOn', capsLock);\n            return false;\n        },\n    },\n});\n\nexport default LoginController;\n","define(\"tt4/controllers/object\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = Ember.Controller;\n  _exports.default = _default;\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/register/service.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterServiceController;\n\nimport Ember from 'ember';\n\nimport config from '../../config/environment';\n\nimport initmixin from 'tt4/mixins/init-controller';\n\nRegisterServiceController = Ember.Controller.extend(initmixin, {\n    Collector: Ember.inject.service('collector-service'),\n    adddetailsController: Ember.inject.controller('register/service/adddetails'),\n    productsController: Ember.inject.controller('register/service/products'),\n    applicationController: Ember.inject.controller('application'),\n    doneController: Ember.inject.controller('register/service/done'),\n    registerController: Ember.inject.controller('register'),\n    admintool: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    cdn: Ember.inject.service(),\n    userinfo: Ember.computed.alias('adddetailsController.values'),\n    info: Ember.computed.alias('adddetailsController.model'),\n    selectedProducts: null,\n    init_functions: function () {\n        this._super();\n        return this.get('registerController').set('registerType', 'service');\n    },\n    nextPageText: Ember.on(\n        'init',\n        Ember.observer('currentPage', function () {\n            var intl, nextPageText;\n            intl = this.get('intl');\n            nextPageText = function () {\n                switch (this.get('currentPage')) {\n                    case 1:\n                        return intl.t('register.button_continue');\n                    case 2:\n                        return intl.t('register.button_register');\n                    //when 3 then intl.t \"register.button_register\"\n                    case 4:\n                        return null;\n                }\n            }.call(this);\n            return this.get('registerController').set('nextPageText', nextPageText);\n        }),\n    ),\n    showBackButton: Ember.computed.equal('currentPage', 3),\n    page_list: Ember.computed(function () {\n        var intl;\n        intl = this.get('intl');\n        return Em.A([\n            intl.t('register.page1'),\n            intl.t('register.page2'),\n            //intl.t 'register.page3'\n            intl.t('register.page4'),\n        ]);\n    }),\n    observePages: Ember.on(\n        'init',\n        Ember.observer('currentPage', function () {\n            var currentPage, i, index, len, page, page_list, ret;\n            currentPage = this.get('currentPage');\n            page_list = this.get('page_list');\n            ret = Em.A([]);\n            for (index = i = 0, len = page_list.length; i < len; index = ++i) {\n                page = page_list[index];\n                ret.pushObject(\n                    Em.Object.create({\n                        name: page,\n                        active: currentPage - 1 >= index,\n                        done: currentPage - 1 > index,\n                        num: index + 1,\n                    }),\n                );\n            }\n            return this.get('registerController').set('pages', ret);\n        }),\n    ),\n    products: Em.A([]),\n    getProducts: Ember.on(\n        'init',\n        Ember.observer('userinfo.country', 'userinfo.source', function () {\n            var cdn, params;\n            if (!this.get('userinfo.country')) {\n                return;\n            }\n            cdn = this.get('cdn');\n            params = {\n                data: {\n                    country: this.get('userinfo.country'),\n                    source: this.get('userinfo.source'),\n                    lang: moment.locale(),\n                },\n            };\n            return this.get('admintool')\n                .get('products', params)\n                .then((products) => {\n                    products = products.map(function (item) {\n                        if (item.image && item.image.substring(0, 5) === 'icon:') {\n                            return (item.icon = item.image.substring(5));\n                        } else {\n                            item.image = item.image\n                                ? cdn.url('images/products/' + item.image)\n                                : void 0;\n                            return Ember.Object.create(item);\n                        }\n                    });\n                    return this.set('products', Em.A(products));\n                });\n        }),\n    ),\n    currentPage: Ember.computed('applicationController.path.[]', function () {\n        var path;\n        path = this.get('applicationController.path');\n        if (!path) {\n            return 1;\n        }\n        switch (path[2]) {\n            case 'adddetails':\n                return 1;\n            case 'products':\n                return 2;\n            case 'amounts':\n                return 3;\n            case 'done':\n                return 4;\n            default:\n                return 1;\n        }\n    }),\n    //    createLead: Ember.observer 'adddetailsController.email_filled', 'adddetailsController.company_filled','userinfo.country', ->\n    //        unless @get('userinfo.leadid')\n    //            if @get('adddetailsController.email_filled') and @get('adddetailsController.company_filled') and @get('userinfo.country')\n    //                @send('updateZoho', 'createLead')\n\n    //    sendCredentials: Em.observer 'doneController.password','doneController.username', ->\n    //        if @get('doneController.password') and @get('doneController.username')\n    //            @send('updateZoho', 'sendCredentials')\n\n    //    crmObserver: Ember.observer 'userinfo.email', 'userinfo.firstname','userinfo.lastname','userinfo.company','userinfo.vatin','userinfo.phone','userinfo.country','userinfo.promocode','doneController.username', ->\n    //        Ember.run.debounce(@, 'sendCrmInfo',2000)\n\n    //    sendCrmInfo: (serviceCreated = false) ->\n    //        if config.environment == \"production\"\n    //            info = @get('info')\n    //            data = info.getProperties('email','firstname','lastname','company','vatin','phone','country','promocode','deal','org_id','person_id')\n    //            if @get('doneController.username')\n    //                data.username = @get('doneController.username')\n    //                data.password = @get('doneController.password')\n    //                data.products = @get('selectedProducts').mapBy('name')\n    //            if info.get('company') && info.get('email') && info.get('country') is 'se'\n    //                c = @get('Collector')\n    //                type = 'POST'\n    //                if info.get('deal')\n    //                    type = 'PUT'\n    //                c.ttapi(\n    //                    url: 'crm/deals'\n    //                    data: JSON.stringify({data: data})\n    //                    type: type\n    //                    contentType: 'application/json'\n    //                    success: (ret) ->\n    //                        if ret.person_id\n    //                            info.set('person_id', ret.person_id.value)\n    //                        if ret.org_id\n    //                            info.set('org_id', ret.org_id.value)\n    //                        if ret.id\n    //                            info.set('deal', ret.id)\n    //                        else\n    //                            self.get('error-logger').captureMessage('CRM info: '+JSON.stringify(data)+', returned: '+JSON.stringify(ret), {level: 'info'});\n    //                )\n\n    //remove zapier-hooks from registration\n    //if serviceCreated\n    //    if info.get('country') is 'fi'\n    //        url = 'https://hooks.zapier.com/hooks/catch/213559/6isv6c/'\n\n    //    #send request to zapier hook only in sweden\n    //    if info.get('country') is 'se'\n    //        url = 'https://hooks.zapier.com/hooks/catch/213559/tbgmdi/'\n    //        $.ajax({\n    //            url: url\n    //            method: 'POST'\n    //            data: JSON.stringify({data: data})\n    //        })\n    actions: {\n        back: function () {\n            return this.transitionToRoute('register.products');\n        },\n        continue: function () {\n            var addDetailsController, currentPage, selectedProducts, self;\n            currentPage = this.get('currentPage');\n            switch (currentPage) {\n                case 1:\n                    self = this;\n                    addDetailsController = this.get('adddetailsController');\n                    return addDetailsController.validate().then(function () {\n                        var err, error, errors;\n                        addDetailsController.setValidationErrors();\n                        errors = addDetailsController.get('errors');\n                        err = false;\n                        for (error in errors) {\n                            if (errors.hasOwnProperty(error)) {\n                                if (!err) {\n                                    err = true;\n                                }\n                            }\n                        }\n                        if (!err) {\n                            return self.transitionToRoute('register.service.products');\n                        }\n                    });\n                //                            self.send('updateZoho', 'convertLead')\n                //                            self.sendCrmInfo()\n                case 2:\n                    selectedProducts = this.get('productsController.selectedProducts');\n                    if (selectedProducts.length < 1) {\n                        return;\n                    }\n                    this.set('selectedProducts', selectedProducts);\n                    //                    @send('updateZoho', 'updatePotential')\n                    //                    @send('updateZoho', 'createPotentials')\n                    //    @transitionToRoute 'register.amounts'\n                    //when 3\n                    this.get('doneController')\n                        .callServiceCreation()\n                        .then((backFromServer) => {\n                            return this.send('updateAdmintool', backFromServer);\n                        });\n                    return this.transitionToRoute('register.service.done');\n                case 4:\n                    return this.get('doneController').loginToService();\n            }\n        },\n        updateAdmintool: function (backFromServer) {\n            return this.get('admintool').ajax({\n                url: 'customers',\n                method: 'post',\n                data: {\n                    partnerid: backFromServer.partnerid,\n                    name: this.get('userinfo.company'),\n                    promocode: this.get('userinfo.promocode'),\n                    username: backFromServer.username,\n                    country: this.get('userinfo.country'),\n                    vatin: this.get('userinfo.vatin'),\n                    login_user_info_name:\n                        this.get('userinfo.firstname') + ' ' + this.get('userinfo.lastname'),\n                    login_user_info_phone: this.get('userinfo.phone'),\n                    login_user_info_email: this.get('userinfo.email'),\n                    no_trial_period: this.get('userinfo.skip_trial'),\n                },\n            });\n        },\n    },\n});\n\n//        updateZoho: (type) ->\n//            return\n//            self = @\n//            c = @get 'Collector'\n//            sendData = {type: type}\n//            sendData.data = @get('userinfo').getProperties('company','firstname','lastname','vatin','email','phone','country','promocode','leadid','potentialid','accountid','contactid')\n//            if type == 'createPotentials' || type == 'updatePotential'\n//                sendData.data.products = []\n//                @get('selectedProducts').forEach (obj) ->\n//                    sendData.data.products.push {name: obj.name, zoho_id: obj.zoho_id}\n//            if type == 'sendCredentials'\n//                sendData.data.password = @get('doneController.password')\n//                sendData.data.username = @get('doneController.username')\n\n//            url = '/convert'\n//            if config.environment == \"production\"\n//                c.ttapi(\n//                    url: url\n//                    data: JSON.stringify(sendData)\n//                    type: 'POST'\n//                    contentType: 'application/json'\n//                    success: (ret) ->\n//                        if ret\n//                            try\n//                                ret = JSON.parse(ret)\n//                            catch e\n//                                throw new Error('Could not parse zoho string '+JSON.stringify(ret)+' we sent '+JSON.stringify(sendData))\n//                            self.get('error-logger').captureMessage('Zoho info: '+JSON.stringify(sendData)+', returned: '+JSON.stringify(ret), {level: 'info'});\n//                            if type == \"createLead\"\n//                                self.set('adddetailsController.model.leadid', ret.id)\n//                            else if type == \"convertLead\"\n//                                self.set('adddetailsController.model.potentialid', ret.potential)\n//                                self.set('adddetailsController.model.accountid', ret.account)\n//                                self.set('adddetailsController.model.contactid', ret.contact)\n//                        else\n//                            self.get('error-logger').captureMessage('Zoho returned nothing, we sent '+JSON.stringify(sendData), {level: 'info'})\n//                )\nexport default RegisterServiceController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/register/service/adddetails.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterAdddetailsController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport validator from '../../../mixins/base-validation';\n\nimport config from '../../../config/environment';\n\nRegisterAdddetailsController = Ember.Controller.extend(validator, {\n    validationObject: 'model',\n    cdn: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    promo_start: '2016-11-23',\n    promo_end: '2016-11-27',\n    promocode: Em.computed(function () {\n        if (\n            this.get('promo_start') &&\n            this.get('promo_end') &&\n            moment().format('YYYY-MM-DD') >= this.get('promo_start') &&\n            moment().format('YYYY-MM-DD') <= this.get('promo_end')\n        ) {\n            return '50BF2016';\n        }\n    }),\n    queryParams: ['country', 'source', 'leadid', 'promo', 'email', 'deal'],\n    setCountry: Em.observer(\n        'country',\n        'source',\n        'leadid',\n        'promo',\n        'email',\n        'model',\n        'password',\n        function () {\n            var browser, country;\n            if (this.get('model')) {\n                this.set('model.country', this.get('country'));\n                this.set('model.source', this.get('source'));\n                this.set('model.leadid', this.get('leadid'));\n                this.set('model.deal', this.get('deal'));\n                if (this.get('promocode')) {\n                    this.set('model.promocode', this.get('promocode'));\n                } else {\n                    this.set('model.promocode', this.get('promo'));\n                }\n                this.set('model.email', this.get('email'));\n                this.set('model.password', this.get('password'));\n                if (this.get('model.country') === void 0) {\n                    browser = window.navigator.userLanguage || window.navigator.language;\n                    country = browser.substring(0, 2).toLowerCase();\n                    if (country === 'sv') {\n                        country = 'se';\n                    }\n                    if (indexOf.call(this.get('countries').mapBy('id'), country) >= 0) {\n                        return this.set('model.country', country);\n                    }\n                }\n            }\n        },\n    ),\n    validations: {\n        lastname: {\n            mandatory: true,\n        },\n        email: {\n            mandatory: true,\n            remote_email: true,\n            email: true,\n            maxLength: 80,\n        },\n        company: {\n            mandatory: true,\n        },\n        vatin: {\n            mandatory: true,\n        },\n        phone: {\n            mandatory: true,\n        },\n        country: {\n            mandatory: true,\n        },\n        password: {\n            mandatory: true,\n            minLength: 8,\n        },\n    },\n    validationstate: Ember.Object.create(),\n    countries: [\n        {\n            id: 'fi',\n            value: 'Finland',\n        },\n        {\n            id: 'se',\n            value: 'Sweden',\n        },\n    ],\n    //{id: \"no\", value: \"Norway\"}\n    //{id: \"dk\", value: \"Denmark\"}\n    //{id: \"uk\", value: \"UK\"}\n    //{id: \"us\", value: \"US\"}\n    hide_all_buttons: true,\n    values: Ember.computed.alias('model'),\n    modifyDomain: Em.observer('model.email', function () {\n        var domain,\n            domain_start,\n            email,\n            full_domain_added,\n            set_domain,\n            skipThese,\n            splitted_domain,\n            splitted_email;\n        skipThese = ['gmail', 'yahoo', 'hotmail', 'outlook'];\n        email = this.get('model.email');\n        if (email == null) {\n            return;\n        }\n        splitted_email = email.split('@');\n        if (splitted_email.length < 2) {\n            return;\n        }\n        domain = splitted_email[1];\n        splitted_domain = domain.split('.');\n        domain_start = splitted_domain[0];\n        full_domain_added = splitted_domain.length > 1;\n        if (full_domain_added) {\n            set_domain = indexOf.call(skipThese, domain_start) >= 0 ? '' : domain;\n        } else {\n            set_domain = '';\n        }\n        return this.set('model.domain', set_domain);\n    }),\n    fieldSettings: Em.A({\n        setOKtoAllFields: true,\n        title: true,\n    }),\n    hideCancelButton: true,\n    saveButtonText: Ember.computed(function () {\n        return this.get('intl').t('general.next');\n    }),\n    customization: {\n        text1: {\n            template: 'login/register/company_info',\n            hide_title: true,\n        },\n        text2: {\n            template: 'login/register/promo_title',\n            hide_title: true,\n        },\n    },\n    terms_url: Ember.computed(function () {\n        var cdn;\n        cdn = this.get('cdn');\n        switch (moment.locale()) {\n            case 'fi':\n                return config.termsAndConditions.fi;\n            case 'sv':\n            case 'se':\n                return config.termsAndConditions.se;\n            default:\n                return config.termsAndConditions.en;\n        }\n    }),\n    setValidationErrors: function () {\n        var field, results, validations;\n        validations = this.get('validations');\n        results = [];\n        for (field in validations) {\n            results.push(this.setValidationError(field));\n        }\n        return results;\n    },\n    setValidationError: function (field) {\n        var error, k, rule;\n        if (!this.get('validationstate.' + field)) {\n            this.set('validationstate.' + field, Ember.Object.create());\n        }\n        error = this.get('errors.' + field);\n        if (!error) {\n            this.set('validationstate.' + field + '.ok', true);\n            this.set('validationstate.' + field + '.error', false);\n        }\n        for (k in error) {\n            rule = error[k];\n            this.set('validationstate.' + field + '.ok', false);\n            this.set('validationstate.' + field + '.error', rule);\n            return;\n        }\n    },\n    actions: {\n        autofill: function () {\n            this.set('model.firstname', 'testfirstname');\n            this.set('model.lastname', 'testlastname');\n            this.set('model.email', Math.random().toString(36).substring(7) + '@mail.com');\n            this.set('model.company', 'Test Company Ltd');\n            this.set('model.vatin', '1234567-1');\n            this.set('model.phone', '555-324-8272');\n            this.set('model.country', 'fi');\n            return this.set('model.password', '12345678');\n        },\n        // this is called when ever some field is modified\n        change: function (field, value) {\n            var promise, self;\n            self = this;\n            promise = this.validate([field]);\n            //@setValidationErrors()\n\n            return promise.then(() => {\n                return this.setValidationError(field);\n            });\n        },\n        setFilled: function (field) {\n            return this.set(field + '_filled', true);\n        },\n        validateEmail: function (field) {\n            var promise;\n            this.set('model.email', this.get('model.email').toLowerCase());\n            this.set(field + '_filled', true);\n            promise = this.validate([field]);\n            return promise.then(() => {\n                return this.setValidationError(field);\n            });\n        },\n        validatePassword: function (field) {\n            var promise;\n            this.set(field + '_filled', true);\n            promise = this.validate([field]);\n            return promise.then(() => {\n                return this.setValidationError(field);\n            });\n        },\n        clearErrors: function (field) {\n            if (this.get('validationstate.' + field)) {\n                return this.set('validationstate.' + field + '.error', false);\n            }\n        },\n    },\n});\n\nexport default RegisterAdddetailsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/register/service/amounts.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterAmountsController;\n\nimport Ember from 'ember';\n\nRegisterAmountsController = Ember.Controller.extend({\n    registerController: Ember.inject.controller('register'),\n    selectedProducts: Ember.computed.alias('registerController.selectedProducts'),\n    products: Ember.computed.alias('registerController.products'),\n    observeAmounts: Ember.on(\n        'init',\n        Ember.observer('product_list.@each.amount', function () {\n            var currency, i, len, price, product, product_list, sum;\n            product_list = this.get('product_list');\n            sum = 0;\n            for (i = 0, len = product_list.length; i < len; i++) {\n                product = product_list[i];\n                currency = product.get('currency');\n                price = product.get('amount') * product.get('price');\n                product.set('rowprice', price || '---');\n                if (price) {\n                    sum += price;\n                }\n            }\n            this.set('sum', sum || '---');\n            return this.set('sumcurrency', currency);\n        }),\n    ),\n    product_list: Ember.computed('selectedProducts', 'products', function () {\n        var i, len, product, ret, selectedProducts;\n        selectedProducts = this.get('selectedProducts');\n        //        products = @get 'products'\n        ret = Em.A([]);\n        for (i = 0, len = selectedProducts.length; i < len; i++) {\n            product = selectedProducts[i];\n            ret.pushObject(\n                Em.Object.create({\n                    name: product.header,\n                    price: product.price,\n                    currency: product.currency,\n                    placeholder: this.getPlaceholder(product.pricetype),\n                }),\n            );\n        }\n        return ret;\n    }),\n    getPlaceholder: function (pricetype) {\n        switch (pricetype) {\n            case 'peruser':\n                return 'users';\n            case 'perproject':\n                return 'projects';\n            default:\n                return 'amount';\n        }\n    },\n});\n\nexport default RegisterAmountsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/register/service/done.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterDoneController;\n\nimport Ember from 'ember';\n\nRegisterDoneController = Ember.Controller.extend({\n    registerController: Ember.inject.controller('register.service'),\n    application: Ember.inject.controller(),\n    userinfo: Ember.computed.alias('registerController.userinfo'),\n    selectedProducts: Ember.computed.alias('registerController.selectedProducts'),\n    Collector: Ember.inject.service('collector-service'),\n    localStorageWrapper: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    initapp: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    done: false,\n    password: null,\n    session: Ember.inject.service(),\n    loginToService: function () {\n        var passwd, promise, self, userinfo, username;\n        username = this.get('username');\n        userinfo = this.get('userinfo');\n        passwd = this.get('password');\n        self = this;\n        promise = this.get('session').authenticate(\n            'authenticator:collector-auth',\n            username,\n            passwd,\n        );\n        return promise.then(() => {\n            return this.addWelcomeMessageForAdmin().then(() => {\n                //set new messageboard as default for new customers\n                this.get('customerSettings').setSetting('new_messageboard', 'on');\n                //and hide the setting, so customers cannot not change to old messageboard\n                this.get('customerSettings').setSetting('hide_setting_new_messageboard', 'on');\n                //set hiding of measurement-index to new customers\n                //if @get('Collector').testNeedsOne('products.measurement_tr') or @get('Collector').testNeedsOne('products.measurement_mvr')\n                //@get(\"customerSettings\").setSetting(\"hide_measurement_index\", \"on\")\n                return this.get('initapp').start();\n            });\n        });\n    },\n    callServiceCreation: function () {\n        var c, promise, self, userinfo;\n\n        //        chars = '23456789abcdefghkmnpqrstuvwxyz'\n        //        string_length = 8\n        //        generated_password = ''\n        //        i = 0\n        //        while i < string_length\n        //            rnum = Math.floor(Math.random() * chars.length)\n        //            generated_password += chars.substring(rnum, rnum + 1)\n        //            i++\n        //        if userinfo.get 'password'\n        //            password = userinfo.get 'password'\n        //        else\n        //            password = generated_password\n\n        //        @set 'password', password\n        userinfo = this.get('userinfo');\n        c = this.get('Collector');\n        self = this;\n        promise = c.ajax({\n            url: 'createService',\n            method: 'post',\n            data: {\n                firstname: userinfo.get('firstname'),\n                lastname: userinfo.get('lastname'),\n                country: userinfo.get('country'),\n                company: userinfo.get('company'),\n                vatin: userinfo.get('vatin'),\n                phone: userinfo.get('phone'),\n                email: userinfo.get('email'),\n                domain: userinfo.get('domain'),\n                password: userinfo.get('password'),\n                products: this.get('selectedProducts').mapBy('name').join(','),\n            },\n        });\n        promise.then((back) => {\n            var ls;\n            self.set('username', back.username);\n            self.set('userid', back.userid);\n            ls = this.get('localStorageWrapper');\n            ls.setSavedUsername(back.username);\n            self.set('password', userinfo.get('password'));\n            self.set('done', true);\n            //            self.get('registerController').sendCrmInfo(true)\n            return this.get('selectedProducts').forEach(function (product) {\n                var company_name, contact_person, email_content, email_country, email_header;\n                if (product.get('name') === 'rfid') {\n                    company_name = userinfo.get('company');\n                    email_country = userinfo.get('country');\n                    contact_person = userinfo.get('lastname') + ' ' + userinfo.get('firstname');\n                    email_content =\n                        self.get('intl').t('general.' + email_country + '_nfc_content') +\n                        '<br><br>' +\n                        self.get('intl').t('general.' + email_country + '_nfc_customer_info') +\n                        ':<br>' +\n                        contact_person +\n                        '<br>' +\n                        userinfo.get('email') +\n                        '<br>' +\n                        userinfo.get('phone');\n                    email_header = self.get('intl').t('general.' + email_country + '_nfc_header');\n                    return (promise = self.get('Collector').ttapi({\n                        url: 'sendNfcEmail',\n                        data: {\n                            content: email_content.replace('{customer}', company_name),\n                            header: email_header.replace('{customer}', company_name),\n                            country: email_country,\n                        },\n                        method: 'post',\n                    }));\n                }\n            });\n        });\n        promise.catch(function (back) {\n            var ret;\n            ret = JSON.parse(back.responseText);\n            alert('Service creation failed! Please try again.\\n' + ret.error_description);\n            return self.transitionToRoute('login');\n        });\n        return promise;\n    },\n    addWelcomeMessageForAdmin: function () {\n        var c;\n        c = this.get('Collector');\n        return c.ttapi({\n            url: 'messages/new_message',\n            data: {\n                receivers: [this.get('userid')],\n                type: 'welcome-admin',\n            },\n            method: 'post',\n        });\n    },\n    actions: {\n        login: function () {\n            return this.loginToService();\n        },\n    },\n});\n\nexport default RegisterDoneController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/register/service/products.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterProductsController;\n\nimport Ember from 'ember';\n\nRegisterProductsController = Ember.Controller.extend({\n    intl: Ember.inject.service(),\n    registerController: Ember.inject.controller('register.service'),\n    selectedProducts: Em.A([]),\n    obs_products: Ember.observer('products.@each.selected', function () {\n        return this.set('selectedProducts', Em.A(this.get('products').filterBy('selected', true)));\n    }),\n    products: Ember.computed.alias('registerController.products'),\n    _products: Ember.computed('products', function () {\n        var intl;\n        intl = this.get('intl');\n        return this.get('products').map(function (item) {\n            item.pricetype_text = (function () {\n                switch (item.pricetype) {\n                    case 'peruser':\n                        return intl.t('register.price_type_peruser');\n                    case 'perproject':\n                        return intl.t('register.price_type_perproject');\n                    case 'permonth':\n                        return intl.t('register.price_type_permonth');\n                    case 'monthlyperproject':\n                        return intl.t('register.price_type_monthlyperproject');\n                }\n            })();\n            if (item.image && item.image.substring(0, 5) === 'icon:') {\n                item.icon = item.image.substring(5);\n            }\n            return item;\n        });\n    }),\n    actions: {\n        moreInfo: function (link) {\n            return window.open(link, '_blank');\n        },\n        next: function () {\n            var registerController;\n            registerController = this.get('registerController');\n            registerController.set('selectedProducts', this.get('selectedProducts'));\n            return this.transitionToRoute('login.register.summary');\n        },\n        click: function (object) {\n            object.toggleProperty('selected');\n            return false;\n        },\n    },\n});\n\nexport default RegisterProductsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/saved.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SavedController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport configurations from '../config';\n\nimport pdf_mixin from '../mixins/pdf-export';\n\nimport $ from 'jquery';\n\nimport { isArray } from '@ember/array';\n\nconst { getOwner } = Ember;\n\nSavedController = Ember.Controller.extend(pdf_mixin, {\n    Collector: Em.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    queryParams: ['action'],\n    action: '',\n    form: Em.computed('model', function () {\n        return this.get('model.constructor.modelName');\n    }),\n    emailSent: false,\n    email_content: Em.computed(function () {\n        return this.get('intl').t('saved.email.content.default', {\n            sender:\n                this.get('session.currentUser.firstname') +\n                ' ' +\n                this.get('session.currentUser.lastname'),\n        });\n    }),\n    fields: Ember.computed('model', function () {\n        var c, customization, customizations, fields, form, model, objects, self;\n        self = this;\n        form = this.get('model.constructor.modelName');\n        if (!form) {\n            objects = this.get('model.objects');\n        } else {\n            objects = this.Collector.fields(form);\n        }\n        if (!objects) {\n            objects = this.get('objects');\n        }\n        model = this.get('model');\n        if (!model) {\n            Ember.run.next(this, () => {\n                return this.transitionToRoute('index');\n            });\n        }\n        fields = [];\n        if (!objects) {\n            return fields;\n        }\n        if (form) {\n            customizations = configurations.savedCustomization;\n            if (customizations && customizations[form]) {\n                customization = customizations[form];\n                c = this.get('Collector');\n            }\n        }\n        $.each(objects, function (index, obj2) {\n            var arr, json, obj, value;\n            //copy to new real object, so we dont affect collector objects\n            obj = JSON.parse(JSON.stringify(obj2));\n            if (customization && customization[obj.ext]) {\n                obj = c.customizeField(obj, customization[obj.ext]);\n            }\n            if (self.get('hideFields') && self.get('hideFields').indexOf(obj.ext) !== -1) {\n                return;\n            }\n            obj.ext = index;\n            //            obj.features.mandatory = self.Collector.isMandatory(obj, model)\n            //            obj.features.hide = self.Collector.isHidden(obj, model)\n            if (model.get(obj.ext)) {\n                if (Array.isArray(model.get(obj.ext)) && model.get(obj.ext + '.length') < 1) {\n                    return;\n                }\n                if (!(self.Collector.isHidden(obj, model) && obj.ext !== 'work_hours')) {\n                    if (form === 'tr' || form === 'mvr') {\n                        delete obj.name;\n                    }\n                    arr = (function () {\n                        switch (obj.ext) {\n                            case 'weather':\n                                if (model.get('weather')) {\n                                    if (Ember.typeOf(model.get('weather')) === 'string') {\n                                        json = JSON.parse(model.get('weather'));\n                                    } else {\n                                        json = model.get('weather');\n                                    }\n                                    value = new Ember.String.htmlSafe(\n                                        \"<span class='weather-icon move move-\" +\n                                            json.weather +\n                                            \"'></span> \" +\n                                            json.temperature +\n                                            '&deg;C, ' +\n                                            json.windspeed +\n                                            'm/s, ' +\n                                            json.humidity +\n                                            '% ' +\n                                            self.get('intl').t('worksitediary.abbr_rel_hum') +\n                                            ', ' +\n                                            self.get('intl').t('worksitediary.abbr_dew_point') +\n                                            ': ' +\n                                            json.dew_point +\n                                            '&deg;C',\n                                    );\n                                } else {\n                                    value = '';\n                                }\n                                return {\n                                    value: value,\n                                };\n                            default:\n                                return {\n                                    value: self.Collector.format(\n                                        model.get(obj.ext),\n                                        obj,\n                                        self,\n                                        model,\n                                        false,\n                                        form,\n                                    ),\n                                };\n                        }\n                    })();\n                    if (!arr.title) {\n                        arr.title = self.Collector.getFieldName(form, Em.Object.create(obj));\n                    }\n                    if (arr.value) {\n                        return fields.push(arr);\n                    }\n                }\n            }\n        });\n        return fields;\n    }),\n    link: Em.computed('model', 'afterSave', function () {\n        var afterSave, form;\n        afterSave = this.get('afterSave');\n        if (afterSave) {\n            if (typeof afterSave === 'object') {\n                return afterSave.route;\n            } else {\n                return afterSave;\n            }\n        } else if (this.get('model')) {\n            form = this.get('model.constructor.modelName').underscore();\n            return form + 's.index';\n        } else {\n            return 'index';\n        }\n    }),\n    addPage: Em.computed('model', function () {\n        var routeName, routes;\n        if (this.get('model')) {\n            routes = getOwner(this).lookup('router:main')._routerMicrolib.recognizer.names;\n            routeName = this.get('model.constructor.modelName') + 's.add';\n            if (routes[routeName] != null) {\n                return routeName;\n            } else if (this.get('addPageLink')) {\n                return this.get('addPageLink');\n            }\n        }\n        return false;\n    }),\n    editRoute: Em.computed('model', function () {\n        var routeName, routes;\n        if (this.get('model')) {\n            routes = getOwner(this).lookup('router:main')._routerMicrolib.recognizer.names;\n            routeName = this.get('model.constructor.modelName') + 's.edit';\n            if (routes[routeName] != null) {\n                return routeName;\n            } else if (this.get('editPageLink')) {\n                return this.get('editPageLink');\n            }\n        }\n        return false;\n    }),\n    linkParam: Em.computed('model', 'afterSave', function () {\n        var afterSave;\n        afterSave = this.get('afterSave');\n        if (afterSave && typeof afterSave === 'object') {\n            return afterSave.params;\n        } else {\n            return null;\n        }\n    }),\n    showApprovalLinkSelection: Ember.computed(function () {\n        var field, fields, found;\n        fields = this.get('Collector').fields(this.get('form'));\n        found = false;\n        for (field in fields) {\n            if (\n                fields[field].type === 'status' &&\n                !fields[field].features.readonly &&\n                indexOf.call(fields[field].options, 'approved') >= 0\n            ) {\n                found = true;\n            }\n        }\n        return found;\n    }),\n    getTtapiPdf: function (format = null, params) {\n        var postParams, url;\n        url = 'pdf/row';\n        postParams = {\n            form: this.get('form').underscore(),\n            lang: moment.locale(),\n            id: this.get('model.id'),\n            filters: JSON.stringify({\n                id: this.get('model.id'),\n            }),\n        };\n        if (params.template) {\n            postParams.template = Ember.get(params, 'template.id');\n        }\n        if (format) {\n            postParams.type = format;\n        }\n        return this.get('Collector').ttapi({\n            method: 'post',\n            dataType: 'text',\n            url: url,\n            data: postParams,\n        });\n    },\n    pdfExports: Ember.computed(function () {\n        return [\n            {\n                id: 'export_pdf_full',\n                name: this.get('intl').t('report.actions.export_pdf_full'),\n            },\n        ];\n    }),\n    actions: {\n        addSame: function () {\n            var addPage, c;\n            c = this.get('Collector');\n            c.copyRecord(this.get('model'));\n            if (this.get('addPage')) {\n                addPage = this.get('addPage');\n                return this.transitionToRoute(addPage);\n            }\n        },\n        send_email: function (recipient, title, content, params) {\n            var c, columns, emails, export_fields, field, fields, form, name, shownColumns, titles;\n            emails = isArray(recipient) ? recipient : recipient.split(',');\n            if (!emails) {\n                return this.set('email_error', this.get('intl').t('validation.errors.mandatory'));\n            } else {\n                emails.forEach((email) => {\n                    if (\n                        !/^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i.test(\n                            email,\n                        )\n                    ) {\n                        return this.set(\n                            'email_error',\n                            this.get('intl').t('validation.errors.email'),\n                        );\n                    }\n                });\n                c = this.get('Collector');\n                this.set('loading', true);\n                form = this.get('model.constructor.modelName');\n                fields = c.fields(form);\n                titles = [];\n                columns = [];\n                export_fields = [];\n                if (this.get('currentTemplate')) {\n                    shownColumns = this.get('currentTemplate.columns').split(',');\n                } else {\n                    shownColumns = [];\n                }\n                for (name in fields) {\n                    field = fields[name];\n                    if (shownColumns.length > 0 && shownColumns.indexOf(name) === -1) {\n                        continue;\n                    }\n                    Ember.set(field, 'ext', name);\n                    if (field.features && field.features.hide_column) {\n                        continue;\n                    }\n                    titles.push(c.getTranslationForColumn(form, field.ext));\n                    columns.push(field.ext);\n                    export_fields.push(field);\n                }\n                return this.getTtapiPdf('base64', params).then((pdf) => {\n                    return c\n                        .ttapi({\n                            method: 'post',\n                            url: 'sendReportAsEmail',\n                            data: {\n                                to_address: emails,\n                                email: pdf,\n                                header: title,\n                                content: content,\n                                includeApproval: params.approvalLink,\n                                form: this.get('form').underscore(),\n                                rowids: [this.get('model.id')],\n                            },\n                        })\n                        .then(() => {\n                            this.set('loading', false);\n                            return this.set('emailSent', true);\n                        });\n                });\n            }\n        },\n        removeModal: function () {\n            return this.set('action', '');\n        },\n    },\n});\n\nexport default SavedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/show.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ShowController;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport config from '../config/environment';\n\nimport GeneralAddController from '../controllers/general-add';\n\nShowController = GeneralAddController.extend({\n    intl: Ember.inject.service(),\n    header: Em.computed('model', 'intl.primaryLocale', function () {\n        var form;\n        if (this.get('model.constructor.modelName').includes('measurement-custom')) {\n            form = this.Collector.forms()[this.get('form').underscore()];\n            return form.name;\n        } else {\n            return this.get('intl').t('header.path.add.' + this.get('model.constructor.modelName'));\n        }\n    }),\n});\n\nexport default ShowController;\n","define(\"tt4/data-adapter\", [\"exports\", \"@ember-data/debug\"], function (_exports, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _debug.default;\n    }\n  });\n});\n","import Gesture from 'ember-gestures/recognizers/pan';\nexport default Gesture;\n","import Gesture from 'ember-gestures/recognizers/pinch';\nexport default Gesture;\n","import Gesture from 'ember-gestures/recognizers/press';\nexport default Gesture;\n","import Gesture from 'ember-gestures/recognizers/rotate';\nexport default Gesture;\n","import Gesture from 'ember-gestures/recognizers/swipe';\nexport default Gesture;\n","define(\"tt4/ember-gestures/recognizers/tap\", [\"exports\", \"ember-gestures/recognizers/tap\"], function (_exports, _tap) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _tap.default;\n    }\n  });\n});\n","define(\"tt4/ember-gestures/recognizers/vertical-pan\", [\"exports\", \"ember-gestures/recognizers/vertical-pan\"], function (_exports, _verticalPan) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _verticalPan.default;\n    }\n  });\n});\n","define(\"tt4/ember-gestures/recognizers/vertical-swipe\", [\"exports\", \"ember-gestures/recognizers/vertical-swipe\"], function (_exports, _verticalSwipe) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _verticalSwipe.default;\n    }\n  });\n});\n","import Service, { inject as service } from '@ember/service';\nimport FormsService from './forms';\nimport DS from 'ember-data';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport { assert } from '@ember/debug';\nimport { isEmpty } from '@ember/utils';\nimport { get } from '@ember/object';\n\nexport default class CollectorService extends Service {\n    @service private intl!: any;\n    @service private forms!: FormsService;\n    @service private store!: DS.Store;\n\n    constructor() {\n        super(...arguments);\n    }\n\n    public getTranslationForColumn(form: string, fieldName: string, removed: boolean = false) {\n        if (fieldName === 'id') return 'id';\n\n        if (fieldName.substring(0, 9) === 'row_info.') return this.intl.t('general.' + fieldName);\n\n        if (removed) return this.getBestTranslation(form, fieldName);\n\n        const field = this.forms.fields(form)[fieldName];\n\n        if (!field) assert(\"Field '\" + fieldName + \"' not found for form '\" + form + \"'\");\n\n        if (field.hasOwnProperty('name')) return field.name;\n        else return this.getBestTranslation(form, fieldName);\n    }\n\n    public getBestTranslation(form: string, fieldName: string) {\n        const testKeys: string[] = [\n            'report.' + form + '.' + fieldName,\n            'defaults.field.' + fieldName,\n        ];\n\n        const foundKey: string | undefined = testKeys.find((key) => {\n            return this.intl.exists(key);\n        });\n\n        if (foundKey) return this.intl.t(foundKey);\n        else return testKeys[0];\n    }\n\n    public copyRecord(record: IRecord) {\n        const form = get(record, 'constructor.modelName');\n        const jsonRecord: any = record.toJSON();\n        for (const field of ['status']) {\n            if (!isEmpty(jsonRecord[field])) {\n                jsonRecord[field] = null;\n            }\n        }\n\n        record.eachRelationship((key: string, relationship: { kind: string }) => {\n            const relKind = relationship.kind;\n            if (\n                (relKind === 'belongsTo' || relKind === 'hasMany') &&\n                !['export_salary', 'export_absence', 'row_info'].includes(key)\n            ) {\n                if (this.forms.field(form, key).type === 'databasearray') {\n                    const hasManyArr: any = [];\n                    record[key].forEach((hasManyRecord: IRecord) => {\n                        hasManyArr.push(this.copyRecord(hasManyRecord));\n                    });\n                    jsonRecord[key] = hasManyArr;\n                } else {\n                    jsonRecord[key] = record[key];\n                }\n            }\n        });\n\n        return this.store.createRecord(form, jsonRecord);\n    }\n}\n","import Service, { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport { isArray } from '@ember/array';\n\n/**\n * Handles all operations that have to do with errors\n *\n * ```js\n * @service errorHandler;\n * this.errorHandler.notify(<yourError>)\n * ```\n *\n * @class ErrorHandlerService\n * @constructor\n * @public\n */\n\nexport default class ErrorHandlerService extends Service {\n    @service private intl: any;\n    @service private notifications: any;\n\n    public toError(error: any) {\n        if (this._capiError(error)) return this._capiError(error);\n        if (this._networkError(error)) return this._networkError(error);\n\n        let message = JSON.stringify(error);\n        if (get(error, 'payload.message')) message = get(error, 'payload.message');\n        else if (error.message) message = error.message;\n        return {\n            type: 'unknown',\n            error,\n            message: this.tryToTranslateMessage(message),\n            meta: null,\n        };\n    }\n\n    /**\n     * Use notifications to show user to error. Can be used directly in promise fail\n     * EXAMPLE: promise.then(..., (reason) => get(this, 'error').notify(reason)))\n     * @method notify\n     * @param {*} error\n     */\n    public notify(error: any) {\n        this.notifications.error(this.errorToString(error), { autoClear: true });\n    }\n\n    public errorToString(error: any) {\n        if (!error) return;\n        // try to get message first from .message and if not found check also .error\n        return this.toError(error)!.message\n            ? this.toError(error)!.message\n            : this.toError(error)!.error;\n    }\n\n    private tryToTranslateMessage(message: any) {\n        if (typeof message !== 'string') return message;\n        const strippedMessage = message.toLowerCase().replace(/ /g, ' ');\n        if (this.intl.exists('error.' + strippedMessage)) {\n            return this.intl.t('error.' + strippedMessage);\n        }\n        return message;\n    }\n\n    /**\n     * FORMAT EXAMPLE\n     *  if application adapter has normalized error it looks like this\n     *  {\n     *      message: 'Request was rejected because user is not permitted to perform this operation.'\n     *      name: 'Error'\n     *      payload: {\n     *          error: 'overlap',\n     *          error_msg: 'two or more rows have overlapping dates'\n     *          meta: {hits: 'worktime', ids: Array(1)\n     *      }\n     *      stack: ....\n     *  }\n     *\n     *  OR\n     *  if application adapter has not normalized error it looks like this\n     *  {\n     *      errors: [\n     *          {\n     *              error: 'overlap'\n     *              errorMeta: {hits: 'absence', ids: Array(1)}\n     *              error_msg: 'two or more rows have overlapping dates'\n     *          }\n     *      ]\n     *      message: 'Ember Data Request POST http://localhost:30001/abcenses returned a 403 .....\n     *      name: 'Error'\n     *\n     *  @method _capiError\n     *  @param {any} error\n     *  @return {object}\n     */\n    private _capiError(error: any) {\n        if (typeof error !== 'object') return null;\n        let ret = null;\n        let errors = 'errors';\n        if (isArray(get(error, 'errors'))) {\n            errors = 'errors.0';\n        }\n\n        if (get(error, 'payload.error')) {\n            ret = {\n                type: 'capi',\n                error: get(error, 'payload.error'),\n                message: get(error, 'payload.error_msg'),\n                meta: get(error, 'payload.meta'),\n            };\n        } else if (get(error, errors + '.error')) {\n            ret = {\n                type: 'capi',\n                error: get(error, errors + '.error'),\n                message: get(error, errors + '.error_msg'),\n                meta: get(error, errors + '.errorMeta'),\n            };\n        } else {\n            return null;\n        }\n\n        switch (ret.error) {\n            case 'overlap':\n                if (ret.meta.hits === 'absence')\n                    ret.message = this.intl.t('validation.absence_overlap');\n                else if (ret.meta.hits === 'comp')\n                    ret.message = this.intl.t('validation.comp_overlap');\n                else ret.message = this.intl.t('validation.worktime_overlap');\n                break;\n            case 'not_only_row':\n                ret.message = this.intl.t('validation.worktime_not_only_row');\n                break;\n            case 'not_found':\n                ret.message = this.intl.t('validation.not_found.general');\n                break;\n            case 'validation_error':\n                ret.message = this.intl.exists('validation.' + ret.message)\n                    ? this.intl.t('validation.' + ret.message)\n                    : ret.message;\n        }\n\n        return ret;\n    }\n\n    /**\n     * FORMAT EXAMPLE\n     *  {\n     *      message: 'The ajax operation was aborted'\n     *      name: 'Error'\n     *      payload: null\n     *      stack: ....\n     *  @method _networkError\n     *  @param {any} error\n     *  @return {object}\n     */\n    private _networkError(error: any) {\n        if (typeof error !== 'object') return null;\n        if (error.message !== 'The ajax operation was aborted') return null;\n\n        return {\n            type: 'network',\n            error: error.message,\n            message: this.intl.t('validation.network_error'),\n            meta: null,\n        };\n    }\n}\n","import Service from '@ember/service';\nimport Evented from '@ember/object/evented';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\n\n/**\n *\n * Trigger an event in some component\n *\n * ```js\n *@service evented;\n *\n *this.evented.storeEvent('insert', 'worktime', this.worktimeRecord)\n *```\n * You can listen to these events in another component. Always remember to unsubscribe from the events with .off()\n * ```js\n *\n *@service event;\n *\n *constructor() {\n *   this.evented.on('storeEvent', this, 'onStoreEvent')\n *}\n *\n *function onStoreEvent(params) {\n *   if (params.type === 'worktime') // do something else\n *},\n *\n *willDestroy(){\n *   this.evented.off('storeEvent', this, 'onStoreEvent')\n *}\n * ```\n *\n * @class EventService\n * @constructor\n * @public\n */\nexport default Service.extend(Evented, {\n    /**\n     * A DS.Store event\n     * @method storeEvent\n     * @param {String} action the type of action, ie 'remove', 'insert', 'update'\n     * @param {String} type type of event that happened ie 'worktime', 'absence', 'myEvent'\n     * @param {IRecord} record the record that triggered the event\n     * @return {void}\n     */\n    storeEvent(action: string, type: string, record: IRecord): void {\n        this.trigger('storeEvent', { action, type, record });\n    },\n\n    /**\n     * Can be called for example when the application's onResume() is triggered to trigger resumes elsewhere in the application\n     * @method resumed\n     * @return {void}\n     */\n    resumed(): void {\n        this.trigger('onResumed');\n    },\n});\n","import { isEmpty, isPresent } from '@ember/utils';\nimport Service, { inject as service } from '@ember/service';\nimport { decamelize, underscore } from '@ember/string';\nimport { assert } from '@ember/debug';\nimport EmberError from '@ember/error';\nimport {\n    IFormsInterface,\n    IForms,\n    IField,\n    IFormField,\n    IFormObjects,\n} from 'tt4/ember-movenium/interfaces/forms';\n\n/**\n * Handles all operations that have to do with collector forms\n *\n * <strong>Forms must be set for this service to function</strong>\n *\n * From your application, assign your forms to this service's forms property\n * ```js\n * @service forms;\n * this.forms.forms = <yourForms>\n * ```\n *\n * @class FormsService\n * @constructor\n * @public\n */\nexport default class FormsService extends Service implements IForms {\n    @service private intl: any;\n\n    /**\n     * Internal property to store the forms for future use.\n     * To get or set forms use `this.forms`\n     * @property { object } _forms\n     * @private\n     */\n    private _forms = {};\n\n    constructor() {\n        super(...arguments);\n    }\n\n    get forms(): IFormsInterface {\n        return this._forms;\n    }\n\n    /**\n     * Forms must be set for this service to function\n     * From your application, assign your forms to this property\n     * ```js\n     * @service forms;\n     * this.forms.forms = <yourForms>\n     * ```\n     * @property { object } forms\n     */\n    set forms(forms: IFormsInterface) {\n        this._forms = forms;\n    }\n\n    /**\n     * Returns all fields of a form\n        @method fields\n        @param {string} form\n        @return {object}\n    */\n    public fields(form: string): IFormObjects {\n        if (isEmpty(this.forms)) {\n            return {};\n        }\n        if (!form) {\n            {\n                return {};\n            }\n        }\n\n        form = decamelize(form);\n        form = underscore(form);\n\n        if (!this.forms.hasOwnProperty(form)) {\n            throw new EmberError(\"forms service fields: form '\" + form + \"' not found\");\n        }\n\n        return this.forms[form].objects;\n    }\n\n    /**\n     * Returns the field of a form with additional properties\n     * @method field\n     * @param {string} form\n     * @param {string} fieldName\n     * @return {object}\n     */\n    public field(form: string, fieldName: string): IFormField {\n        form = decamelize(underscore(form));\n        const field = this.formField(form, fieldName);\n        assert('Field ' + fieldName + ' is not found from form ' + form, field);\n        return {\n            form,\n            name: fieldName,\n            type: field.type,\n            translated_name: this.intl.t(form + '.' + fieldName, { default: field.name }),\n            options: field.options,\n            features: field.features,\n        };\n    }\n\n    /**\n     * Returns the <strong>raw, unaltered</strong> field of a form\n     * @method formField\n     * @param {string} form\n     * @param {string} field\n     * @return {object}\n     */\n    public formField(form: string, field: string): IField {\n        return this.fields(form)[field];\n    }\n\n    public fieldArray(form: string): IFormField[] {\n        form = decamelize(underscore(form));\n        const fields: IFormObjects = this.fields(form);\n        const ret: IFormField[] = [];\n        Object.keys(fields).forEach((key) => {\n            const field = fields[key];\n            ret.push({\n                form,\n                name: key,\n                translated_name: this.intl.t(form + '.' + key, { default: fields[key].name }),\n                type: field.type,\n                options: field.options,\n                features: field.features,\n            });\n        });\n        return ret;\n    }\n\n    public formExists(name: string) {\n        if (!this.forms) return;\n        return this.forms[name];\n    }\n\n    public fieldExists(form: string, name: string): boolean {\n        if (!this.formExists(form)) return false;\n        return isPresent(this.forms[form].objects[name]);\n    }\n}\n","import Service, { inject as service } from '@ember/service';\n\ninterface ILocalStorage {\n    setItem(key: string, value: any): void;\n    getItem(key: string): null | JSON;\n    removeItem(key: string): void;\n}\n\nexport default class LocalstorageService extends Service implements ILocalStorage {\n    @service private session!: any;\n\n    private namespace: string = 'tt4';\n\n    public setItem(key: string, value: any): void {\n        localStorage.setItem(this.createKey(key), JSON.stringify(value));\n    }\n\n    public getItem(key: string) {\n        const str = localStorage.getItem(this.createKey(key)) as string;\n        return JSON.parse(str);\n    }\n\n    public removeItem(key: string) {\n        localStorage.removeItem(this.createKey(key));\n    }\n\n    public createKey(str: string) {\n        const currentuser = this.session.currentUser?.id;\n        if (!currentuser)\n            throw new Error('Cannot use localstorage service because currentUser is not set');\n        return this.namespace + '.' + currentuser + '.' + str;\n    }\n}\n","// noinspection TypeScriptValidateTypes\nimport Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { isArray } from '@ember/array';\n\nimport FormsService from './forms';\nimport { decamelize } from '@ember/string';\n\ninterface ICurrentUser {\n    [key: string]: string;\n}\n\nexport default class NeedsService extends Service {\n    @service private session: any;\n    @service private forms!: FormsService;\n\n    public test(needs: string | string[]): boolean {\n        if (!needs) return true;\n        if (!isArray(needs)) needs = [needs];\n\n        for (let need of needs) {\n            let inverse = false;\n            if (need.substring(0, 1) === '!') {\n                inverse = true;\n                need = need.substring(1);\n            }\n            const ok = inverse ? !this.testOne(need) : this.testOne(need);\n            if (!ok) return false;\n        }\n\n        return true;\n    }\n\n    public testOne(need: string): boolean {\n        if (need.substring(0, 9) === 'userlevel') return this.testUserlevel(need.split('=')[1]);\n        if (need.includes('@')) return this.testFormPrivilege(need);\n        if (need.includes('.')) return this.testFieldExistance(need);\n\n        return false;\n    }\n\n    private testUserlevel(userlevels: string): boolean {\n        const splitUserlevels = userlevels.split(',');\n\n        return splitUserlevels.includes(\n            (this.session.currentUser as ICurrentUser).userlevel.toString(),\n        );\n    }\n\n    private testFormPrivilege(need: string): boolean {\n        const split = need.split('@');\n        const form = decamelize(split[0]);\n        const privilege = split[1];\n\n        if (!this.forms.formExists(form)) return false;\n\n        if (privilege === 'errors') return this.forms.forms[form].errors ? true : false;\n        if (!this.forms.forms[form].privileges) return false;\n\n        return !!this.forms.forms[form].privileges![privilege];\n    }\n\n    private testFieldExistance(need: string): boolean {\n        const split = need.split('.');\n        return this.forms.fieldExists(split[0], split[1]);\n    }\n}\n","/**\n * Provides functions and properties to deal with files\n *\n * @module country\n */\n\ninterface ICountry {\n    id: string;\n    name: string;\n    number?: string;\n}\n\n/**\n * JSON Array of all countries:\n * ```ts\n * [\n *    {id: 'fi', name: 'Finland', number: '+358'},\n *    {id: 'se', name: 'Sweden', number: '+46'},\n *    {id: 'ee', name: 'Estonia', number: '+372'},\n *    {id: 'af', name: 'Afghanistan'},\n *    ...\n * ]\n * ```\n * @const countries\n * @type {array}\n */\nexport const countries = [\n    { id: 'fi', name: 'Finland', number: '+358' },\n    { id: 'se', name: 'Sweden', number: '+46' },\n    { id: 'ee', name: 'Estonia', number: '+372' },\n    { id: 'af', name: 'Afghanistan' },\n    { id: 'ax', name: 'Aland Islands' },\n    { id: 'al', name: 'Albania' },\n    { id: 'dz', name: 'Algeria' },\n    { id: 'as', name: 'American Samoa' },\n    { id: 'ad', name: 'Andorra' },\n    { id: 'ao', name: 'Angola' },\n    { id: 'ai', name: 'Anguilla' },\n    { id: 'aq', name: 'Antarctica' },\n    { id: 'ag', name: 'Antigua And Barbuda' },\n    { id: 'ar', name: 'Argentina' },\n    { id: 'am', name: 'Armenia' },\n    { id: 'aw', name: 'Aruba' },\n    { id: 'au', name: 'Australia' },\n    { id: 'at', name: 'Austria' },\n    { id: 'az', name: 'Azerbaijan' },\n    { id: 'bs', name: 'Bahamas' },\n    { id: 'bh', name: 'Bahrain' },\n    { id: 'bd', name: 'Bangladesh' },\n    { id: 'bb', name: 'Barbados' },\n    { id: 'by', name: 'Belarus' },\n    { id: 'be', name: 'Belgium' },\n    { id: 'bz', name: 'Belize' },\n    { id: 'bj', name: 'Benin' },\n    { id: 'bm', name: 'Bermuda' },\n    { id: 'bt', name: 'Bhutan' },\n    { id: 'bo', name: 'Bolivia, Plurinational State Of' },\n    { id: 'bq', name: 'Bonaire, Sint Eustatius And Saba' },\n    { id: 'ba', name: 'Bosnia And Herzegovina' },\n    { id: 'bw', name: 'Botswana' },\n    { id: 'bv', name: 'Bouvet Island' },\n    { id: 'br', name: 'Brazil' },\n    { id: 'io', name: 'British Indian Ocean Territory' },\n    { id: 'bn', name: 'Brunei Darussalam' },\n    { id: 'bg', name: 'Bulgaria' },\n    { id: 'bf', name: 'Burkina Faso' },\n    { id: 'bi', name: 'Burundi' },\n    { id: 'kh', name: 'Cambodia' },\n    { id: 'cm', name: 'Cameroon' },\n    { id: 'ca', name: 'Canada' },\n    { id: 'cv', name: 'Cape Verde' },\n    { id: 'ky', name: 'Cayman Islands' },\n    { id: 'cf', name: 'Central African Republic' },\n    { id: 'td', name: 'Chad' },\n    { id: 'cl', name: 'Chile' },\n    { id: 'cn', name: 'China' },\n    { id: 'cx', name: 'Christmas Island' },\n    { id: 'cc', name: 'Cocos (keeling) Islands' },\n    { id: 'co', name: 'Colombia' },\n    { id: 'km', name: 'Comoros' },\n    { id: 'cg', name: 'Congo' },\n    { id: 'cd', name: 'Congo, The Democratic Republic Of The' },\n    { id: 'ck', name: 'Cook Islands' },\n    { id: 'cr', name: 'Costa Rica' },\n    { id: 'ci', name: \"Cote D'ivoire\" },\n    { id: 'hr', name: 'Croatia' },\n    { id: 'cu', name: 'Cuba' },\n    { id: 'cw', name: 'Curacao' },\n    { id: 'cy', name: 'Cyprus' },\n    { id: 'cz', name: 'Czech Republic' },\n    { id: 'dk', name: 'Denmark' },\n    { id: 'dj', name: 'Djibouti' },\n    { id: 'dm', name: 'Dominica' },\n    { id: 'do', name: 'Dominican Republic' },\n    { id: 'ec', name: 'Ecuador' },\n    { id: 'eg', name: 'Egypt' },\n    { id: 'sv', name: 'El Salvador' },\n    { id: 'gq', name: 'Equatorial Guinea' },\n    { id: 'er', name: 'Eritrea' },\n    { id: 'et', name: 'Ethiopia' },\n    { id: 'fk', name: 'Falkland Islands (malvinas)' },\n    { id: 'fo', name: 'Faroe Islands' },\n    { id: 'fj', name: 'Fiji' },\n    { id: 'fr', name: 'France', number: '+33' },\n    { id: 'gf', name: 'French Guiana' },\n    { id: 'pf', name: 'French Polynesia' },\n    { id: 'tf', name: 'French Southern Territories' },\n    { id: 'ga', name: 'Gabon' },\n    { id: 'gm', name: 'Gambia' },\n    { id: 'ge', name: 'Georgia' },\n    { id: 'de', name: 'Germany', number: '+49' },\n    { id: 'gh', name: 'Ghana' },\n    { id: 'gi', name: 'Gibraltar' },\n    { id: 'gr', name: 'Greece' },\n    { id: 'gl', name: 'Greenland' },\n    { id: 'gd', name: 'Grenada' },\n    { id: 'gp', name: 'Guadeloupe' },\n    { id: 'gu', name: 'Guam' },\n    { id: 'gt', name: 'Guatemala' },\n    { id: 'gg', name: 'Guernsey' },\n    { id: 'gn', name: 'Guinea' },\n    { id: 'gw', name: 'Guinea-bissau' },\n    { id: 'gy', name: 'Guyana' },\n    { id: 'ht', name: 'Haiti' },\n    { id: 'hm', name: 'Heard Island And Mcdonald Islands' },\n    { id: 'va', name: 'Holy See (vatican City State)' },\n    { id: 'hn', name: 'Honduras' },\n    { id: 'hk', name: 'Hong Kong' },\n    { id: 'hu', name: 'Hungary', number: '+36' },\n    { id: 'is', name: 'Iceland' },\n    { id: 'in', name: 'India' },\n    { id: 'id', name: 'Indonesia' },\n    { id: 'ir', name: 'Iran, Islamic Republic Of' },\n    { id: 'iq', name: 'Iraq' },\n    { id: 'ie', name: 'Ireland' },\n    { id: 'im', name: 'Isle Of Man' },\n    { id: 'il', name: 'Israel' },\n    { id: 'it', name: 'Italy' },\n    { id: 'jm', name: 'Jamaica' },\n    { id: 'jp', name: 'Japan' },\n    { id: 'je', name: 'Jersey' },\n    { id: 'jo', name: 'Jordan' },\n    { id: 'kz', name: 'Kazakhstan' },\n    { id: 'ke', name: 'Kenya' },\n    { id: 'ki', name: 'Kiribati' },\n    { id: 'kp', name: \"Korea, Democratic People's Republic Of\" },\n    { id: 'kr', name: 'Korea, Republic Of' },\n    { id: 'xk', name: 'Kosovo' },\n    { id: 'kw', name: 'Kuwait' },\n    { id: 'kg', name: 'Kyrgyzstan' },\n    { id: 'la', name: \"Lao People's Democratic Republic\" },\n    { id: 'lv', name: 'Latvia', number: '+371' },\n    { id: 'lb', name: 'Lebanon' },\n    { id: 'ls', name: 'Lesotho' },\n    { id: 'lr', name: 'Liberia' },\n    { id: 'ly', name: 'Libyan Arab Jamahiriya' },\n    { id: 'li', name: 'Liechtenstein' },\n    { id: 'lt', name: 'Lithuania' },\n    { id: 'lu', name: 'Luxembourg' },\n    { id: 'mo', name: 'Macao' },\n    { id: 'mk', name: 'Macedonia, The Former Yugoslav Republic Of' },\n    { id: 'mg', name: 'Madagascar' },\n    { id: 'mw', name: 'Malawi' },\n    { id: 'my', name: 'Malaysia' },\n    { id: 'mv', name: 'Maldives' },\n    { id: 'ml', name: 'Mali' },\n    { id: 'mt', name: 'Malta' },\n    { id: 'mh', name: 'Marshall Islands' },\n    { id: 'mq', name: 'Martinique' },\n    { id: 'mr', name: 'Mauritania' },\n    { id: 'mu', name: 'Mauritius' },\n    { id: 'yt', name: 'Mayotte' },\n    { id: 'mx', name: 'Mexico' },\n    { id: 'fm', name: 'Micronesia, Federated States Of' },\n    { id: 'md', name: 'Moldova, Republic Of' },\n    { id: 'mc', name: 'Monaco' },\n    { id: 'mn', name: 'Mongolia' },\n    { id: 'me', name: 'Montenegro' },\n    { id: 'ms', name: 'Montserrat' },\n    { id: 'ma', name: 'Morocco' },\n    { id: 'mz', name: 'Mozambique' },\n    { id: 'mm', name: 'Myanmar' },\n    { id: 'na', name: 'Namibia' },\n    { id: 'nr', name: 'Nauru' },\n    { id: 'np', name: 'Nepal' },\n    { id: 'nl', name: 'Netherlands', number: '+31' },\n    { id: 'nc', name: 'New Caledonia' },\n    { id: 'nz', name: 'New Zealand' },\n    { id: 'ni', name: 'Nicaragua' },\n    { id: 'ne', name: 'Niger' },\n    { id: 'ng', name: 'Nigeria' },\n    { id: 'nu', name: 'Niue' },\n    { id: 'nf', name: 'Norfolk Island' },\n    { id: 'mp', name: 'Northern Mariana Islands' },\n    { id: 'no', name: 'Norway', number: '+47' },\n    { id: 'om', name: 'Oman' },\n    { id: 'pk', name: 'Pakistan' },\n    { id: 'pw', name: 'Palau' },\n    { id: 'ps', name: 'Palestinian Territory, Occupied' },\n    { id: 'pa', name: 'Panama' },\n    { id: 'pg', name: 'Papua New Guinea' },\n    { id: 'py', name: 'Paraguay' },\n    { id: 'pe', name: 'Peru' },\n    { id: 'ph', name: 'Philippines' },\n    { id: 'pn', name: 'Pitcairn' },\n    { id: 'pl', name: 'Poland', number: '+48' },\n    { id: 'pt', name: 'Portugal' },\n    { id: 'pr', name: 'Puerto Rico' },\n    { id: 'qa', name: 'Qatar' },\n    { id: 're', name: 'Reunion' },\n    { id: 'ro', name: 'Romania' },\n    { id: 'ru', name: 'Russian Federation' },\n    { id: 'rw', name: 'Rwanda' },\n    { id: 'bl', name: 'Saint Barthelemy' },\n    { id: 'sh', name: 'Saint Helena, Ascension And Tristan Da Cunha' },\n    { id: 'kn', name: 'Saint Kitts And Nevis' },\n    { id: 'lc', name: 'Saint Lucia' },\n    { id: 'mf', name: 'Saint Martin (french Part)' },\n    { id: 'pm', name: 'Saint Pierre And Miquelon' },\n    { id: 'vc', name: 'Saint Vincent And The Grenadines' },\n    { id: 'ws', name: 'Samoa' },\n    { id: 'sm', name: 'San Marino' },\n    { id: 'st', name: 'Sao Tome And Principe' },\n    { id: 'sa', name: 'Saudi Arabia' },\n    { id: 'sn', name: 'Senegal' },\n    { id: 'rs', name: 'Serbia' },\n    { id: 'sc', name: 'Seychelles' },\n    { id: 'sl', name: 'Sierra Leone' },\n    { id: 'sg', name: 'Singapore' },\n    { id: 'sx', name: 'Sint Maarten (dutch Part)' },\n    { id: 'sk', name: 'Slovakia' },\n    { id: 'si', name: 'Slovenia' },\n    { id: 'sb', name: 'Solomon Islands' },\n    { id: 'so', name: 'Somalia' },\n    { id: 'za', name: 'South Africa' },\n    { id: 'gs', name: 'South Georgia And The South Sandwich Islands' },\n    { id: 'es', name: 'Spain', number: '+34' },\n    { id: 'lk', name: 'Sri Lanka' },\n    { id: 'sd', name: 'Sudan' },\n    { id: 'sr', name: 'Suriname' },\n    { id: 'sj', name: 'Svalbard And Jan Mayen' },\n    { id: 'sz', name: 'Swaziland' },\n    { id: 'ch', name: 'Switzerland' },\n    { id: 'sy', name: 'Syrian Arab Republic' },\n    { id: 'tw', name: 'Taiwan, Province Of China' },\n    { id: 'tj', name: 'Tajikistan' },\n    { id: 'tz', name: 'Tanzania, United Republic Of' },\n    { id: 'th', name: 'Thailand' },\n    { id: 'tl', name: 'Timor-leste' },\n    { id: 'tg', name: 'Togo' },\n    { id: 'tk', name: 'Tokelau' },\n    { id: 'to', name: 'Tonga' },\n    { id: 'tt', name: 'Trin{idad And Tobago' },\n    { id: 'tn', name: 'Tunisia' },\n    { id: 'tr', name: 'Turkey' },\n    { id: 'tm', name: 'Turkmenistan' },\n    { id: 'tc', name: 'Turks And Caicos Islands' },\n    { id: 'tv', name: 'Tuvalu' },\n    { id: 'ug', name: 'Uganda' },\n    { id: 'ua', name: 'Ukraine' },\n    { id: 'ae', name: 'United Arab Emirates' },\n    { id: 'gb', name: 'United Kingdom', number: '+44' },\n    { id: 'us', name: 'United States' },\n    { id: 'um', name: 'United States Minor Outlying Islands' },\n    { id: 'uy', name: 'Uruguay' },\n    { id: 'uz', name: 'Uzbekistan' },\n    { id: 'vu', name: 'Vanuatu' },\n    { id: 'va', name: 'Vatican City State' },\n    { id: 've', name: 'Venezuela, Bolivarian Republic Of' },\n    { id: 'vn', name: 'Viet Nam' },\n    { id: 'vg', name: 'Virgin Islands, British' },\n    { id: 'vi', name: 'Virgin Islands, U.s.' },\n    { id: 'wf', name: 'Wallis And Futuna' },\n    { id: 'eh', name: 'Western Sahara' },\n    { id: 'ye', name: 'Yemen' },\n    { id: 'zm', name: 'Zambia' },\n    { id: 'zw', name: 'Zimbabwe' },\n];\n\n/**\n * array: ['se', 'fi', 'pl', 'ee', 'lv', 'lt', 'no', 'dk', 'cz']\n * @const shortNordic\n * @type {array}\n */\nexport const shortNordic = ['se', 'fi', 'pl', 'ee', 'lv', 'lt', 'no', 'dk', 'cz'];\n\n/**\n * Filtered countries array based on the shortNordic array\n * @const shortList\n * @type {array}\n */\nexport const shortList = countries.filter((country: ICountry) => {\n    return shortNordic.includes(country.id);\n});\n\n/**\n * Filtered countries array with only the countries that have a phone number property\n * @const phoneList\n * @type {array}\n */\nexport const phoneList = countries.filter((country: ICountry) => {\n    return country.hasOwnProperty('number');\n});\n\n// list all exports here\nexport default { countries, shortNordic, shortList, phoneList };\n","import { Promise as EmberPromise } from 'rsvp';\n\n/**\n * Provides functions and properties to deal with files\n *\n * @module file\n */\n\nconst downscaleFactor = 0.6; // default amount to shrink image by.. only if width param is not given\n\n/**\n * A list of supported image types that are accepted for uploading\n * @const imageTypes\n * @type {Array}\n */\nexport const imageTypes = [\n    'image/gif',\n    'image/png',\n    'image/jpg',\n    'image/jpeg',\n    'image/gif',\n    'image/svg',\n    'image/bmp',\n];\n/* istanbul ignore next */\nexport function makeFileUrl(url: string, str: string) {\n    if (str.startsWith('http')) return str;\n    else return url + str;\n}\n\n/**\n * Returns a Blob from the given URL\n * @function getImageFromUrl\n * @param {String} url url to fetch file from\n * @param {Boolean} resize whether to resize received image or not\n * @return {Promise} {name: 'file', 'file': dataUrl}\n */\n/* istanbul ignore next */\nexport function getImageFromUrl(url: string, responseType: string = 'blob') {\n    if (!url)\n        throw new Error(\n            'Fetching image from url failed because it did not receive the url parameter',\n        );\n    return new EmberPromise((resolve, reject) => {\n        const xhr = new XMLHttpRequest();\n        xhr.open('GET', url, true);\n\n        xhr.responseType = responseType as XMLHttpRequestResponseType;\n\n        xhr.onload = async () => {\n            const blob = xhr.response;\n            blob.lastModifiedDate = new Date();\n            blob.name = 'file';\n\n            if (!imageTypes.includes(blob.type)) {\n                throw new Error(\n                    'Image of type ' + blob.type + ' received from ' + url + ' is not allowed',\n                );\n            }\n\n            resolve(blob);\n        };\n\n        xhr.onerror = (error) => {\n            reject(error);\n        };\n\n        xhr.send();\n    });\n}\n\n/**\n * Returns a resized dataUrl from the given File OR Blob OR DataURL\n * @function resizeImage\n * @param {File, Blob, String} file Original file as File, Blob or DataURL(base64).\n * @param {Number} width Target image width\n * @param {Number} height Target image height\n * @param {Number} quality Image compression as % 0-100 or decimal 0.0 - 1.0 default 50 (0.5)\n * @param {Boolean} keepAspectRatio Maintain image's aspect ratio on resize - default True\n * @return {Promise} resized Base64 DataUrl of the given file\n */\n/* istanbul ignore next */\nexport function resizeImage(\n    file: File | Blob,\n    width: number | null = null,\n    height: number | null = null,\n    quality: number = 80,\n    keepAspectRatio: boolean = true,\n) {\n    /*tslint:disable-line*/\n    return new EmberPromise((resolve, reject) => {\n        // if(!width) throw new Error('Image resize failed because it did not receive the width parameter')\n        if (!keepAspectRatio && !height)\n            throw new Error(\n                'Image resize failed because it wanted to change the aspect ratio, but it did not receive the height parameter',\n            );\n\n        const mime = file.type || 'image/jpeg';\n\n        // we want quality to be decimal (like 0.5 for 50%)\n        if (quality % 1 === 0) quality = Number((quality / 100).toFixed(2));\n\n        const reader = new FileReader();\n\n        if (typeof file === 'string') {\n            file = dataURLtoBlob(file);\n        }\n\n        reader.readAsDataURL(file);\n\n        reader.onloadend = () => {\n            const img = new Image() as any;\n            img.src = reader.result;\n            img.onload = () => {\n                const canvas = document.createElement('canvas');\n                let finalQuality = quality;\n                let finalDownscaleFactor = downscaleFactor;\n\n                // If image is smaller than 1600px in any dimension, we do not downscale it\n                if (img?.width < 1600 || img?.height < 1600) {\n                    finalQuality = 100;\n                    finalDownscaleFactor = 1;\n                }\n\n                // if we do not have a target width just downscale image by some amount\n                if (!width) width = img.width * finalDownscaleFactor;\n                // we calculate scaleFactor from image width to maintain aspect ratio\n                const scaleFactor = width / img.width;\n\n                if (keepAspectRatio) height = img.height * scaleFactor;\n\n                canvas.width = width;\n                canvas.height = Number(height);\n                const ctx = canvas.getContext('2d');\n\n                ctx?.drawImage(img, 0, 0, width, Number(height));\n                // resolve canvas as dataURL\n                resolve(canvas.toDataURL(mime, finalQuality));\n            };\n        };\n\n        reader.onerror = (err: any) => {\n            reject(err);\n        };\n    });\n}\n\n/**\n * Transforms a base64 encoded string to a Blob\n * @function dataURLtoBlob\n * @param {String} dataurl Base64\n * @param {String} filename Your desired filename (default = 'file')\n * @return {Blob}\n */\n/* istanbul ignore next */\nexport function dataURLtoBlob(dataurl: string, filename = 'file') {\n    const arr = dataurl.split(',');\n    if (!arr) return null;\n    const mime = arr[0].match(/:(.*?);/)![1];\n    const bstr = atob(arr[1]);\n    let n = bstr.length;\n    const u8arr = new Uint8Array(n);\n\n    while (n--) {\n        u8arr[n] = bstr.charCodeAt(n);\n    }\n    const blob = new Blob([u8arr], { type: mime }) as any;\n    blob.name = filename;\n    blob.lastModifiedDate = new Date();\n    return blob;\n}\n\nexport function blackListFiles() {\n    return [\n        '.apk',\n        '.sk',\n        '.ahk',\n        '.jar',\n        '.run',\n        '.ipa',\n        '.cmd',\n        '.0xe',\n        '.exe',\n        '.xbe',\n        '.bin',\n        '.workflow',\n        '.bin',\n        '.8ck',\n        '.elf',\n        '.bat',\n        '.xap',\n        '.air',\n        '.appimage',\n        '.scr',\n        '.app',\n        '.ac',\n        '.gadget',\n        '.widget',\n        '.u3p',\n        '.bms',\n        '.com',\n        '.out',\n        '.pif',\n        '.xlm',\n        '.gpe',\n        '.73k',\n        '.cgi',\n        '.ex_',\n        '.script',\n        '.rxe',\n        '.scb',\n        '.scar',\n        '.xex',\n        '.paf.exe',\n        '.command',\n        '.epk',\n        '.tcp',\n        '.action',\n        '.coffee',\n        '.acc',\n        '.ebs2',\n        '.celx',\n        '.hta',\n        '.rfu',\n        '.fxp',\n        '.isu',\n        '.ecf',\n        '.ps1',\n        '.89k',\n        '.xbap',\n        '.rbf',\n        '.plsc',\n        '.caction',\n        '.fas',\n        '.actc',\n        '.icd',\n        '.vxp',\n        '.dld',\n        '.cof',\n        '.mlx',\n        '.x86_64',\n        '.m3g',\n        '.phar',\n        '.vpm',\n        '.acr',\n        '.a6p',\n        '.jsx',\n        '.wsh',\n        '.vbs',\n        '.ex_',\n        '.mcr',\n        '.ws',\n        '.zl9',\n        '.js',\n        '.dek',\n        '.server',\n        '.rpj',\n        '.x86',\n        '.ba_',\n        '.a7r',\n        '.pex',\n        '.ex4',\n        '.iim',\n        '.ear',\n        '.jsf',\n        '.plx',\n        '.pyc',\n        '.pwc',\n        '.vlx',\n        '.nexe',\n        '.wcm',\n        '.mel',\n        '.ms',\n        '.mm',\n        '.exe1',\n        '.snap',\n        '.applescript',\n        '.exe',\n        '.ex5',\n        '.paf',\n        '.mcr',\n        '.ebm',\n        '.vbscript',\n        '.prg',\n        '.rgs',\n        '.frs',\n        '.scpt',\n        '.hms',\n        '.e_e',\n        '.otm',\n        '.shb',\n        '.uvm',\n        '.atmx',\n        '.sct',\n        '.mrc',\n        '.spr',\n        '.widget',\n        '.csh',\n        '.wiz',\n        '.fpi',\n        '.cyw',\n        '.ebs',\n        '.mxe',\n        '.pyo',\n        '.mrp',\n        '.gs',\n        '.osx',\n        '.fas',\n        '.azw2',\n        '.prg',\n        '.fky',\n        '.xqt',\n        '.actm',\n        '.kix',\n        '.app',\n        '.arscript',\n        '.kx',\n        '.vexe',\n        '.tms',\n        '.rox',\n        '.cel',\n        '.seed',\n        '.n',\n        '.vbe',\n        '.tiapp',\n        '.ezs',\n        '.thm',\n        '.beam',\n        '.udf',\n        '.rfs',\n        '.ls',\n        '.prc',\n        '.xys',\n        '.s2a',\n        '.mac',\n        '.sca',\n        '.esh',\n        '.wpm',\n        '.wpk',\n        '.dmc',\n        '.msl',\n        '.scptd',\n        '.shortcut',\n        '.mhm',\n        '.cheat',\n        '.ms',\n        '.wsf',\n        '.jse',\n        '.qit',\n        '.lo',\n        '.es',\n        '.rbx',\n        '.ds',\n        '.eham',\n        '.mem',\n        '.ebacmd',\n        '.mam',\n        '.upx',\n        '.dxl',\n        '.ksh',\n        '.ham',\n        '.btm',\n        '.vdo',\n        '.sapk',\n        '.mio',\n        '.ipf',\n        '.gpu',\n        '.ygh',\n        '.exopc',\n        '.sbs',\n        '.ita',\n        '.hpf',\n        '.asb',\n        '.gm9',\n        '.mcr',\n        '.mamc',\n        '.prg',\n        '.sts',\n        '.qpx',\n        '.ezt',\n        '.smm',\n        '.ore',\n        '.ncl',\n        '.pvd',\n        '.svg',\n    ];\n}\n\nexport default {\n    imageTypes,\n    makeFileUrl,\n    getImageFromUrl,\n    resizeImage,\n    dataURLtoBlob,\n    blackListFiles,\n};\n","declare const window: any;\ndeclare const device: any;\n\n/**\n * Provides functions and properties to deal with the gui\n *\n * @module gui\n */\n\nexport function isMobile(width = 760) {\n    return window.matchMedia('only screen and (max-width: ' + width + 'px)').matches;\n}\n\n/**\n * Is the user's browser Internet Explorer?\n * @const isIE\n * @type {Boolean}\n */\nexport const isIE = (() => {\n    const ua = window.navigator.userAgent;\n    const msie = ua.indexOf('MSIE ');\n    if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\\:11\\./)) return true;\n    return false;\n})();\n\n/**\n * Is the device an Android phone?\n * @const isAndroid\n * @type {Boolean}\n */\nexport const isAndroid = (() => {\n    return window.cordova && device.platform === 'Android';\n})();\n\n/**\n * Returns the modal url from a url\n * @function modalUrl\n * @param {String} url\n * @return {String}\n */\nexport const modalUrl = (url: string) => {\n    const base = window.location.href;\n    const split = base.split('?');\n\n    if (split[1]! && split[1].substr(0, 6) === 'modal=') delete split[1];\n\n    url = encodeURIComponent(url);\n\n    url = url.replace('%3D', '=');\n\n    if (url.startsWith('http')) return url;\n\n    return split[0] + '?' + (split[1] != null ? split[1] + '&' + url : url);\n};\n// list all exports here\nexport default { isMobile, isIE, isAndroid, modalUrl };\n","/**\n * Provides functions and properties to export pdf\n *\n * @module pdf-export\n */\n\ndeclare const window: any;\ninterface IExportParams {\n    addSumRow: boolean;\n    dateAndPlace: boolean;\n    extraParams: object;\n    imgLocation: string;\n    orientation: string;\n    signature: boolean;\n    statusInfo: boolean;\n    template: IRecord;\n    type: string;\n}\n\n// import { createPdf } from 'pdfmake/pdfmake';\nimport moment from 'moment';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport { assert } from '@ember/debug';\nimport { getAssetFolder, getScriptsInOrder } from 'tt4/utils/getScript';\n\n/**\n * Creates pdf from elements (note: call this function preferably through export service)\n * @function createPdfFromElements\n * @param {any} this\n * @param {any} elements\n * @param {String} mode\n * @param {String} headers\n * @param {Number} headerSize\n * @param {IExportParams} exportParams\n */\n/* istanbul ignore next */\nexport async function createPdfFromElements(\n    self: any,\n    elements: any,\n    mode = 'download',\n    headers = '',\n    headerSize = 8,\n    exportParams: IExportParams,\n) {\n    if (!self.Collector) assert('Collector service injection missing');\n    if (!self.session) assert('Session service injection missing');\n    if (!self.intl) assert('Intl service injection missing');\n    if (!self.cordova) assert('Cordova service injection missing');\n    let assetsfolder = getAssetFolder('assets');\n    await getScriptsInOrder([\n        assetsfolder + 'pdfmake_v0.1.68.min.js',\n        assetsfolder + 'vfs_fonts_v0.1.68.min.js',\n    ]);\n\n    const pdfContent = [];\n    let orientation = exportParams.orientation ? exportParams.orientation : 'portrait';\n    const additionalHeaders = await getHeaders(headers, headerSize, self.Collector, self.session);\n    pdfContent.push(additionalHeaders);\n\n    elements = putElementsInColumns(elements, self, exportParams.template, exportParams.statusInfo);\n    for (const element of elements) {\n        if (!element) return;\n        if (element.table && !exportParams.orientation) {\n            if (element.table.body[0].length > 7) {\n                orientation = 'landscape';\n            }\n        }\n        pdfContent.push(element);\n    }\n\n    let pageSize: any = 'A4';\n\n    if (exportParams.signature) {\n        pdfContent.push({\n            style: 'marginTop',\n            table: {\n                widths: ['auto', 140, 30, 'auto', 140],\n                body: [\n                    [\n                        {\n                            border: [false, true, false, false],\n                            text: self.intl.t('report.worktask.signature') + ':',\n                        },\n                        {\n                            border: [false, true, false, false],\n                            text: '',\n                        },\n                        {\n                            border: [false, false, false, false],\n                            text: '',\n                        },\n                        {\n                            border: [false, true, false, false],\n                            text: self.intl.t('thereport.print_name') + ':',\n                        },\n                        {\n                            border: [false, true, false, false],\n                            text: '',\n                        },\n                    ],\n                ],\n            },\n        });\n    }\n    if (exportParams.dateAndPlace) {\n        pdfContent.push({\n            style: 'marginTop',\n            table: {\n                widths: ['auto', 140, 55, 'auto', 140],\n                body: [\n                    [\n                        {\n                            border: [false, true, false, false],\n                            text: self.intl.t('thereport.date') + ':',\n                        },\n                        {\n                            border: [false, true, false, false],\n                            text: '',\n                        },\n                        {\n                            border: [false, false, false, false],\n                            text: '',\n                        },\n                        {\n                            border: [false, true, false, false],\n                            text: self.intl.t('thereport.place') + ':',\n                        },\n                        {\n                            border: [false, true, false, false],\n                            text: '',\n                        },\n                    ],\n                ],\n            },\n        });\n    }\n    const tableData =\n        elements[0].table && elements[0].style === 'table' ? elements[0].table : elements[1].table;\n    if (tableData && exportParams.imgLocation && exportParams.imgLocation === 'afterReport') {\n        pdfContent.push(tryToExtractImages(tableData.body, orientation));\n    }\n\n    const docDefinition: any = {\n        content: pdfContent,\n        pageOrientation: orientation,\n        footer(currentPage: any, pageCount: any) {\n            return getFooter(currentPage, pageCount);\n        },\n        pageMargins: [15, 15, 15, 15],\n        styles: {\n            tableHeader: { bold: true },\n            bigText: { bold: true, fontSize: 20 },\n            table: { fontSize: 10 },\n            footer: { fontSize: 8, color: 'grey' },\n            headertext: { fontSize: 8 },\n            marginTop: { margin: [0, 40, 0, 0] },\n        },\n    };\n    // @ts-ignore\n    const pdfDocGenerator = createPdf(docDefinition);\n    pdfDocGenerator.getStream();\n    for (const item of pdfContent) {\n        if (item.style === 'table' && item._maxWidth > 842 && orientation !== 'portrait') {\n            pageSize = { height: item._maxWidth, width: item._maxWidth / Math.sqrt(2) };\n            continue;\n        }\n    }\n    docDefinition.pageSize = pageSize;\n    if (mode === 'download') {\n        if (window.cordova) {\n            return new Promise((resolve) => {\n                pdfDocGenerator.getBuffer(async (buffer: any) => {\n                    const utf8 = new Uint8Array(buffer);\n                    const binaryArray = utf8.buffer;\n                    const s = await self.cordova.saveFile(binaryArray, 'export', 'pdf');\n                    resolve(s);\n                });\n            });\n        } else {\n            return pdfDocGenerator.download('export.pdf');\n        }\n    } else if (mode === 'base64') {\n        return new Promise((resolve, reject) => {\n            pdfDocGenerator.getBase64((file: string) => {\n                if (file) resolve(file);\n                else reject();\n            });\n        });\n    }\n}\n/* istanbul ignore next */\nfunction putElementsInColumns(elements: any, self: any, template: any, statusInfo: any) {\n    const ret: any[] = [];\n    let row: any[] = [];\n    const cell: any[] = [];\n    const widths: any[] = [];\n    let fillingColumn = null;\n    let cols = self.columns;\n    // If template is selected, use only those columns when determining widths\n    if (template) {\n        const templateCols = template.columns.split(',');\n        cols = cols.filter((col: any) => templateCols.includes(col.name));\n    }\n\n    for (const column of cols) {\n        if (['textbox', 'textarea', 'textarea_varchar'].includes(column.type)) widths.push(80);\n        else widths.push('auto');\n        // add width also for the status last edited column\n        // why: it is not report column, so it is not included in the columns list\n        if (column.external_type === 'status' && statusInfo) widths.push(80);\n    }\n\n    for (const element of elements) {\n        if (!element.column) {\n            row = [];\n            if (element.style === 'table') element.table.widths = widths;\n            ret.push(element);\n        } else {\n            if (!element.width) element.width = '*';\n            cell.push(element);\n            fillingColumn = element.column;\n        }\n    }\n    if (fillingColumn) {\n        row.push(cell);\n        ret.push({ columns: row });\n    }\n\n    return ret;\n}\n/* istanbul ignore next */\nasync function getHeaders(\n    additionalheaders: string,\n    headerSize: number,\n    collector: any,\n    session: any,\n) {\n    const logo = await collector.getLogo();\n    const company = session.currentUser.company;\n\n    return {\n        columns: [\n            [\n                {\n                    fit: [120, 40],\n                    image: logo,\n                    margin: [0, 0, 0, 20],\n                },\n                {\n                    text: additionalheaders,\n                    style: 'headertext',\n                    fontSize: headerSize,\n                },\n            ],\n\n            {\n                width: '*',\n                text: company || '',\n                alignment: 'right',\n                fontSize: 22,\n                margin: [0, 0, 0, 20],\n            },\n        ],\n    };\n}\n/* istanbul ignore next */\nfunction tryToExtractImages(data: any, orientation: string) {\n    const maxHeight = orientation === 'landscape' ? 570 : 830;\n    const maxWidth = orientation === 'landscape' ? 830 : 570;\n\n    const allImages = [];\n    for (const element of data) {\n        for (const el of element) {\n            if (el.firstObject?.image) {\n                for (const fileObject of el)\n                    allImages.push({ image: fileObject.image, maxHeight, maxWidth });\n            }\n        }\n    }\n    return allImages;\n}\n/* istanbul ignore next */\nfunction getFooter(currentPage: number, pageCount: number) {\n    return {\n        columns: [\n            { text: 'movenium.com', style: 'footer', margin: [20, 2, 0, 0] },\n            {\n                text: moment().format('L') + '  ' + currentPage.toString() + '/' + pageCount,\n                style: 'footer',\n                margin: [0, 2, 20, 0],\n                alignment: 'right',\n            },\n        ],\n    };\n}\n","// noinspection TypeScriptValidateTypes\n\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport { getOwner } from '@ember/application';\nimport EmberObject, { get, set } from '@ember/object';\nimport { intersect } from '@ember/object/computed';\nimport { IField, IOptions } from 'tt4/ember-movenium/interfaces/forms';\n\nexport function save_record(record: IRecord, owner: any) {\n    if (!owner) throw new Error('Call this with save_record(record, this)');\n    const formsService = getOwner(owner).lookup('service:forms');\n    const form = owner.form ? owner.form : owner.args.form;\n    return new Promise<void>(async (resolve, reject) => {\n        const fields = formsService.fields(form);\n        const children: any[] = [];\n\n        for (const field in fields) {\n            if (field) {\n                const currentField = get(fields, field) as IField;\n\n                const hasChildFieldTypes = ['databasearray', 'work_permit_attachment'];\n\n                if (hasChildFieldTypes.includes(get(currentField, 'type')) && field !== 'involved') {\n                    const obj = EmberObject.extend({\n                        fieldsInCommon: intersect('parentFields', 'childFields'),\n                    }).create({\n                        parentFields: Object.keys(fields),\n                        childFields: Object.keys(\n                            formsService.fields((currentField.options as IOptions).form),\n                        ),\n                    });\n\n                    if (get(record, field) as IField) {\n                        get(record, field).forEach((child: any) => {\n                            if (child.isDeleted) return;\n                            get(obj, 'fieldsInCommon').forEach((commonField) => {\n                                if (get(record, commonField))\n                                    set(child, commonField, get(record, commonField));\n                            });\n                            children.push(child);\n                        });\n                    }\n                }\n            }\n        }\n\n        saveRecordsInIsDeletedState(fields, owner);\n\n        if (children.length > 0) {\n            await record.validate();\n\n            try {\n                if (get(record, 'isValid')) {\n                    // We have to save the child rows before the parent row, so run checkRowValidation\n                    // to validate the parent row against e.g. overlapping work times. If the check fails,\n                    // execution will stop before child rows are added. Without this check, the child rows will\n                    // get added before it's certain the parent row can be saved, which can lead to child rows with no parent.\n                    const collectorService = getOwner(owner).lookup('service:collector-service');\n                    await collectorService.checkRowValidation(record._internalModel.modelName, record, !record.get('isNew'));\n\n                    for (const child of children) {\n                        await child.validate();\n                        if (!get(child, 'isValid')) {\n                            const errors = await child.errors;\n                            if (errors && errors.firstObject)\n                                throw new Error(\n                                    errors.firstObject.message +\n                                        ' (' +\n                                        errors.firstObject.attribute +\n                                        ')',\n                                );\n                            else await child.save(); // just try to save so it goes to catch if no record errors\n                        } else continue;\n                    }\n                    const promises = children.map((child) => {\n                        return child.save();\n                    });\n                    await Promise.all(promises);\n                    await record.save();\n                    resolve();\n                } else {\n                    resolve();\n                }\n            } catch (e) {\n                reject(e);\n            }\n        } else {\n            try {\n                await record.validate();\n                if (get(record, 'isValid')) await record.save();\n                resolve();\n            } catch (e) {\n                reject(e);\n            }\n        }\n    });\n}\n\n/**\n * this method saves all records that are isDeleted and not saved ... the idea is that when ie. material is deleted from worktime\n * it is not destroyed but instead just deleted and removed from worktime.material array .. so when worktime is saved the removed record stays in\n * isDeleted state but is never really destroyed so this method looks for hanging deleted records and saves them.\n * @param fields\n * @param owner\n */\nconst saveRecordsInIsDeletedState = (fields: any, owner: any): void => {\n    const store = getOwner(owner).lookup('service:store');\n    for (const field in fields) {\n        if (field) {\n            const currentField = get(fields, field) as IField;\n            const type = get(currentField, 'type');\n            if ((type === 'databasearray' || type === 'work_permit_attachment') && field !== 'involved') {\n                const options = currentField.options as IOptions;\n                if (!options) return;\n                const form = options.form;\n\n                const deletedRecords = store\n                    .peekAll(form)\n                    .filter((item: IRecord) => item.isDeleted);\n                deletedRecords.forEach((record: IRecord) => record.save());\n            }\n        }\n    }\n};\n\nexport default { save_record };\n","import { typeOf } from '@ember/utils';\n\n/**\n * Sorts options based on given value (options can be array of objects or record)\n * @function sortBy\n * @param {String} sort\n * @param {any} options\n * @param {Array} subformFields\n */\n\nexport function sortBy(sort: string, options: any, subformFields: any = []) {\n    options = typeOf(options) !== 'array' ? options.toArray() : options;\n\n    if (sort !== 'all') {\n        options.sort((a: { [x: string]: any }, b: { [x: string]: any }) =>\n            ('' + a[sort]).localeCompare(b[sort]),\n        );\n    } else {\n        options.sort((a: { [x: string]: any }, b: { [x: string]: any }) => {\n            if (a[subformFields[0]] > b[subformFields[0]]) return 1;\n            if (a[subformFields[0]] < b[subformFields[0]]) return -1;\n\n            if (subformFields[1]) {\n                if (a[subformFields[1]] > b[subformFields[1]]) return 1;\n                if (a[subformFields[1]] < b[subformFields[1]]) return -1;\n            }\n            if (subformFields[2]) {\n                if (a[subformFields[2]] > b[subformFields[2]]) return 1;\n                if (a[subformFields[2]] < b[subformFields[2]]) return -1;\n            }\n            return 0;\n        });\n    }\n\n    return options;\n}\nexport default { sortBy };\n","import { typeOf } from '@ember/utils';\n\nexport function getSums(\n    data: any,\n    columns: any,\n    form: string,\n    collector: any,\n    forms: any,\n    pdfSumrow = false,\n) {\n    const summableFieldTypes = [\n        'date',\n        'hours',\n        'number',\n        'checkbox',\n        'decimal',\n        'price',\n        'big_price',\n        'minutes',\n        'dropdown_values',\n    ];\n    const summableFields = forms\n        .fieldArray(form)\n        .filter((field: { type: string }) => summableFieldTypes.includes(field.type));\n    if (!summableFields) return;\n\n    const sums: any = {};\n\n    data.forEach((item: { [x: string]: any }) => {\n        summableFields.forEach((field: { name: string; type: string }) => {\n            if (!item) return;\n            const cell = item[field.name];\n            switch (field.type) {\n                case 'checkbox':\n                    if (!sums[field.name]) sums[field.name] = [0, 0];\n                    cell ? sums[field.name][0]++ : sums[field.name][1]++;\n                    break;\n                case 'dropdown_values':\n                    if (!sums[field.name]) sums[field.name] = [];\n                    if (cell) sums[field.name].push(cell);\n                    break;\n                case 'date':\n                    if (typeOf(cell) === 'string' && cell.substring(0, 6) === 'count:') {\n                        sums[field.name] += parseInt(cell.substring(6), 10);\n                    } else {\n                        sums[field.name] = '';\n                        return;\n                    }\n                    break;\n                default:\n                    if (!sums[field.name]) sums[field.name] = 0;\n                    // format cell to number\n                    sums[field.name] += Number(cell);\n            }\n        });\n    });\n\n    const sumRow: any = {};\n\n    columns.forEach((column: { external_type: string; type: string }) => {\n        if (column.external_type === 'row_info.created') return;\n        if (column.external_type === 'row_info.modified') return;\n        const field = column.external_type;\n\n        const dropdownSums: any = [];\n        if (sums[field]) {\n            if (column.type === 'checkbox') {\n                sumRow[field] =\n                    collector.format(true, column, null, data) +\n                    ': ' +\n                    sums[field][0] +\n                    ' / ' +\n                    collector.format(false, column, null, data) +\n                    ': ' +\n                    sums[field][1];\n            } else if (\n                column.type === 'number' &&\n                !isNaN(sums[field]) &&\n                !Number.isInteger(sums[field])\n            ) {\n                const parsedSum = parseFloat(sums[field]);\n                const sumToFixed = parsedSum.toFixed(2);\n                sumRow[field] = collector.format(sumToFixed, column, null, data);\n            } else if (column.type === 'dropdown_values') {\n                sums[field].forEach((opt: string) => {\n                    dropdownSums[opt] = (dropdownSums[opt] || 0) + 1;\n                });\n                sumRow[field] = collector.format(dropdownSums, column, null, data, pdfSumrow, form);\n            } else {\n                sumRow[field] = collector.format(sums[field], column, null, data, pdfSumrow);\n            }\n        } else {\n            sumRow[field] = '';\n        }\n    });\n\n    return [sumRow];\n}\n","import { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport { IOptions } from 'tt4/ember-movenium/interfaces/forms';\nimport { isEmpty } from '@ember/utils';\nimport { get } from '@ember/object';\n\nexport function validateEmail(email: string): boolean {\n    const regExp =\n        /^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i;\n    return regExp.test(email);\n}\n\nexport function isVisible(record: IRecord, options: IOptions | [{}]) {\n    if (typeof options !== 'object') return true;\n    if (!record) return true;\n\n    let visible = false;\n    options.forEach((option: any) => {\n        Object.keys(option).forEach((key) => {\n            const listString = option[key].toString();\n            const value = get(record, key);\n            visible = valueIsInList(value, listString);\n        });\n    });\n\n    return visible;\n}\n\nfunction valueIsInList(value: any, listString: string) {\n    if (listString === 'true') {\n        if (value === 'true' || value === true) return true;\n        else return false;\n    }\n    if (listString === 'false') {\n        if (value === 'true' || value === true) return false;\n        return true;\n    }\n\n    let negation = false;\n    if (listString.substring(0, 1) === '!') {\n        listString = listString.substring(1);\n        negation = true;\n    }\n\n    const list = listString.split(',');\n    if (value) value = value.toString();\n    let found = list.includes(value);\n\n    if (list.includes('(empty)')) {\n        found = isEmpty(value);\n    }\n\n    return negation ? !found : found;\n}\nexport default { validateEmail, isVisible };\n","import moment from 'moment';\nimport config from 'tt4/config/environment';\n// import fetch from 'fetch'\n\nexport async function fetchWeather(lat: string, lon: string, date?: string): Promise<any> {\n    if (!date) date = moment().format('YYYYMMDD');\n\n    let url: any = config.APP.WEATHER_HISTORY_API;\n\n    if (date === moment().format('YYYYMMDD')) {\n        url = config.APP.WEATHER_API;\n    }\n\n    url = url + '?lat=' + lat + '&lon=' + lon + '&date=' + date + '&hours=12';\n\n    const req = await window.fetch(url);\n    const response = (await req.json()) as any;\n\n    const dewPoint = response.temperature - (100 - response.humidity) / 5;\n    response.dew_point = Math.round(dewPoint * 100) / 100;\n\n    return response;\n}\n\nexport default { fetchWeather };\n","import { merge, assign as _assign } from '@ember/polyfills';\n\n\nimport EventDispatcher from 'ember-gestures/event_dispatcher';\nimport config from './config/environment';\n\nconst assign = _assign || merge;\n\nlet gestures = assign({}, {\n    emberUseCapture: false,\n    removeTracking: false,\n    useFastPaths: false\n  });\ngestures = assign(gestures, config.gestures);\n\nexport default EventDispatcher.extend({\n  useCapture: gestures.emberUseCapture,\n  removeTracking: gestures.removeTracking,\n  useFastPaths: gestures.useFastPaths\n});\n","export default {\n    time: {\n        hhmmss: {\n            hour: 'numeric',\n            minute: 'numeric',\n            second: 'numeric',\n        },\n    },\n    date: {\n        hhmmss: {\n            hour: 'numeric',\n            minute: 'numeric',\n            second: 'numeric',\n        },\n    },\n    number: {\n        EUR: {\n            style: 'currency',\n            currency: 'EUR',\n            minimumFractionDigits: 2,\n            maximumFractionDigits: 2,\n        },\n        USD: {\n            style: 'currency',\n            currency: 'USD',\n            minimumFractionDigits: 2,\n            maximumFractionDigits: 2,\n        },\n    },\n};\n","import { helper } from '@ember/component/helper';\n\nexport function gt(params /*, hash*/) {\n    return params[0] > params[1];\n}\n\nexport default helper(gt);\n","import { helper } from '@ember/component/helper';\n\n// This function receives the params `params, hash`\nexport function or(params /*, hash*/) {\n    return params.filter((item) => item).length > 0;\n}\n\nexport default helper(or);\n","define(\"tt4/helpers/-clear-element\", [\"exports\", \"ember-in-element-polyfill/helpers/-clear-element\"], function (_exports, _clearElement) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _clearElement.default;\n    }\n  });\n});\n","define(\"tt4/helpers/-element\", [\"exports\", \"ember-element-helper/helpers/-element\"], function (_exports, _element) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _element.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\nexport function add(params /*, hash*/) {\n    return params.reduce((a, b) => a + b);\n}\n\nexport default helper(add);\n","define(\"tt4/helpers/and\", [\"exports\", \"ember-truth-helpers/helpers/and\"], function (_exports, _and) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"and\", {\n    enumerable: true,\n    get: function get() {\n      return _and.and;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _and.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\nimport { htmlSafe } from '@ember/string';\nimport config from 'tt4/config/environment';\n\n// This function receives the params `params, hash`\nexport function apiImage(params) {\n    if (params[0] != null) {\n        if (params[0].substring(0, 4) === 'http') {\n            return params[0];\n        }\n\n        return htmlSafe(config.APP.COLLECTOR_API_URL + '/' + params[0]);\n    }\n}\n\nexport default helper(apiImage);\n","import { helper } from '@ember/component/helper';\nimport config from '../config/environment';\nimport { shaRegExp, versionRegExp, versionExtendedRegExp } from 'ember-cli-app-version/utils/regexp';\n\nexport function appVersion(_, hash = {}) {\n  const version = config.APP.version;\n  // e.g. 1.0.0-alpha.1+4jds75hf\n\n  // Allow use of 'hideSha' and 'hideVersion' For backwards compatibility\n  let versionOnly = hash.versionOnly || hash.hideSha;\n  let shaOnly = hash.shaOnly || hash.hideVersion;\n\n  let match = null;\n\n  if (versionOnly) {\n    if (hash.showExtended) {\n      match = version.match(versionExtendedRegExp); // 1.0.0-alpha.1\n    }\n    // Fallback to just version\n    if (!match) {\n      match = version.match(versionRegExp); // 1.0.0\n    }\n  }\n\n  if (shaOnly) {\n    match = version.match(shaRegExp); // 4jds75hf\n  }\n\n  return match ? match[0] : version;\n}\n\nexport default helper(appVersion);\n","define(\"tt4/helpers/append\", [\"exports\", \"ember-composable-helpers/helpers/append\"], function (_exports, _append) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"append\", {\n    enumerable: true,\n    get: function get() {\n      return _append.append;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _append.default;\n    }\n  });\n});\n","define(\"tt4/helpers/assign\", [\"exports\", \"ember-assign-helper/helpers/assign\"], function (_exports, _assign) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"assign\", {\n    enumerable: true,\n    get: function get() {\n      return _assign.assign;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _assign.default;\n    }\n  });\n});\n","define(\"tt4/helpers/await\", [\"exports\", \"ember-promise-helpers/helpers/await\"], function (_exports, _await) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _await.default;\n    }\n  });\n});\n","define(\"tt4/helpers/bs-contains\", [\"exports\", \"ember-bootstrap/helpers/bs-contains\"], function (_exports, _bsContains) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"bsContains\", {\n    enumerable: true,\n    get: function get() {\n      return _bsContains.bsContains;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _bsContains.default;\n    }\n  });\n});\n","define(\"tt4/helpers/bs-eq\", [\"exports\", \"ember-bootstrap/helpers/bs-eq\"], function (_exports, _bsEq) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _bsEq.default;\n    }\n  });\n  Object.defineProperty(_exports, \"eq\", {\n    enumerable: true,\n    get: function get() {\n      return _bsEq.eq;\n    }\n  });\n});\n","define(\"tt4/helpers/call\", [\"exports\", \"ember-composable-helpers/helpers/call\"], function (_exports, _call) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"call\", {\n    enumerable: true,\n    get: function get() {\n      return _call.call;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _call.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/can-add-worktime.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CanAddWorktimeHelper;\n\nimport Ember from 'ember';\n\nCanAddWorktimeHelper = Ember.Helper.extend({\n    Collector: Ember.inject.service('collector-service'),\n    compute: function (params, hash) {\n        var c;\n        c = this.get('Collector');\n        return c.canAddWorktime(params[0]);\n    },\n});\n\nexport default CanAddWorktimeHelper;\n","define(\"tt4/helpers/cancel-all\", [\"exports\", \"ember-concurrency/helpers/cancel-all\"], function (_exports, _cancelAll) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _cancelAll.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\nexport function capitalizeTranslation(param) {\n    if (Array.isArray(param) && param.length > 0) {\n        const textToTranslate = param[0];\n        return textToTranslate.charAt(0).toUpperCase() + textToTranslate.slice(1);\n    }\n    return param;\n}\n\nexport default helper(capitalizeTranslation);\n","define(\"tt4/helpers/chunk\", [\"exports\", \"ember-composable-helpers/helpers/chunk\"], function (_exports, _chunk) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"chunk\", {\n    enumerable: true,\n    get: function get() {\n      return _chunk.chunk;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _chunk.default;\n    }\n  });\n});\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Helper.extend({\n    collector: service('collector-service'),\n\n    compute(params, hash) {\n        let fields = get(this, 'collector').fieldArray(params[0]);\n        if (hash.onlyTypes)\n            fields = fields.filter((item) => hash.onlyTypes.split(',').includes(item.type));\n        return fields;\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/collector-field-name.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldNameHelper;\n\nimport Ember from 'ember';\n\nCollectorFieldNameHelper = Ember.Helper.extend({\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    compute: function (params, hash) {\n        var c, field, form;\n        if (hash.field === 'id') {\n            return this.get('intl').t('general.row_info.created');\n        }\n        c = this.get('Collector');\n        field = hash.field;\n        form = hash.form;\n        return c.getTranslationForColumn(form, field, hash.removed);\n    },\n});\n\nexport default CollectorFieldNameHelper;\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Helper.extend({\n    collector: service('collector-service'),\n\n    compute(params) {\n        const [form, field] = params[0].split('.');\n        return get(this, 'collector').field(form, field);\n    },\n});\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Helper.extend({\n    intl: service(),\n\n    compute(params) {\n        const key = 'form.' + params[0];\n        if (get(this, 'intl').exists(key)) {\n            if (params[1])\n                return (\n                    get(this, 'intl').t(key).charAt(0).toUpperCase() +\n                    get(this, 'intl').t(key).slice(1)\n                );\n            else return get(this, 'intl').t(key).toLowerCase();\n        } else return params[0];\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/collector-format.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFormatHelper;\n\nimport Ember from 'ember';\n\nCollectorFormatHelper = Ember.Helper.extend({\n    Collector: Ember.inject.service('collector-service'),\n    compute: function (params, hash) {\n        var c, field, form, fuckTheseImageModals, model, ref, value;\n        c = this.get('Collector');\n        field = hash.field;\n        form = hash.form;\n        model = hash.model;\n        fuckTheseImageModals = hash.fuckTheseImageModals || false;\n        value = false;\n        if (hash.formatter) {\n            value = hash.formatter(\n                field.ext || field.name,\n                model.get(field.ext || field.name),\n                null,\n                c.format(model.get(field.ext || field.name), field, null, model, false, form),\n            );\n        }\n        if (value) {\n            return value;\n        } else if ((ref = Ember.typeOf(field)) === 'object' || ref === 'instance') {\n            return c.format(\n                model.get(field.ext || field.name),\n                field,\n                null,\n                model,\n                false,\n                form,\n                false,\n                fuckTheseImageModals,\n            );\n        } else {\n            return c._format_(model, form, field);\n        }\n    },\n});\n\nexport default CollectorFormatHelper;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/collector-value-format.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorValueFormatHelper;\n\nimport Ember from 'ember';\n\nCollectorValueFormatHelper = Ember.Helper.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    compute: function (params, hash) {\n        var c,\n            field,\n            form,\n            isImageModal,\n            options,\n            realField,\n            realFieldForm,\n            record,\n            ref,\n            ret,\n            value;\n        c = this.get('Collector');\n        field = hash.field;\n        form = hash.form;\n        value = hash.value;\n        record = hash.record ? hash.record : null;\n        isImageModal = hash.isImageModal;\n        if (field === 'row_info.created') {\n            return this.get('Collector')._format_(value, form, field);\n        }\n        if (field === 'row_info.modified') {\n            return this.get('Collector')._format_(value, form, field);\n        }\n\n        realField = c.field(form, field);\n\n        if (field === 'location' || field === 'end_location') {\n            return c.format(value, realField, null, record, false, form);\n        }\n\n        if (\n            (ref = realField.type) === 'database' ||\n            ref === 'timerlink' ||\n            ref === 'multiselect' ||\n            ref === 'databasearray' ||\n            ref === 'work_permit_attachment'\n        ) {\n            if (realField.type === 'databasearray' || realField.type === 'work_permit_attachment') {\n                options = Ember.get(realField, 'options');\n                form = Ember.get(options, 'form');\n                field = Ember.get(options, 'fields.firstObject');\n                realFieldForm = Ember.get(c.field(form, field), 'options.form');\n            } else {\n                realFieldForm = realField.options.form;\n            }\n            if (!isNaN(value) && value) {\n                value = parseInt(value, 10);\n            }\n            if (!value) {\n                return '';\n            }\n            ret = this.formatValue(value, form, field);\n            if (ret !== void 0 && ret !== null && Ember.typeOf(ret) !== 'instance') {\n                if (typeof ret === 'number') {\n                    return ret;\n                }\n                return ret.trim();\n            } else {\n                if (Ember.typeOf(value) === 'instance') {\n                    value = value.get('id');\n                }\n                if (value) {\n                    this.get('store')\n                        .query(realFieldForm, {\n                            id: value,\n                            include: true,\n                        })\n                        .then((record) => {\n                            if (!Em.isEmpty(record)) {\n                                return this.recompute();\n                            }\n                        });\n                    return '';\n                }\n                return value;\n            }\n        } else {\n            return c._format_(value, form, field, 'html', record, isImageModal);\n        }\n    },\n    formatValue: function (value, form, field) {\n        var empty_found, value_arr;\n        if (Ember.typeOf(value) === 'string' && value.indexOf(',') !== -1) {\n            value_arr = [];\n            empty_found = false;\n            value.split(',').forEach((item) => {\n                var subvalue;\n                // for some weird reason _format_ needs id as int\n                subvalue = this.get('Collector')._format_(parseInt(item, 10), form, field);\n                if (!subvalue) {\n                    empty_found = true;\n                }\n                return value_arr.push(subvalue);\n            });\n            if (empty_found) {\n                return null;\n            }\n            return value_arr.join(',');\n        } else {\n            return this.get('Collector')._format_(value, form, field);\n        }\n    },\n});\n\nexport default CollectorValueFormatHelper;\n","define(\"tt4/helpers/compact\", [\"exports\", \"ember-composable-helpers/helpers/compact\"], function (_exports, _compact) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _compact.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\nimport { isEqual } from '@ember/utils';\n\nexport function compare(params) {\n    let index = params[1] + 1;\n    return isEqual(params[0], index);\n}\n\nexport default helper(compare);\n","define(\"tt4/helpers/compute\", [\"exports\", \"ember-composable-helpers/helpers/compute\"], function (_exports, _compute) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"compute\", {\n    enumerable: true,\n    get: function get() {\n      return _compute.compute;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _compute.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/console-log.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ConsoleLogHelper, consoleLog;\n\nimport Ember from 'ember';\n\n// This function receives the params `params, hash`\nconsoleLog = function (params) {\n    return true;\n};\n\nConsoleLogHelper = Ember.Helper.helper(consoleLog);\n\nexport { consoleLog };\n\nexport default ConsoleLogHelper;\n","define(\"tt4/helpers/contains\", [\"exports\", \"ember-composable-helpers/helpers/contains\"], function (_exports, _contains) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"contains\", {\n    enumerable: true,\n    get: function get() {\n      return _contains.contains;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _contains.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/country-flag.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CountryFlagHelper;\n\nimport Ember from 'ember';\n\nCountryFlagHelper = Ember.Helper.extend({\n    countryLists: Ember.inject.service(),\n    compute: function (params, hash) {\n        var flag;\n        if (!params[0]) {\n            return Ember.String.htmlSafe(\n                '<span class=\"glyphicon glyphicon-globe\" aria-hidden=\"true\"></span>',\n            );\n        }\n        flag = false;\n        if (params[1] === 'number') {\n            this.get('countryLists.phoneList').forEach(function (country) {\n                if (params[0].substring(0, country.number.length) === country.number) {\n                    return (flag = country.id);\n                }\n            });\n            if (!flag) {\n                return Ember.String.htmlSafe(\n                    '<span class=\"glyphicon glyphicon-globe\" aria-hidden=\"true\"></span>',\n                );\n            }\n        } else {\n            console.info(\n                \"We don't have flags for every country, you might want to check if the country flag is included\",\n            );\n            flag = params[0];\n        }\n        return Ember.String.htmlSafe('<span class=\"flag-icon flag-icon-' + flag + '\"></span>');\n    },\n});\n\nexport default CountryFlagHelper;\n","import { helper } from '@ember/component/helper';\nimport { warn } from '@ember/debug';\n\n// This function receives the params `params, hash`\nexport function currency(params) {\n    const amount = params[0];\n    const currency = params[1];\n\n    if (currency == null) {\n        return amount;\n    }\n\n    switch (currency) {\n        case 'eur':\n            return `${amount} €`;\n        case 'sek':\n            return `${amount} kr`;\n        case 'gbp':\n            return `£${amount}`;\n        case 'usd':\n            return `$${amount}`;\n        default:\n            warn(`Unknown currency: ${currency} ${amount}`, { id: 'currency-needs' });\n    }\n}\n\nexport default helper(currency);\n","import { helper } from '@ember/component/helper';\nimport { warn } from '@ember/debug';\n\n// This function receives the params `params, hash`\nexport function currency_by_country(params) {\n    const amount = params[0];\n    const country = params[1];\n\n    if (country == null) {\n        return amount;\n    }\n\n    switch (country) {\n        case 'fi':\n            return `${amount} EUR`;\n        case 'se':\n            return `${amount} SEK`;\n        default:\n            warn(`Unknown country: ${country} `, false, { id: 'currency-needs-country' });\n            return amount;\n    }\n}\n\nexport default helper(currency_by_country);\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/databasefield-options.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar formatOptionsHelper;\n\nimport Ember from 'ember';\n\nformatOptionsHelper = Ember.Helper.extend({\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    compute: function (params, hash) {\n        var firstObject, form, names, options;\n        options = params[0];\n        if (Ember.isEmpty(options)) {\n            return '';\n        }\n        options = options.split('\\n');\n        if (options.length < 1) {\n            return '';\n        }\n        firstObject = this.get('store').peekRecord('form-field', options[0]);\n        if (!firstObject) {\n            return '??';\n        }\n        form = firstObject.get('form');\n        names = options.map((option) => {\n            var fieldRecord, name;\n            fieldRecord = this.get('store').peekRecord('form-field', option);\n            if (!fieldRecord) {\n                return 'notfound';\n            }\n            if (fieldRecord.get('name') === '$lang(10)') {\n                name = this.get('intl').t(\n                    form.get('external_type') + '.' + fieldRecord.get('external_type'),\n                );\n                if (name.string != null) {\n                    name = name.string;\n                }\n            } else {\n                name = fieldRecord.get('name');\n            }\n            // only truncate if name is longer than 20 characters\n            if (name.length >= 20) {\n                return name.substring(0, 20) + '...';\n            } else {\n                return name;\n            }\n        });\n        return names.join(',');\n    },\n});\n\nexport default formatOptionsHelper;\n","import { helper } from '@ember/component/helper';\nimport moment from 'moment';\n\n// This function receives the params `params, hash`\nexport function date_diff(params) {\n    const start = moment().format('YYYY-MM-DD');\n    const end = params[0];\n\n    return moment.utc(end).diff(moment.utc(start), 'days');\n}\n\nexport default helper(date_diff);\n","define(\"tt4/helpers/dec\", [\"exports\", \"ember-composable-helpers/helpers/dec\"], function (_exports, _dec) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"dec\", {\n    enumerable: true,\n    get: function get() {\n      return _dec.dec;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _dec.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/dev-helper.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DevHelperHelper, devHelper;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\ndevHelper = function () {\n    return Ember.devModeOn === true;\n};\n\nDevHelperHelper = Ember.Helper.helper(devHelper);\n\nexport { devHelper };\n\nexport default DevHelperHelper;\n","define(\"tt4/helpers/drop\", [\"exports\", \"ember-composable-helpers/helpers/drop\"], function (_exports, _drop) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _drop.default;\n    }\n  });\n});\n","import Helper from '@ember/component/helper';\nimport moment from 'moment-timezone';\nimport { later } from '@ember/runloop';\n\nexport default Helper.extend({\n    compute(params /*, hash*/) {\n        const now = moment();\n        const then = moment(params[0], 'YYYY-MM-DD HH:mm:ss');\n        later(() => this.recompute(), 500);\n        return now.isBefore(then)\n            ? '-' + moment.utc(then.diff(now)).format('HH:mm:ss')\n            : moment.utc(now.diff(then)).format('HH:mm:ss');\n    },\n});\n","define(\"tt4/helpers/element\", [\"exports\", \"ember-element-helper/helpers/element\"], function (_exports, _element) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _element.default;\n    }\n  });\n});\n","define(\"tt4/helpers/ember-power-calendar-day-classes\", [\"exports\", \"ember-power-calendar/helpers/ember-power-calendar-day-classes\"], function (_exports, _emberPowerCalendarDayClasses) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPowerCalendarDayClasses.default;\n    }\n  });\n  Object.defineProperty(_exports, \"emberPowerCalendarDayClasses\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPowerCalendarDayClasses.emberPowerCalendarDayClasses;\n    }\n  });\n});\n","define(\"tt4/helpers/ember-power-select-is-group\", [\"exports\", \"ember-power-select/helpers/ember-power-select-is-group\"], function (_exports, _emberPowerSelectIsGroup) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPowerSelectIsGroup.default;\n    }\n  });\n  Object.defineProperty(_exports, \"emberPowerSelectIsGroup\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPowerSelectIsGroup.emberPowerSelectIsGroup;\n    }\n  });\n});\n","define(\"tt4/helpers/ember-power-select-is-selected\", [\"exports\", \"ember-power-select/helpers/ember-power-select-is-selected\"], function (_exports, _emberPowerSelectIsSelected) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPowerSelectIsSelected.default;\n    }\n  });\n  Object.defineProperty(_exports, \"emberPowerSelectIsSelected\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPowerSelectIsSelected.emberPowerSelectIsSelected;\n    }\n  });\n});\n","define(\"tt4/helpers/ensure-safe-component\", [\"exports\", \"@embroider/util\"], function (_exports, _util) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _util.EnsureSafeComponentHelper;\n    }\n  });\n});\n","define(\"tt4/helpers/entries\", [\"exports\", \"ember-composable-helpers/helpers/entries\"], function (_exports, _entries) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _entries.default;\n    }\n  });\n  Object.defineProperty(_exports, \"entries\", {\n    enumerable: true,\n    get: function get() {\n      return _entries.entries;\n    }\n  });\n});\n","define(\"tt4/helpers/eq\", [\"exports\", \"ember-truth-helpers/helpers/equal\"], function (_exports, _equal) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _equal.default;\n    }\n  });\n  Object.defineProperty(_exports, \"equal\", {\n    enumerable: true,\n    get: function get() {\n      return _equal.equal;\n    }\n  });\n});\n","define(\"tt4/helpers/equal\", [\"exports\", \"ember-cli-notifications/helpers/equal\"], function (_exports, _equal) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _equal.default;\n    }\n  });\n});\n","define(\"tt4/helpers/file-queue\", [\"exports\", \"ember-file-upload/helpers/file-queue\"], function (_exports, _fileQueue) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _fileQueue.default;\n    }\n  });\n});\n","define(\"tt4/helpers/filter-by\", [\"exports\", \"ember-composable-helpers/helpers/filter-by\"], function (_exports, _filterBy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _filterBy.default;\n    }\n  });\n});\n","define(\"tt4/helpers/filter\", [\"exports\", \"ember-composable-helpers/helpers/filter\"], function (_exports, _filter) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _filter.default;\n    }\n  });\n});\n","define(\"tt4/helpers/find-by\", [\"exports\", \"ember-composable-helpers/helpers/find-by\"], function (_exports, _findBy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _findBy.default;\n    }\n  });\n});\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nconst helper = Helper.extend({\n    flags: service(),\n    compute(params) {\n        return get(this, 'flags').test(params[0]);\n    },\n});\n\nexport default helper;\n","define(\"tt4/helpers/flatten\", [\"exports\", \"ember-composable-helpers/helpers/flatten\"], function (_exports, _flatten) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _flatten.default;\n    }\n  });\n  Object.defineProperty(_exports, \"flatten\", {\n    enumerable: true,\n    get: function get() {\n      return _flatten.flatten;\n    }\n  });\n});\n","define(\"tt4/helpers/format-date\", [\"exports\", \"ember-intl/helpers/format-date\"], function (_exports, _formatDate) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _formatDate.default;\n    }\n  });\n});\n","import { helper } from \"@ember/component/helper\";\n\nexport function hours([hours, defaultValue, omitUnit, leadingZeros]) {\n    if (!hours || isNaN(hours)) hours = 0;\n    let negative;\n\n    if (hours < 0) {\n        hours *= -1;\n        negative = true;\n    } else {\n        negative = false;\n    }\n\n    let fullHours = Math.floor(hours);\n\n    let minutes = Math.round((hours - fullHours) * 60);\n    if (minutes === 60) {\n        fullHours += 1;\n        minutes = 0;\n    }\n    if (defaultValue && !hours && !minutes) {\n        return defaultValue;\n    }\n    return (\n        (negative ? \"-\" : \"\") +\n        (leadingZeros && hours < 10 && hours >= 0\n            ? \"0\" + fullHours\n            : fullHours) +\n        \":\" +\n        (minutes < 10 ? \"0\" : \"\") +\n        minutes +\n        (omitUnit ? \"\" : \"h\")\n    );\n}\n\nexport default helper(hours);\n","define(\"tt4/helpers/format-message\", [\"exports\", \"ember-intl/helpers/format-message\"], function (_exports, _formatMessage) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _formatMessage.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\nimport { htmlSafe } from '@ember/string';\n\nexport function formatMinutes(params, hash) {\n    let hours = Math.abs(params[0] / 60);\n\n    let minutes = Math.round((hours - Math.floor(hours)) * 60);\n\n    if (hash && hash.showLeadingZeros) {\n        hours = Math.floor(hours);\n        if (hours < 0 && hours > -10) hours = '-0' + Math.abs(hours);\n        else if (hours < 10 && hours >= 0) hours = '0' + hours;\n    } else {\n        hours = Math.floor(hours);\n    }\n\n    let value = hours + ':' + (minutes < 10 ? '0' : '') + minutes + 'h';\n\n    if (params[0] < 0) value = '-' + value;\n    if (hash && hash.hideIcon) return value;\n\n    let icon = params[1] ? params[1] : 'Time';\n    return new htmlSafe(`<span class=\"move move-${icon}\"></span>` + value);\n}\n\nexport default helper(formatMinutes);\n","define(\"tt4/helpers/format-number\", [\"exports\", \"ember-intl/helpers/format-number\"], function (_exports, _formatNumber) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _formatNumber.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\nimport { get } from '@ember/object';\nimport { isPresent } from '@ember/utils';\n\nexport function formatOption(params) {\n    let item = params[0];\n    let ret = '';\n\n    if (typeof params[1] === 'string') {\n        params[1] = params[1].split(',');\n    }\n\n    if (isPresent(params[1])) {\n        params[1].forEach((field) => {\n            if (get(item, field)) {\n                ret += get(item, field) + ' ';\n            }\n        });\n    }\n    return ret.trim();\n}\n\nexport default helper(formatOption);\n","define(\"tt4/helpers/format-relative\", [\"exports\", \"ember-intl/helpers/format-relative\"], function (_exports, _formatRelative) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _formatRelative.default;\n    }\n  });\n});\n","define(\"tt4/helpers/format-time\", [\"exports\", \"ember-intl/helpers/format-time\"], function (_exports, _formatTime) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _formatTime.default;\n    }\n  });\n});\n","define(\"tt4/helpers/from-entries\", [\"exports\", \"ember-composable-helpers/helpers/from-entries\"], function (_exports, _fromEntries) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _fromEntries.default;\n    }\n  });\n  Object.defineProperty(_exports, \"fromEntries\", {\n    enumerable: true,\n    get: function get() {\n      return _fromEntries.fromEntries;\n    }\n  });\n});\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Helper.extend({\n    gui: service(),\n\n    compute() {\n        return get(this, 'gui').getBrand();\n    },\n});\n","define(\"tt4/helpers/group-by\", [\"exports\", \"ember-composable-helpers/helpers/group-by\"], function (_exports, _groupBy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _groupBy.default;\n    }\n  });\n});\n","define(\"tt4/helpers/gt\", [\"exports\", \"ember-truth-helpers/helpers/gt\"], function (_exports, _gt) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _gt.default;\n    }\n  });\n  Object.defineProperty(_exports, \"gt\", {\n    enumerable: true,\n    get: function get() {\n      return _gt.gt;\n    }\n  });\n});\n","define(\"tt4/helpers/gte\", [\"exports\", \"ember-truth-helpers/helpers/gte\"], function (_exports, _gte) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _gte.default;\n    }\n  });\n  Object.defineProperty(_exports, \"gte\", {\n    enumerable: true,\n    get: function get() {\n      return _gte.gte;\n    }\n  });\n});\n","define(\"tt4/helpers/has-next\", [\"exports\", \"ember-composable-helpers/helpers/has-next\"], function (_exports, _hasNext) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _hasNext.default;\n    }\n  });\n  Object.defineProperty(_exports, \"hasNext\", {\n    enumerable: true,\n    get: function get() {\n      return _hasNext.hasNext;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\n// This function receives the params `params, hash`\nexport function hasPermission(params) {\n    const userlevel = params[0];\n    const check_levels = params[1];\n    if (!check_levels || check_levels.indexOf(parseInt(userlevel)) > -1) {\n        return true;\n    } else {\n        return false;\n    }\n}\n\nexport default helper(hasPermission);\n","define(\"tt4/helpers/has-previous\", [\"exports\", \"ember-composable-helpers/helpers/has-previous\"], function (_exports, _hasPrevious) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _hasPrevious.default;\n    }\n  });\n  Object.defineProperty(_exports, \"hasPrevious\", {\n    enumerable: true,\n    get: function get() {\n      return _hasPrevious.hasPrevious;\n    }\n  });\n});\n","import Helper from '@ember/component/helper';\nimport { htmlSafe } from '@ember/string';\n\nexport default Helper.extend({\n    compute(params /*, hash*/) {\n        let term = params[1];\n        let text = params[0];\n        if (term) {\n            let re = new RegExp(term, 'gi');\n            return htmlSafe(text.replace(re, \"<span class='highlighted-text'>\" + term + '</span>'));\n        } else {\n            return text;\n        }\n    },\n});\n","define(\"tt4/helpers/href-to\", [\"exports\", \"ember-href-to/helpers/href-to\"], function (_exports, _hrefTo) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _hrefTo.default;\n    }\n  });\n  Object.defineProperty(_exports, \"hrefTo\", {\n    enumerable: true,\n    get: function get() {\n      return _hrefTo.hrefTo;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\nimport { htmlSafe } from '@ember/template';\n\nexport default helper(function makeHtmlSafe(params /*, hash*/) {\n    return htmlSafe(params[0]);\n});\n","define(\"tt4/helpers/ignore-children\", [\"exports\", \"ember-ignore-children-helper/helpers/ignore-children\"], function (_exports, _ignoreChildren) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _ignoreChildren.default;\n    }\n  });\n  Object.defineProperty(_exports, \"ignoreChildren\", {\n    enumerable: true,\n    get: function get() {\n      return _ignoreChildren.ignoreChildren;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\nimport { isArray } from '@ember/array';\nimport { assert } from '@ember/debug';\n\n// This function receives the params `params` and checks if params[0] is in array params[1]\nexport function inArray(params) {\n    if (params[0] == null) {\n        return false;\n    }\n    // Check if the param we are searching with is a string or number\n    if ((typeof params[0] !== 'string' && typeof params[0] !== 'number') || !params[0]) {\n        assert('You must pass a string as the first argument to the in-array helper');\n        return false;\n    }\n    // Check that we got an array to work with\n    if (!isArray(params[1])) {\n        assert('You must pass an array as the second argument to the in-array helper');\n        return false;\n    }\n    // See if what we are searching for is in the array\n    if (params[1].includes(params[0])) {\n        return true;\n    } else return false;\n}\n\nexport default helper(inArray);\n","define(\"tt4/helpers/inc\", [\"exports\", \"ember-composable-helpers/helpers/inc\"], function (_exports, _inc) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _inc.default;\n    }\n  });\n  Object.defineProperty(_exports, \"inc\", {\n    enumerable: true,\n    get: function get() {\n      return _inc.inc;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\nexport function includes(params /*, hash*/) {\n    if (!params[1]) return false;\n    return params[1].includes(params[0]);\n}\n\nexport default helper(includes);\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\n\nexport default Helper.extend({\n    // makes the first line in SVG card. See helper inline-text-2.js\n    Collector: service('collector-service'),\n\n    compute(params, hash) {\n        let field = hash.field;\n        let form = hash.form;\n        let value = hash.value;\n        let owner = hash.owner;\n        let splitText = [];\n        let recordValue = '';\n\n        // set recordValue based on record owner\n        recordValue =\n            owner == 'taitorekisteri' ? value : this.Collector._format_(value, form, field);\n\n        // The lenght of 20 is based on average lenght of the first word in custom headers\n        if (recordValue.length > 20) {\n            if (recordValue.includes('–')) {\n                splitText = recordValue.split('–');\n                return splitText[1];\n            } else if (recordValue.lastIndexOf(' ')) {\n                const i = recordValue.lastIndexOf(' ');\n                return recordValue.substring(i);\n            }\n        } else {\n            return;\n        }\n    },\n});\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\n\nexport default Helper.extend({\n    // makes the first line in SVG card. See helper inline-text-2.js\n    Collector: service('collector-service'),\n\n    compute(params, hash) {\n        let field = hash.field;\n        let form = hash.form;\n        let value = hash.value;\n        let owner = hash.owner;\n        let splitText = [];\n        let recordValue = '';\n\n        // set recordValue based on record owner\n        recordValue =\n            owner == 'taitorekisteri' ? value : this.Collector._format_(value, form, field);\n\n        // The lenght of 20 is based on average lenght of the first word in custom headers\n        if (recordValue.length > 20) {\n            if (recordValue.includes('–')) {\n                splitText = recordValue.split('–');\n                return splitText[0];\n            } else if (recordValue.lastIndexOf(' ')) {\n                const i = recordValue.lastIndexOf(' ');\n                return recordValue.substring(0, i);\n            }\n        } else {\n            return recordValue;\n        }\n    },\n});\n","define(\"tt4/helpers/intersect\", [\"exports\", \"ember-composable-helpers/helpers/intersect\"], function (_exports, _intersect) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _intersect.default;\n    }\n  });\n});\n","define(\"tt4/helpers/invoke\", [\"exports\", \"ember-composable-helpers/helpers/invoke\"], function (_exports, _invoke) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _invoke.default;\n    }\n  });\n  Object.defineProperty(_exports, \"invoke\", {\n    enumerable: true,\n    get: function get() {\n      return _invoke.invoke;\n    }\n  });\n});\n","define(\"tt4/helpers/is-after\", [\"exports\", \"ember-moment/helpers/is-after\"], function (_exports, _isAfter) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isAfter.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\nimport { isEqual as equal } from '@ember/utils';\n\n// This function receives the params `params, hash`\n\nexport function isEqual(params) {\n    if (params[2] && params[0] && params[1]) {\n        return equal(params[0].toString(), params[1].toString());\n    } else {\n        return equal(params[0], params[1]);\n    }\n}\n\nexport default helper(isEqual);\n","define(\"tt4/helpers/is-array\", [\"exports\", \"ember-truth-helpers/helpers/is-array\"], function (_exports, _isArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isArray.default;\n    }\n  });\n  Object.defineProperty(_exports, \"isArray\", {\n    enumerable: true,\n    get: function get() {\n      return _isArray.isArray;\n    }\n  });\n});\n","define(\"tt4/helpers/is-before\", [\"exports\", \"ember-moment/helpers/is-before\"], function (_exports, _isBefore) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isBefore.default;\n    }\n  });\n});\n","define(\"tt4/helpers/is-between\", [\"exports\", \"ember-moment/helpers/is-between\"], function (_exports, _isBetween) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isBetween.default;\n    }\n  });\n});\n","define(\"tt4/helpers/is-clipboard-supported\", [\"exports\", \"ember-cli-clipboard/helpers/is-clipboard-supported\"], function (_exports, _isClipboardSupported) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isClipboardSupported.default;\n    }\n  });\n  Object.defineProperty(_exports, \"isClipboardSupported\", {\n    enumerable: true,\n    get: function get() {\n      return _isClipboardSupported.isClipboardSupported;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\nexport function isDuplicate(params) {\n    const value = params[0];\n    const duplicateValues = params[1];\n    if (!duplicateValues || !Array.isArray(duplicateValues) || !value) return false;\n    return duplicateValues.includes(String(value));\n}\n\nexport default helper(isDuplicate);\n","define(\"tt4/helpers/is-empty\", [\"exports\", \"ember-truth-helpers/helpers/is-empty\"], function (_exports, _isEmpty) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isEmpty.default;\n    }\n  });\n});\n","import Ember from 'ember';\n\nexport default Ember.Helper.helper(function([leftSide, rightSide, path]) {\n  if (path) {\n    return Ember.get(leftSide, path) === rightSide;\n  } else {\n    return leftSide === rightSide;\n  }\n});\n","define(\"tt4/helpers/is-equal\", [\"exports\", \"ember-truth-helpers/helpers/is-equal\"], function (_exports, _isEqual) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isEqual.default;\n    }\n  });\n  Object.defineProperty(_exports, \"isEqual\", {\n    enumerable: true,\n    get: function get() {\n      return _isEqual.isEqual;\n    }\n  });\n});\n","define(\"tt4/helpers/is-fulfilled\", [\"exports\", \"ember-promise-helpers/helpers/is-fulfilled\"], function (_exports, _isFulfilled) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isFulfilled.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\nexport function isLastElement(params) {\n    const items = params[0];\n    const index = params[1];\n\n    return index === items.length - 1;\n}\n\nexport default helper(isLastElement);\n","import Ember from 'ember';\n\nexport default Ember.Helper.helper(function([value]) {\n  return !value;\n});\n","import { helper } from '@ember/component/helper';\nimport { isEqual } from '@ember/utils';\n// This function receives the params `params, hash`\n\nexport function isNth(params) {\n    let index = params[0] + 1;\n    let nth = params[1];\n\n    if (isEqual(index % nth, 0)) {\n        return true;\n    } else return false;\n}\nexport default helper(isNth);\n","define(\"tt4/helpers/is-pending\", [\"exports\", \"ember-promise-helpers/helpers/is-pending\"], function (_exports, _isPending) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isPending.default;\n    }\n  });\n});\n","define(\"tt4/helpers/is-rejected\", [\"exports\", \"ember-promise-helpers/helpers/is-rejected\"], function (_exports, _isRejected) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isRejected.default;\n    }\n  });\n});\n","define(\"tt4/helpers/is-same-or-after\", [\"exports\", \"ember-moment/helpers/is-same-or-after\"], function (_exports, _isSameOrAfter) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isSameOrAfter.default;\n    }\n  });\n});\n","define(\"tt4/helpers/is-same-or-before\", [\"exports\", \"ember-moment/helpers/is-same-or-before\"], function (_exports, _isSameOrBefore) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isSameOrBefore.default;\n    }\n  });\n});\n","define(\"tt4/helpers/is-same\", [\"exports\", \"ember-moment/helpers/is-same\"], function (_exports, _isSame) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isSame.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\n/**\n * Checks if the date's day is sunday regardless of timezone\n * @param {Date} date\n * @returns boolean - true or false\n */\nexport function isSunday(date) {\n    return date[0]?.toLocaleDateString('en', { weekday: 'long' }).toLowerCase() === 'sunday';\n}\n\nexport default helper(isSunday);\n","import { helper } from '@ember/component/helper';\nimport moment from 'moment';\nimport { assert } from '@ember/debug';\nimport { isPresent } from '@ember/utils';\n\nexport function isWeekend(params /*, hash*/) {\n    // Week numbers are isoweek => from monday - sunday / 1-7\n    assert('Must pass one parameter with either date or day of week number', isPresent(params[0]));\n    return [6, 7].includes(isNaN(params[0]) ? moment(params[0]).isoWeekday() : params[0]);\n}\n\nexport default helper(isWeekend);\n","define(\"tt4/helpers/join\", [\"exports\", \"ember-composable-helpers/helpers/join\"], function (_exports, _join) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _join.default;\n    }\n  });\n});\n","define(\"tt4/helpers/json-stringify\", [\"exports\", \"@movenium/ember-movenium/helpers/json-stringify\"], function (_exports, _jsonStringify) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _jsonStringify.default;\n    }\n  });\n  Object.defineProperty(_exports, \"jsonStringify\", {\n    enumerable: true,\n    get: function get() {\n      return _jsonStringify.jsonStringify;\n    }\n  });\n});\n","define(\"tt4/helpers/keys\", [\"exports\", \"ember-composable-helpers/helpers/keys\"], function (_exports, _keys) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _keys.default;\n    }\n  });\n  Object.defineProperty(_exports, \"keys\", {\n    enumerable: true,\n    get: function get() {\n      return _keys.keys;\n    }\n  });\n});\n","define(\"tt4/helpers/lt\", [\"exports\", \"ember-truth-helpers/helpers/lt\"], function (_exports, _lt) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _lt.default;\n    }\n  });\n  Object.defineProperty(_exports, \"lt\", {\n    enumerable: true,\n    get: function get() {\n      return _lt.lt;\n    }\n  });\n});\n","define(\"tt4/helpers/lte\", [\"exports\", \"ember-truth-helpers/helpers/lte\"], function (_exports, _lte) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _lte.default;\n    }\n  });\n  Object.defineProperty(_exports, \"lte\", {\n    enumerable: true,\n    get: function get() {\n      return _lte.lte;\n    }\n  });\n});\n","define(\"tt4/helpers/map-by\", [\"exports\", \"ember-composable-helpers/helpers/map-by\"], function (_exports, _mapBy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _mapBy.default;\n    }\n  });\n});\n","define(\"tt4/helpers/map\", [\"exports\", \"ember-composable-helpers/helpers/map\"], function (_exports, _map) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _map.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-add\", [\"exports\", \"ember-moment/helpers/moment-add\"], function (_exports, _momentAdd) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentAdd.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-calendar\", [\"exports\", \"ember-moment/helpers/moment-calendar\"], function (_exports, _momentCalendar) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentCalendar.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-diff\", [\"exports\", \"ember-moment/helpers/moment-diff\"], function (_exports, _momentDiff) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentDiff.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-duration\", [\"exports\", \"ember-moment/helpers/moment-duration\"], function (_exports, _momentDuration) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentDuration.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-format\", [\"exports\", \"ember-moment/helpers/moment-format\"], function (_exports, _momentFormat) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentFormat.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-from-now\", [\"exports\", \"ember-moment/helpers/moment-from-now\"], function (_exports, _momentFromNow) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentFromNow.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-from\", [\"exports\", \"ember-moment/helpers/moment-from\"], function (_exports, _momentFrom) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentFrom.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-subtract\", [\"exports\", \"ember-moment/helpers/moment-subtract\"], function (_exports, _momentSubtract) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentSubtract.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-to-date\", [\"exports\", \"ember-moment/helpers/moment-to-date\"], function (_exports, _momentToDate) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentToDate.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-to-now\", [\"exports\", \"ember-moment/helpers/moment-to-now\"], function (_exports, _momentToNow) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentToNow.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-to\", [\"exports\", \"ember-moment/helpers/moment-to\"], function (_exports, _momentTo) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentTo.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-unix\", [\"exports\", \"ember-moment/helpers/unix\"], function (_exports, _unix) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _unix.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment\", [\"exports\", \"ember-moment/helpers/moment\"], function (_exports, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _moment.default;\n    }\n  });\n});\n","define(\"tt4/helpers/need\", [\"exports\", \"@movenium/ember-movenium/helpers/need\"], function (_exports, _need) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _need.default;\n    }\n  });\n  Object.defineProperty(_exports, \"need\", {\n    enumerable: true,\n    get: function get() {\n      return _need.need;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/needs.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar NeedsHelper;\n\nimport Ember from 'ember';\n\nNeedsHelper = Ember.Helper.extend({\n    Collector: Ember.inject.service('collector-service'),\n    compute: function (params, hash) {\n        if (hash.needs) {\n            return this.get('Collector').testNeeds(hash.needs);\n        }\n        return this.get('Collector').testNeeds(params);\n    },\n});\n\nexport default NeedsHelper;\n","define(\"tt4/helpers/next\", [\"exports\", \"ember-composable-helpers/helpers/next\"], function (_exports, _next) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _next.default;\n    }\n  });\n  Object.defineProperty(_exports, \"next\", {\n    enumerable: true,\n    get: function get() {\n      return _next.next;\n    }\n  });\n});\n","define(\"tt4/helpers/noop\", [\"exports\", \"ember-composable-helpers/helpers/noop\"], function (_exports, _noop) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _noop.default;\n    }\n  });\n  Object.defineProperty(_exports, \"noop\", {\n    enumerable: true,\n    get: function get() {\n      return _noop.noop;\n    }\n  });\n});\n","define(\"tt4/helpers/not-eq\", [\"exports\", \"ember-truth-helpers/helpers/not-equal\"], function (_exports, _notEqual) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _notEqual.default;\n    }\n  });\n  Object.defineProperty(_exports, \"notEq\", {\n    enumerable: true,\n    get: function get() {\n      return _notEqual.notEq;\n    }\n  });\n});\n","define(\"tt4/helpers/not\", [\"exports\", \"ember-truth-helpers/helpers/not\"], function (_exports, _not) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _not.default;\n    }\n  });\n  Object.defineProperty(_exports, \"not\", {\n    enumerable: true,\n    get: function get() {\n      return _not.not;\n    }\n  });\n});\n","define(\"tt4/helpers/now\", [\"exports\", \"ember-moment/helpers/now\"], function (_exports, _now) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _now.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\nexport function number(params /*, hash*/) {\n    let val = params[0];\n    if (val === null) return null;\n    val = Number(val);\n    if (isNaN(val)) {\n        return NaN;\n    }\n    return val;\n}\n\nexport default helper(number);\n","define(\"tt4/helpers/object-at\", [\"exports\", \"ember-composable-helpers/helpers/object-at\"], function (_exports, _objectAt) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _objectAt.default;\n    }\n  });\n  Object.defineProperty(_exports, \"objectAt\", {\n    enumerable: true,\n    get: function get() {\n      return _objectAt.objectAt;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\n// This function receives the params `params, hash`\nexport function object(params) {\n    return JSON.stringify(params[0]);\n}\n\nexport default helper(object);\n","define(\"tt4/helpers/on-document\", [\"exports\", \"ember-on-helper/helpers/on-document\"], function (_exports, _onDocument) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _onDocument.default;\n    }\n  });\n});\n","define(\"tt4/helpers/on-window\", [\"exports\", \"ember-on-helper/helpers/on-window\"], function (_exports, _onWindow) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _onWindow.default;\n    }\n  });\n});\n","define(\"tt4/helpers/on\", [\"exports\", \"ember-on-helper/helpers/on\"], function (_exports, _on) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _on.default;\n    }\n  });\n});\n","define(\"tt4/helpers/optional\", [\"exports\", \"ember-composable-helpers/helpers/optional\"], function (_exports, _optional) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _optional.default;\n    }\n  });\n  Object.defineProperty(_exports, \"optional\", {\n    enumerable: true,\n    get: function get() {\n      return _optional.optional;\n    }\n  });\n});\n","define(\"tt4/helpers/or\", [\"exports\", \"ember-truth-helpers/helpers/or\"], function (_exports, _or) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _or.default;\n    }\n  });\n  Object.defineProperty(_exports, \"or\", {\n    enumerable: true,\n    get: function get() {\n      return _or.or;\n    }\n  });\n});\n","define(\"tt4/helpers/perform\", [\"exports\", \"ember-concurrency/helpers/perform\"], function (_exports, _perform) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _perform.default;\n    }\n  });\n});\n","define(\"tt4/helpers/pick\", [\"exports\", \"ember-composable-helpers/helpers/pick\"], function (_exports, _pick) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _pick.default;\n    }\n  });\n  Object.defineProperty(_exports, \"pick\", {\n    enumerable: true,\n    get: function get() {\n      return _pick.pick;\n    }\n  });\n});\n","define(\"tt4/helpers/pipe-action\", [\"exports\", \"ember-composable-helpers/helpers/pipe-action\"], function (_exports, _pipeAction) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _pipeAction.default;\n    }\n  });\n});\n","define(\"tt4/helpers/pipe\", [\"exports\", \"ember-composable-helpers/helpers/pipe\"], function (_exports, _pipe) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _pipe.default;\n    }\n  });\n  Object.defineProperty(_exports, \"pipe\", {\n    enumerable: true,\n    get: function get() {\n      return _pipe.pipe;\n    }\n  });\n});\n","import pluralize from 'ember-inflector/lib/helpers/pluralize';\nexport default pluralize;\n","define(\"tt4/helpers/power-calendar-format-date\", [\"exports\", \"ember-power-calendar/helpers/power-calendar-format-date\"], function (_exports, _powerCalendarFormatDate) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerCalendarFormatDate.default;\n    }\n  });\n  Object.defineProperty(_exports, \"powerCalendarFormatDate\", {\n    enumerable: true,\n    get: function get() {\n      return _powerCalendarFormatDate.powerCalendarFormatDate;\n    }\n  });\n});\n","define(\"tt4/helpers/previous\", [\"exports\", \"ember-composable-helpers/helpers/previous\"], function (_exports, _previous) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _previous.default;\n    }\n  });\n  Object.defineProperty(_exports, \"previous\", {\n    enumerable: true,\n    get: function get() {\n      return _previous.previous;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/product.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserHelper;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nUserHelper = Ember.Helper.extend({\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    // This function receives the params `params, hash`\n    compute: function (params, hash) {\n        var found, product;\n        product = params[0];\n        found = this.get('Collector').getProductByName(product);\n        if (!found) {\n            return params[0];\n        } else if (!found.then) {\n            return Ember.get(found, 'header');\n        } else {\n            found.then(() => {\n                return this.recompute();\n            });\n            return '';\n        }\n    },\n});\n\nexport default UserHelper;\n","define(\"tt4/helpers/promise-all\", [\"exports\", \"ember-promise-helpers/helpers/promise-all\"], function (_exports, _promiseAll) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _promiseAll.default;\n    }\n  });\n});\n","define(\"tt4/helpers/promise-hash\", [\"exports\", \"ember-promise-helpers/helpers/promise-hash\"], function (_exports, _promiseHash) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _promiseHash.default;\n    }\n  });\n});\n","define(\"tt4/helpers/promise-rejected-reason\", [\"exports\", \"ember-promise-helpers/helpers/promise-rejected-reason\"], function (_exports, _promiseRejectedReason) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _promiseRejectedReason.default;\n    }\n  });\n});\n","import Ember from 'ember';\nimport PurifyDOMHelper from 'ember-purify/helpers/purify-dom';\nimport config from '../config/environment';\n\nconst { getWithDefault } = Ember;\n\nexport default PurifyDOMHelper.extend({\n  config: getWithDefault(config, 'APP.purify', {})\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/query-helper.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar QueryHelper;\n\nimport Ember from 'ember';\n\nQueryHelper = Ember.Helper.extend({\n    Collector: Ember.inject.service('collector-service'),\n    compute: function (params, hash) {\n        var arr, i, item, len;\n        arr = [];\n        for (i = 0, len = params.length; i < len; i++) {\n            item = params[i];\n            arr.push(item);\n        }\n        return arr;\n    },\n});\n\nexport default QueryHelper;\n","define(\"tt4/helpers/queue\", [\"exports\", \"ember-composable-helpers/helpers/queue\"], function (_exports, _queue) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _queue.default;\n    }\n  });\n  Object.defineProperty(_exports, \"queue\", {\n    enumerable: true,\n    get: function get() {\n      return _queue.queue;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/random-mysite-image.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RandomMysiteImageHelper;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nRandomMysiteImageHelper = Ember.Helper.extend({\n    cdn: Ember.inject.service(),\n    compute: function (params, hash) {\n        var num, total;\n        num = params[0];\n        total = params[1];\n        return this.get('cdn').url('images/placeholders/placeholder' + (num % total) + '.jpg');\n    },\n});\n\nexport default RandomMysiteImageHelper;\n","import { helper } from '@ember/component/helper';\nimport { get } from '@ember/object';\n\nexport function randomizedColor(params, hash) {\n    let str = '';\n\n    if (hash && hash.record && hash.fields) {\n        hash.fields.forEach((field) => {\n            str += get(hash.record, field);\n        });\n    } else {\n        str = params.join('');\n    }\n\n    hash = 0;\n\n    for (let i in str) {\n        if (str.hasOwnProperty(i)) {\n            hash = str.charCodeAt(i) + ((hash << 5) - hash);\n        }\n    }\n\n    let c = (hash & 0x00ffffff).toString(16).toUpperCase();\n    return '#' + '00000'.substring(0, 6 - c.length) + c;\n}\n\nexport default helper(randomizedColor);\n","define(\"tt4/helpers/range\", [\"exports\", \"ember-composable-helpers/helpers/range\"], function (_exports, _range) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _range.default;\n    }\n  });\n  Object.defineProperty(_exports, \"range\", {\n    enumerable: true,\n    get: function get() {\n      return _range.range;\n    }\n  });\n});\n","import Ember from 'ember';\n\nexport default Ember.Helper.helper(function([object, path]){\n  if (path) {\n    return Ember.get(object, path);\n  } else {\n    return object;\n  }\n});\n","define(\"tt4/helpers/reduce\", [\"exports\", \"ember-composable-helpers/helpers/reduce\"], function (_exports, _reduce) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _reduce.default;\n    }\n  });\n});\n","define(\"tt4/helpers/reject-by\", [\"exports\", \"ember-composable-helpers/helpers/reject-by\"], function (_exports, _rejectBy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _rejectBy.default;\n    }\n  });\n});\n","define(\"tt4/helpers/repeat\", [\"exports\", \"ember-composable-helpers/helpers/repeat\"], function (_exports, _repeat) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _repeat.default;\n    }\n  });\n  Object.defineProperty(_exports, \"repeat\", {\n    enumerable: true,\n    get: function get() {\n      return _repeat.repeat;\n    }\n  });\n});\n","define(\"tt4/helpers/reverse\", [\"exports\", \"ember-composable-helpers/helpers/reverse\"], function (_exports, _reverse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _reverse.default;\n    }\n  });\n});\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\n\nexport default Helper.extend({\n    intl: service(),\n    Collector: service('collector-service'),\n\n    // used for saldo-insights field translations, because saldo-fields have custom translations\n    // also if no translation was found from saldo_insights, we determine it is custom field and use its own name as a translation\n    compute(params) {\n        let form = params[0];\n        let field = params[1];\n        if (this.intl.exists('saldo_insights.fields.' + field)) {\n            return this.intl.t('saldo_insights.fields.' + field);\n        } else {\n            let formfield = this.Collector.formField(form, field);\n            if (formfield && formfield.name) return formfield.name;\n            return field ? 'saldo_insights.fields.' + field : '-';\n        }\n    },\n});\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nconst CollectorFormatHelper = Helper.extend({\n    Collector: service('collector-service'),\n    compute(params) {\n        const c = get(this, 'Collector');\n        return c.shortFormat(params[0], params[1] || 2);\n    },\n});\n\nexport default CollectorFormatHelper;\n","import { helper } from '@ember/component/helper';\n\n// This function receives the params `params, hash`\nexport function showJson(params) {\n    if (params[0]) {\n        return JSON.stringify(params[0], null, params[1] ? params[1] : null);\n    }\n}\n\nexport default helper(showJson);\n","import { helper } from '@ember/component/helper';\nimport { htmlSafe as Safe } from '@ember/string';\nimport { sanitize } from 'dom-purify';\n\nexport function showLinefeeds(params) {\n    if (params[0].string) {\n        return new Safe(sanitize(params[0].string.replace(/\\n/g, '<br>')));\n    } else {\n        return new Safe(sanitize(params[0].replace(/\\n/g, '<br>')));\n    }\n}\n\nexport default helper(showLinefeeds);\n","define(\"tt4/helpers/shuffle\", [\"exports\", \"ember-composable-helpers/helpers/shuffle\"], function (_exports, _shuffle) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _shuffle.default;\n    }\n  });\n  Object.defineProperty(_exports, \"shuffle\", {\n    enumerable: true,\n    get: function get() {\n      return _shuffle.shuffle;\n    }\n  });\n});\n","import singularize from 'ember-inflector/lib/helpers/singularize';\nexport default singularize;\n","define(\"tt4/helpers/slice\", [\"exports\", \"ember-composable-helpers/helpers/slice\"], function (_exports, _slice) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _slice.default;\n    }\n  });\n});\n","define(\"tt4/helpers/sort-by\", [\"exports\", \"ember-composable-helpers/helpers/sort-by\"], function (_exports, _sortBy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _sortBy.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\nimport { htmlSafe } from '@ember/string';\n\nexport function sortIcon([columns, field]) {\n    let sortClass = ' text-report-muted';\n    if (columns && columns.includes(field + '-')) {\n        sortClass = 'Down';\n    } else if (columns && columns.includes(field)) {\n        sortClass = 'Up';\n    } else {\n        return '';\n    }\n\n    return htmlSafe('<span class=\"move move-Sort' + sortClass + '\"></span>');\n}\n\nexport default helper(sortIcon);\n","import Helper from '@ember/component/helper';\n\nexport default Helper.extend({\n    compute(params, hash) {\n        if (!params[0]) return null;\n        if (hash.sortBy)\n            params[0].sort((a, b) => ('' + a[hash.sortBy]).localeCompare(b[hash.sortBy]));\n        return params[0].sort();\n    },\n});\n","import { htmlSafe } from '@ember/string';\nimport Ember from 'ember';\nimport { helper } from '@ember/component/helper';\n\nexport function icon(value) {\n    let escaped = Ember.Handlebars.Utils.escapeExpression(value);\n    let className = '';\n    switch (escaped) {\n        case 'save':\n            className = 'glyphicon glyphicon-floppy-disk';\n            break;\n        case 'edit':\n            className = 'glyphicon glyphicon-pencil';\n            break;\n        case 'warning':\n            className = 'glyphicon glyphicon-warning-sign';\n            break;\n        case 'filter':\n            className = 'glyphicon glyphicon-filter';\n            break;\n        case 'export':\n            className = 'glyphicon glyphicon-save-file';\n            break;\n        case 'previous':\n            className = 'glyphicon glyphicon-arrow-left';\n            break;\n        case 'next':\n            className = 'glyphicon glyphicon-arrow-right';\n            break;\n        case 'unchecked':\n            className = 'move move-UncheckedCheckbox';\n            break;\n        case 'checked':\n            className = 'move move-CheckedCheckbox';\n            break;\n        case 'ok':\n            className = 'glyphicon glyphicon-ok';\n            break;\n        case 'cancel':\n            className = 'glyphicon glyphicon-ban-circle';\n            break;\n        case 'remove':\n            className = 'glyphicon glyphicon-remove';\n            break;\n        case 'info':\n            className = 'move move-Info';\n            break;\n    }\n\n    if (escaped) {\n        return new htmlSafe('<span class=\"' + className + '\"></span>');\n    }\n}\nexport default helper(icon);\n","define(\"tt4/helpers/string-length\", [\"exports\", \"@movenium/ember-movenium/helpers/string-length\"], function (_exports, _stringLength) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _stringLength.default;\n    }\n  });\n  Object.defineProperty(_exports, \"stringLength\", {\n    enumerable: true,\n    get: function get() {\n      return _stringLength.stringLength;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\n// This function receives the params `params, hash`\nexport function stringToArray(params) {\n    if (typeof params[0] == 'string') {\n        return JSON.parse(params[0]);\n    }\n    return params[0];\n}\nexport default helper(stringToArray);\n","import { helper } from '@ember/component/helper';\nimport { get } from '@ember/object';\nimport { isEmpty } from '@ember/utils';\n\n/*\nThis helper is supposed to give field sums as CAPI formatted\n */\nexport function sumField(params, hash) {\n    if (isEmpty(hash.rows)) {\n        return;\n    }\n    switch (get(hash.field, 'type')) {\n        case 'number':\n        case 'hours':\n            return sumNumbers(hash.field, hash.rows);\n        case 'dropdown_options':\n        case 'dropdown_values':\n        case 'checkbox':\n            return sumDropdownAndCheckbox(hash.field, hash.rows);\n    }\n}\n\nfunction sumNumbers(field, rows) {\n    return rows\n        .reduce((a, b) => {\n            return parseFloat(get(b, get(field, 'name'))) + parseFloat(a);\n        }, 0)\n        .toFixed(2);\n}\n\nfunction sumDropdownAndCheckbox(field, rows) {\n    let options = rows.reduce((a, b) => {\n        let value = get(b, get(field, 'name'));\n        if (get(field, 'type') == 'checkbox') {\n            if (value === false) {\n                value = 'off';\n            } else if (value === true) {\n                value = 'on';\n            }\n        }\n        if (!value) {\n            return a;\n        }\n        if (isEmpty(get(a, value))) {\n            a[value] = 1;\n        } else {\n            a[value] += 1;\n        }\n        return a;\n    }, {});\n    let str = '';\n    Object.keys(options).forEach((k) => {\n        str += `${k}:${options[k]},`;\n    });\n    return str.slice(0, -1);\n}\n\nexport default helper(sumField);\n","import makeHelper from 'ember-svg-jar/utils/make-helper';\nimport makeSVG from 'ember-svg-jar/utils/make-svg';\n\nfunction getInlineAsset(assetId) {\n  try {\n    /* eslint-disable global-require */\n    return require(`ember-svg-jar/inlined/${assetId}`).default;\n  } catch (err) {\n    return null;\n  }\n}\n\nexport function svgJar(assetId, svgAttrs) {\n  return makeSVG(assetId, svgAttrs, getInlineAsset);\n}\n\nexport default makeHelper(svgJar);\n","define(\"tt4/helpers/t\", [\"exports\", \"ember-intl/helpers/t\"], function (_exports, _t) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _t.default;\n    }\n  });\n});\n","define(\"tt4/helpers/take\", [\"exports\", \"ember-composable-helpers/helpers/take\"], function (_exports, _take) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _take.default;\n    }\n  });\n});\n","define(\"tt4/helpers/task\", [\"exports\", \"ember-concurrency/helpers/task\"], function (_exports, _task) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _task.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\nexport function toArray(params /*, hash*/) {\n    return params[0] ? params[0].toArray() : [];\n}\n\nexport default helper(toArray);\n","define(\"tt4/helpers/toggle-action\", [\"exports\", \"ember-composable-helpers/helpers/toggle-action\"], function (_exports, _toggleAction) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _toggleAction.default;\n    }\n  });\n});\n","define(\"tt4/helpers/toggle\", [\"exports\", \"ember-composable-helpers/helpers/toggle\"], function (_exports, _toggle) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _toggle.default;\n    }\n  });\n  Object.defineProperty(_exports, \"toggle\", {\n    enumerable: true,\n    get: function get() {\n      return _toggle.toggle;\n    }\n  });\n});\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\nimport Collector from 'tt4/injections/services/collector';\n\ninterface IHash {\n    form: string;\n    field: string;\n}\n\nexport default class TranslateColumnHelper extends Helper {\n    @service('addon/collector' as any) private collector: Collector;\n\n    public compute([], hash: IHash) {\n        return this.collector.getTranslationForColumn(hash.form, hash.field);\n    }\n}\n","define(\"tt4/helpers/union\", [\"exports\", \"ember-composable-helpers/helpers/union\"], function (_exports, _union) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _union.default;\n    }\n  });\n});\n","define(\"tt4/helpers/unix\", [\"exports\", \"ember-moment/helpers/unix\"], function (_exports, _unix) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _unix.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/user-icon.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserIconHelper;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nUserIconHelper = Ember.Helper.extend({\n    Collector: Ember.inject.service('collector-service'),\n    // This function receives the params `params, hash`\n    compute: function (params, hash) {\n        var c, color, image, inline, ret, rndColor, size;\n        c = this.get('Collector');\n        // params[0] = image\n        // params[1] = alternative text\n        // params[2] = color\n        size = hash.size ? 'icon-size-' + hash.size : '';\n        inline = hash.inline ? 'display: inline-block; ' : '';\n        if (params[0]) {\n            if (params[0].substring(0, 4) === 'http') {\n                image = params[0];\n            }\n            image = config.APP.COLLECTOR_API_URL + '/' + params[0];\n            ret =\n                \"<div class='user-icon img-circle \" +\n                size +\n                \"' style='\" +\n                inline +\n                'background-image:url(\"' +\n                image +\n                '\")\\'>&nbsp;</div>';\n        } else {\n            if (!hash.text || hash.text === ' ') {\n                return '';\n            }\n            color = hash.color;\n            if (!color) {\n                rndColor = c.randomizeColor(hash.text);\n                color = rndColor;\n            }\n            ret =\n                \"<div class='user-icon img-circle \" +\n                size +\n                \"' style='\" +\n                inline +\n                'background-color:' +\n                color +\n                \"'>\" +\n                c.shortFormat(hash.text, 2) +\n                '</div>';\n        }\n        return new Ember.String.htmlSafe(ret);\n    },\n});\n\nexport default UserIconHelper;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/user.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserHelper;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nUserHelper = Ember.Helper.extend({\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    // This function receives the params `params, hash`\n    compute: function (params, hash) {\n        var found, userid;\n        userid = params[0];\n        if (!userid) {\n            return;\n        }\n        found = this.get('store').peekRecord('user', userid);\n        if (found) {\n            return this.format(found, params[1]);\n        } else {\n            this.get('store')\n                .findRecord('user', userid)\n                .then(\n                    () => {\n                        return this.recompute();\n                    },\n                    () => {},\n                );\n            // user not found .. but it is ok\n            return '';\n        }\n    },\n    format: function (record, format) {\n        var fullname;\n        fullname = record.get('firstname') + ' ' + record.get('lastname');\n        if (!format) {\n            return fullname;\n        }\n        if (format === 'icon') {\n            return this.getIcon([record.get('image.firstObject.thumb'), fullname]);\n        }\n    },\n    getIcon: function (params) {\n        var c, color, image, ret, size;\n        c = this.get('Collector');\n        // params[0] = image\n        // params[1] = alternative text\n        // params[2] = color\n        size = '';\n        if (params[0]) {\n            if (params[0].substring(0, 4) === 'http') {\n                image = params[0];\n            }\n            image = config.APP.COLLECTOR_API_URL + '/' + params[0];\n            ret =\n                \"<div title='\" +\n                params[1] +\n                \"' class='user-icon img-circle \" +\n                size +\n                \"' style='background-image:url(\\\"\" +\n                image +\n                '\")\\'>&nbsp;</div>';\n        } else {\n            color = c.randomizeColor(params[1]);\n            ret =\n                \"<div title='\" +\n                params[1] +\n                \"' class='user-icon img-circle \" +\n                size +\n                \"' style='background-color:\" +\n                color +\n                \"'>\" +\n                c.shortFormat(params[1], 2) +\n                '</div>';\n        }\n        return new Ember.String.htmlSafe(ret);\n    },\n});\n\nexport default UserHelper;\n","define(\"tt4/helpers/utc\", [\"exports\", \"ember-moment/helpers/utc\"], function (_exports, _utc) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _utc.default;\n    }\n  });\n  Object.defineProperty(_exports, \"utc\", {\n    enumerable: true,\n    get: function get() {\n      return _utc.utc;\n    }\n  });\n});\n","define(\"tt4/helpers/values\", [\"exports\", \"ember-composable-helpers/helpers/values\"], function (_exports, _values) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _values.default;\n    }\n  });\n  Object.defineProperty(_exports, \"values\", {\n    enumerable: true,\n    get: function get() {\n      return _values.values;\n    }\n  });\n});\n","define(\"tt4/helpers/without\", [\"exports\", \"ember-composable-helpers/helpers/without\"], function (_exports, _without) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _without.default;\n    }\n  });\n  Object.defineProperty(_exports, \"without\", {\n    enumerable: true,\n    get: function get() {\n      return _without.without;\n    }\n  });\n});\n","define(\"tt4/helpers/xor\", [\"exports\", \"ember-truth-helpers/helpers/xor\"], function (_exports, _xor) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _xor.default;\n    }\n  });\n  Object.defineProperty(_exports, \"xor\", {\n    enumerable: true,\n    get: function get() {\n      return _xor.xor;\n    }\n  });\n});\n","import initialize from 'ember-modal-dialog/initializers/add-modals-container';\n\nexport default {\n  name: 'add-modals-container',\n  initialize: initialize\n};\n","import initializerFactory from 'ember-cli-app-version/initializer-factory';\nimport config from '../config/environment';\n\nlet name, version;\nif (config.APP) {\n  name = config.APP.name;\n  version = config.APP.version;\n}\n\nexport default {\n  name: 'App Version',\n  initialize: initializerFactory(name, version)\n};\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\n// Takes two parameters: container and app\nexport function initialize(application) {\n    application.inject('controller', 'Collector', 'service:collectorService');\n    application.inject('route', 'Collector', 'service:collectorService');\n    application.inject('component', 'Collector', 'service:collectorService');\n    application.inject('adapter', 'Collector', 'service:collectorService');\n}\n\nexport default {\n    name: 'Collector',\n    initialize,\n};\n","export { default, initialize } from 'ember-component-css/initializers/component-styles';\n\nimport Ember from 'ember';\n\nimport StyleNamespacingExtras from '../mixins/style-namespacing-extras';\n\n// eslint-disable-next-line ember/new-module-imports\nEmber.Component.reopen(StyleNamespacingExtras);\n","import ContainerDebugAdapter from 'ember-resolver/resolvers/classic/container-debug-adapter';\n\nexport default {\n  name: 'container-debug-adapter',\n\n  initialize() {\n    let app = arguments[1] || arguments[0];\n\n    app.register('container-debug-adapter:main', ContainerDebugAdapter);\n    app.inject('container-debug-adapter:main', 'namespace', 'application:main');\n  }\n};\n","define(\"tt4/initializers/csv\", [\"exports\", \"ember-cli-data-export/initializers/csv\"], function (_exports, _csv) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _csv.default;\n    }\n  });\n  Object.defineProperty(_exports, \"initialize\", {\n    enumerable: true,\n    get: function get() {\n      return _csv.initialize;\n    }\n  });\n});\n","export default {\r\n  name: 'buildTimestamp',\r\n\r\n  initialize (application) {\r\n    const timestamp = application.BUILD_TIMESTAMP;\r\n    const key = 'buildTimestamp';\r\n\r\n    application.register('buildTimestamp:main', timestamp, {instantiate: false, singleton: true});\r\n    application.inject('route', key, 'buildTimestamp:main');\r\n    application.inject('controller', key, 'buildTimestamp:main');\r\n    application.inject('service', key, 'buildTimestamp:main');\r\n  }\r\n};\r\n","\n        export default {\n          name: 'ember-cli-mirage',\n          initialize() {}\n        };\n      ","define(\"tt4/initializers/ember-concurrency\", [\"exports\", \"ember-concurrency/initializers/ember-concurrency\"], function (_exports, _emberConcurrency) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberConcurrency.default;\n    }\n  });\n});\n","define(\"tt4/initializers/ember-data-data-adapter\", [\"exports\", \"@ember-data/debug/setup\"], function (_exports, _setup) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _setup.default;\n    }\n  });\n});\n","import 'ember-data';\n\nimport setupContainer from 'ember-data/setup-container';\n\n/*\n  This code initializes EmberData in an Ember application.\n\n  It ensures that the `store` service is automatically injected\n  as the `store` property on all routes and controllers.\n*/\nexport default {\n  name: 'ember-data',\n  initialize: setupContainer,\n};\n","export function initialize() {\n}\n\nexport default {\n  name: 'ember-faker',\n  initialize\n};\n","import ENV from '../config/environment';\nimport Configuration from 'ember-simple-auth/configuration';\nimport setupSession from 'ember-simple-auth/initializers/setup-session';\nimport setupSessionService from 'ember-simple-auth/initializers/setup-session-service';\nimport setupSessionRestoration from 'ember-simple-auth/initializers/setup-session-restoration';\n\nexport default {\n  name: 'ember-simple-auth',\n\n  initialize(registry) {\n    const config = ENV['ember-simple-auth'] || {};\n    config.rootURL = ENV.rootURL || ENV.baseURL;\n    Configuration.load(config);\n\n    setupSession(registry);\n    setupSessionService(registry);\n    setupSessionRestoration(registry);\n  }\n};\n","define(\"tt4/initializers/excel\", [\"exports\", \"ember-cli-data-export/initializers/excel\"], function (_exports, _excel) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _excel.default;\n    }\n  });\n  Object.defineProperty(_exports, \"initialize\", {\n    enumerable: true,\n    get: function get() {\n      return _excel.initialize;\n    }\n  });\n});\n","import Ember from 'ember';\nimport config from '../config/environment';\n\nexport function initialize() {\n  var application = arguments[1] || arguments[0];\n  if (config.exportApplicationGlobal !== false) {\n    var theGlobal;\n    if (typeof window !== 'undefined') {\n        theGlobal = window;\n    } else if (typeof global !== 'undefined') {\n        theGlobal = global\n    } else if (typeof self !== 'undefined') {\n        theGlobal = self;\n    } else {\n       // no reasonable global, just bail\n       return;\n    }\n\n    var value = config.exportApplicationGlobal;\n    var globalName;\n\n    if (typeof value === 'string') {\n      globalName = value;\n    } else {\n      globalName = Ember.String.classify(config.modulePrefix);\n    }\n\n    if (!theGlobal[globalName]) {\n      theGlobal[globalName] = application;\n\n      application.reopen({\n        willDestroy: function() {\n          this._super.apply(this, arguments);\n          delete theGlobal[globalName];\n        }\n      });\n    }\n  }\n}\n\nexport default {\n  name: 'export-application-global',\n\n  initialize: initialize\n};\n","import config from 'tt4/config/environment';\nimport getScript from 'tt4/utils/getScript';\n\nexport default {\n    name: 'google-maps',\n\n    initialize() {\n        const url = `https://maps.googleapis.com/maps/api/js?key=${config.APP.GM_KEY}&libraries=geometry`;\n        getScript(url);\n    },\n};\n","import ENV from '../config/environment';\nimport Config from 'ember-bootstrap/config';\n\nexport function initialize(/* container, application */) {\n  Config.load(ENV['ember-bootstrap'] || {});\n}\n\nexport default {\n  name: 'load-bootstrap-config',\n  initialize\n};\n","import config from '../config/environment';\n\nexport function initialize() {\n  const application = arguments[1] || arguments[0];\n  const { metricsAdapters = [] } = config;\n  const { environment = 'development' } = config;\n  const options = { metricsAdapters, environment };\n\n  application.register('config:metrics', options, { instantiate: false });\n  application.inject('service:metrics', 'options', 'config:metrics');\n}\n\nexport default {\n  name: 'metrics',\n  initialize\n};\n","define(\"tt4/initializers/user-agent\", [\"exports\", \"ember-useragent/initializers/user-agent\"], function (_exports, _userAgent) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _userAgent.default;\n    }\n  });\n  Object.defineProperty(_exports, \"initialize\", {\n    enumerable: true,\n    get: function get() {\n      return _userAgent.initialize;\n    }\n  });\n});\n","define(\"tt4/injections/services/analytics\", [\"exports\", \"app/services/analytics\"], function (_exports, _analytics) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _analytics.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/capi\", [\"exports\", \"app/services/capi\"], function (_exports, _capi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _capi.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/cdn\", [\"exports\", \"app/services/cdn\"], function (_exports, _cdn) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _cdn.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/collector-service\", [\"exports\", \"app/services/collector-service\"], function (_exports, _collectorService) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _collectorService.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/collector\", [\"exports\", \"app/ember-movenium/services/collector\"], function (_exports, _collector) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _collector.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/error-handler\", [\"exports\", \"app/ember-movenium/services/error-handler\"], function (_exports, _errorHandler) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _errorHandler.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/evented\", [\"exports\", \"app/ember-movenium/services/evented\"], function (_exports, _evented) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _evented.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/forms\", [\"exports\", \"app/ember-movenium/services/forms\"], function (_exports, _forms) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _forms.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/initapp\", [\"exports\", \"app/services/initapp\"], function (_exports, _initapp) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _initapp.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/need\", [\"exports\", \"app/ember-movenium/services/needs\"], function (_exports, _needs) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _needs.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/sessionhelper\", [\"exports\", \"app/services/sessionhelper\"], function (_exports, _sessionhelper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _sessionhelper.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/surveys\", [\"exports\", \"app/services/surveys\"], function (_exports, _surveys) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _surveys.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/ttapi\", [\"exports\", \"app/services/ttapi\"], function (_exports, _ttapi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _ttapi.default;\n    }\n  });\n});\n","import initializeStoreService from 'ember-data/initialize-store-service';\n\nexport default {\n  name: 'ember-data',\n  initialize: initializeStoreService,\n};\n","import { getOwner } from '@ember/application';\n\nexport default {\n  name: 'ember-gestures',\n\n  initialize: function (instance) {\n    if (typeof(instance.lookup) === \"function\") {\n      instance.lookup('service:-gestures');\n    } else {\n      // This can be removed when we no-longer support ember 1.12 and 1.13\n      getOwner(instance).lookup('service:-gestures');\n    }\n  }\n\n};\n","import HrefTo from 'ember-href-to/href-to';\n\nfunction closestLink(el) {\n  if (el.closest) {\n    return el.closest('a');\n  } else {\n    el = el.parentElement;\n    while (el && el.tagName !== 'A') {\n      el = el.parentElement;\n    }\n    return el;\n  }\n}\nexport default {\n  name: 'ember-href-to',\n  initialize(applicationInstance) {\n    // we only want this to run in the browser, not in fastboot\n    if (typeof(FastBoot) === \"undefined\") {\n      let hrefToClickHandler = function _hrefToClickHandler(e) {\n        let link = e.target.tagName === 'A' ? e.target : closestLink(e.target);\n        if (link) {\n          let hrefTo = new HrefTo(applicationInstance, e, link);\n          hrefTo.maybeHandle();\n        }\n      };\n\n      document.body.addEventListener('click', hrefToClickHandler);\n\n      // Teardown on app destruction: clean up the event listener to avoid\n      // memory leaks.\n      applicationInstance.reopen({\n        willDestroy() {\n          document.body.removeEventListener('click', hrefToClickHandler);\n          return this._super(...arguments);\n        }\n      });\n    }\n  }\n};\n","// This is only needed for backwards compatibility and will be removed in the\n// next major release of ember-simple-auth. Unfortunately, there is no way to\n// deprecate this without hooking into Ember's internals…\nexport default {\n  name: 'ember-simple-auth',\n\n  initialize() {}\n};\n","define(\"tt4/instance-initializers/route-styles\", [\"exports\", \"ember-component-css/instance-initializers/route-styles\"], function (_exports, _routeStyles) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _routeStyles.default;\n    }\n  });\n  Object.defineProperty(_exports, \"initialize\", {\n    enumerable: true,\n    get: function get() {\n      return _routeStyles.initialize;\n    }\n  });\n});\n","export default {\n    pluralForm: function () {\n        return;\n    },\n    rtl: false,\n};\n","export default {\n    'general.offline':\n        'Your network connection is out. Trying to reconnect in {{seconds}} seconds.',\n    'general.trynow': 'Try now',\n};\n","export default {\n    pluralForm: function () {\n        return;\n    },\n    rtl: false,\n};\n","export default {\n    'general.offline': 'Verkkoyhteys ei toimi. Yritä uudelleen {{seconds}} sekunnin päästä.',\n    'general.trynow': 'Kokeile nyt',\n};\n","export default {\n    pluralForm: function () {\n        return;\n    },\n    rtl: false,\n};\n","export default {\n    'general.offline':\n        'Ingen internet förbindelse hittad. Försöker pånytt om [[seconds}} sekunder.',\n    'general.trynow': 'Testa nu',\n};\n","export default {\n    pluralForm: function englishWithZero(n) {\n        if (n === 0) {\n            return 'zero';\n        }\n        if (n === 1) {\n            return 'one';\n        }\n        return 'other';\n    },\n    rtl: false,\n};\n","export default {\n    'menu.users': 'Users',\n};\n","import BaseAdapter from 'ember-metrics/metrics-adapters/base';\nimport { assert } from '@ember/debug';\nimport { isPresent } from '@ember/utils';\n/*global FirebasePlugin*/\n\n//To use this set analyticsSettings.name = FirebaseAnalytics in config/environment.js\n//Corber beforeBuild hook will set this for apps tt4/fastlane/corber/hooks/beforeBuild.js\nexport default BaseAdapter.extend({\n    toStringExtension() {\n        return 'firebase-metrics';\n    },\n\n    init() {\n        //This function is required by the adapter to function\n    },\n\n    trackEvent({ category, action }) {\n        assert(\n            \"You must give the category to firebase-metrics trackEvent method {category: 'My-Category'}\",\n            isPresent(category),\n        );\n        assert(\n            \"You must give the action to firebase-metrics trackEvent method {category: 'My-Category', action: 'someAction'}\",\n            isPresent(action),\n        );\n        FirebasePlugin.logEvent(category, { action: action });\n    },\n\n    trackPage({ page }) {\n        assert('You must give the page to firebase-metrics trackPage method', isPresent(page));\n        FirebasePlugin.setScreenName(page);\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/avi.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AviMixin;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nAviMixin = Ember.Mixin.create({\n    ttapi: Ember.inject.service(),\n    getAviData: function (params) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            if (params.project) {\n                return this.get('ttapi')\n                    .request('/avi', {\n                        type: 'GET',\n                        data: params,\n                    })\n                    .then((data) => {\n                        return resolve(data);\n                    });\n            } else {\n                return resolve({\n                    users: [],\n                    count: 0,\n                });\n            }\n        });\n    },\n});\n\nexport default AviMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/base-export.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar BaseExportMixin;\n\nimport Ember from 'ember';\n\nBaseExportMixin = Ember.Mixin.create({\n    getTable: function (columns, rows, translated_columns, sumRow) {\n        var add, array, cell, column, headers, i, j, k, l, len, len1, len2, len3, row;\n        array = [];\n        headers = [];\n        for (i = 0, len = translated_columns.length; i < len; i++) {\n            column = translated_columns[i];\n            headers.push('' + column);\n        }\n        array.push(headers);\n        //console.log rows\n        for (j = 0, len1 = rows.length; j < len1; j++) {\n            row = rows[j];\n            add = [];\n            for (k = 0, len2 = columns.length; k < len2; k++) {\n                column = columns[k];\n                cell = row[column];\n                add.push(\n                    (function () {\n                        switch (Ember.typeOf(cell)) {\n                            case 'number':\n                                return cell.toString();\n                            case 'object':\n                                if (cell.string != null) {\n                                    return cell.toString();\n                                } else {\n                                    return cell;\n                                }\n                                break;\n                            case 'string':\n                                return cell;\n                            case 'array':\n                                return cell;\n                            default:\n                                return '';\n                        }\n                    })(),\n                );\n            }\n            array.push(add);\n        }\n        if (sumRow) {\n            add = [];\n            for (l = 0, len3 = columns.length; l < len3; l++) {\n                column = columns[l];\n                cell = sumRow[column];\n                add.push(\n                    (function () {\n                        switch (Ember.typeOf(cell)) {\n                            case 'number':\n                                return cell.toString();\n                            case 'object':\n                                if (cell.string != null) {\n                                    return cell.toString();\n                                } else {\n                                    return cell;\n                                }\n                                break;\n                            case 'string':\n                                return cell;\n                            default:\n                                return '';\n                        }\n                    })(),\n                );\n            }\n            array.push(add);\n        }\n        return array;\n    },\n    // returns data in different (one row per page) format\n    getTableFullFormat: function (columns, rows, translated_columns, sumRow) {\n        var add,\n            array,\n            cell,\n            col_ind,\n            column,\n            field,\n            field_ind,\n            headers,\n            i,\n            j,\n            k,\n            l,\n            len,\n            len1,\n            len2,\n            len3,\n            row,\n            tmpcell;\n        //console.log translated_columns\n        headers = [];\n        array = [];\n        for (i = 0, len = translated_columns.length; i < len; i++) {\n            column = translated_columns[i];\n            headers.push('' + column);\n        }\n        //array.push headers\n        for (j = 0, len1 = rows.length; j < len1; j++) {\n            row = rows[j];\n            add = [];\n            if (Ember.typeOf(row) === 'array') {\n                for (field_ind = k = 0, len2 = row.length; k < len2; field_ind = ++k) {\n                    field = row[field_ind];\n                    cell = (function () {\n                        switch (Ember.typeOf(field)) {\n                            case 'number':\n                                return field.toString();\n                            case 'object':\n                                if (field.string != null) {\n                                    return field.toString();\n                                } else {\n                                    return field;\n                                }\n                                break;\n                            case 'string':\n                                return field;\n                            case 'array':\n                                return field;\n                            default:\n                                return '';\n                        }\n                    })();\n                    add.push([headers[field_ind], cell]);\n                }\n                array.push(add);\n            } else {\n                for (col_ind = l = 0, len3 = columns.length; l < len3; col_ind = ++l) {\n                    column = columns[col_ind];\n                    cell = row[column];\n                    tmpcell = (function () {\n                        switch (Ember.typeOf(cell)) {\n                            case 'number':\n                                return cell.toString();\n                            case 'object':\n                                if (cell.string != null) {\n                                    return cell.toString();\n                                } else {\n                                    return cell;\n                                }\n                                break;\n                            case 'string':\n                                return cell;\n                            default:\n                                return '';\n                        }\n                    })();\n                    add.push([headers[col_ind], tmpcell]);\n                }\n                array.push(add);\n            }\n        }\n        return array;\n    },\n});\n\nexport default BaseExportMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/base-validation.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar BaseValidationMixin;\n\nimport Ember from 'ember';\n\nimport validator from '../classes/validations';\n\nconst { getOwner } = Ember;\n\nBaseValidationMixin = Ember.Mixin.create({\n    // Properties\n\n    // Validations rules to validate fields\n    // format:\n    // validations = {\n    //       < field name >:\n    //               < validation name >: boolean|array|number|string < whatever options the validator needs/supports >\n    // }\n    validations: null,\n    // Path to validation object. If field to validate are not on mixed class set this to the path ie 'objects' => @get('objects') and @get('objects.'+field') for validation\n    validationObject: null,\n\n    // Methods\n\n    // The actual validation method\n    validate: function (fields = []) {\n        var field, options, promises, ret, rule, rules, self, validations;\n        self = this;\n        this.clearErrors(fields);\n        promises = [];\n        // Get the validation rules\n        validations = this.getValidationRules(fields);\n        // Loop trough the validation rules for each field\n        for (field in validations) {\n            rules = validations[field];\n            // Execute every rule for this field\n            for (rule in rules) {\n                options = rules[rule];\n                ret = this.executeValidations(field, rule, options);\n                promises.push(ret);\n            }\n        }\n        // When all rules are resolved we resolve the promise so you can use ex user.validate().then ->\n        return Ember.RSVP.all(promises);\n    },\n    executeValidations: function (field, rule, options) {\n        var ret, scope, validationObject, value;\n        // Check if we have a validation function by same name as the rule and execute it\n        if (typeof validator.get('validate_' + rule) === 'function') {\n            // Get the scope and value from which we are validating\n            validationObject = this.get('validationObject');\n            if (validationObject) {\n                scope = this.get(validationObject);\n                value = this.get(validationObject + '.' + field);\n            } else {\n                // or get the default scope\n                scope = this;\n                value = this.get(field);\n            }\n            ret = validator['validate_' + rule](scope, value, options, field, this);\n            // All validations should return a promise\n            return ret.then((opt) => {\n                var message;\n                // If the promise returns something we assume its an error and add this to the model\n                if (opt) {\n                    message = this.getMessage(rule, opt);\n                    return this.setError(field, message, rule);\n                }\n            });\n        }\n    },\n    // We get the error message here\n    getMessage: function (rule, ret) {\n        var validations;\n        validations = getOwner(this).lookup('service:intl');\n        return validations.t('validation.error.' + rule, ret);\n    },\n    // Set the errors\n    setError: function (field, message, rule) {\n        var arr, errors;\n        errors = this.get('errors');\n        if (errors.get(field)) {\n            return errors.set(field + '.' + rule, message);\n        } else {\n            arr = Em.Object.create();\n            arr.set(rule, message);\n            return this.set('errors.' + field, arr);\n        }\n    },\n    // Clear the errors\n    clearErrors: function (fields) {\n        var field, i, len, results;\n        if (fields.length > 0) {\n            results = [];\n            for (i = 0, len = fields.length; i < len; i++) {\n                field = fields[i];\n                results.push(this.set('errors.' + field, void 0));\n            }\n            return results;\n        } else {\n            return this.set('errors', Em.Object.create());\n        }\n    },\n    // Get the validation rules and if we have fields then only get the specific validation rules\n    getValidationRules: function (fields) {\n        var field, i, k, len, validateThese, validations;\n        validations = this.get('validations');\n        // Throw error if we don't have validations on the object\n        Em.assert('You need to set the validations rule on the object', validations);\n        // Loop trough the given fields and only return validation rules for these fields\n        if (fields.length > 0) {\n            validateThese = {};\n            for (k = i = 0, len = fields.length; i < len; k = ++i) {\n                field = fields[k];\n                validateThese[field] = validations[field];\n            }\n            return validateThese;\n        }\n        return validations;\n    },\n});\n\nexport default BaseValidationMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/clickelsewhere.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ClickElsewhereMixin;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nClickElsewhereMixin = Ember.Mixin.create({\n    outsideClickHandler: function (e) {\n        var inside;\n        inside = $(e.target).closest(this.get('element')).length === 1;\n        if (!inside && !this.get('isDestroyed')) {\n            this.onClickElsewhere(e);\n        }\n        // must return true. otherwise some other click actions may fail\n        return true;\n    },\n    onClickElsewhere: function () {},\n    clickHandler: null,\n    didInsertElement: function () {\n        this._super.apply(this, arguments);\n        this.set('clickHandler', Ember.run.bind(this, this.outsideClickHandler));\n        return $(document).on('click touchend', this.get('clickHandler'));\n    },\n    willDestroyElement: function () {\n        this._super.apply(this, arguments);\n        return $(document).off('click touchend', this.get('clickHandler'));\n    },\n});\n\nexport default ClickElsewhereMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/collector-field.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldMixin,\n    get,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\n({ get } = Ember);\n\nCollectorFieldMixin = Ember.Mixin.create({\n    form: Ember.computed.alias('field.form'),\n    object: Ember.computed.alias('field.name'),\n    disabled: false,\n    isDisabled: function () {\n        var condition, i, k, len, ref, ref1, set, v;\n        if (this.get('useAsFilter') && this.get('field.features.disabled')) {\n            return false;\n        }\n        if (\n            get(this, 'model') &&\n            !get(this, 'model.isNew') &&\n            get(this, 'field.features.lock_value')\n        ) {\n            ref = get(this, 'field.features.lock_value');\n            for (i = 0, len = ref.length; i < len; i++) {\n                set = ref[i];\n                for (k in set) {\n                    v = set[k];\n                    if (((ref1 = get(this, 'model.' + k)), indexOf.call(v.split(','), ref1) >= 0)) {\n                        return true;\n                    }\n                }\n            }\n        }\n        if (typeof this.get('field.features.disabled') === 'object') {\n            if (!this.get('model')) {\n                return false;\n            }\n            condition = this.get('field.features.disabled.condition');\n            if (\n                condition &&\n                condition.indexOf('$editing') >= 0 &&\n                this.get('field.features.disabled.value') === true &&\n                !this.get('model.isNew') === true &&\n                (condition.indexOf('$wap') === -1 || this.get('object') === 'starttime')\n            ) {\n                return true;\n            } else if (\n                this.get('field.features.disabled.value') === true &&\n                !this.get('field.features.disabled.condition')\n            ) {\n                return true;\n            }\n        } else if (\n            this.get('field.form') === 'worktime' &&\n            this.get('field.options.form') === 'project'\n        ) {\n            return false;\n        } else if (this.get('field.features.disabled')) {\n            return true;\n        }\n        return false;\n    },\n    didRender: function () {\n        return this.set('disabled', this.isDisabled());\n    },\n});\n\nexport default CollectorFieldMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/collector-validation.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorValidationMixin;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport BaseValidator from '../mixins/base-validation';\n\nimport $ from 'jquery';\n\nconst { getOwner } = Ember;\n\nCollectorValidationMixin = Ember.Mixin.create(BaseValidator, {\n    // Properties\n\n    // Collector form for fields that we are validating\n    form: null,\n    defaultValidations: {\n        username: {\n            mandatory: true,\n            username_free: true,\n            username: true,\n        },\n        password: {\n            password: true,\n        },\n    },\n\n    // Methods\n\n    // Validate method that we can call to initialize a validation\n    validate: function (fields = []) {\n        var c, collectorFields, form, validateThese;\n        // Only fetch validations if they are not set already\n        if (!this.get('validations')) {\n            // Get needed properties\n            form = this.get('constructor.modelName');\n            c = getOwner(this).lookup('service:collectorService');\n            // We need to check if \"modelName\" is set on the object, without this we cannot do anything\n            Em.assert('You need to have \"modelName\" on the object for validations to work', form);\n            // Get the fields and their settings from collector service\n            collectorFields = c.fieldArray(form);\n            validateThese = this.getFieldsToValidate(collectorFields);\n            this.set('validations', validateThese);\n        }\n        return this._super(fields);\n    },\n    // Check what fields have some kind of validation need and skip the rest\n    getFieldsToValidate: function (fields) {\n        var defaultValidations, ret;\n        ret = {};\n        defaultValidations = this.get('defaultValidations');\n        fields.forEach((options) => {\n            var formatted, method, ref, results, value;\n            if (options.features.hide === true) {\n                return;\n            }\n            if (!$.isEmptyObject(options.features)) {\n                formatted = this.convertValidations(options.features);\n                if (formatted) {\n                    ret[options.name] = formatted;\n                }\n            }\n            if (options.type in defaultValidations) {\n                if (!(options.name in ret)) {\n                    ret[options.name] = {};\n                }\n                ref = defaultValidations[options.type];\n                results = [];\n                for (method in ref) {\n                    value = ref[method];\n                    results.push((ret[options.name][method] = value));\n                }\n                return results;\n            }\n        });\n        return ret;\n    },\n    // Format collector validations to a more generic style, ie. make validate_check:minLength:15 to better format\n    convertValidations: function (options) {\n        var i, item, item_arr, len, ref, validator;\n        if (!options.validate_check && !options.mandatory && !options.unique) {\n            return;\n        }\n        validator = {};\n        if (options.validate_check) {\n            if (Array.isArray(options.validate_check)) {\n                ref = options.validate_check;\n                for (i = 0, len = ref.length; i < len; i++) {\n                    item = ref[i];\n                    if (item.substring(0, 10) === 'exact_len:') {\n                        item_arr = item.split(':');\n                        validator.length = parseInt(item_arr[1], 10);\n                    }\n                    if (item.substring(0, 9) === 'minLength') {\n                        item_arr = item.split(':');\n                        validator.minLength = parseInt(item_arr[1], 10);\n                    }\n                    if (item.substring(0, 9) === 'maxLength') {\n                        item_arr = item.split(':');\n                        validator.maxLength = parseInt(item_arr[1], 10);\n                    }\n                    if (item === 'number') {\n                        validator.number = true;\n                    }\n                    if (item === 'email') {\n                        validator.email = true;\n                    }\n                    if (item === 'multipleHours') {\n                        validator.multipleHours = true;\n                    }\n                    if (item === 'birthdate') {\n                        validator.birthdate = true;\n                    }\n                    if (item.substring(0, 6) === 'remote') {\n                        item_arr = item.split(':');\n                        validator[item_arr[1]] = true;\n                    }\n                    if (item.substring(0, 5) === 'match') {\n                        item_arr = item.split(':');\n                        validator.match = item_arr[1];\n                    }\n                    if (item === 'digits') {\n                        validator.digits = true;\n                    }\n                    if (item.substring(0, 3) === 'PIN') {\n                        item_arr = item.split(':');\n                    }\n                    if (item.substring(0, 10) === 'date_after') {\n                        item_arr = item.split(':');\n                        validator.date_after = item_arr[1];\n                    }\n                    if (item === 'hoursAndMinutes') {\n                        validator.hoursAndMinutes = true;\n                    }\n                }\n            } else if (options.validate_check.indexOf(':') > -1) {\n                item_arr = options.validate_check.split(':');\n                validator[item_arr[0]] = item_arr[1];\n            } else {\n                validator[options.validate_check] = true;\n            }\n        }\n        if (options.mandatory) {\n            validator.mandatory = options.mandatory;\n        }\n        if (options.unique) {\n            validator.unique = options.unique;\n        }\n        return validator;\n    },\n    // Set the errors\n    setError: function (field, message) {\n        //# We can't set error on a deleted model\n        if (this.get('currentState.stateName') === 'root.deleted.saved') {\n            return;\n        }\n        //# Set to dirty state because if validation errors found on record\n        //# that has no changes we get error\n        if (this.get('currentState.stateName') === 'root.loaded.saved') {\n            this.send('becomeDirty');\n        }\n        return this.get('errors').add(field, message);\n    },\n    // Clear the errors\n    clearErrors: function (fields) {\n        var errors, field, i, len, results;\n        if (fields.length > 0) {\n            results = [];\n            for (i = 0, len = fields.length; i < len; i++) {\n                field = fields[i];\n                errors = this.get('errors.' + field);\n                if (errors) {\n                    results.push(errors.clear());\n                } else {\n                    results.push(void 0);\n                }\n            }\n            return results;\n        } else {\n            return this.get('errors').clear();\n        }\n    },\n});\n\nexport default CollectorValidationMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/csv-export.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CsvExportMixin;\n\nimport Ember from 'ember';\n\nimport baseExport from './base-export';\n\nCsvExportMixin = Ember.Mixin.create(baseExport, {\n    createCsvElement: function (columns, rows, translated_columns = null, sumRow = null) {\n        if (!translated_columns) {\n            translated_columns = columns;\n        }\n        return this.getTable(columns, rows, translated_columns, sumRow);\n    },\n    createCsvFromElements: function (element, skip_headers = true) {\n        var a, blobObj, company, csvString, csv_str, j, key, len, mapped_row, name, row;\n        csv_str = [];\n        for (key = j = 0, len = element.length; j < len; key = ++j) {\n            row = element[key];\n            if (key === 0 && skip_headers) {\n                continue;\n            }\n            mapped_row = row.map(function (item) {\n                //remove linebreaks from csv string to avoid invalid format\n                if (Ember.typeOf(item) === 'string') {\n                    item.replace(/(\\r\\n\\t|\\n|\\r\\t)/gm, ' ');\n                }\n                return item;\n            });\n            csv_str.push(mapped_row.join(';'));\n        }\n        name = 'movenium_export';\n        company = this.get('session.currentUser.company');\n        if (company) {\n            name = company;\n        }\n        //create download for android app\n        if (typeof LocalFileSystem !== 'undefined' && LocalFileSystem !== null) {\n            return window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) {\n                return fileSystem.root.getFile(\n                    name + '.csv',\n                    {\n                        create: true,\n                    },\n                    function (entry) {\n                        var fileEntry;\n                        fileEntry = entry;\n                        return entry.createWriter(function (writer) {\n                            var csvString;\n                            //write file and open\n                            writer.onwrite = function (evt) {\n                                return cordova.plugins.fileOpener2.open(\n                                    fileEntry.toURL(),\n                                    'text/csv',\n                                );\n                            };\n                            csvString = csv_str.join('\\n');\n                            return writer.write(encodeURIComponent(csvString));\n                        });\n                    },\n                );\n            });\n        } else {\n            //download csv for desktop\n            csvString = csv_str.join('\\n');\n            if (window.Blob && window.navigator.msSaveOrOpenBlob) {\n                blobObj = new Blob(['\\uFEFF' + csvString], {\n                    type: 'text/csv',\n                });\n                return window.navigator.msSaveBlob(blobObj, name + '.csv');\n            } else {\n                a = document.createElement('a');\n                a.href = 'data:attachment/csv;charset=utf-8,\\uFEFF' + encodeURIComponent(csvString);\n                a.download = name + '.csv';\n                a.style.display = 'none';\n                document.body.appendChild(a);\n                return a.click();\n            }\n        }\n    },\n    createMultiCsv: function (csvString) {\n        var a, blobObj, company, name;\n        name = 'movenium_export';\n        company = this.get('session.currentUser.company');\n        if (company) {\n            name = company;\n        }\n        //create download for android app\n        if (typeof LocalFileSystem !== 'undefined' && LocalFileSystem !== null) {\n            return window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) {\n                return fileSystem.root.getFile(\n                    name + '.csv',\n                    {\n                        create: true,\n                    },\n                    function (entry) {\n                        var fileEntry;\n                        fileEntry = entry;\n                        return entry.createWriter(function (writer) {\n                            //write file and open\n                            writer.onwrite = function (evt) {\n                                return cordova.plugins.fileOpener2.open(\n                                    fileEntry.toURL(),\n                                    'text/csv',\n                                );\n                            };\n                            return writer.write(encodeURIComponent(csvString));\n                        });\n                    },\n                );\n            });\n        } else {\n            //download csv for desktop\n            if (window.Blob && window.navigator.msSaveOrOpenBlob) {\n                blobObj = new Blob(['\\uFEFF' + csvString], {\n                    type: 'text/csv',\n                });\n                return window.navigator.msSaveBlob(blobObj, name + '.csv');\n            } else {\n                a = document.createElement('a');\n                a.href = 'data:attachment/csv;charset=utf-8,\\uFEFF' + encodeURIComponent(csvString);\n                a.download = name + '.csv';\n                a.style.display = 'none';\n                document.body.appendChild(a);\n                return a.click();\n            }\n        }\n    },\n    createMultiTableCsv: function (elements, headers = false, mainHeader) {\n        var csv_multitable, csv_str, element, i, j, k, key, len, len1, mapped_row, row;\n        csv_multitable = [];\n        csv_multitable.push(mainHeader + '\\n');\n        i = 0;\n        for (j = 0, len = elements.length; j < len; j++) {\n            element = elements[j];\n            csv_str = [];\n            csv_str.push(headers[i]);\n            for (key = k = 0, len1 = element.length; k < len1; key = ++k) {\n                row = element[key];\n                mapped_row = row.map(function (item) {\n                    //remove linebreaks from csv string to avoid invalid format\n                    if (Ember.typeOf(item) === 'string') {\n                        return item.replace(/(\\r\\n\\t|\\n|\\r\\t)/gm, ' ');\n                    }\n                });\n                csv_str.push(mapped_row.join(';'));\n            }\n            csv_multitable.push(csv_str.join('\\n'));\n            i++;\n        }\n        //csv_multitable.join(\"\\n\\n\")\n        return this.createMultiCsv(csv_multitable.join('\\n\\n'));\n    },\n});\n\nexport default CsvExportMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/export-file.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ExportFileMixin;\n\nimport Ember from 'ember';\n\nExportFileMixin = Ember.Mixin.create({\n    exportFile: function (content, filename = 'export', type = 'txt') {\n        var fullFileName;\n        fullFileName = filename + '.' + type;\n        if (typeof LocalFileSystem !== 'undefined' && LocalFileSystem !== null) {\n            return this._exportLocalFile(content, fullFileName, 'text/' + type);\n        } else {\n            //download file for desktop\n            return this._createExportLink(content, fullFileName, 'attachment/' + type);\n        }\n    },\n    _exportLocalFile: function (content, fullFileName, mime) {\n        return window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) {\n            return fileSystem.root.getFile(\n                fullFileName,\n                {\n                    create: true,\n                },\n                function (entry) {\n                    var fileEntry;\n                    fileEntry = entry;\n                    return entry.createWriter(function (writer) {\n                        //write file and open\n                        writer.onwrite = function (evt) {\n                            return cordova.plugins.fileOpener2.open(fileEntry.toURL(), mime);\n                        };\n                        return writer.write(encodeURIComponent(content));\n                    });\n                },\n            );\n        });\n    },\n    _createExportLink: function (content, fullFileName, mime) {\n        var a;\n        a = document.createElement('a');\n        a.href = 'data:' + mime + ',' + encodeURIComponent(content);\n        a.target = '_blank';\n        a.download = fullFileName;\n        document.body.appendChild(a);\n        return a.click();\n    },\n});\n\nexport default ExportFileMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/filter-model.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FilterModelMixin,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nFilterModelMixin = Ember.Mixin.create({\n    Collector: Ember.inject.service('collector-service'),\n    skip_params: ['page', 'order'],\n    filteredModel: Ember.computed('model.[]', 'filters.@each.value', function () {\n        var filtered;\n        filtered = this.get('model');\n        return this._filterThese(filtered, this.get('skip_params'));\n    }),\n    _filterThese: function (filtered, skip_params) {\n        var filterBy;\n        filterBy = this.get('queryParams').filter(function (item) {\n            return !(indexOf.call(skip_params, item) >= 0);\n        });\n        filtered = filtered.filter((record) => {\n            var all_ok;\n            all_ok = true;\n            filterBy.forEach((param) => {\n                var field,\n                    fieldObj,\n                    form,\n                    i,\n                    len,\n                    moreArr,\n                    moreParam,\n                    moreTestParam,\n                    recordValue,\n                    ref,\n                    results,\n                    testValue,\n                    value;\n                value = this.get(param);\n                if (!value) {\n                    return;\n                }\n                // test more-filters\n                if (param.indexOf('more') > -1) {\n                    if (value.indexOf('|') > -1) {\n                        moreArr = value.split('|');\n                    } else {\n                        moreArr = value.split(',');\n                    }\n                    results = [];\n                    for (i = 0, len = moreArr.length; i < len; i++) {\n                        moreParam = moreArr[i];\n                        moreTestParam = moreParam.split(':');\n                        // if filter is type of form-field we change it to form.field\n                        // so we can record.get('form.field')\n                        if (moreTestParam[0].indexOf('-') > -1) {\n                            form = moreTestParam[0].slice(0, moreTestParam[0].indexOf('-'));\n                            field = moreTestParam[0].slice(moreTestParam[0].indexOf('-') + 1);\n                            if (Ember.isPresent(Ember.get(this, form))) {\n                                continue;\n                            }\n                            testValue = moreTestParam[0].replace('-', '.');\n                            fieldObj = this.get('Collector').formField(form, field);\n                            // This way we don't get error for testing out not loaded relations\n                            if (fieldObj.type === 'multiselect') {\n                                recordValue = record.get(form + '.' + field);\n                            } else if (\n                                ((ref = record.get(form)) != null\n                                    ? ref.belongsTo(field).remoteType()\n                                    : void 0) === 'id'\n                            ) {\n                                recordValue = record.get(form).belongsTo(field).id();\n                            } else {\n                                recordValue = record.get(testValue);\n                            }\n                        } else {\n                            testValue = moreTestParam[0];\n                            recordValue = record.get(testValue);\n                        }\n                        if (!this._filterModelTest(recordValue, moreTestParam[1])) {\n                            results.push((all_ok = false));\n                        } else {\n                            results.push(void 0);\n                        }\n                    }\n                    return results;\n                } else if (!this._filterModelTest(record.get(param), value)) {\n                    return (all_ok = false);\n                }\n            });\n            return all_ok;\n        });\n        return filtered;\n    },\n    _filterModelTest: function (value, test) {\n        var splitted_date;\n        // is it date interval\n        if (test.match(/[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{4}-[0-9]{2}-[0-9]{2}/g)) {\n            splitted_date = test.split('_');\n            return moment(value).isBetween(splitted_date[0], splitted_date[1], null, '[]');\n            // is it store record\n        } else if (Ember.typeOf(value) === 'instance') {\n            if (test.indexOf(',') > -1) {\n                return test.split(',').includes(value.get('id'));\n            } else {\n                if (!value.get('id')) {\n                    return !!value.findBy('id', test);\n                } else {\n                    return value.get('id') === test;\n                }\n            }\n        } else if (Ember.typeOf(value) === 'array') {\n            return value.indexOf(parseInt(test, 10)) !== -1;\n        } else {\n            // stupid checkboxes need special care..\n            if (test === 'on') {\n                return value === true;\n            } else if (test === 'off') {\n                return value === false;\n            } else {\n                return value === test;\n            }\n        }\n    },\n});\n\nexport default FilterModelMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/form-settings.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormSettingsMixin;\n\nimport Ember from 'ember';\n\nFormSettingsMixin = Ember.Mixin.create({\n    intl: Ember.inject.service(),\n    translatedName: Ember.computed('name', function () {\n        var form, name;\n        name = this.get('name');\n        if (/^\\$lang\\(.+\\)$/i.test(name)) {\n            form = this.get('form.external_type');\n            if (form) {\n                name = this.get('intl').t(\n                    this.get('form.external_type') + '.' + this.get('external_type'),\n                );\n            } else {\n                name = this.get('intl').t('form.' + this.get('external_type'));\n            }\n        }\n        return name;\n    }),\n    type: Ember.computed('value', function () {\n        if (\n            this.get('value') === 'true' ||\n            this.get('value') === 'false' ||\n            typeof this.get('value') === 'boolean'\n        ) {\n            return 'boolean';\n        }\n        return 'text';\n    }),\n});\n\nexport default FormSettingsMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/general-report.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GeneralReportMixin;\n\nimport Ember from 'ember';\n\nGeneralReportMixin = Ember.Mixin.create({\n    queryParams: ['page', 'order', 'row_info_status', 'limit', 'more'],\n});\n\nexport default GeneralReportMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/get-back.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GetBackMixin;\n\nimport Ember from 'ember';\n\nGetBackMixin = Ember.Mixin.create({\n    camefrom: null,\n    obsCameform: Ember.observer('camefrom', function () {\n        return this.refresh();\n    }),\n    afterModel: function (model, transition) {\n        this.set('form', model.form);\n        if (transition.from != null && transition.from.name !== 'massedit') {\n            this.set('camefrom', transition.from.name);\n        } else {\n            this.set('camefrom', 'index');\n        }\n        return true;\n    },\n    actions: {\n        back: function () {\n            var camefrom, form;\n            camefrom = this.get('camefrom');\n            form = this.get('form');\n            if (camefrom === 'thereport.page') {\n                return this.transitionTo('thereport.index');\n            } else if (camefrom === 'forms.form-report') {\n                return this.transitionTo('forms.form-report', {\n                    form: form,\n                });\n            } else if (camefrom === 'timetracker.aggregated.rows') {\n                return this.transitionTo('timetracker.aggregated.rows', 'all');\n            } else {\n                return this.transitionTo(this.get('camefrom'));\n            }\n        },\n    },\n});\n\nexport default GetBackMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/init-controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nimport Mixin from '@ember/object/mixin';\n\nexport default Mixin.create({\n    init_already_run: false,\n    _init_functions: function () {\n        if (this.get('init_already_run')) {\n            return;\n        }\n        return this.init_functions();\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/init-route.coffee.old\n// Generated by CoffeeScript 2.6.1\nimport Mixin from '@ember/object/mixin';\n\nexport default Mixin.create({\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        controller._init_functions();\n        return controller.set('init_already_run', true);\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/menu.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MenuMixin,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport config from '../config';\n\nimport { singularize, pluralize } from 'ember-inflector';\n\nMenuMixin = Ember.Mixin.create({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    flags: Ember.inject.service(),\n    staticMenu: Em.computed(function () {\n        var i, item, len, ref, staticMenuItems;\n        staticMenuItems = [];\n        ref = config.staticMenus;\n        for (i = 0, len = ref.length; i < len; i++) {\n            item = ref[i];\n            staticMenuItems.push(item.link[0]);\n        }\n        return staticMenuItems;\n    }),\n    getMenus: function () {\n        var active, c, dashboard, index, ls, menus, savedHideLeftMenus;\n        c = this.get('Collector');\n        ls = this.get('localStorageWrapper');\n        menus = Em.A(this.translate(config.staticMenus).concat(this.getOwnForms()));\n        active = this.get('active_menu');\n        savedHideLeftMenus = ls.getUserSetting('hidden_menus');\n        if ([101304].includes(this.session.currentUser.partnerid)) {\n            // neste\n            dashboard = menus.findBy('id', 'dashboard');\n            index = menus.indexOf(dashboard);\n            if (index > -1) {\n                menus.splice(index, 1);\n            }\n        }\n        menus = menus.map(function (item) {\n            var current, ref, ref1;\n            if (((ref = item.name), indexOf.call(savedHideLeftMenus, ref) >= 0)) {\n                item.hide_leftmenu = true;\n            }\n            if (((ref1 = item.name), indexOf.call(savedHideLeftMenus, ref1) < 0)) {\n                item.hide_leftmenu = false;\n            }\n            current = item.link[0].split('.')[0];\n            if (current === 'site_safety') {\n                current = item.link[0].split('.')[1];\n                if (item.link.length === 2) {\n                    current = item.link[1];\n                }\n            }\n            if (current === 'forms') {\n                current = item.link[1];\n            }\n            item.active = active === current;\n            return item;\n        });\n        return c.needsOfArray(\n            menus.map(function (item) {\n                return Ember.Object.create(item);\n            }),\n        );\n    },\n    getSubMenus: function (route) {\n        var c, current_menu, normalizedRoute, normalizedRouteArray;\n        c = this.get('Collector');\n        normalizedRouteArray = Em.A(route).reject(function (item) {\n            return item === 'index';\n        });\n        normalizedRoute = normalizedRouteArray.join('.');\n        if (normalizedRoute.slice(-7) === 'loading') {\n            normalizedRoute = normalizedRoute.slice(0, -8);\n        }\n        current_menu = this.matchRoutes(normalizedRoute, this.getMenus());\n        if (!current_menu) {\n            current_menu = this.matchRoutes(normalizedRoute, this.getAddLinks());\n        }\n        if (!current_menu) {\n            return;\n        }\n        return c.needsOfArray(current_menu.submenus).map(function (item) {\n            var id;\n            id = Em.isArray(item.link)\n                ? item.link[0].replace(/\\./g, '-')\n                : item.link.replace(/\\./g, '-');\n            if (!item.id) {\n                item.id = id;\n            }\n            if (!Em.isArray(item.link)) {\n                item.link = [item.link];\n            }\n            return item;\n        });\n    },\n    matchRoutes: function (normalizedRoute, menus) {\n        var current_menu;\n        current_menu = menus.find(function (item) {\n            var isMainMenuRoute, isSomeOfSubroutes;\n            //           test that we are in main menu component route or in some subroutes\n            isMainMenuRoute = item.link[0] === normalizedRoute;\n            isSomeOfSubroutes = Em.A(item.submenus).find(function (item) {\n                var i, len, link, ref, subroute;\n                link = Em.isArray(item.link) ? item.link[0] : item.link;\n                // We can also be in a subroutes subroute\n                if (link !== normalizedRoute && Em.isArray(item.subroutes)) {\n                    ref = item.subroutes;\n                    for (i = 0, len = ref.length; i < len; i++) {\n                        subroute = ref[i];\n                        if (subroute === normalizedRoute) {\n                            return true;\n                        }\n                    }\n                }\n                return link === normalizedRoute;\n            });\n            return isMainMenuRoute || isSomeOfSubroutes;\n        });\n        return current_menu;\n    },\n    getAddLinks: function () {\n        var c, links;\n        c = this.get('Collector');\n        links = this.translate(config.addLinkList).concat(this.getOwnForms(true));\n        return c.needsOfArray(\n            links.map(function (item) {\n                return Ember.Object.create(item);\n            }),\n        );\n    },\n    translate: function (menus) {\n        var c, intl;\n        intl = this.get('intl');\n        c = this.get('Collector');\n        return menus.map(function (item) {\n            var form, name, split;\n            if (Ember.typeOf(item.text) !== 'string') {\n                return item;\n            }\n            split = item.text.split('.');\n            form = false;\n            name = split[1];\n            if (Ember.typeOf(name) === 'string') {\n                if (name.slice(0, 4) === 'add_') {\n                    name = name.slice(4);\n                }\n                if (c.formExists(name)) {\n                    form = c.forms()[name];\n                } else if (c.formExists(singularize(name))) {\n                    form = c.forms()[singularize(name)];\n                }\n            }\n            item.name = item.text;\n            if (form && form.name) {\n                Ember.set(item, 'translated', form.name);\n            } else {\n                Ember.set(item, 'translated', intl.t(item.text));\n            }\n            return item;\n        });\n    },\n    saveLeftmenuHidings: function (menus) {\n        var ls;\n        if (!menus) {\n            return;\n        }\n        ls = this.get('localStorageWrapper');\n        return ls.setUserSetting(\n            'hidden_menus',\n            menus.filterBy('hide_leftmenu', true).mapBy('name'),\n        );\n    },\n    getOwnForms: function (asAddingLinks) {\n        var c, item, key, name, ref, ret, short_key;\n        c = this.get('Collector');\n        ret = [];\n        ref = c.forms();\n        for (key in ref) {\n            item = ref[key];\n            name = this.parseMeasurementName(key, item);\n            if (\n                item.privileges != null &&\n                item.privileges.access != null &&\n                item.privileges.access !== true\n            ) {\n                continue;\n            }\n            // if item is already found from staticMenus do not add it again here..\n            if (\n                this.get('staticMenu').indexOf(pluralize(key)) > -1 ||\n                this.get('staticMenu').indexOf(key) > -1\n            ) {\n                continue;\n            }\n            if (name) {\n                short_key = key.substring(12).toLowerCase();\n                if (asAddingLinks) {\n                    ret.push({\n                        needs: [key + '@add'],\n                        text: name,\n                        translated: name,\n                        link: ['site_safety.measurement.add', 'add', short_key],\n                        icon: 'move move-Length',\n                        id: key,\n                    });\n                } else {\n                    //add_link_param: key.substring(12).toLowerCase()\n                    ret.push({\n                        needs: [key + '@add'],\n                        link: ['site_safety.measurement.graphs', short_key],\n                        //link_param: key.substring(12).toLowerCase()\n                        icon: 'move move-Length',\n                        text: name,\n                        translated: name,\n                        name: name,\n                        id: key,\n                        submenus: [\n                            {\n                                text: 'own_measurement.graphs',\n                                link: 'site_safety.measurement.graphs',\n                            },\n                            {\n                                text: 'own_measurement.data',\n                                link: 'site_safety.measurement.data',\n                            },\n                            {\n                                text: 'own_measurement.notices',\n                                link: 'site_safety.measurement.notices',\n                            },\n                        ],\n                    });\n                }\n            } else if (item.name != null) {\n                if (asAddingLinks) {\n                    ret.push({\n                        needs: [key + '@add'],\n                        text: item.name.toLowerCase(),\n                        translated: item.name,\n                        link: ['forms.form-add', key],\n                        icon: 'move move-CopyRow',\n                        id: key,\n                    });\n                } else {\n                    //add_link_param: key\n                    ret.push({\n                        link: ['forms.form-report', key],\n                        //param: [key]\n                        icon: 'move move-CopyRow',\n                        text: item.name,\n                        name: item.name,\n                        translated: item.name,\n                        id: key,\n                    });\n                }\n            }\n        }\n        return ret;\n    },\n    parseMeasurementName: function (key, item) {\n        var name;\n        if (key.substring(0, 11) !== 'measurement') {\n            return;\n        }\n        name = key.substring(12).toLowerCase();\n        if (item.name != null) {\n            name = item.name;\n        }\n        return name;\n    },\n});\n\n/*\nshared_report:\n    link: 'shared.report'\n    icon: 'icon-TodoList'\n    text: @get('intl').t(\"menu.shared.report\")\n    route: 'report'\n *        shared_stamp:\n *            link: 'shared.index'\n *            icon: 'icon-POSTerminalFilled'\n *            text: @get('intl').t(\"menu.shared.stamp\")\n *            route: 'index'\nshared_accident:\n    link: 'shared.accident'\n    icon: 'icon-TodoList'\n    text: @get('intl').t(\"menu.shared.accident\")\n    route: 'accident'\nshared_users:\n    link: 'shared.users'\n    icon: 'icon-TodoList'\n    text: @get('intl').t(\"menu.shared.users\")\n    route: 'users'\nshared_project:\n    link: 'shared.project'\n    icon: 'icon-GeoFence'\n    text: @get('intl').t(\"menu.shared.project\")\n    route: 'project'\n\n}\n */\nexport default MenuMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/pdf-export.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PdfExportMixin;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport baseExport from './base-export';\n\nimport $ from 'jquery';\n\nimport { getAssetFolder, getScriptsInOrder } from 'tt4/utils/getScript';\n\nPdfExportMixin = Ember.Mixin.create(baseExport, {\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    totalPdfImages: 0,\n    cordova: Ember.inject.service('own-cordova-service'),\n    createPdfFromElements: function (\n        elements,\n        mode = 'download',\n        headers = '',\n        headerSize = 8,\n        exportParams = {},\n    ) {\n        if (this.get('totalPdfImages') > 10) {\n            this.get('gui').set('showStickyNote', true);\n            this.get('gui').set('rawStickyValue', 100);\n            this.get('gui').set('stickyValue', this.get('intl').t('export.pdf.started_generating'));\n        }\n        //console.log \"start: \"+moment().format(\"mm:ss\")\n        this.set('full_pdf_export', false);\n        this.set('totalPdfImages', 0);\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var orientation, pdf_content;\n            pdf_content = [];\n            orientation = Ember.get(exportParams, 'orientation')\n                ? Ember.get(exportParams, 'orientation')\n                : 'portrait';\n            return this.getHeaders(headers, headerSize).then((headers) => {\n                var assetsfolder, docDefinition, element, i, len, pageSize;\n                pdf_content.push(headers);\n                if (!this.get('doNotPutElementsInColumns')) {\n                    elements = this.putElementsInColumns(elements);\n                }\n                for (i = 0, len = elements.length; i < len; i++) {\n                    element = elements[i];\n                    if (!element) {\n                        return;\n                    }\n                    if (element.table && !Ember.get(exportParams, 'orientation')) {\n                        if (element.table.body[0].length > 7) {\n                            orientation = 'landscape';\n                        }\n                    }\n                    pdf_content.push(element);\n                }\n                pageSize = 'A4';\n                if (Ember.get(exportParams, 'signature')) {\n                    pdf_content.push({\n                        style: 'marginTop',\n                        table: {\n                            widths: ['auto', 140, 30, 'auto', 140],\n                            body: [\n                                [\n                                    {\n                                        border: [false, true, false, false],\n                                        text: this.get('intl').t('report.worktask.signature') + ':',\n                                    },\n                                    {\n                                        border: [false, true, false, false],\n                                        text: '',\n                                    },\n                                    {\n                                        border: [false, false, false, false],\n                                        text: '',\n                                    },\n                                    {\n                                        border: [false, true, false, false],\n                                        text: this.get('intl').t('thereport.print_name') + ':',\n                                    },\n                                    {\n                                        border: [false, true, false, false],\n                                        text: '',\n                                    },\n                                ],\n                            ],\n                        },\n                    });\n                    if (Ember.get(exportParams, 'dateAndPlace')) {\n                        pdf_content.push({\n                            style: 'marginTop',\n                            table: {\n                                widths: ['auto', 140, 55, 'auto', 140],\n                                body: [\n                                    [\n                                        {\n                                            border: [false, true, false, false],\n                                            text: this.get('intl').t('thereport.date') + ':',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: '',\n                                        },\n                                        {\n                                            border: [false, false, false, false],\n                                            text: '',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: this.get('intl').t('thereport.place') + ':',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: '',\n                                        },\n                                    ],\n                                ],\n                            },\n                        });\n                    }\n                }\n                if (\n                    elements[0].table != null &&\n                    exportParams.imgLocation != null &&\n                    exportParams.imgLocation === 'afterReport'\n                ) {\n                    pdf_content.push(this.tryToExtractImages(elements[0].table.body, orientation));\n                }\n                docDefinition = {\n                    content: pdf_content,\n                    pageSize: 'A4',\n                    pageOrientation: orientation,\n                    footer: (currentPage, pageCount) => {\n                        return this.getFooter(currentPage, pageCount);\n                    },\n                    pageMargins: [15, 15, 15, 15],\n                    styles: {\n                        tableHeader: {\n                            bold: true,\n                        },\n                        bigText: {\n                            bold: true,\n                            fontSize: 20,\n                        },\n                        table: {\n                            fontSize: 10,\n                        },\n                        footer: {\n                            fontSize: 8,\n                            color: 'grey',\n                        },\n                        headertext: {\n                            fontSize: 8,\n                        },\n                        marginTop: {\n                            margin: [0, 40, 0, 0],\n                        },\n                    },\n                };\n                //console.log(JSON.stringify(docDefinition, null, 4))\n                //return\n                assetsfolder = getAssetFolder('assets');\n                return getScriptsInOrder([\n                    assetsfolder + 'pdfmake_v0.1.68.min.js',\n                    assetsfolder + 'vfs_fonts_v0.1.68.min.js',\n                ]).then(() => {\n                    return createPdf(docDefinition)._createDoc({}, () => {\n                        var item, j, len1;\n                        for (j = 0, len1 = pdf_content.length; j < len1; j++) {\n                            item = pdf_content[j];\n                            if (\n                                item.style === 'table' &&\n                                item._maxWidth > 842 &&\n                                orientation !== 'portrait'\n                            ) {\n                                pageSize = {\n                                    height: item._maxWidth,\n                                    width: item._maxWidth / Math.sqrt(2),\n                                };\n                                continue;\n                            }\n                        }\n                        docDefinition.pageSize = pageSize;\n                        //console.log(JSON.stringify(docDefinition, null, 4))\n                        //return\n                        if (mode === 'download') {\n                            if (typeof cordova !== 'undefined' && cordova !== null) {\n                                createPdf(docDefinition).getBuffer((buffer) => {\n                                    var binaryArray, promise, utf8;\n                                    utf8 = new Uint8Array(buffer);\n                                    binaryArray = utf8.buffer;\n                                    promise = this.get('cordova').saveFile(\n                                        binaryArray,\n                                        'export',\n                                        'pdf',\n                                    );\n                                    return promise.then(function (file) {\n                                        return resolve(file);\n                                    });\n                                });\n                            } else {\n                                resolve(createPdf(docDefinition).download('export.pdf'));\n                            }\n                            return this.get('gui').set(\n                                'stickyValue',\n                                this.get('intl').t('export.pdf.done_generating'),\n                            );\n                        } else if (mode === 'base64') {\n                            return createPdf(docDefinition).getBase64(function (file) {\n                                return resolve(file);\n                            });\n                        }\n                    });\n                });\n            });\n        });\n    },\n    tryToExtractImages: function (data, orientation) {\n        var allImages, el, element, i, j, len, len1, maxHeight, maxWidth;\n        if (orientation === 'landscape') {\n            maxHeight = 570;\n            maxWidth = 830;\n        } else {\n            maxHeight = 830;\n            maxWidth = 570;\n        }\n        // A4 - 595 × 842\n        allImages = [];\n        for (i = 0, len = data.length; i < len; i++) {\n            element = data[i];\n            //console.log data\n            for (j = 0, len1 = element.length; j < len1; j++) {\n                el = element[j];\n                if (el.image) {\n                    allImages.push({\n                        image: el.image,\n                        maxHeight: maxHeight,\n                        maxWidth: maxWidth,\n                    });\n                }\n            }\n        }\n        return allImages;\n    },\n    putElementsInColumns: function (elements) {\n        var cell, element, fillingColumn, i, len, ret, row;\n        ret = [];\n        row = [];\n        cell = [];\n        for (i = 0, len = elements.length; i < len; i++) {\n            element = elements[i];\n            if (!element.column) {\n                if (fillingColumn) {\n                    row.push(cell);\n                    cell = [];\n                    ret.push({\n                        columns: row,\n                    });\n                }\n                row = [];\n                ret.push(element);\n                fillingColumn = null;\n            } else {\n                if (fillingColumn && fillingColumn < element.column) {\n                    row.push(cell);\n                    cell = [];\n                }\n                if (fillingColumn && fillingColumn > element.column) {\n                    row.push(cell);\n                    cell = [];\n                    ret.push({\n                        columns: row,\n                    });\n                    row = [];\n                }\n                if (!element.width) {\n                    element.width = '*';\n                }\n                cell.push(element);\n                fillingColumn = element.column;\n            }\n        }\n        if (fillingColumn) {\n            row.push(cell);\n            ret.push({\n                columns: row,\n            });\n        }\n        return ret;\n    },\n    /*\n  Creates pdf table from given data\n\n  columns: ['col1','col2']\n  rows: [\n     {col1: \"cell_1\", col2: \"cell_2\"}\n  ]\n  */\n    createPdfTableElement: function (\n        columns,\n        rows,\n        translated_columns = null,\n        sumRow = null,\n        extraSettings = false,\n    ) {\n        var i, indexOf, item, j, k, len, len1, len2, row, spliced;\n        if (!translated_columns) {\n            translated_columns = columns;\n        }\n        for (indexOf = i = 0, len = rows.length; i < len; indexOf = ++i) {\n            row = rows[indexOf];\n            if (Array.isArray(row)) {\n                spliced = rows.splice(indexOf);\n                for (j = 0, len1 = spliced.length; j < len1; j++) {\n                    item = spliced[j];\n                    for (k = 0, len2 = item.length; k < len2; k++) {\n                        row = item[k];\n                        rows.push(row);\n                    }\n                }\n            }\n        }\n        return {\n            table: {\n                headerRows: 1,\n                widths: this.getWidths(columns),\n                body: this.getTable(columns, rows, translated_columns, sumRow),\n            },\n            layout: 'lightHorizontalLines',\n            margin: [2, 2, 10, 10],\n            style: 'table',\n        };\n    },\n    createPdfTableElementRows: function (\n        columns,\n        rows,\n        translated_columns = null,\n        sumRow = null,\n        insertPageBreak = false,\n    ) {\n        var c,\n            i,\n            img_rows,\n            j,\n            len,\n            len1,\n            row,\n            row_ind,\n            sub_ind,\n            subrow,\n            tables,\n            text_rows,\n            tmp_table;\n        this.set('doNotPutElementsInColumns', true);\n        c = this.get('Collector');\n        if (!translated_columns) {\n            translated_columns = columns;\n        }\n        rows = this.getTableFullFormat(columns, rows, translated_columns, sumRow);\n        tables = [];\n        for (row_ind = i = 0, len = rows.length; i < len; row_ind = ++i) {\n            row = rows[row_ind];\n            text_rows = [];\n            img_rows = [];\n            // separate images into own array\n            for (sub_ind = j = 0, len1 = row.length; j < len1; sub_ind = ++j) {\n                subrow = row[sub_ind];\n                if (Ember.typeOf(subrow[1]) === 'object') {\n                    img_rows.push(subrow);\n                } else {\n                    text_rows.push(subrow);\n                }\n            }\n            tmp_table = [\n                {\n                    table: {\n                        headerRows: 1,\n                        body: text_rows,\n                        dontBreakRows: true,\n                    },\n                    layout: 'noBorders',\n                    margin: [2, 2, 10, 10],\n                    style: 'table',\n                },\n            ];\n            // if there are images, push them into array\n            if (img_rows.length > 0) {\n                tmp_table.push(img_rows);\n            }\n            tables.push(tmp_table);\n            // after every table, add one linebreak (or pagebreak) to separate them better\n            if (row_ind + 1 !== rows.length) {\n                if (insertPageBreak) {\n                    tables.push({\n                        text: '',\n                        pageBreak: 'after',\n                    });\n                } else {\n                    tables.push('\\n');\n                    tables.push('\\n');\n                }\n            }\n        }\n        //removing this line for now because for some strange reason it makes full pdf look very crappy SUP-2070\n        //tables.push {canvas: [{ type: 'line', x1: 0, y1: 5, x2: 595-2*40, y2: 5, lineWidth: 1 }]}\n        return tables;\n    },\n    createPdfElement: function (text, pageBreak = 'after') {\n        return {\n            text: text,\n            pageBreak: pageBreak,\n            margin: [0, 10, 0, 0],\n        };\n    },\n    createPdfHeaderElement: function (text) {\n        return {\n            text: text,\n            style: 'tableHeader',\n            margin: [0, 10, 0, 0],\n        };\n    },\n    getWidths: function (columns) {\n        var colObj, column, i, len, ref, widths;\n        widths = [];\n        for (i = 0, len = columns.length; i < len; i++) {\n            column = columns[i];\n            if (\n                !this.get('form') ||\n                column === 'id' ||\n                column === 'row_info.created' ||\n                column === 'row_info.modified' ||\n                column === 'status_last_changed'\n            ) {\n                widths.push('auto');\n            } else {\n                colObj = this.get('Collector').field(this.get('form'), column);\n                if (\n                    (ref = colObj['type']) === 'textbox' ||\n                    ref === 'textarea' ||\n                    ref === 'textarea_varchar'\n                ) {\n                    widths.push(200);\n                } else {\n                    widths.push('auto');\n                }\n            }\n        }\n        return widths;\n    },\n    getFooter: function (currentPage, pageCount) {\n        return {\n            columns: [\n                {\n                    text: 'movenium.com',\n                    style: 'footer',\n                    margin: [20, 2, 0, 0],\n                },\n                {\n                    text: moment().format('L') + '  ' + currentPage.toString() + '/' + pageCount,\n                    style: 'footer',\n                    margin: [0, 2, 20, 0],\n                    alignment: 'right',\n                },\n            ],\n        };\n    },\n    getHeaders: function (additionalheaders, headerSize) {\n        var c;\n        c = this.get('Collector');\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return c.getLogo().then((logo) => {\n                var company, session;\n                session = this.get('session');\n                company = session.get('currentUser.company');\n                return resolve({\n                    columns: [\n                        [\n                            {\n                                fit: [120, 40],\n                                image: logo,\n                                margin: [0, 0, 0, 20],\n                            },\n                            {\n                                text: additionalheaders,\n                                style: 'headertext',\n                                fontSize: headerSize,\n                            },\n                        ],\n                        {\n                            width: '*',\n                            text: company || '',\n                            alignment: 'right',\n                            fontSize: 22,\n                            margin: [0, 0, 0, 20],\n                        },\n                    ],\n                });\n            });\n        });\n    },\n    getImageUriRotated: function (url, rotateImages, type = null) {\n        var d, img, self;\n        d = new $.Deferred();\n        self = this;\n        img = new Image();\n        img.onload = function () {\n            var canvas, ctx, dataUrl, degrees;\n            canvas = document.createElement('canvas');\n            ctx = canvas.getContext('2d');\n            //canvas.style.width=\"20%\"\n            if (img.width < img.height && rotateImages) {\n                degrees = 90;\n            } else {\n                degrees = 0;\n            }\n            if (degrees === 90 || degrees === 270) {\n                canvas.width = this.height;\n                canvas.height = this.width;\n            } else {\n                canvas.width = this.width;\n                canvas.height = this.height;\n            }\n            self.set('pdfImageSize', this.width);\n            ctx.clearRect(0, 0, canvas.width, canvas.height);\n            //console.log img.height\n            //console.log img.width\n            if (degrees === 90 || degrees === 270) {\n                ctx.translate(img.height / 2, img.width / 2);\n            } else {\n                ctx.translate(img.width / 2, img.height / 2);\n            }\n            ctx.rotate((degrees * Math.PI) / 180);\n            ctx.drawImage(img, -img.width / 2, -img.height / 2);\n            if (type && type === 'image/png') {\n                dataUrl = canvas.toDataURL('image/png', 0.8);\n            } else {\n                dataUrl = canvas.toDataURL('image/jpeg', 0.8);\n            }\n            return d.resolve({\n                dataUrl: dataUrl,\n                width: this.width,\n                height: this.height,\n            });\n        };\n        img.setAttribute('crossOrigin', 'anonymous');\n        if (url.includes('https://')) {\n            img.src = url;\n        } else {\n            img.src = config.APP.COLLECTOR_API_URL + '/' + url;\n        }\n        img.onerror = function () {\n            return d.resolve(false);\n        };\n        return d;\n    },\n    getImageUri: function (url) {\n        var d, img, self;\n        d = new $.Deferred();\n        self = this;\n        img = new Image();\n        img.onload = function () {\n            var canvas, ctx, dataUrl;\n            canvas = document.createElement('canvas');\n            // calculate new dimensions so image isn't bigger than width of pdf-page\n            /*\n      if @width > pdf_max_width and self.get('full_pdf_export')\n          resize_factor = pdf_max_width / @width\n      else if self.get('full_pdf_export')\n          resize_factor = 0.75 # for some reason pdfmake scales all images up\n      else\n          resize_factor = 1*/\n            self.set('pdfImageSize', this.width);\n            canvas.width = this.width;\n            canvas.height = this.height;\n            ctx = canvas.getContext('2d');\n            ctx.drawImage(img, 0, 0);\n            dataUrl = canvas.toDataURL();\n            return d.resolve(dataUrl);\n        };\n        img.setAttribute('crossOrigin', 'anonymous');\n        img.src = config.APP.COLLECTOR_API_URL + '/' + url;\n        img.onerror = function () {\n            return d.resolve(false);\n        };\n        return d;\n    },\n    formatImagesToPdf: function (fields, model) {\n        var field, i, imgs, len, promise, ref;\n        imgs = [];\n        promise = $.Deferred();\n        for (i = 0, len = fields.length; i < len; i++) {\n            field = fields[i];\n            if ((ref = field['type']) === 'hdfile' || ref === 'signature') {\n                imgs.push(\n                    new Em.RSVP.Promise((resolve, reject) => {\n                        var img, imgArr, j, len1, ref1;\n                        imgArr = [];\n                        ref1 = model.get(field['ext']);\n                        for (j = 0, len1 = ref1.length; j < len1; j++) {\n                            img = ref1[j];\n                            //console.log img[\"name\"]\n                            imgArr.push(\n                                this.formatImageToPdf(img, 'list', 400, false, 'true', {\n                                    string: img['name'],\n                                }),\n                            );\n                        }\n                        //resolve(imgArr)\n                        return Em.RSVP.Promise.all(imgArr).then(function (data) {\n                            //console.log data\n                            return promise.resolve(data);\n                        });\n                    }),\n                );\n            }\n        }\n        return promise;\n    },\n    //    pdf_output_images.push\n    //console.log col\n    //    console.log row.get(col['ext_type'])\n\n    // returns pdf-formatted image-promise\n    formatImageToPdf: function (\n        cell,\n        type,\n        size = false,\n        rotateImages = false,\n        imageSize = '',\n        name = false,\n    ) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var img;\n            if (imageSize === 'hideImages') {\n                resolve('');\n                return;\n            }\n            if (this.get('full_pdf_export')) {\n                img = cell.url;\n            } else if (imageSize === 'thumbnails' || imageSize === 'afterReport') {\n                size = 50;\n                // Use cell.url (proxy URL) instead of cell.s3thumb (signed S3 URL) to avoid CORS issues.\n                // Signed S3 URLs cannot be fetched client-side due to CORS restrictions.\n                // The proxy URL (uploads/?...) fetches from S3 server-side and returns with proper CORS headers.\n                // Full image is used but scaled down to thumbnail size (50px) for display.\n                img = cell.url;\n            } else {\n                img = cell.url;\n            }\n            return this.getImageUriRotated(img, rotateImages, cell.type).then((imageObj) => {\n                var image, imageWidth, pdf_max_width, resize_factor;\n                image = imageObj['dataUrl'];\n                imageWidth = imageObj['width'];\n                resize_factor = 0.75;\n                if (\n                    this.get('full_pdf_export') ||\n                    imageSize === 'thumbnails' ||\n                    imageSize === 'afterReport'\n                ) {\n                    pdf_max_width = size ? size : 300;\n                    if (imageWidth > pdf_max_width) {\n                        resize_factor = pdf_max_width / imageWidth;\n                    }\n                }\n                if (imageSize === 'true') {\n                    resize_factor = 1;\n                    if (imageWidth > 500) {\n                        imageWidth = 500;\n                    }\n                }\n                //    imageWidth = imageObj[\"width\"]\n                //    console.log @get('pdfImageSize')\n                if (cell.name === 'signature.png') {\n                    const maxSignatureWidth = 150;\n                    resize_factor = imageWidth > maxSignatureWidth ? maxSignatureWidth / imageWidth : 1;\n                }\n                if (type === 'list') {\n                    if (image) {\n                        return resolve({\n                            name: name,\n                            value: {\n                                image: image,\n                                margin: [5, 5, 5, 5],\n                                alignment: 'center',\n                                width: parseInt(imageWidth * resize_factor),\n                            },\n                        });\n                    } else {\n                        return resolve({\n                            name: name,\n                            value: '',\n                        });\n                    }\n                } else if (type === 'row') {\n                    if (image) {\n                        return resolve({\n                            image: image,\n                            margin: [0, 5, 0, 5],\n                            alignment: 'center',\n                            width: parseInt(imageWidth * resize_factor),\n                        });\n                    } else {\n                        return resolve('');\n                    }\n                }\n            });\n        });\n    },\n    // Formats collector fields names and values to a PDF friendly array\n    // TODO: Only supports type \"list\" at the moment, should probably also support table rows\n    formatCollectorFieldsToPdfArray: function (\n        fields,\n        model,\n        type = 'list',\n        return_fields = false,\n        add_titles = false,\n        rotateImages = false,\n        whatAboutImages = 'showImages',\n    ) {\n        var c, promise, rows, self, totalImages;\n        self = this;\n        promise = $.Deferred();\n        c = this.get('Collector');\n        rows = [];\n        totalImages = this.get('totalPdfImages');\n        $.each(fields, (key, column) => {\n            var cell, formatted, name, ref;\n            column = Em.Object.create(column);\n            if (!column.get('ext')) {\n                column.set('ext', key);\n            }\n            if (column.get('ext').indexOf('_minus') > -1) {\n                return;\n            }\n            if (return_fields && return_fields.indexOf(column.get('ext')) < 0) {\n                return;\n            }\n            cell = model.get(column.get('ext'));\n            if (column.get('ext') === 'status_last_changed') {\n                rows.push(model.get('status_last_changed'));\n                return;\n            }\n            // name is only used when creating pdf-report from binoculars-page (show-component)\n            if (column.translated_name) {\n                name = column.translated_name;\n            } else if (!model.get('constructor.modelName')) {\n                name = '';\n            } else {\n                name = c.getFieldName(model.get('constructor.modelName'), column);\n            }\n            //if column.get('type') not in ['hdfile','signature'] and cell? and whatAboutImages == \"onlyImages\"\n            //    rows.push \"\"\n            if (((ref = column.get('type')) === 'hdfile' || ref === 'signature') && cell != null) {\n                return rows.push(\n                    new Em.RSVP.Promise((resolve, reject) => {\n                        var i, img, imgs, j, len, len1, size, tmpArr;\n                        if (\n                            (typeof cell === 'object' && cell.length === 0) ||\n                            whatAboutImages === 'hideImages'\n                        ) {\n                            resolve('');\n                        }\n                        if (whatAboutImages === 'showOnlyNames') {\n                            tmpArr = [];\n                            for (i = 0, len = cell.length; i < len; i++) {\n                                img = cell[i];\n                                //console.log img\n                                tmpArr.push(img['name']);\n                            }\n                            resolve(tmpArr);\n                        }\n                        if (\n                            typeof cell !== 'string' &&\n                            cell.length > 0 &&\n                            (whatAboutImages === 'showImages' || whatAboutImages === 'thumbnails')\n                        ) {\n                            imgs = [];\n                            size = false;\n                            if (cell.length > 1) {\n                                size = 270;\n                            } else {\n                                rotateImages = false;\n                            }\n                            // lets iterate all\n                            for (j = 0, len1 = cell.length; j < len1; j++) {\n                                img = cell[j];\n                                if (\n                                    img.type != null &&\n                                    !['image/png', 'image/jpg', 'image/jpeg'].includes(img.type)\n                                ) {\n                                    continue;\n                                }\n                                imgs.push(\n                                    this.formatImageToPdf(\n                                        img,\n                                        type,\n                                        size,\n                                        rotateImages,\n                                        whatAboutImages,\n                                        name,\n                                    ),\n                                );\n                                this.incrementProperty('totalPdfImages');\n                            }\n                            //imgs.push \"1\"\n                            //console.log totalImages\n                            return Em.RSVP.Promise.all(imgs).then(function (data) {\n                                var imgData, imgRow, imgTable, k, len2;\n                                imgData = [];\n                                imgRow = [];\n                                if (data.length > 1) {\n                                    for (k = 0, len2 = data.length; k < len2; k++) {\n                                        img = data[k];\n                                        imgRow.push(img);\n                                        if (imgRow.length === 2) {\n                                            imgData.push(imgRow);\n                                            imgRow = [];\n                                        }\n                                    }\n                                    // add last image (also add one empty cell so table is valid)\n                                    if (imgRow.length > 0) {\n                                        imgRow.push('');\n                                        imgData.push(imgRow);\n                                    }\n                                    imgTable = {\n                                        table: {\n                                            body: imgData,\n                                        },\n                                        layout: 'noBorders',\n                                    };\n                                } else {\n                                    imgTable = data;\n                                }\n                                //console.log(JSON.stringify(imgTable, null, 4))\n                                //console.log imgData\n                                return resolve(imgTable);\n                            });\n                        } else if (cell.url && whatAboutImages === 'showImages') {\n                            return resolve(this.formatImageToPdf(cell, type, false, false, name));\n                        } else if (typeof cell === 'string' && cell !== '') {\n                            // mongo returns already base64-string so we just add it to pdf\n                            return resolve({\n                                image: cell,\n                                margin: [0, 5, 0, 5],\n                                alignment: 'center',\n                                width: 80,\n                            });\n                        } else {\n                            return resolve('');\n                        }\n                    }),\n                );\n            } else {\n                if (model.get('constructor.modelName')) {\n                    if (cell === 0) {\n                        formatted = '' + 0;\n                    } else {\n                        formatted = c._format_(\n                            cell,\n                            model.get('constructor.modelName'),\n                            column.get('ext'),\n                            'pdf',\n                            model,\n                        );\n                    }\n                } else {\n                    formatted = c.format(cell, column, null, model, true);\n                }\n                if (!formatted) {\n                    formatted = '';\n                }\n                if (typeof formatted === 'object' && formatted) {\n                    formatted = formatted;\n                }\n                if (type === 'list') {\n                    if (name) {\n                        return rows.push({\n                            name: name,\n                            value: formatted,\n                        });\n                    } else {\n                        return rows.push({\n                            name: name,\n                            value: formatted,\n                        });\n                    }\n                } else if (type === 'row') {\n                    if (add_titles) {\n                        formatted = name(+': ' + formatted);\n                    }\n                    return rows.push(formatted);\n                }\n            }\n        });\n        Em.RSVP.Promise.all(rows).then(function (data) {\n            return promise.resolve(data);\n        });\n        return promise;\n    },\n    _formatDatabaseArray: function (cell, column) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var promises;\n            promises = [];\n            cell.forEach((tmp) => {\n                return promises.push(\n                    new Ember.RSVP.Promise((resolve) => {\n                        return this.get('Collector')\n                            .getRecordArray(column.options.form, [tmp.get('id')])\n                            .then((records) => {\n                                var field, i, len, record, ref, values;\n                                record = records[0];\n                                values = [];\n                                ref = column.options.fields;\n                                for (i = 0, len = ref.length; i < len; i++) {\n                                    field = ref[i];\n                                    cell = record.get(field);\n                                    if (cell && cell.then != null) {\n                                        values.push(\n                                            this._formatDatabaseCell(\n                                                cell,\n                                                column.options.form,\n                                                field,\n                                            ),\n                                        );\n                                    } else if (cell && Ember.typeOf(cell) === 'instance') {\n                                        values.push(cell.get('name'));\n                                    } else {\n                                        values.push(cell);\n                                    }\n                                }\n                                return Ember.RSVP.Promise.all(values).then(\n                                    function (resolved_values) {\n                                        return resolve(resolved_values.join(' '));\n                                    },\n                                );\n                            });\n                    }),\n                );\n            });\n            return Ember.RSVP.Promise.all(promises).then(function (results) {\n                return resolve(results.join('\\n'));\n            });\n        });\n    },\n    _formatDatabaseCell: function (record, form, field) {\n        return new Ember.RSVP.Promise(function (resolve) {\n            return record.then(function (res) {\n                // TODO: fields should be fetched from /forms .. not just guess \"name\"\n                return resolve(res ? res.get('name') : res);\n            });\n        });\n    },\n    formatWeatherForPDF: function (weather) {\n        var json, text;\n        if (!weather) {\n            return '-';\n        }\n        json = JSON.parse(weather);\n        if (!json.temperature) {\n            json.temperature = '-';\n        }\n        if (!json.windspeed) {\n            json.windspeed = '-';\n        }\n        if (!json.humidity) {\n            json.humidity = '-';\n        }\n        if (!json.dew_point) {\n            json.dew_point = '-';\n        }\n        text = json.temperature + ' °C, ' + json.windspeed + ' m/s ';\n        text += json.humidity + ' % ' + this.get('intl').t('worksitediary.abbr_rel_hum') + ', ';\n        text += this.get('intl').t('worksitediary.abbr_dew_point') + ': ' + json.dew_point + ' °C';\n        return text;\n    },\n    exportCollectorPdf: function (fields, model, columns = ['name', 'value']) {\n        var promise, self;\n        self = this;\n        promise = this.formatCollectorFieldsToPdfArray(fields, model, 'list', false, true);\n        return promise.then(function (data) {\n            var element;\n            element = self.createPdfTableElement(columns, data, ['', '']);\n            return self.createPdfFromElements([element]).then(function (file) {\n                if (typeof cordova !== 'undefined' && cordova !== null) {\n                    return self.get('cordova').openFile(file.localURL, 'application/pdf');\n                }\n            });\n        });\n    },\n    createPdfListElements: function (form) {\n        var c, fields, i, item, len, names;\n        c = this.get('Collector');\n        fields = c.fieldArray(form);\n        names = [];\n        for (i = 0, len = fields.length; i < len; i++) {\n            item = fields[i];\n            names.push(item.translated_name);\n        }\n        return names;\n    },\n    getPdfFilters: function (rows) {\n        var c, filter, filterName, filterValue, i, len, pdf_filters_body, ref, value;\n        c = this.get('Collector');\n        pdf_filters_body = [];\n        ref = this.get('filters');\n        for (i = 0, len = ref.length; i < len; i++) {\n            filter = ref[i];\n            if (filter.get('value') && filter.get('name') !== 'groupBy') {\n                if (Ember.isArray(filter.get('value')) && filter.get('value.length') === 0) {\n                    continue;\n                }\n                if (filter.get('type') === 'database') {\n                    value = parseInt(filter.get('value'));\n                } else {\n                    value = filter.get('value');\n                }\n                if (filter.get('bindto') && !filter.get('field')) {\n                    filterValue = value;\n                    filterName = this.get('intl').t('filters.free_search');\n                } else {\n                    filterValue = c._format_(\n                        value,\n                        filter.get('form'),\n                        filter.get('field'),\n                        'pdf',\n                        rows,\n                    );\n                    filterName = this.get('intl').t(filter.get('form') + '.' + filter.get('name'));\n                }\n                if (this.get('full_pdf_export')) {\n                    pdf_filters_body.push([\n                        {\n                            text: filterName + ': ' + filterValue,\n                            style: 'headertext',\n                        },\n                    ]);\n                } else {\n                    pdf_filters_body.push([filterName + ':', filterValue]);\n                }\n            }\n        }\n        return pdf_filters_body;\n    },\n});\n\nexport default PdfExportMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/product-post-add.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProductPostAddMixin;\n\nimport Ember from 'ember';\n\nProductPostAddMixin = Ember.Mixin.create({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    postAddingMethods: ['adding_personalliggareandid06'],\n    // this method adds main-employer if no other main-employers are found\n    adding_personalliggareandid06: function () {\n        var company;\n        company = this.get('session.currentUser.company_info');\n        return this.get('store')\n            .query('employer', {\n                main: 'on',\n            })\n            .then((emps) => {\n                var record;\n                if (emps.get('meta.count') === 0) {\n                    record = this.get('store').createRecord('employer', {\n                        name: company.get('company_name'),\n                        country: company.get('country'),\n                        emp_id: company.get('company_vatin'),\n                        main: true,\n                    });\n                    return record.save();\n                }\n            });\n    },\n    adding_fivaldi_salary_csv: function () {\n        return this.get('Collector').ttapi({\n            url: 'productAdded/fivaldi_salary_csv',\n        });\n    },\n    adding_nova_salary_csv: function () {\n        return this.get('Collector').ttapi({\n            url: 'productAdded/nova_salary_csv',\n        });\n    },\n    adding_fivaldi_salary_soap: function () {\n        return this.get('Collector').ttapi({\n            url: 'productAdded/fivaldi_salary_soap',\n        });\n    },\n    adding_setting_absences: function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return this.get('store')\n                .findAll('abcensetype')\n                .then((abcensetypes) => {\n                    var promises, records;\n                    // no absence-types so lets add some\n                    if (abcensetypes.get('length') === 0) {\n                        records = [];\n                        records.push(\n                            this.store.createRecord('abcensetype', {\n                                name: this.get('intl').t('abcense.types.sick_leave'),\n                            }),\n                        );\n                        records.push(\n                            this.store.createRecord('abcensetype', {\n                                name: this.get('intl').t('abcense.types.vacation'),\n                            }),\n                        );\n                        records.push(\n                            this.store.createRecord('abcensetype', {\n                                name: this.get('intl').t('abcense.types.other'),\n                            }),\n                        );\n                        promises = [];\n                        records.forEach(function (record) {\n                            return promises.push(record.save());\n                        });\n                        return Ember.RSVP.Promise.all(promises).then((records) => {\n                            return resolve(records);\n                        });\n                    } else {\n                        return resolve(true);\n                    }\n                });\n        });\n    },\n});\n\nexport default ProductPostAddMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/reset-scroll.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ResetScrollMixin;\n\nimport Ember from 'ember';\n\nResetScrollMixin = Ember.Mixin.create({\n    activate: function () {\n        this._super();\n        return window.scrollTo(0, 0);\n    },\n});\n\nexport default ResetScrollMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/save-the-children.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SaveTheChildrenMixin;\n\nimport Ember from 'ember';\n\nSaveTheChildrenMixin = Ember.Mixin.create({\n    save_record: function (record) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var children, field, fields, name, obj, promises, removeThese;\n            promises = [];\n            fields = this.get('Collector').fields(this.get('form'));\n            children = [];\n            for (name in fields) {\n                field = fields[name];\n                const hasChildTypes = ['databasearray', 'work_permit_attachment'];\n                if (hasChildTypes.includes(field.type) && name !== 'involved') {\n                    removeThese = [];\n                    obj = Ember.Object.extend({\n                        fieldsInCommon: Ember.computed.intersect('parentFields', 'childFields'),\n                    }).create({\n                        parentFields: Object.keys(fields),\n                        childFields: Object.keys(this.get('Collector').fields(field.options.form)),\n                    });\n                    if (record.get(name)) {\n                        record.get(name).forEach((child) => {\n                            if (child.get('id') !== '0') {\n                                obj.get('fieldsInCommon').forEach((commonField) => {\n                                    if (record.get(commonField)) {\n                                        return child.set(commonField, record.get(commonField));\n                                    }\n                                });\n                                return children.push(child);\n                            } else {\n                                return removeThese.pushObject(child);\n                            }\n                        });\n                    }\n                    if (removeThese.length > 0) {\n                        record.get(name).removeObjects(removeThese); // just remove objects from parent record\n                    }\n                }\n            }\n            if (children.length > 0) {\n                return this.get('Collector')\n                    .checkRowValidation(this.get('form'), record, !record.get('isNew'))\n                    .then(\n                        (resp) => {\n                            promises = children.map(function (child) {\n                                return child.save();\n                            });\n                            return Ember.RSVP.Promise.all(promises).then(() => {\n                                return this.saveParentRecord(record, resolve, reject);\n                            }, reject);\n                        },\n                        (e) => {\n                            if (this.get('saveTheChildrenRawErrors')) {\n                                this.set('validationMessage', e);\n                            } else {\n                                this.set('validationMessage', [\n                                    e.responseJSON ? e.responseJSON.error_msg : e.payload.error_msg,\n                                ]);\n                            }\n                            return reject(e);\n                        },\n                    );\n            } else {\n                return this.saveParentRecord(record, resolve, reject);\n            }\n        });\n    },\n    saveParentRecord: function (record, resolve, reject) {\n        return record.save().then(resolve, reject);\n    },\n});\n\nexport default SaveTheChildrenMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/sitesafety-export.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SitesafetyExportMixin;\n\nimport Ember from 'ember';\n\nimport pdfExport from './pdf-export';\n\nimport collector from '../classes/collector';\n\nSitesafetyExportMixin = Ember.Mixin.create(pdfExport, {\n    arrayToTableFormat: function (columns, data) {\n        var i, index, j, len, len1, ret, row, row_data, row_index, tmp;\n        ret = [];\n        for (row_index = i = 0, len = data.length; i < len; row_index = ++i) {\n            row = data[row_index];\n            tmp = {};\n            for (index = j = 0, len1 = row.length; j < len1; index = ++j) {\n                row_data = row[index];\n                tmp[columns[index]] = row_data;\n            }\n            ret.push(tmp);\n        }\n        return ret;\n    },\n    exportMeasurementPdf: function (fields, model) {\n        var c,\n            column,\n            columns,\n            elements,\n            extra_cols,\n            extra_fields,\n            extra_return_fields,\n            fieldName,\n            formObjects,\n            i,\n            id,\n            j,\n            len,\n            len1,\n            name,\n            notice_ids,\n            notices,\n            promise,\n            ref,\n            return_fields,\n            translated_extra_cols;\n        c = this.get('Collector');\n        notices = [];\n        extra_fields = [];\n        elements = [];\n        columns = ['name', 'value'];\n        return_fields = ['date', 'place', 'user', 'desc', 'noticedesc'];\n        formObjects = collector.getFormObjects(this.get('model.constructor.modelName'));\n        extra_return_fields = {};\n        extra_cols = [];\n        translated_extra_cols = [];\n        extra_fields = JSON.parse(JSON.stringify(collector.forms['trnotice'].objects));\n        for (i = 0, len = return_fields.length; i < len; i++) {\n            name = return_fields[i];\n            extra_return_fields[name] = extra_fields[name];\n            extra_cols.push(name);\n            column = Em.Object.create([]);\n            column.set('ext', name);\n            translated_extra_cols.push(c.getFieldName('trnotice', column));\n        }\n        for (fieldName in formObjects) {\n            if (fieldName.indexOf('_notices') > -1 && model.get(fieldName)) {\n                ref = model.get(fieldName);\n                for (j = 0, len1 = ref.length; j < len1; j++) {\n                    id = ref[j];\n                    notices.push(id);\n                }\n            }\n        }\n        notice_ids = notices.join();\n        promise = new Em.RSVP.Promise((resolve, reject) => {\n            if (notice_ids) {\n                return resolve(\n                    this.get('store').query('trnotice', {\n                        id: notice_ids,\n                        sideload: true,\n                    }),\n                );\n            } else {\n                return resolve([]);\n            }\n        });\n        return promise.then((notice_data) => {\n            // first add orginal measurement row, as list-type\n            return this.formatCollectorFieldsToPdfArray(fields, model).then((data) => {\n                var row_array;\n                row_array = [];\n                elements.push(this.createPdfTableElement(columns, data, ['', '']));\n                // next get notices and add them also..\n                notice_data.forEach((notice) => {\n                    // ..but leave only some fields\n                    return row_array.push(\n                        this.formatCollectorFieldsToPdfArray(extra_return_fields, notice, 'row'),\n                    );\n                });\n                return Em.RSVP.Promise.all(row_array).then((data) => {\n                    data = this.arrayToTableFormat(extra_cols, data);\n                    elements.push(\n                        this.createPdfTableElement(extra_cols, data, translated_extra_cols),\n                    );\n                    return this.createPdfFromElements([elements]).then(function (file) {\n                        if (typeof cordova !== 'undefined' && cordova !== null) {\n                            return self.get('cordova').openFile(file, 'application/pdf');\n                        }\n                    });\n                });\n            });\n        });\n    },\n});\n\nexport default SitesafetyExportMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/sitesafety-formatted-export.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SitesafetyFormattedExportMixin;\n\nimport Ember from 'ember';\n\nimport pdfExport from './pdf-export';\n\nimport collector from '../classes/collector';\n\nimport { getAssetFolder, getScriptsInOrder } from 'tt4/utils/getScript';\n\nSitesafetyFormattedExportMixin = Ember.Mixin.create(pdfExport, {\n    session: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    createMeasurementPdf: function (fields, models, mode = 'download', images = []) {\n        var pdf_content;\n        pdf_content = [];\n        return this.getHeaderLogo().then((logo) => {\n            var currentModelNum, modelCount;\n            this.set('logo', logo);\n            modelCount = models.length;\n            currentModelNum = 0;\n            models.forEach((model) => {\n                var lastModel;\n                currentModelNum++;\n                if (currentModelNum === modelCount) {\n                    lastModel = true;\n                } else {\n                    lastModel = false;\n                }\n                return pdf_content.push(this.createPdfPage(fields, model, lastModel, images));\n            });\n            return Ember.RSVP.Promise.all(pdf_content).then((pdf_content) => {\n                return new Em.RSVP.Promise((resolve, reject) => {\n                    var assetsfolder, docDefinition;\n                    docDefinition = {\n                        content: pdf_content,\n                        pageSize: 'A4',\n                        pageOrientation: 'portrait',\n                        footer: (currentPage, pageCount) => {\n                            return this.getFooter(currentPage, pageCount);\n                        },\n                        styles: {\n                            tableMainHeader: {\n                                fillColor: '#DB4436',\n                                color: '#fff',\n                                bold: true,\n                            },\n                            tableSideHeader: {\n                                fillColor: '#f0f0f0',\n                                bold: true,\n                            },\n                            tableHeader: {\n                                bold: true,\n                            },\n                            bigTextOK: {\n                                fillColor: '#7BD17D',\n                                bold: true,\n                                fontSize: 20,\n                                alignment: 'center',\n                            },\n                            bigTextWarning: {\n                                fillColor: '#FFC56C',\n                                bold: true,\n                                fontSize: 20,\n                                alignment: 'center',\n                            },\n                            bigTextNotOk: {\n                                fillColor: '#FAAFAF',\n                                bold: true,\n                                fontSize: 20,\n                                alignment: 'center',\n                            },\n                            smallTextOK: {\n                                fillColor: '#7BD17D',\n                                alignment: 'center',\n                            },\n                            smallTextWarning: {\n                                fillColor: '#FFC56C',\n                                alignment: 'center',\n                            },\n                            smallTextNotOk: {\n                                fillColor: '#FAAFAF',\n                                alignment: 'center',\n                            },\n                            table: {\n                                fontSize: 8,\n                            },\n                            footer: {\n                                fontSize: 8,\n                                color: 'grey',\n                            },\n                            headertext: {\n                                fontSize: 8,\n                            },\n                        },\n                    };\n                    //console.log docDefinition\n                    //console.log(JSON.stringify(docDefinition, null, 4))\n                    //return\n                    assetsfolder = getAssetFolder('assets');\n                    return getScriptsInOrder([\n                        assetsfolder + 'pdfmake_v0.1.68.min.js',\n                        assetsfolder + 'vfs_fonts_v0.1.68.min.js',\n                    ]).then(() => {\n                        if (mode === 'download') {\n                            if (typeof cordova !== 'undefined' && cordova !== null) {\n                                return createPdf(docDefinition).getBuffer((buffer) => {\n                                    var binaryArray, promise, utf8;\n                                    utf8 = new Uint8Array(buffer);\n                                    binaryArray = utf8.buffer;\n                                    promise = this.get('cordova').saveFile(\n                                        binaryArray,\n                                        'export',\n                                        'pdf',\n                                    );\n                                    return promise.then(function (file) {\n                                        resolve(file);\n                                        return this.set('logo', null);\n                                    });\n                                });\n                            } else {\n                                resolve(createPdf(docDefinition).download('export.pdf'));\n                                return this.set('logo', null);\n                            }\n                        } else if (mode === 'base64') {\n                            return createPdf(docDefinition).getBase64((file) => {\n                                resolve(file);\n                                return this.set('logo', null);\n                            });\n                        }\n                    });\n                });\n            });\n        });\n    },\n    createPdfPage: function (fields, model, lastModel, images) {\n        var field, fieldname, i, id, len, minusArr, notices, plusArr, uniqueFieldname;\n        minusArr = [];\n        plusArr = [];\n        //fields = @get 'fields'\n        notices = [];\n        //get all plus and minus fields\n        for (fieldname in fields) {\n            field = fields[fieldname];\n            Ember.set(field, 'ext', fieldname);\n            if (fieldname.indexOf('_notices') > -1 && model.get(fieldname)) {\n                uniqueFieldname = model.get(fieldname).uniq();\n                for (i = 0, len = uniqueFieldname.length; i < len; i++) {\n                    id = uniqueFieldname[i];\n                    notices.push(id);\n                }\n            }\n            //tmp = []\n            if (fieldname.indexOf('_minus') > -1) {\n                //tmp['minus'] = field\n                minusArr.push(field);\n            } else if (fieldname.indexOf('_plus') > -1) {\n                plusArr.push(field);\n            }\n        }\n        this.set('minusArr', minusArr);\n        this.set('plusArr', plusArr);\n        this.set('noticesArr', notices);\n        return this.formatPdfPage(fields, model, lastModel, images);\n    },\n    createNoticesTable: function () {\n        var notice_ids;\n        notice_ids = this.get('noticesArr').join();\n        return new Em.RSVP.Promise((resolve) => {\n            if (this.get('noticesArr')[0]) {\n                return this.get('store')\n                    .query('trnotice', {\n                        id: notice_ids,\n                        sideload: true,\n                    })\n                    .then((notice_data) => {\n                        var notices;\n                        notices = [];\n                        notices.push([\n                            {\n                                text: this.get('intl').t('site_safety.notices'),\n                                style: 'tableMainHeader',\n                                colSpan: 4,\n                            },\n                            {},\n                            {},\n                            {},\n                        ]);\n                        //notices.push [style: \"tableMainHeader\", text: @get('intl').t(\"tr.notices\"), colspan: 3]\n                        notices.push([\n                            {\n                                style: 'tableSideHeader',\n                                text: '',\n                            },\n                            {\n                                style: 'tableSideHeader',\n                                text: this.get('intl').t('report.trnotice.desc'),\n                            },\n                            {\n                                style: 'tableSideHeader',\n                                text: this.get('intl').t('report.trnotice.user'),\n                            },\n                            {\n                                style: 'tableSideHeader',\n                                text: this.get('intl').t('report.trnotice.date'),\n                            },\n                        ]);\n                        notice_data.forEach((notice, index) => {\n                            return notices.push([\n                                index + 1,\n                                notice.get('desc'),\n                                notice.get('user.firstname') + ' ' + notice.get('user.lastname'),\n                                moment(notice.get('date')).format('L'),\n                            ]);\n                        });\n                        return resolve({\n                            table: {\n                                headerRows: 1,\n                                widths: [20, '*', '*', '*'],\n                                body: notices,\n                            },\n                        });\n                    });\n            } else {\n                return resolve({});\n            }\n        });\n    },\n    createNoticeImages: function () {\n        var images, notices, store;\n        store = this.get('store');\n        images = [];\n        this.set('full_pdf_export', true);\n        notices = this.get('noticesArr').sort(function (a, b) {\n            return b - a;\n        });\n        notices.forEach((id, index) => {\n            var notice;\n            notice = store.peekRecord('trnotice', id);\n            if (!notice) {\n                return;\n            }\n            if (notice.get('pic')) {\n                return notice.get('pic').forEach((image) => {\n                    return images.push(this.getImageBase64(image, index));\n                });\n            }\n        });\n        return Ember.RSVP.Promise.all(images).then((data) => {\n            if (data.length > 0) {\n                return {\n                    table: {\n                        body: data,\n                        widths: [20, 500],\n                        dontBreakRows: true,\n                    },\n                    pageBreak: 'before',\n                };\n            }\n        });\n    },\n    getImageBase64: function (image, index) {\n        return new Ember.RSVP.Promise((resolve) => {\n            return this.formatImageToPdf(image, 'row', 300).then((data) => {\n                return resolve([index + 1, data]);\n            });\n        });\n    },\n    createSignaturesTable: function (fields, model) {\n        var field, fieldname, signs;\n        signs = [];\n        for (fieldname in fields) {\n            field = fields[fieldname];\n            if (field['type'] === 'hdfile') {\n                signs.push(field);\n            }\n        }\n        //new Em.RSVP.Promise (resolve, reject) =>\n        return this.formatCollectorFieldsToPdfArray(signs, model).then((data) => {\n            var i, ind, len, sign, sign_name, signatures, table;\n            signatures = [];\n            for (ind = i = 0, len = data.length; i < len; ind = ++i) {\n                sign = data[ind];\n                if (sign.length === 1) {\n                    sign = sign[0];\n                }\n                if (sign && sign.value && sign.value.image) {\n                    signatures.push({\n                        stack: [\n                            {\n                                width: 150,\n                                image: sign['value']['image'],\n                            },\n                        ],\n                    });\n                } else {\n                    sign_name = this.get('intl').t('tr.' + signs[ind]['ext']);\n                    signatures.push({\n                        stack: [' ', ' ', ' ', sign_name],\n                    });\n                }\n            }\n            table = {\n                table: {\n                    headerRows: 1,\n                    widths: ['*', '*'],\n                    body: [signatures],\n                },\n            };\n            if (signatures.length === 2) {\n                table.table.body.push([\n                    model.get('user.firstname') + ' ' + model.get('user.lastname'),\n                    this.get('intl').t('tr.' + signs[1]['ext']) + ':',\n                ]);\n            } else {\n                fields = [];\n                signatures.forEach(() => {\n                    return fields.push(this.get('intl').t('site_safety.print_name') + ':');\n                });\n                table.table.body.push(fields);\n            }\n            return table;\n        });\n    },\n    createMainTable: function (model) {\n        var dataArr,\n            ext_base_arr,\n            field,\n            i,\n            len,\n            minus,\n            partialIndex,\n            plus,\n            ref,\n            table,\n            totalMin,\n            totalPlus,\n            translation;\n        table = [];\n        dataArr = [];\n        totalMin = 0;\n        totalPlus = 0;\n        // get headers (plus-fields are used to get headers)\n        // also add data\n        dataArr.push([\n            {\n                style: 'tableMainHeader',\n                text: this.get('intl').t('site_safety.measured_item'),\n            },\n            {\n                style: 'tableMainHeader',\n                text: this.get('intl').t('tr.plus'),\n            },\n            {\n                style: 'tableMainHeader',\n                text: this.get('intl').t('tr.minus'),\n            },\n            {\n                style: 'tableMainHeader',\n                text: this.get('intl').t('site_safety.partial_index'),\n            },\n        ]);\n        ref = this.get('plusArr');\n        for (i = 0, len = ref.length; i < len; i++) {\n            field = ref[i];\n            ext_base_arr = field['ext'].split('_');\n            plus = model.get(field['ext']);\n            minus = model.get(ext_base_arr[0] + '_minus'); // get minus\n            translation = this.get('intl').t(\n                model.get('constructor.modelName') + '.' + field['ext'],\n            );\n            if (field.name) {\n                translation = field.name;\n            }\n            partialIndex = (plus / (plus + minus)) * 100;\n            dataArr.push([\n                {\n                    style: 'tableSideHeader',\n                    text: translation,\n                },\n                plus ? plus.toString() : '',\n                minus ? minus.toString() : '',\n                plus || minus\n                    ? {\n                          text: partialIndex.toFixed(0) + '%',\n                          style: this.partialIndexColor(partialIndex),\n                      }\n                    : '',\n            ]);\n            totalMin += Number(minus);\n            totalPlus += Number(plus);\n        }\n        dataArr.push([\n            {\n                style: 'tableSideHeader',\n                text: this.get('intl').t('report.tr.total'),\n            },\n            totalPlus.toString(),\n            totalMin.toString(),\n            '',\n        ]);\n        this.set('totalPlus', totalPlus);\n        this.set('totalMin', totalMin);\n        table = {\n            table: {\n                headerRows: 1,\n                widths: ['*', 50, 50, 60],\n                body: dataArr,\n            },\n        };\n        return table;\n    },\n    ratingColor: function (rating) {\n        if (rating > 95) {\n            return 'bigTextOK';\n        } else if (rating > 90) {\n            return 'bigTextWarning';\n        } else {\n            return 'bigTextNotOk';\n        }\n    },\n    partialIndexColor: function (rating) {\n        if (rating > 95) {\n            return 'smallTextOK';\n        } else if (rating > 90) {\n            return 'smallTextWarning';\n        } else {\n            return 'smallTextNotOk';\n        }\n    },\n    createMeasurementSumTable: function (model) {\n        var dataArr, rating, style, table, text;\n        dataArr = [];\n        if (model.get('constructor.modelName') === 'mvr') {\n            rating = model.get('mvr_rating');\n        } else {\n            rating = model.get('tr_rating');\n        }\n        text = this.get('intl').t('measurement.rating');\n        style = this.ratingColor(rating);\n        dataArr.push({\n            style: 'tableSideHeader',\n            text: text,\n        });\n        dataArr.push({\n            style: style,\n            text: rating + '%',\n        });\n        table = {\n            table: {\n                widths: ['*', 80],\n                body: [dataArr],\n            },\n        };\n        return table;\n    },\n    addEmptySpace: function (margin = false) {\n        var object;\n        margin = margin ? margin : 20;\n        object = {\n            text: '',\n            margin: [0, margin, 0, 0],\n        };\n        return object;\n    },\n    createAveragePercentNumber: function (model) {\n        var dates;\n        //model.get('constructor.modelName')\n        //console.log model.get 'project.id'\n        dates =\n            moment().subtract(12, 'month').format('YYYY-MM-DD') +\n            '_' +\n            moment().format('YYYY-MM-DD');\n        return new Em.RSVP.Promise((resolve, reject) => {\n            //found = @get('store').peekRecord(model.get('constructor.modelName'),model.get('id'))\n            //console.log found\n            return this.get('store')\n                .query(model.get('constructor.modelName'), {\n                    project: model.get('project.id'),\n                    date: dates,\n                })\n                .then((data) => {\n                    var average, rating, ratings, rowCount, table;\n                    ratings = 0;\n                    rowCount = data.get('meta.count');\n                    rating =\n                        model.get('constructor.modelName') === 'mvr' ? 'mvr_rating' : 'tr_rating';\n                    data.forEach((row) => {\n                        return (ratings += row.get(rating));\n                    });\n                    average = ratings / rowCount;\n                    table = {\n                        table: {\n                            body: [\n                                [\n                                    {\n                                        text:\n                                            this.get('intl').t('measurement.rating') +\n                                            ', ' +\n                                            this.get('intl').t('tr.chart.average') +\n                                            ', ' +\n                                            this.get('intl').t('tr.last_12_months'),\n                                        style: 'tableMainHeader',\n                                    },\n                                ],\n                                [\n                                    {\n                                        text: average.toFixed(2) + '%',\n                                        style: this.ratingColor(average),\n                                    },\n                                ],\n                            ],\n                        },\n                    };\n                    return resolve(table);\n                });\n        });\n    },\n    formatPdfPage: function (fields, model, lastModel, images) {\n        var pdf_content;\n        //return new Em.RSVP.Promise (resolve, reject) =>\n\n        //@getHeader().then (header) =>\n        pdf_content = [];\n        // this is some ugly-ass code right here, should maybe be made to use array of promises or something\n        return this.createNoticesTable().then((notices) => {\n            return this.createNoticeImages().then((notice_images) => {\n                return this.createSignaturesTable(fields, model).then((signatures) => {\n                    return this.createAveragePercentNumber(model).then((average) => {\n                        // first add movenium-logo and additional info about worksite, company etc\n                        pdf_content.push(this.createHeaders(model));\n                        // next add main-table\n                        pdf_content.push(this.createMainTable(model));\n                        // then add tr-level table\n                        pdf_content.push(this.createMeasurementSumTable(model));\n                        // add empty space\n                        pdf_content.push(this.addEmptySpace());\n                        // after that add notices\n                        if (notices) {\n                            pdf_content.push(notices);\n                        }\n                        // add empty space\n                        pdf_content.push(this.addEmptySpace());\n                        // last one, signatures\n                        pdf_content.push(signatures);\n                        // last one +1 (average percent)\n                        pdf_content.push(this.addEmptySpace(40));\n                        pdf_content.push(average);\n                        images.forEach((image, index) => {\n                            if (image.title) {\n                                pdf_content.push({\n                                    text: image.title,\n                                    headlineLevel: 4,\n                                    pageBreak: index === 0 ? 'before' : '',\n                                });\n                            }\n                            return pdf_content.push({\n                                image: image.url,\n                                width: image.width ? image.width : 500,\n                                pageBreak: index === 0 && !image.title ? 'before' : '',\n                            });\n                        });\n                        if (notice_images) {\n                            pdf_content.push(notice_images);\n                        }\n                        // then add page-break\n                        if (!lastModel) {\n                            pdf_content.push({\n                                text: '',\n                                pageBreak: 'after',\n                            });\n                        }\n                        return pdf_content;\n                    });\n                });\n            });\n        });\n    },\n    createHeaders: function (model) {\n        var logo, right_header;\n        // get data for right-hand header\n        right_header = [];\n        right_header.push(\n            this.get('intl').t('report.tr.project') +\n                ': ' +\n                model.get('project.number') +\n                ' ' +\n                model.get('project.name'),\n        );\n        right_header.push(\n            this.get('intl').t('report.tr.date') + ': ' + moment(model.get('date')).format('L'),\n        );\n        right_header.push(\n            this.get('intl').t('report.tr.inspector') +\n                ': ' +\n                model.get('user.firstname') +\n                ' ' +\n                model.get('user.lastname'),\n        );\n        right_header.push(\n            this.get('intl').t('report.tr.company_name') +\n                ': ' +\n                this.get('session.currentUser.company_info.company_name'),\n        );\n        logo = this.get('logo');\n        return {\n            columns: [\n                [\n                    {\n                        fit: [120, 40],\n                        image: logo,\n                        margin: [0, 0, 0, 20],\n                    },\n                ],\n                {\n                    width: '*',\n                    stack: right_header,\n                    alignment: 'right',\n                    fontSize: 10,\n                    margin: [0, 0, 0, 20],\n                },\n            ],\n        };\n    },\n    getHeaderLogo: function () {\n        var c;\n        c = this.get('Collector');\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return c.getLogo().then((logo) => {\n                var company, session;\n                if (logo) {\n                    this.set('logo', logo);\n                }\n                session = this.get('session');\n                company = session.get('currentUser.company');\n                if (!logo) {\n                    logo = this.get('moveniumLogo');\n                }\n                return resolve(logo);\n            });\n        });\n    },\n});\n\nexport default SitesafetyFormattedExportMixin;\n","define(\"tt4/mixins/style-namespacing-extras\", [\"exports\", \"ember-component-css/mixins/style-namespacing-extras\"], function (_exports, _styleNamespacingExtras) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _styleNamespacingExtras.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/worksitediary_pdf.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryExportMixin;\n\nimport Ember from 'ember';\n\nimport pdfExport from './pdf-export';\n\nimport collector from '../classes/collector';\n\nWorksitediaryExportMixin = Ember.Mixin.create(pdfExport, {\n    intl: Ember.inject.service(),\n    createWorksitediaryPdf: function (items, mode = null) {\n        var elements;\n        elements = [];\n        this.addCoverPage(elements, items);\n        return this.addDiaryreportPages(elements, items).then(() => {\n            return this.createPdfFromElements(elements, mode);\n        });\n    },\n    /*\n  Worksitediary PDF creation functions\n  */\n    addCoverPage: function (elements, items) {\n        var dates, intl;\n        intl = this.get('intl');\n        elements.push(this.createPdfHeaderElement(intl.t('worksitediary.worksite')));\n        elements.push(this.createPdfHeaderElement(''));\n        elements.push('Info:');\n        elements.push(\n            intl.t('worksitediary.contact_person') +\n                ': ' +\n                this.get('store').peekAll('companyInfo').get('firstObject.company_contact_person'),\n        );\n        elements.push(\n            intl.t('worksitediary.vatin') +\n                ': ' +\n                this.get('store').peekAll('companyInfo').get('firstObject.company_vatin'),\n        );\n        dates = this.getMinAndMaxDates(items);\n        elements.push(\n            intl.t('worksitediary.date_range') +\n                ': ' +\n                dates.min.format('L') +\n                ' - ' +\n                dates.max.format('L'),\n        );\n        elements.push(this.createPdfHeaderElement(intl.t('worksitediary.signature_overseer')));\n        elements.push(this.createPdfHeaderElement(''));\n        elements.push('_________________________________________________');\n        elements.push(this.createPdfHeaderElement(''));\n        elements.push(this.createPdfHeaderElement(intl.t('worksitediary.signature_master')));\n        elements.push(this.createPdfHeaderElement(''));\n        elements.push('_________________________________________________');\n        elements.push(this.createPdfHeaderElement(''));\n        elements.push(this.createPdfHeaderElement(intl.t('worksitediary.signature_supervisor')));\n        elements.push(this.createPdfHeaderElement(''));\n        return elements.push('_________________________________________________');\n    },\n    //elements.push @createPdfElement(\"\", 'after')\n    getMinAndMaxDates: function (items) {\n        var max, min;\n        max = moment('1970-01-01');\n        min = moment('2050-01-01');\n        items.forEach(function (row) {\n            var date;\n            date = moment(row.get('diary_date'));\n            if (date.isAfter(max)) {\n                max = date;\n            }\n            if (date.isBefore(min)) {\n                return (min = date);\n            }\n        });\n        return {\n            min: min,\n            max: max,\n        };\n    },\n    addDiaryreportPages: function (elements, items) {\n        var promises;\n        promises = [];\n        items.forEach((record) => {\n            return promises.push(this.addDiaryReportPage(elements, record));\n        });\n        return Ember.RSVP.Promise.all(promises);\n    },\n    addDiaryReportPage: function (elements, record) {\n        return new Ember.RSVP.Promise((resolve) => {\n            return this.fetchNeededEventsFromBackend(record).then(() => {\n                var promises;\n                console.info('Events fetched for ' + record.get('id'));\n                promises = [];\n                promises.push(this.getDiaryreportEvents(record));\n                if (!this.get('Collector').testNeedsOne('products.byggdagbok')) {\n                    promises.push(this.getDiaryreportMaterials(record, 'ordered'));\n                    promises.push(this.getDiaryreportMaterials(record, 'received'));\n                    promises.push(\n                        this.getDiaryreportTable(record, 'review_and_inspection', [\n                            'title',\n                            'date',\n                        ]),\n                    );\n                    promises.push(\n                        this.getDiaryreportTable(record, 'diaryreport_misc', [\n                            'phase',\n                            'date',\n                            'description',\n                            'price',\n                        ]),\n                    );\n                    //promises.push @getDiaryreportTable record, 'diaryreport_required_extra', ['phase', 'date']\n                    promises.push(\n                        this.getDiaryreportTable(record, 'diaryreport_given_offer', [\n                            'phase',\n                            'date',\n                            'description',\n                            'price',\n                        ]),\n                    );\n                    promises.push(\n                        this.getDiaryreportTable(record, 'diaryreport_required_extra', [\n                            'phase',\n                            'date',\n                            'description',\n                        ]),\n                    );\n                    promises.push(\n                        this.getDiaryreportTable(record, 'diaryreport_supervisor_note', [\n                            'phase',\n                            'date',\n                            'description',\n                        ]),\n                    );\n                    promises.push(\n                        this.getDiaryreportTable(record, 'diaryreport_other_note', [\n                            'phase',\n                            'date',\n                            'description',\n                        ]),\n                    );\n                    promises.push(\n                        this.getDiaryreportTable(record, 'completion_rate', ['title', 'rate']),\n                    );\n                }\n                return Ember.RSVP.Promise.all(promises).then((results) => {\n                    if (this.get('Collector').testNeedsOne('products.byggdagbok')) {\n                        this.addDiaryreportBasicInfoSwe(elements, record);\n                    } else {\n                        this.addDiaryreportBasicInfo(elements, record);\n                    }\n                    results.forEach(function (add) {\n                        return add.forEach(function (element, index) {\n                            return elements.push(element);\n                        });\n                    });\n                    return resolve();\n                });\n            });\n        });\n    },\n    addDiaryreportBasicInfo: function (elements, record) {\n        var intl;\n        intl = this.get('intl');\n        elements.push({\n            text:\n                record.get('project.name') +\n                ' ' +\n                record.get('worksite_number') +\n                ' - ' +\n                moment(record.get('diary_date')).format('L') +\n                ' ' +\n                this.get('intl').t('worksitediary.week') +\n                ' ' +\n                record.get('work_week'),\n            fontSize: 14,\n            bold: true,\n            margin: [0, 20, 0, 8],\n            pageBreak: 'before',\n        });\n        elements.push({\n            text:\n                intl.t('worksitediary.foremans_at_site') +\n                ': ' +\n                record.get('foremans_at_site') +\n                ', ' +\n                intl.t('worksitediary.workers_at_site') +\n                ': ' +\n                record.get('workers_at_site') +\n                ', ' +\n                intl.t('worksitediary.subcontractors_at_site') +\n                ': ' +\n                record.get('subcontractors_at_site') +\n                ', ' +\n                intl.t('worksitediary.side_contractors_at_site') +\n                ': ' +\n                record.get('side_contractors_at_site') +\n                ', ' +\n                intl.t('worksitediary.other_contractors_at_site') +\n                ': ' +\n                record.get('other_contractors_at_site') +\n                '',\n            fontSize: 10,\n        });\n        if (record.get('stock_changes_at_site')) {\n            elements.push({\n                text: '' + intl.t('worksitediary.stock_changes_at_site'),\n                fontSize: 10,\n                bold: true,\n                margin: [0, 15, 0, 8],\n            });\n            return elements.push({\n                text: '' + record.get('stock_changes_at_site'),\n                fontSize: 10,\n            });\n        }\n    },\n    addDiaryreportBasicInfoSwe: function (elements, record) {\n        var intl;\n        intl = this.get('intl');\n        elements.push({\n            text:\n                record.get('project.name') +\n                ' ' +\n                record.get('worksite_number') +\n                ' - ' +\n                moment(record.get('diary_date')).format('L') +\n                ' ' +\n                this.get('intl').t('worksitediary.week') +\n                ' ' +\n                record.get('work_week'),\n            fontSize: 14,\n            bold: true,\n            margin: [0, 20, 0, 8],\n            pageBreak: 'before',\n        });\n        // add info about workforce\n        elements.push({\n            text: intl.t('worksitediary.workforce') + ': ' + record.get('work_force'),\n            fontSize: 10,\n        });\n        if (record.get('stock_changes_at_site')) {\n            elements.push({\n                text: '' + intl.t('worksitediary.stock_changes_at_site'),\n                fontSize: 10,\n                bold: true,\n                margin: [0, 15, 0, 8],\n            });\n            return elements.push({\n                text: '' + record.get('stock_changes_at_site'),\n                fontSize: 10,\n            });\n        }\n    },\n    getDiaryreportEvents: function (record) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var fields, promises;\n            promises = [];\n            fields = this.get('Collector')\n                .fieldArray(this.get('form'))\n                .filter(function (field) {\n                    return (\n                        field.name.substring(0, 7) === 'events_' &&\n                        field.name.substring(field.name.length - 9, field.name.length) !==\n                            '_freetext'\n                    );\n                });\n            fields.forEach((field) => {\n                return promises.push(this.getDiaryreportEventsOneType(record, field));\n            });\n            return Ember.RSVP.Promise.all(promises).then(function (results) {\n                return resolve(results);\n            });\n        });\n    },\n    getDiaryreportEventsOneType: function (record, field) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var promises;\n            promises = [];\n            record.get(field.name).forEach((event) => {\n                return promises.push(this.getDiaryReportEvent(event));\n            });\n            return Ember.RSVP.Promise.all(promises).then((events) => {\n                var elements, freetext, table_body;\n                elements = [];\n                elements.push({\n                    text: field.translated_name,\n                    fontSize: 12,\n                    bold: true,\n                    margin: [0, 15, 0, 8],\n                });\n                freetext = record.get(field.name + '_freetext');\n                if (freetext) {\n                    elements.push({\n                        text: freetext,\n                        fontSize: 10,\n                    });\n                }\n                table_body = [];\n                events.forEach(function (event) {\n                    return table_body.push([event.col1, event.col2]);\n                });\n                if (table_body.length > 0) {\n                    elements.push({\n                        table: {\n                            widths: ['*', '*'],\n                            body: table_body,\n                        },\n                        layout: this.get('boxedTable'),\n                    });\n                }\n                return resolve(elements);\n            });\n        });\n    },\n    fetchNeededEventsFromBackend: function (record) {\n        var promises;\n        promises = [\n            record.get('events_started'),\n            record.get('events_finished'),\n            record.get('events_altered'),\n            record.get('events_work_in_progress'),\n            record.get('events_interrupted'),\n        ];\n        return Ember.RSVP.Promise.all(promises);\n    },\n    getDiaryReportEvent: function (event) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var header_elems, images, promises, texts;\n            texts = [];\n            header_elems = [\n                {\n                    text: '' + event.get('title'),\n                    fontSize: 10,\n                    bold: true,\n                },\n                {\n                    text: '' + moment(event.get('date')).format('L'),\n                    fontSize: 10,\n                },\n            ];\n            // thumb up\n            if (event.get('rating') === 'up') {\n                header_elems.push({\n                    width: 10,\n                    image: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4RDgRXhpZgAATU0AKgAAAAgABAE7AAIAAAAHAAAISodpAAQAAAABAAAIUpydAAEAAAAOAAAQyuocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZlaWtrbwAAAAWQAwACAAAAFAAAEKCQBAACAAAAFAAAELSSkQACAAAAAzA2AACSkgACAAAAAzA2AADqHAAHAAAIDAAACJQAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMDE2OjA5OjA4IDEyOjE2OjExADIwMTY6MDk6MDggMTI6MTY6MTEAAAB2AGUAaQBrAGsAbwAAAP/hCxlodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIi8+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPjx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTA5LTA4VDEyOjE2OjExLjA1OTwveG1wOkNyZWF0ZURhdGU+PC9yZGY6RGVzY3JpcHRpb24+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPjxkYzpjcmVhdG9yPjxyZGY6U2VxIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpsaT52ZWlra288L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAHBQUGBQQHBgUGCAcHCAoRCwoJCQoVDxAMERgVGhkYFRgXGx4nIRsdJR0XGCIuIiUoKSssKxogLzMvKjInKisq/9sAQwEHCAgKCQoUCwsUKhwYHCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq/8AAEQgAGgAaAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A9C+J/wAT5fDc50bQCv8AaJUNNOwDCAHoAOhbvzwP5cKdK8Zz+CZ/F+o+JL62RMNBFJcyB5VJAyMHCjJ49fyrMMK6x8aGg1NPNSfWTHKjfxL5mMfTAr6RvdKsNStFtdQsre6t1IKwzRhkBHTg8V5NKnPFQlVk/JeW3+Z40VLGVqnM/djolt82eGeA/i9qWnX8Nj4muXvbCRgn2iU5lhz3LdWHrnJ9PQ++qwZQykEEZBHevnf4y6JpOieKLVNGtorXzrfzJoYRhQdxAO3tkDt6V6L4d1rVR4X0oAsQLOHBKE5+QV25d7Su50pPWPUzo4iphakqFV81rHJ/E3wlqXh3xYvjHQYjJD5y3EuF3eRKDnLD+6cdfXPtUK/HzWAg36PYlsckM4BP0zXuxGRg8iuL1fwxoJ163zomm/vCC/8AokfzHPfjmuSpTnQdqUrJ9DoxNGdKTq0ZcvNvpf5njWnaXrvxW8aSXcybUkcG5uFUiOBB/CM98dB1P5mvpK0sreysoLW3jVYoI1jQY6KowP0FLa2ltY2629lbxW8KfdjhQIq/QDipq7aFBUI2Tu3u+5thcMqadST5pS3Z/9k=',\n                });\n                // thumb down\n            } else if (event.get('rating') === 'down') {\n                header_elems.push({\n                    width: 10,\n                    image: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4RDgRXhpZgAATU0AKgAAAAgABAE7AAIAAAAHAAAISodpAAQAAAABAAAIUpydAAEAAAAOAAAQyuocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZlaWtrbwAAAAWQAwACAAAAFAAAEKCQBAACAAAAFAAAELSSkQACAAAAAzQ4AACSkgACAAAAAzQ4AADqHAAHAAAIDAAACJQAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMDE2OjA5OjA4IDEyOjI0OjQ3ADIwMTY6MDk6MDggMTI6MjQ6NDcAAAB2AGUAaQBrAGsAbwAAAP/hCxlodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIi8+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPjx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTA5LTA4VDEyOjI0OjQ3LjQ3ODwveG1wOkNyZWF0ZURhdGU+PC9yZGY6RGVzY3JpcHRpb24+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPjxkYzpjcmVhdG9yPjxyZGY6U2VxIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpsaT52ZWlra288L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAHBQUGBQQHBgUGCAcHCAoRCwoJCQoVDxAMERgVGhkYFRgXGx4nIRsdJR0XGCIuIiUoKSssKxogLzMvKjInKisq/9sAQwEHCAgKCQoUCwsUKhwYHCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq/8AAEQgAGwAaAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A9V+InxLg8HKtlYxpdarIu4I5OyFezNjr7D+Xfy2Tx/8AEieTz0nvEQ/MojsV2Af98cj65pdNmOr/AB6WS+US7tVcYYZGEJCj8Ao/Kvo2vJpxqYtOpztK9rI+9ryweQ06VKWHjVnOPM3Lz6LRnkPgL4xS6hqEWleK1jSWVgkN4i7QW6AOvQZPcYHt3r16vnj416NBpnjZLu1wv9oQiaRB2cHaT+OAfrmvYfD2vT3PhfS550Dyy2cLuxP3mKAk11YGdSq5UpauJw53l+HnQo4/Bx5Y1FrHon5fieP/ABO8Naj4T8at4g00Olrc3AuIbhB/qps5Kn8ckeoPsa6y++K8Wp/DWW9sdUTS/EEBQGAKrGRsgHarA5Ugk+2Pbn1W5tYL21ktryGOeCQbXjlUMrD0IPWuA1D4ZeEBrEaro6qshyyrcSgfgA3H4VhLDVaXMqT0l+HobYfOMHjKVKnj6bc6VrNJO6XSSff/AIOh47Y23iH4leKoo555Ly5cASTuBtgjB5OBgADJ4HUn3r6dsrCCw0+3s4EAit4liQEfwqMD+VQ6RoemaBZ/ZdHsobSHOSI15Y+pPUn3NX66cNh/YRet29zzM7zn+0ZRhShyU4bL/htPl0P/2Q==',\n                });\n            }\n            texts.push({\n                table: {\n                    body: [header_elems],\n                },\n                layout: 'noBorders',\n            });\n            texts.push({\n                text: '' + (event.get('description') ? event.get('description') : ''),\n                fontSize: 10,\n            });\n            texts.push({\n                text: '' + this.formatWeatherForPDF(event.get('weather')),\n                fontSize: 10,\n                margin: [0, 20, 0, 8],\n            });\n            promises = [];\n            images = [];\n            if (Ember.typeOf(event.get('images')) === 'object') {\n                promises.push(this.handleEventImage(event.get('images'), images));\n            } else {\n                event.get('images').forEach((image) => {\n                    return promises.push(this.handleEventImage(image, images));\n                });\n            }\n            return Ember.RSVP.Promise.all(promises).then(function () {\n                return resolve({\n                    col1: texts,\n                    col2: images,\n                });\n            });\n        });\n    },\n    handleEventImage: function (image, images) {\n        var promise;\n        promise = this.getImageUri(image.url);\n        promise.then(function (imagedata) {\n            return images.push({\n                image: imagedata,\n                width: 200,\n            });\n        });\n        return promise;\n    },\n    getDiaryreportMaterials: function (record, type = 'ordered') {\n        return new Ember.RSVP.Promise((resolve) => {\n            return record.get('orders_' + type).then((orders) => {\n                var promises;\n                promises = [];\n                orders.forEach((order) => {\n                    return promises.push(this.getDiaryreportMaterial(order));\n                });\n                return Ember.RSVP.Promise.all(promises).then((order_elems) => {\n                    var elements, table_body;\n                    elements = [];\n                    elements.push(\n                        this.get('intl').t(\n                            'worksite.' + (type === 'received' ? 'arrived' : type) + '.materials',\n                        ),\n                    );\n                    table_body = [];\n                    order_elems.forEach(function (elem) {\n                        return table_body.push([elem.col1, elem.col2]);\n                    });\n                    if (table_body.length > 0) {\n                        elements.push({\n                            table: {\n                                widths: ['*', '*'],\n                                body: table_body,\n                                layout: this.get('boxedTable'),\n                            },\n                        });\n                    }\n                    console.info('resolving materials', type, elements);\n                    return resolve(elements);\n                });\n            });\n        });\n    },\n    getDiaryreportMaterial: function (event) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var images, promises, texts;\n            texts = [];\n            texts.push({\n                text: event.get('title') + ' ' + moment(event.get('order_date')).format('L'),\n                fontSize: 10,\n                bold: true,\n            });\n            texts.push({\n                text: event.get('description'),\n                fontSize: 10,\n            });\n            texts.push({\n                text:\n                    this.get('intl').t('report.material.arrival_date') +\n                    ': ' +\n                    (event.get('arrival_date')\n                        ? moment(event.get('arrival_date')).format('L')\n                        : '-'),\n                fontSize: 10,\n                margin: [0, 20, 0, 8],\n            });\n            promises = [];\n            images = [];\n            event.get('image').forEach((image) => {\n                var promise;\n                promise = this.getImageUri(image.url);\n                promise.then(function (imagedata) {\n                    return images.push({\n                        image: imagedata,\n                        width: 200,\n                    });\n                });\n                return promises.push(promise);\n            });\n            return Ember.RSVP.Promise.all(promises).then(() => {\n                return resolve({\n                    col1: texts,\n                    col2: images,\n                });\n            });\n        });\n    },\n    getDiaryreportTable: function (record, field, subfields) {\n        return new Ember.RSVP.Promise((resolve) => {\n            console.log(field);\n            return record.get(field).then((items) => {\n                var body, elements, headers, rowCount;\n                elements = [\n                    {\n                        text: this.get('intl').t('report.diaryreport.' + field),\n                        margin: [0, 20, 0, 8],\n                    },\n                ];\n                headers = [];\n                subfields.forEach((subfield) => {\n                    return headers.push({\n                        text: this.translateField(field, subfield),\n                        style: 'tableHeader',\n                    });\n                });\n                body = [];\n                body.push(headers);\n                rowCount = 0;\n                items.forEach(function (row) {\n                    var temp;\n                    temp = [];\n                    subfields.forEach(function (subfield) {\n                        var cell;\n                        cell =\n                            row.get(subfield) && subfield === 'date'\n                                ? moment(row.get(subfield)).format('L')\n                                : row.get(subfield)\n                                  ? '' + row.get(subfield)\n                                  : ' ';\n                        return temp.push(cell);\n                    });\n                    body.push(temp);\n                    return rowCount++;\n                });\n                if (rowCount > 0) {\n                    elements.push({\n                        table: {\n                            body: body,\n                        },\n                    });\n                }\n                console.info('resolving ', field, elements);\n                return resolve(elements);\n            });\n        });\n    },\n    translateField: function (form, field) {\n        var header, key;\n        key = 'report.' + form + '.' + field;\n        switch (key) {\n            case 'report.review_and_inspection.title':\n                key = 'review_and_inspection.reviews';\n        }\n        header = this.get('intl').t(key);\n        if (!header) {\n            header = 't.' + key;\n        }\n        return header;\n    },\n    boxedTable: {\n        hLineWidth: function (i, node) {\n            if (i === 0 || i === node.table.body.length) {\n                return 1;\n            } else {\n                return 1;\n            }\n        },\n        vLineWidth: function (i, node) {\n            if (i === 0 || i === node.table.widths.length) {\n                return 0;\n            } else {\n                return 0;\n            }\n        },\n        hLineColor: function (i, node) {\n            if (i === 0 || i === node.table.body.length) {\n                return 'grey';\n            } else {\n                return 'gray';\n            }\n        },\n        vLineColor: function (i, node) {\n            if (i === 0 || i === node.table.widths.length) {\n                return 'gray';\n            } else {\n                return 'gray';\n            }\n        },\n    },\n});\n\nexport default WorksitediaryExportMixin;\n","import DS from 'ember-data';\n\nexport default DS.Model.extend({\n    toggled: DS.attr('boolean'),\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/collector.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Collector;\n\nimport DS from 'ember-data';\n\nCollector = DS.Model.extend({\n    row_info: DS.belongsTo('row-info'),\n    clone: function () {\n        var attrs, class_type, model, root;\n        model = this;\n        attrs = this.serialize();\n        class_type = model.constructor;\n        root = Ember.String.decamelize(class_type.toString().split(':')[1]);\n        this.eachRelationship(function (key, relationship) {\n            if (relationship.kind === 'belongsTo') {\n                attrs[key] = model.get(key);\n            }\n        });\n\n        return this.store.createRecord(root, attrs);\n    },\n    //                if relationship.kind == 'belongsTo'\n    //                    attrs[key] = model.get(key)\n\n    //    info: Ember.computed.alias 'data.row_info'\n    isRemovable: Ember.computed.alias('row_info.privilege_remove'),\n    isEditable: Ember.computed.alias('row_info.privilege_edit'),\n    //    isRemovable: Ember.computed('data.row_info', ->\n    //        return true if not @get 'data.row_info'\n    //        @get 'data.row_info.privilege_remove'\n    //    )\n\n    //    isEditable: Ember.computed('data.row_info', ->\n    //        return true if not @get 'data.row_info'\n    //        @get 'data.row_info.privilege_edit'\n    //    )\n    validation: 'on',\n});\n\nexport default Collector;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/company-info.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CompanyInfo;\n\nimport DS from 'ember-data';\n\nCompanyInfo = DS.Model.extend({\n    company_name: DS.attr('string'),\n    company_vatin: DS.attr('string'),\n    company_contact_person: DS.attr('string'),\n    company_phone: DS.attr('string'),\n    company_email: DS.attr('string'),\n    country: DS.attr('string'),\n    row_info: DS.attr(),\n});\n\nexport default CompanyInfo;\n","import DS from 'ember-data';\n\nexport default DS.Model.extend({\n    name: DS.attr('string'),\n    columns: DS.attr('obj'),\n    encoding: DS.attr('string'),\n    separator: DS.attr('string'),\n    decimal: DS.attr('string'),\n    linebreak: DS.attr('string'),\n    quotes: DS.attr('boolean'),\n    headers: DS.attr('boolean'),\n    integrationtype: DS.attr('string'),\n    absences: DS.attr('boolean'),\n    absencetypes: DS.attr('obj'),\n    onerowabsences: DS.attr('boolean'),\n    templateId: DS.attr('string'),\n    orderBy: DS.attr('obj'),\n    absencesAfterWorktimes: DS.attr('boolean'),\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/custom-inflector-rules.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar inflector;\n\nimport Inflector from 'ember-inflector';\n\ninflector = Inflector.inflector;\n\ninflector.irregular('drive', 'drives');\n\nexport default {};\n","import DS from 'ember-data';\n\nexport default DS.Model.extend({\n    mobile: DS.attr('string'),\n});\n","import DS from 'ember-data';\n\nexport default DS.Model.extend({\n    left: DS.attr('string'),\n    center: DS.attr('string'),\n    right: DS.attr('string'),\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/form-field-setting.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormFieldSetting;\n\nimport DS from 'ember-data';\n\nimport formSettings from '../mixins/form-settings';\n\nFormFieldSetting = DS.Model.extend(formSettings, {\n    intl: Ember.inject.service(),\n    field: DS.belongsTo('form-field'),\n    name: DS.attr('string'),\n    value: DS.attr('string'),\n    userlevel: DS.attr('string'),\n    editable: DS.attr(),\n    condition: DS.attr('string'),\n    translatedName: Em.computed('name', function () {\n        return this.get('intl').t('setting.type.' + this.get('name'));\n    }),\n});\n\nexport default FormFieldSetting;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/form-field.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormField;\n\nimport DS from 'ember-data';\n\nimport formSettings from '../mixins/form-settings';\n\nFormField = DS.Model.extend(formSettings, {\n    intl: Ember.inject.service(),\n    name: DS.attr('string'),\n    external_type: DS.attr('string'),\n    type: DS.attr('string'),\n    options: DS.attr('string'),\n    form: DS.belongsTo('form'),\n    nro: DS.attr('number'),\n    schemaid: DS.attr('string'),\n    settings: DS.hasMany('form-field-setting'),\n    removed: DS.attr('boolean'),\n    editable: DS.attr('boolean'),\n    translatedType: Ember.computed('type', function () {\n        return this.get('intl').t('field.type.' + this.get('type'));\n    }),\n    own: Ember.computed('external_type', function () {\n        var ext;\n        ext = this.get('external_type');\n        if (ext) {\n            if (ext.substring(0, 6) === 'addon_') {\n                return true;\n            }\n        }\n        return false;\n    }),\n    mandatory: Ember.computed('settings.[]', function () {\n        var mandatory;\n        mandatory = false;\n        this.get('settings').forEach(function (setting) {\n            if (setting.get('name') === 'mandatory' && setting.get('value') === 'true') {\n                return (mandatory = true);\n            }\n        });\n        return mandatory;\n    }),\n    stashed: Ember.computed('settings.[]', function () {\n        var stashed;\n        stashed = false;\n        this.get('settings').forEach(function (setting) {\n            if (setting.get('name') === 'stashed' && setting.get('value') === 'true') {\n                return (stashed = true);\n            }\n        });\n        return stashed;\n    }),\n    isEditable: Em.computed('settings.[]', function () {\n        var disable;\n        disable = false;\n        this.get('settings').forEach((setting) => {\n            if (setting.get('name') === 'requirements') {\n                return (disable = true);\n            }\n        });\n        return disable;\n    }),\n    isLocked: Em.computed('settings.[]', function () {\n        var disable;\n        disable = false;\n        this.get('settings').forEach((setting) => {\n            if (setting.get('name') === 'lock_edit') {\n                return (disable = true);\n            }\n        });\n        return disable;\n    }),\n    dirtySettings: Em.computed('settings.[]', function () {\n        return this.get('settings').filterBy('hasDirtyAttributes');\n    }),\n});\n\nexport default FormField;\n","import Model, { attr } from '@ember-data/model';\n\nexport default class FormReportTemplateModel extends Model {\n    @attr('string') name;\n    @attr('string') form;\n    @attr('string') sums;\n    @attr('string') sumType;\n    @attr('number') limit;\n    @attr('string') columns;\n    @attr('string') filters;\n    @attr() filterOrder;\n    @attr() userlevels;\n    @attr('boolean') isEditable;\n}\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/form-setting.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormSetting;\n\nimport DS from 'ember-data';\n\nimport formSettings from '../mixins/form-settings';\n\nFormSetting = DS.Model.extend(formSettings, {\n    form: DS.belongsTo('form'),\n    name: DS.attr('string'),\n    value: DS.attr('string'),\n    userlevel: DS.attr('string'),\n    editable: DS.attr(),\n    condition: DS.attr('string'),\n});\n\nexport default FormSetting;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/form.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Form;\n\nimport DS from 'ember-data';\n\nimport formSettings from '../mixins/form-settings';\n\nForm = DS.Model.extend(formSettings, {\n    name: DS.attr('string'),\n    external_type: DS.attr('string'),\n    fields: DS.hasMany('form-field'),\n    settings: DS.hasMany('form-setting'),\n});\n\nexport default Form;\n","import DS from 'ember-data';\n\nexport default DS.Model.extend({\n    header: DS.attr('string'),\n    type: DS.attr('string'),\n    url: DS.attr('string'),\n    text: DS.attr('string'),\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/logo.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Logo;\n\nimport DS from 'ember-data';\n\nLogo = DS.Model.extend({\n    logo: DS.attr(),\n});\n\nexport default Logo;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/messageboard.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Messageboard;\n\nimport DS from 'ember-data';\n\nMessageboard = DS.Model.extend({\n    notify: DS.attr('string'),\n    header: DS.attr('string'),\n    content: DS.attr('string'),\n    forced: DS.attr('string'),\n    multirowlink: DS.attr('string'),\n});\n\nexport default Messageboard;\n","import DS from 'ember-data';\n\nexport default DS.Model.extend({\n    project: DS.belongsTo('project'),\n});\n","import DS from 'ember-data';\n\nexport default DS.Model.extend({\n    name: DS.attr('string'),\n    columns: DS.attr('string'),\n    rows: DS.attr('number'),\n    order: DS.attr('string'),\n    form: DS.attr('string'),\n    user: DS.belongsTo('user', { async: true }),\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/row-info.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RowInfo;\n\nimport DS from 'ember-data';\n\nRowInfo = DS.Model.extend({\n    created: DS.attr('date'),\n    creatorid: DS.attr('number'),\n    last_logged: DS.attr('date'),\n    modified: DS.attr('date'),\n    privilege_edit: DS.attr('boolean'),\n    privilege_remove: DS.attr('boolean'),\n    privilege_openlock: DS.attr('boolean'),\n    source: DS.attr('string'),\n    status: DS.attr('string'),\n    trimmed_query: DS.attr('boolean'),\n});\n\nexport default RowInfo;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/row-setting.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RowSetting;\n\nimport DS from 'ember-data';\n\nimport formSettings from '../mixins/form-settings';\n\nRowSetting = DS.Model.extend(formSettings, {\n    toid: DS.attr('string'),\n    name: DS.attr('string'),\n    value: DS.attr('string'),\n    userlevel: DS.attr('string'),\n});\n\nexport default RowSetting;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/user-activity-log.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserActivityLog;\n\nimport DS from 'ember-data';\n\nUserActivityLog = DS.Model.extend({\n    action: DS.attr(),\n    timestamp: DS.attr(),\n    form: DS.attr(),\n    rowids: DS.attr(),\n    owners: DS.attr(),\n    user: DS.belongsTo('user', {\n        async: true,\n    }),\n});\n\nexport default UserActivityLog;\n","import DS from 'ember-data';\n\nexport default DS.Model.extend({\n    name: DS.attr('string'),\n    value: DS.attr('obj'),\n});\n","define(\"tt4/modifiers/did-insert\", [\"exports\", \"@ember/render-modifiers/modifiers/did-insert\"], function (_exports, _didInsert) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _didInsert.default;\n    }\n  });\n});\n","define(\"tt4/modifiers/did-update\", [\"exports\", \"@ember/render-modifiers/modifiers/did-update\"], function (_exports, _didUpdate) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _didUpdate.default;\n    }\n  });\n});\n","define(\"tt4/modifiers/focus-trap\", [\"exports\", \"ember-focus-trap/modifiers/focus-trap\"], function (_exports, _focusTrap) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _focusTrap.default;\n    }\n  });\n});\n","define(\"tt4/modifiers/recognize-gesture\", [\"exports\", \"ember-gestures/modifiers/recognize-gesture\"], function (_exports, _recognizeGesture) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _recognizeGesture.default;\n    }\n  });\n});\n","define(\"tt4/modifiers/ref\", [\"exports\", \"ember-ref-modifier/modifiers/ref\"], function (_exports, _ref) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _ref.default;\n    }\n  });\n});\n","define(\"tt4/modifiers/sortable-group\", [\"exports\", \"ember-sortable/modifiers/sortable-group\"], function (_exports, _sortableGroup) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _sortableGroup.default;\n    }\n  });\n});\n","define(\"tt4/modifiers/sortable-handle\", [\"exports\", \"ember-sortable/modifiers/sortable-handle\"], function (_exports, _sortableHandle) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _sortableHandle.default;\n    }\n  });\n});\n","define(\"tt4/modifiers/sortable-item\", [\"exports\", \"ember-sortable/modifiers/sortable-item\"], function (_exports, _sortableItem) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _sortableItem.default;\n    }\n  });\n});\n","define(\"tt4/modifiers/style\", [\"exports\", \"ember-style-modifier/modifiers/style\"], function (_exports, _style) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _style.default;\n    }\n  });\n});\n","define(\"tt4/modifiers/will-destroy\", [\"exports\", \"@ember/render-modifiers/modifiers/will-destroy\"], function (_exports, _willDestroy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _willDestroy.default;\n    }\n  });\n});\n","import Controller, { inject as controller } from '@ember/controller';\nimport { set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    saved: controller(),\n\n    init() {\n        this._super();\n        this.settings = {\n            form: 'abcense',\n            skip: ['starttime', 'endtime', 'status', 'addon_frnvaro_timmar'],\n            mandatory: ['startdate', 'enddate', 'dayamount'],\n        };\n    },\n\n    modelAlias: alias('model'),\n\n    actions: {\n        recordSaved(settings, record) {\n            set(this, 'saved.model', record);\n            set(this, 'saved.hideAddLinks', true);\n            return this.transitionToRoute('saved');\n        },\n        cancel() {\n            return this.transitionToRoute('abcenses.index');\n        },\n    },\n});\n","/*eslint-disable ember/named-functions-in-promises */\nimport { inject as service } from '@ember/service';\n\nimport Route from '@ember/routing/route';\n\nconst AbcensesAddRoute = Route.extend({\n    wtService: service(),\n\n    beforeModel() {\n        return this.wtService.unlessOpenWt().catch(() => {\n            return this.wtService.showOpenWtError();\n        });\n    },\n});\n\nexport default AbcensesAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"kFSjZWDw\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.abcense\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"abcenses.index\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"abcenses/add/abcense-record-comp\\\",null,[[\\\"multipleDays\\\",\\\"form\\\",\\\"settings\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[true,\\\"abcense\\\",[24,[\\\"settings\\\"]],\\\"recordSaved\\\",\\\"cancel\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/add-multiple/template.hbs\"}});","/* eslint-disable ember/named-functions-in-promises */\nimport { debounce } from '@ember/runloop';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport recordComp from '../../../collector/record-custom-comp/component';\nimport { copy } from 'ember-copy';\nimport { isEmpty, isPresent } from '@ember/utils';\n\nexport default recordComp.extend({\n    session: service(),\n    intl: service(),\n\n    layoutName: 'collector/record-comp',\n\n    fields: computed('record', 'settings', {\n        set(key, value) {\n            this._value = value;\n        },\n        get() {\n            if (this._value) {\n                return this._value;\n            }\n            // Collector service\n            const c = this.Collector;\n            // Collector form\n            const form = 'abcense';\n            const record = get(this, 'record');\n            if (!record) {\n                return;\n            }\n            const skip = get(this, 'settings.skip');\n            const mandatory = get(this, 'settings.mandatory');\n            const fields = c.fieldArray(form);\n            const retFields = [];\n            let fetchmultiday = false;\n            let fetchsingleday = false;\n\n            // Fetch form fields with collector service\n            fields.forEach((field) => {\n                field.features = copy(field.features);\n                if (Array.from(skip).includes(field.name)) {\n                    return;\n                }\n                if (Array.from(mandatory).includes(field.name)) {\n                    field.features = copy(field.features);\n                    field.features.mandatory = true;\n                }\n                if (field.type === 'database' && get(record, field.name)) {\n                    field.value = get(record, field.name + '.id');\n                } else {\n                    field.value = get(record, field.name);\n                }\n                if (field.name === 'abcensetype' && get(this, 'multipleDays')) {\n                    field.filterOptions = {\n                        type: 'both||days||(empty)',\n                    };\n                } else if (field.name === 'abcensetype' && !get(this, 'multipleDays')) {\n                    field.filterOptions = {\n                        type: 'both||hours||(empty)',\n                    };\n                }\n\n                if (get(this, 'multipleDays') && ['startdate', 'enddate'].includes(field.name)) {\n                    fetchmultiday = true;\n                }\n\n                if (!get(this, 'multipleDays') && field.name === 'startdate') {\n                    fetchsingleday = true;\n                }\n\n                return retFields.push(copy(field));\n            });\n\n            if (fetchmultiday && !get(record, 'id')) {\n                this.fetchAbsenceDaysForMultiday();\n            }\n            if (fetchsingleday && !get(record, 'id')) {\n                this.fecthWorkhoursForSingleDay();\n            }\n\n            return retFields;\n        },\n    }),\n\n    actions: {\n        setValue(value, field, set) {\n            if (set == null) {\n                set = true;\n            }\n            if (\n                get(this, 'multipleDays') &&\n                ['startdate', 'enddate', 'abcensetype', 'user'].includes(field)\n            ) {\n                this.fetchAbsenceDaysForMultiday();\n            }\n\n            if (!get(this, 'multipleDays') && ['startdate', 'user'].includes(field)) {\n                this.fecthWorkhoursForSingleDay();\n            }\n\n            return this._super(...arguments);\n        },\n\n        save() {\n            const intl = get(this, 'intl');\n            const record = get(this, 'record');\n            let errors = false;\n            const fields = get(this, 'fields');\n            fields.forEach((field) => {\n                if (\n                    field.features.mandatory &&\n                    (get(record, field.name) == null || get(record, field.name) === '')\n                ) {\n                    errors = true;\n                    get(record, 'errors').add(field.name, intl.t('field.error.mandatory'));\n                    return set(this, 'saving', false);\n                }\n            });\n\n            if (!get(this, 'fields').findBy('name', 'enddate')) {\n                set(record, 'enddate', get(record, 'startdate'));\n            }\n\n            if (!get(record, 'user')) {\n                set(record, 'user', get(this, 'session.currentUser'));\n            }\n\n            if (!errors) {\n                return this._super(...arguments);\n            }\n        },\n    },\n\n    fetchAbsenceDaysForMultiday() {\n        return debounce(this, this._fetchAbsenceDaysForMultiday, 1000);\n    },\n\n    _fetchAbsenceDaysForMultiday() {\n        if (\n            !get(this, 'record.starttime') &&\n            isPresent(get(this, 'record.startdate')) &&\n            isPresent(get(this, 'record.enddate')) &&\n            moment(get(this, 'record.startdate')).isValid() &&\n            moment(get(this, 'record.enddate')).isValid()\n        ) {\n            const country =\n                '&country=' +\n                get(get(this, 'store').peekAll('company-info'), 'firstObject.country');\n\n            let url =\n                'absence/getDays?date=' +\n                get(this, 'record.startdate') +\n                '_' +\n                get(this, 'record.enddate') +\n                country;\n            url +=\n                '&userid=' +\n                (get(this, 'record.user')\n                    ? get(this, 'record.user.id')\n                    : get(this, 'session.currentUser.id'));\n            url += !isEmpty(get(this, 'record.abcensetype.id'))\n                ? '&absencetype=' + get(this, 'record.abcensetype.id')\n                : '';\n            return this.Collector.ttapi({\n                url,\n            }).then((back) => {\n                return set(this, 'record.dayamount', back.days);\n            });\n        }\n    },\n\n    fecthWorkhoursForSingleDay() {\n        if (\n            isPresent(get(this, 'record.startdate')) &&\n            moment(get(this, 'record.startdate')).isValid()\n        ) {\n            return this.Collector.ttapi({\n                url:\n                    '/workdayCalendar/workingHours?date=' +\n                    get(this, 'record.startdate') +\n                    '&userid=' +\n                    get(this, 'record.user.id') +\n                    '&worktimegroup=' +\n                    (get(this, 'record.user')\n                        ? get(this, 'record.user.worktimegroup.id')\n                        : get(this, 'session.currentUser.worktimegroup.id')),\n            }).then((back) => {\n                return set(this, 'record.absence_hours', back / 60);\n            });\n        }\n    },\n});\n","import Controller, { inject as controller } from '@ember/controller';\nimport { computed, set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    saved: controller('saved'),\n    modelAlias: alias('model'),\n\n    settings: computed(function () {\n        // if hour-type adding\n        let ret;\n        if (this.Collector.testNeedsOne('products.absences_hours')) {\n            ret = {\n                form: 'abcense',\n                skip: ['dayamount', 'status', 'enddate'],\n                mandatory: ['startdate', 'absence_hours'],\n            };\n        } else {\n            ret = {\n                form: 'abcense',\n                skip: ['dayamount', 'status', 'enddate'],\n                mandatory: ['starttime', 'endtime', 'startdate'],\n            };\n        }\n        return ret;\n    }),\n\n    actions: {\n        recordSaved(settings, record) {\n            set(this, 'saved.model', record);\n            set(this, 'saved.hideAddLinks', true);\n            return this.transitionToRoute('saved');\n        },\n        cancel() {\n            return this.transitionToRoute('abcenses.index');\n        },\n    },\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend();\n","export default Ember.HTMLBars.template({\"id\":\"yr/sa3gm\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.abcense\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"abcenses.index\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"abcenses/add/abcense-record-comp\\\",null,[[\\\"form\\\",\\\"settings\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"abcense\\\",[24,[\\\"settings\\\"]],\\\"recordSaved\\\",\\\"cancel\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/add/template.hbs\"}});","/*eslint-disable ember/named-functions-in-promises */\nimport { inject as controller } from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { computed, get, set } from '@ember/object';\nimport { A } from '@ember/array';\nimport GeneralAddController from '../../../controllers/general-add';\n\nconst AbcensesEditController = GeneralAddController.extend({\n    saved: controller(),\n\n    edit: true,\n    abcensesAlias: alias('model'),\n    fieldSettings: A({\n        edit: true,\n    }),\n\n    settings: computed('model', function () {\n        // if hour-type adding\n        let ret;\n        if (\n            get(this, 'model.starttime') ||\n            (get(this, 'model.endtime') && get(this, 'model.dayamount') === 0) ||\n            !get(this, 'model.dayamount')\n        ) {\n            if (this.Collector.testNeedsOne('products.absences_hours')) {\n                ret = {\n                    form: 'abcense',\n                    skip: ['dayamount', 'status', 'enddate'],\n                    mandatory: ['absence_hours', 'startdate'],\n                };\n            } else {\n                ret = {\n                    form: 'abcense',\n                    skip: ['dayamount', 'status', 'enddate'],\n                    mandatory: ['starttime', 'endtime', 'startdate'],\n                };\n            }\n        } else {\n            ret = {\n                form: 'abcense',\n                skip: ['starttime', 'endtime', 'status', 'addon_frnvaro_timmar', 'absence_hours'],\n                mandatory: ['startdate', 'enddate', 'dayamount'],\n            };\n        }\n        return ret;\n    }),\n\n    multipleDays: computed('model', function () {\n        if (\n            get(this, 'model.starttime') ||\n            (get(this, 'model.endtime') && get(this, 'model.dayamount') === 0) ||\n            !get(this, 'model.dayamount')\n        ) {\n            return false;\n        } else {\n            return true;\n        }\n    }),\n\n    actions: {\n        recordSaved(settings, record) {\n            set(this, 'saved.model', record);\n            set(this, 'saved.hideAddLinks', true);\n            if (get(this, 'afterSave')) {\n                return this.transitionToRoute('saved').then((newRoute) => {\n                    return set(newRoute.controller, 'afterSave', get(this, 'afterSave'));\n                });\n            } else {\n                return this.transitionToRoute('saved');\n            }\n        },\n        cancel() {\n            if (get(this, 'afterSave')) {\n                const afterSave = get(this, 'afterSave');\n                if (typeof afterSave === 'object') {\n                    return this.transitionToRoute(afterSave.route, afterSave.params);\n                }\n                return this.transitionToRoute(get(this, 'afterSave'));\n            } else {\n                return this.transitionToRoute('abcenses.index');\n            }\n        },\n    },\n});\nexport default AbcensesEditController;\n","import GeneralAddRoute from '../../../routes/general-add';\nimport { set } from '@ember/object';\n\nconst AbcensesEditRoute = GeneralAddRoute.extend({\n    controllerName: 'abcenses/edit',\n    modelName: 'abcense',\n    edit: true,\n\n    beforeModel(transition) {\n        this._super();\n        const controller = this.controllerFor('abcenses/edit');\n        if (transition.from && transition.from.name === 'timetracker.comp-report') {\n            return set(controller, 'afterSave', 'timetracker.comp-report');\n        } else if (transition.from && transition.from.name === 'timetracker.aggregated.rows') {\n            return set(controller, 'afterSave', {\n                route: 'timetracker.aggregated.rows',\n                params: transition.from.params.date,\n            });\n        } else {\n            if (this.Collector.testNeeds(['mobileView', 'userlevel=1'])) {\n                return set(controller, 'afterSave', 'timetracker.week-report');\n            } else {\n                return set(controller, 'afterSave', 'abcenses');\n            }\n        }\n    },\n});\n\nexport default AbcensesEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"+Tc5xZcd\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.abcense\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"abcenses.index\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"abcenses/add/abcense-record-comp\\\",null,[[\\\"form\\\",\\\"settings\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\",\\\"record\\\",\\\"multipleDays\\\"],[\\\"abcense\\\",[24,[\\\"settings\\\"]],\\\"recordSaved\\\",\\\"cancel\\\",[24,[\\\"model\\\"]],[24,[\\\"multipleDays\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/edit/template.hbs\"}});","import Controller from '@ember/controller';\nimport { set, computed, get } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport moment from 'moment';\nimport EmberObject from '@ember/object';\nimport { A } from '@ember/array';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    gui: service(),\n    queryParams: ['date', 'user', 'page', 'group', 'employer', 'worktimegroup', 'project'],\n    form: 'abcense',\n    user: null,\n    limit: 25,\n    page: 1,\n    group: null,\n    employer: null,\n    superior: null,\n    worktimegroup: null,\n    localStorageKey: 'absencesganttcalendar_defaultColumns',\n    init() {\n        this._super(...arguments);\n        set(this, 'colorFields', ['abcensetype.id']);\n    },\n    users: alias('model.users'),\n    unFilteredModel: alias('model.absences'),\n    calendarRows: computed('model.absences.@each.{startdate,enddate}', function () {\n        if (get(this, 'model.showTeamCalendar')) return this.mapTeamData(get(this, 'model.data'));\n\n        if (get(this, 'model.users.user') && get(this, 'model.users.user').length !== 0) {\n            let mapped = this.mapAbsences(\n                get(this, 'model.absences'),\n                get(this, 'model.users.user'),\n            );\n            return mapped.absences;\n        }\n        return A([]);\n    }),\n    pageCount: computed('users', 'limit', function () {\n        return Math.ceil(get(this, 'users.count') / get(this, 'limit'));\n    }),\n\n    filters: computed(function () {\n        return A([\n            EmberObject.create({\n                field: 'startdate',\n                type: 'date',\n                form: 'abcense',\n                name: 'startdate',\n                value: get(this, 'date'),\n            }),\n            EmberObject.create({\n                field: 'user',\n                type: 'database',\n                form: 'abcense',\n                name: 'user',\n                value: get(this, 'user'),\n            }),\n\n            EmberObject.create({\n                field: 'group',\n                type: 'database',\n                form: 'user',\n                name: 'group',\n                value: get(this, 'group'),\n                extra: true,\n            }),\n            EmberObject.create({\n                field: 'employer',\n                type: 'database',\n                form: 'user',\n                name: 'employer',\n                value: get(this, 'employer'),\n                extra: true,\n            }),\n            EmberObject.create({\n                field: 'superior',\n                type: 'database',\n                form: 'user',\n                name: 'superior',\n                value: get(this, 'superior'),\n                extra: true,\n            }),\n            EmberObject.create({\n                field: 'worktimegroup',\n                type: 'database',\n                form: 'user',\n                name: 'worktimegroup',\n                value: get(this, 'worktimegroup'),\n                extra: true,\n            }),\n        ]);\n    }),\n    actions: {\n        filterChanged(value, field) {\n            if (['group', 'employer', 'worktimegroup', 'superior'].includes(field)) {\n                if (value) {\n                    value = get(value, 'id');\n                } else {\n                    value = null;\n                }\n            }\n            set(this, field, value);\n            set(this, 'page', 1);\n        },\n\n        catchActions(action, params) {\n            var c, cols, fields;\n            if (action === 'fieldsUpdate') {\n                c = get(this, 'Collector');\n                cols = [];\n                params.forEach(function (col) {\n                    return cols.push(col.ext);\n                });\n                fields = c.fieldArray(get(this, 'form'), cols);\n                return set(this, 'ganttFields', fields);\n            }\n        },\n\n        openAbsenceModal(day, user) {\n            let userRecord = this.store.peekRecord('user', get(user, 'id'));\n            let params = {\n                startdate: day,\n                enddate: day,\n                user: userRecord,\n            };\n            this.store.createRecord('abcense', params);\n            this.transitionToRoute({ queryParams: { modal: ['abcense', 'new'] } });\n        },\n\n        openEditor(row) {\n            this.transitionToRoute({ queryParams: { modal: ['abcense', get(row, 'id')] } });\n        },\n    },\n\n    mapTeamData(data) {\n        let ret = A([]);\n        data.users.forEach((user) => {\n            let rows = this.perDate(data.abcenses.filterBy('user', user.id));\n            ret.push(\n                EmberObject.create({\n                    main: EmberObject.create({ ...user, ...user.values }),\n                    rows: rows,\n                }),\n            );\n        });\n        return ret;\n    },\n\n    mapAbsences(absences, users) {\n        let ret = A([]);\n        users.forEach((user) => {\n            let rows = this.perDate(absences.filterBy('user.id', user.id.toString()));\n            ret.push(\n                EmberObject.create({\n                    main: EmberObject.create({ ...user, ...user.values }),\n                    rows: rows,\n                }),\n            );\n        });\n        return { absences: ret, users: users };\n    },\n\n    perDate(rows) {\n        let perDate = {};\n        rows.forEach((item) => {\n            const date = get(item, 'startdate');\n            if (!perDate[date]) {\n                perDate[date] = [];\n            }\n            if (get(item, 'enddate')) {\n                let i = 1;\n                const moment_date = moment(date);\n                const diff = moment(get(item, 'enddate')).diff(moment_date, 'day');\n                perDate[date].push(item);\n                while (i <= diff) {\n                    const new_date = moment_date.add(1, 'day').format('YYYY-MM-DD');\n                    if (!perDate[new_date]) {\n                        perDate[new_date] = [];\n                    }\n                    perDate[new_date].push(item);\n                    i++;\n                }\n            } else {\n                perDate[date].push(item);\n            }\n        });\n        return perDate;\n    },\n\n    startdate:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().startOf('week').add(8, 'weeks').format('YYYY-MM-DD'),\n});\n","/* eslint-disable ember/named-functions-in-promises */\nimport Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport RSVP from 'rsvp';\nimport { isNone } from '@ember/utils';\n\nexport default Route.extend({\n    store: service(),\n    collector: service('collector-service'),\n    capi: service(),\n    ttapi: service(),\n\n    // Defining query parameters and specifying that the model should refresh when they change\n    queryParams: {\n        startdate: { refreshModel: true },\n        user: { refreshModel: true },\n        page: { refreshModel: true },\n        group: { refreshModel: true },\n        employer: { refreshModel: true },\n        superior: { refreshModel: true },\n        worktimegroup: { refreshModel: true },\n    },\n\n    // The main model hook that fetches data based on the route's parameters\n    model(params) {\n        const c = get(this, 'collector');\n\n        // Building user parameters based on query parameters\n        const userParams = { offset: params.page === 1 ? 0 : 25 * (params.page - 1) };\n        Object.keys(params).forEach((item) => {\n            if (item === 'user' && params.user) {\n                // If 'user' parameter is present, set the 'id' in userParams\n                userParams.id = params.user;\n            } else if (c.testNeedsOne('user.' + item)) {\n                // If the item is needed, add it to userParams\n                userParams[item] = params[item];\n            }\n        });\n\n        // Merging default parameters with user-provided parameters\n        const allParams = Object.assign({ limit: 25, order: 'lastname,firstname' }, userParams);\n\n        // Constructing the query string for the API request\n        let queryString = '';\n        Object.entries(allParams).forEach((param) => {\n            if (isNone(param[1])) return;\n\n            if (!queryString) queryString += `?${param[0]}=${param[1]}`;\n            else queryString += `&${param[0]}=${param[1]}`;\n        });\n\n        // Checking user permissions to determine which calendar to show\n        const canSeeOnlyOwnAbsences = this.collector.testNeeds(['abcense.user@hide']);\n        const showTeamCalendar =\n            canSeeOnlyOwnAbsences && this.collector.testNeeds(['products.team_calendar']);\n\n        // If the user can only see their own absences but has access to the team calendar\n        if (showTeamCalendar) {\n            return RSVP.hash({\n                showTeamCalendar: true,\n                data: this.fetchTeamAbsences(params),\n            });\n        }\n\n        // Fetching users from the API\n        let userPromise = this.capi.request('abcenses/user' + queryString);\n\n        // Fetch absences in batches\n        return RSVP.hash({\n            showTeamCalendar: false,\n            users: userPromise,\n            absences: this.fetchAbsences(userPromise, params),\n        });\n    },\n\n    // Method to fetch team absences from TTapi\n    fetchTeamAbsences(params) {\n        return this.ttapi.request(`absence/team?startdate_enddate=${params.startdate}`);\n    },\n\n      // Fetch absences for all users in batches of 100 records\n      fetchAbsences(usersPromise, params) {\n        return usersPromise.then((users) => {\n          let allAbsences = [];\n          let offset = 0;\n          const limit = 100;\n          const userIds = users.user.mapBy('id').join(',');\n\n          // Start fetching batches\n          return this.fetchBatch(allAbsences, userIds, params.startdate, limit, offset);\n        });\n      },\n\n      fetchBatch(allAbsences, userIds, startdate, limit, offset) {\n        return get(this, 'store')\n          .query('abcense', {\n            user: userIds,\n            startdate_enddate: startdate,\n            order: 'startdate',\n            sideload: true,\n            limit: limit,\n            offset: offset,\n          })\n          .then((batch) => {\n            allAbsences.pushObjects(batch.toArray());\n            if (get(batch, 'length') === limit) {\n              offset += limit;\n              // Recursively fetch the next batch\n              return this.fetchBatch(allAbsences, userIds, startdate, limit, offset);\n            } else {\n              // Return all collected absences\n              return allAbsences;\n            }\n          });\n      },\n});\n","export default Ember.HTMLBars.template({\"id\":\"BiYMe8ii\",\"block\":\"{\\\"symbols\\\":[\\\"calendar\\\",\\\"row\\\",\\\"cell\\\",\\\"title\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"gantt-calendar \\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"customFullScreen\\\"]],\\\"report-main-zoomed\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"form-column-selector\\\",null,[[\\\"form\\\",\\\"shownColumns\\\",\\\"localStorageKey\\\",\\\"fullscreenmode\\\",\\\"bubbleActions\\\"],[[24,[\\\"form\\\"]],[24,[\\\"shownColumns\\\"]],\\\"absencesganttcalendar_defaultColumns\\\",\\\"custom\\\",\\\"catchActions\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"calendar-compact\\\",null,[[\\\"data\\\",\\\"range\\\"],[[24,[\\\"calendarRows\\\"]],[24,[\\\"startdate\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[23,1,[\\\"months-header\\\"]],false],[0,\\\"\\\\n        \\\"],[1,[23,1,[\\\"weeks-header\\\"]],false],[0,\\\"\\\\n        \\\"],[1,[23,1,[\\\"days-header\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"row\\\"]],\\\"expected `calendar.row` to be a contextual component but found a string. Did you mean `(component calendar.row)`? ('tt4/pods/abcenses/gantt/template.hbs' @ L9:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"title\\\"]],\\\"expected `row.title` to be a contextual component but found a string. Did you mean `(component row.title)`? ('tt4/pods/abcenses/gantt/template.hbs' @ L10:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"user-icon\\\",[[23,4,[\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],[[\\\"size\\\",\\\"inline\\\"],[\\\"sm\\\",true]]],false],[0,\\\" \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"user\\\",\\\"abcense\\\",[23,4,[]]]]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"cell\\\"]],\\\"expected `row.cell` to be a contextual component but found a string. Did you mean `(component row.cell)`? ('tt4/pods/abcenses/gantt/template.hbs' @ L13:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"bar\\\"]],\\\"expected `cell.bar` to be a contextual component but found a string. Did you mean `(component cell.bar)`? ('tt4/pods/abcenses/gantt/template.hbs' @ L14:C19) \\\"],null]],[[\\\"startDateField\\\",\\\"colorFields\\\"],[\\\"startdate\\\",[24,[\\\"colorFields\\\"]]]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[23,3,[\\\"rows\\\",\\\"firstObject\\\",\\\"dayamount\\\"]],[28,\\\"not-eq\\\",[[23,3,[\\\"rows\\\",\\\"firstObject\\\",\\\"dayamount\\\"]],1],null]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,3,[\\\"rows\\\",\\\"firstObject\\\",\\\"dayamount\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"general.days\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[\\\"rows\\\",\\\"firstObject\\\",\\\"absence_hours\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"format-hours\\\",[[28,\\\"sum-field\\\",null,[[\\\"field\\\",\\\"rows\\\"],[[28,\\\"hash\\\",null,[[\\\"type\\\",\\\"name\\\"],[\\\"hours\\\",\\\"absence_hours\\\"]]],[23,3,[\\\"rows\\\"]]]]]],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"popover-content-fields\\\"]],\\\"expected `cell.popover-content-fields` to be a contextual component but found a string. Did you mean `(component cell.popover-content-fields)`? ('tt4/pods/abcenses/gantt/template.hbs' @ L21:C18) \\\"],null]],[[\\\"fields\\\",\\\"onEdit\\\",\\\"form\\\"],[[24,[\\\"ganttFields\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"openEditor\\\"],null],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"model\\\",\\\"showTeamCalendar\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"plus-button\\\"]],\\\"expected `cell.plus-button` to be a contextual component but found a string. Did you mean `(component cell.plus-button)`? ('tt4/pods/abcenses/gantt/template.hbs' @ L23:C22) \\\"],null]],[[\\\"onAdd\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"openAbsenceModal\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n    \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/gantt/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default Route.extend({\n    model(params) {\n        return params;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"x4SEXefw\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"abcense\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/history/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed } from '@ember/object';\nimport { set, get } from '@ember/object';\nimport { A } from '@ember/array';\nimport { typeOf } from '@ember/utils';\n\nexport default Component.extend({\n    ttapi: service(),\n    flags: service(),\n    dialogs: service(),\n    store: service(),\n    intl: service(),\n\n    classNames: ['holiday-details-box'],\n\n    numberOfSeasons: 5,\n\n    userDetails: computed('user', async function () {\n        return await this.getUserDetails();\n    }),\n\n    translated_columns: computed('showHistoryColumns', function () {\n        return this.showHistoryColumns.map((column) => {\n            return this.intl.t('holiday_list.history.' + column);\n        });\n    }),\n\n    async didInsertElement() {\n        set(this, 'yearsArr', A());\n\n        const data = await get(this, 'userDetails');\n\n        let ret = [];\n\n        for (var row of data) {\n            ret.push(row.users[0]);\n        }\n        set(this, 'data', ret);\n        set(this, 'historyType', this.historyType ? this.historyType : 'table');\n\n        set(this, 'showHistoryColumns', ['created', 'season', 'description', 'days', 'deducts']);\n        set(this, 'historyFilters', { type: 'both' });\n        this.historyRowActions = [\n            { action: 'remove', icon: 'move move-Delete' },\n            { action: 'edit', icon: 'move move-Pencil' },\n        ];\n        if (this.historyType === 'list') await this.showHolidayPayList();\n    },\n\n    actions: {\n        toggleAllSeasons() {\n            if (this.toggledSeasons) {\n                set(this, 'yearsArr', []);\n            } else {\n                let startYear = moment()\n                    .subtract(this.numberOfSeasons - 1, 'year')\n                    .format('YYYY');\n                let arr = [];\n                for (var i = 0; i < this.numberOfSeasons; i++) {\n                    arr.pushObject(moment(startYear).add(i, 'year').format('YYYY'));\n                }\n                set(this, 'yearsArr', arr);\n            }\n            this.notifyPropertyChange('yearsArr');\n            this.toggleProperty('toggledSeasons');\n        },\n        showDetailsForSeason(year) {\n            let arr = get(this, 'yearsArr');\n            if (arr.indexOf(year) == -1) {\n                arr.pushObject(year);\n            } else {\n                arr.removeObject(year);\n            }\n            this.notifyPropertyChange('yearsArr');\n        },\n        filterHistory(name, e) {\n            this.filterHistory(name, e.target.value);\n        },\n\n        async changeType(type) {\n            if (type === 'list' && this.historyType !== 'list') await this.showHolidayPayList();\n            return set(this, 'historyType', type);\n        },\n\n        async historyRowAction(action, row) {\n            if (action === 'remove') {\n                const con = await this.dialogs.confirm(\n                    get(this, 'intl').t('report.confirm_delete'),\n                );\n                if (!con) return;\n                set(\n                    this,\n                    'filteredHistoryData',\n                    this.filteredHistoryData.filter((el) => el.id !== row.id),\n                );\n                this.removeRecord?.(row);\n            }\n            if (action === 'edit') {\n                this.editRecord?.(row);\n            }\n        },\n    },\n    filterHistory(name, value) {\n        this.historyFilters[name] = value;\n\n        let historydata = get(this, 'historyData');\n\n        historydata = historydata.filter((el) => {\n            let ret = true;\n            if (this.historyFilters.type === 'automatic') {\n                ret = el.type === 'absence';\n            }\n\n            if (this.historyFilters.type === 'manual') {\n                ret = el.type === 'manual';\n            }\n            return ret;\n        });\n\n        set(this, 'filteredHistoryData', historydata);\n    },\n\n    async showHolidayPayList() {\n        let historyData = [];\n\n        set(this, 'historyDataLoading', true);\n        set(this, 'historyData', null);\n        set(this, 'historyFilters.type', 'both');\n\n        try {\n            const absences = await this.getAbsenceRows();\n            const holidayPays = await this.getHolidayPays();\n            historyData = absences?.concat(holidayPays);\n        } catch (e) {\n            let message = e.message || 'Server error';\n            this.dialogs.alert(message);\n        }\n\n        set(this, 'historyDataLoading', false);\n        // Sort by date\n        set(\n            this,\n            'historyData',\n            historyData?.sort((el1, el2) => (el1.sortdate < el2.sortdate ? 1 : -1)),\n        );\n        set(this, 'filteredHistoryData', this.historyData);\n        this.filterHistory('type', 'both');\n    },\n\n    async getAbsenceRows() {\n        const params = {\n            user: this.user.id,\n            startdate:\n                moment()\n                    .subtract(this.numberOfSeasons - 1, 'year')\n                    .format('YYYY-MM-DD') +\n                '_' +\n                moment().format('YYYY-MM-DD'),\n            limit: 100,\n            'abcensetype[usesholiday]': 'holidaypay',\n            sideload: ['abcensetype.usesholiday'],\n        };\n        const absences = await this.store.query('abcense', params);\n        if (!absences) return [];\n        let absenceArr = A([]);\n\n        for (const row of absences.toArray()) {\n            const absenceSeasonArray = await this.ttapi.request(\n                'api/getAbsenceSeason?id=' + this.user.id + '&absenceid=' + get(row, 'id'),\n            );\n            for (const resp of absenceSeasonArray) {\n                absenceArr.pushObject({\n                    id: get(row, 'id'),\n                    created: moment(get(row, 'row_info.created')).format('DD.MM.YYYY'),\n                    sortdate: get(row, 'row_info.created'),\n                    season: resp['season'],\n                    description: get(row, 'description'),\n                    days: resp['used'],\n                    deducts: true,\n                    type: 'absence',\n                });\n            }\n        }\n        return absenceArr;\n    },\n\n    async getUserDetails() {\n\n        // Get past 5 years seasons\n        let result = [];\n        const url = 'api/getMultipleSeasonsUsersWithHolidays';\n        let res = await this.Collector.ttapi({\n            url: url,\n            data: {\n                id: this.user.id,\n                start: moment().add({year: 1}).format('YYYY-05-02'),\n                country: 'fi',\n                years: this.numberOfSeasons,\n            },\n        });\n        result = res;\n\n        // Get all seasons if the flag is set\n        if (this.flags.test('holiday-details-modal-v-2')) {\n            const url = 'api/getAllUserHolidaysWithDetails';\n            let resFlag = await this.Collector.ttapi({\n                url: url,\n                data: {\n                    id: this.user.id,\n                    country: 'fi',\n                },\n            });\n            \n            try {\n                // Check if there are new seasons\n                let newSeasons = resFlag.filter(row => result.filter(rowR => rowR.users[0]?.holidayYear === row?.users[0]?.holidayYear).length === 0);\n                if(newSeasons.length > 0) {\n                    result = result.concat(newSeasons);\n                }\n                // Arrange the seasons in order\n                result = result.sort((a, b) => {\n                    return a.users[0].holidayYear - b.users[0].holidayYear;\n                });\n                return result;\n            } catch(err) {\n                return result;\n            }\n        }\n\n        return result;\n    },\n\n\n    async getHolidayPays() {\n        const holidayPays = await this.store.query('holidaypay', { user: this.user.id });\n        if (!holidayPays) return [];\n\n        return holidayPays.map((historyrow) => {\n            return {\n                id: get(historyrow, 'id'),\n                created: moment(get(historyrow, 'row_info.created')).format('DD.MM.YYYY'),\n                sortdate: get(historyrow, 'row_info.created'),\n                season:\n                    typeOf(get(historyrow, 'date')) === 'string'\n                        ? get(historyrow, 'date').substr(0, 4)\n                        : get(historyrow, 'date')?.value,\n                description: get(historyrow, 'description'),\n                days: get(historyrow, 'days'),\n                deducts: get(historyrow, 'deducts'),\n                type: 'manual',\n            };\n        });\n    },\n});\n","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { set, get } from '@ember/object';\n\nexport default Component.extend({\n    ttapi: service(),\n    flags: service(),\n\n    tagName: '',\n\n    async didInsertElement() {\n        set(this, 'loading', true);\n        let user = get(this, 'data');\n        const year = get(this, 'year');\n\n        // old data\n        const url = 'api/getUserHolidaySummary?start=';\n\n        const oldArr = await get(this, 'ttapi').request(\n            url +\n                year +\n                '-05-02&id=' +\n                user[0]['id'] +\n                (this.isHolidayReport ? '&absenceType=vacation' : ''),\n        );\n\n        // current data\n        const currentYear = +year + 1;\n\n        const currentArr = await get(this, 'ttapi').request(\n            url +\n                currentYear +\n                '-05-02&id=' +\n                user[0]['id'] +\n                (this.isHolidayReport ? '&absenceType=vacation' : ''),\n        );\n\n        //const data = await get(this, 'data');\n        //let currentArr = data[moment(year+\"-01-01\").add(1, 'year').format(\"YYYY\")];\n        //let oldArr = data[year];\n\n        let currentDays = currentArr['abcenses'].filter((row) => {\n            return row['lastseason'] != 0;\n        });\n\n        // Sort current days according to startdate field\n        currentDays = currentDays.sort((a, b) => {\n            return new Date(a['startdate']) < new Date(b['startdate']) ? 1 : -1;\n        });\n\n        let oldDays = oldArr['abcenses'].filter((row) => {\n            return row['thisseason'] != 0;\n        });\n\n        // Sort old days according to startdate field\n        oldDays = oldDays.sort((a, b) => {\n            return new Date(a['startdate']) < new Date(b['startdate']) ? 1 : -1;\n        });\n\n        let bookedOldDays = [];\n        let bookedCurrentDays = [];\n        let totalHolidays = [];\n        let totals = [];\n\n        let totalOldHolidays = [];\n        let totalCurrentHolidays = [];\n\n        for (var oldrow of oldDays) {\n            if (get(oldrow, 'startdate') > moment().format('YYYY-MM-DD')) {\n                bookedOldDays.pushObject(oldrow);\n                //console.log(\"added \"+ get(oldrow, 'startdate')+\"_\"+get(oldrow,'enddate')+\" to OLD booked\")\n            } else {\n                totalOldHolidays.pushObject(oldrow);\n            }\n        }\n        for (var currentRow of currentDays) {\n            set(currentRow, 'current', true);\n            if (get(currentRow, 'startdate') > moment().format('YYYY-MM-DD')) {\n                //console.log(\"added \"+ get(currentRow, 'startdate')+\"_\"+get(currentRow,'enddate')+\" to CURRENT booked\")\n                bookedCurrentDays.pushObject(currentRow);\n            } else {\n                totalCurrentHolidays.pushObject(currentRow);\n            }\n        }\n\n        const totals1 = totalOldHolidays.reduce((total, row) => total + row.thisseason, 0);\n        const totals2 = totalCurrentHolidays.reduce((total, row) => total + row.lastseason, 0);\n\n        totals = totals1 + totals2;\n\n        totalHolidays = totalOldHolidays.concat(totalCurrentHolidays);\n\n        const bookedSum1 = bookedOldDays.reduce((total, row) => total + row.thisseason, 0);\n        const bookedSum2 = bookedCurrentDays.reduce((total, row) => total + row.lastseason, 0);\n\n        set(this, 'totalHolidays', totalHolidays);\n        set(this, 'bookedThisSeason', bookedOldDays.concat(bookedCurrentDays));\n        set(this, 'totalSums', totals);\n\n        set(this, 'bookedSum', bookedSum1 + bookedSum2);\n\n        set(this, 'loading', false);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"SoKwfVFJ\",\"block\":\"{\\\"symbols\\\":[\\\"abRow\\\",\\\"abRow\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[10,\\\"class\\\",\\\"dropshadow-row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"empty-th centered-text\\\"],[10,\\\"colspan\\\",\\\"5\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"totalHolidays\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"tr\\\",true],[10,\\\"class\\\",\\\"dropshadow-row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"used-row no-border\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.used\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"used-row top-row no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"used-row centered-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.startdate\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"used-row centered-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.enddate\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"used-row centered-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.count\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"totalHolidays\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row centered-text no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row centered-text\\\"],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",\\\"startdate\\\",[23,2,[\\\"startdate\\\"]]]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row centered-text\\\"],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",\\\"startdate\\\",[23,2,[\\\"enddate\\\"]]]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row centered-text\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"current\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,2,[\\\"lastseason\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,2,[\\\"thisseason\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"],[7,\\\"tr\\\",true],[11,\\\"class\\\",[29,[\\\"sub-table-end \\\",[28,\\\"unless\\\",[[24,[\\\"bookedThisSeason\\\"]],\\\"bottom-shadow-row\\\"],null]]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row centered-text no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row centered-text upper-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row upper-border total-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.total\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row centered-text upper-border\\\"],[8],[1,[22,\\\"totalSums\\\"],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"bookedThisSeason\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[11,\\\"class\\\",[28,\\\"unless\\\",[[24,[\\\"totalHolidays\\\"]],\\\"dropshadow-row\\\"],null]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"booked-row no-border\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.booked\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"booked-row top-row no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.startdate\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.enddate\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.count\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"bookedThisSeason\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text\\\"],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",\\\"startdate\\\",[23,1,[\\\"startdate\\\"]]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text\\\"],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",\\\"startdate\\\",[23,1,[\\\"enddate\\\"]]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"current\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,1,[\\\"lastseason\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,1,[\\\"thisseason\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[7,\\\"tr\\\",true],[10,\\\"class\\\",\\\"sub-table-end bottom-shadow-row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text upper-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row upper-border total-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.total\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text upper-border\\\"],[8],[1,[22,\\\"bookedSum\\\"],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[28,\\\"or\\\",[[24,[\\\"totalHolidays\\\"]],[24,[\\\"bookedThisSeason\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"tr\\\",true],[10,\\\"class\\\",\\\"dropshadow-row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"empty-th centered-text\\\"],[10,\\\"colspan\\\",\\\"5\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.no-rows\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/holiday-details-comp/details-row-comp/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"o6bj2s6d\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\",\\\"row\\\",\\\"columns\\\",\\\"rowActions\\\",\\\"button\\\",\\\"button\\\",\\\"column\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[23,0,[\\\"isHolidayReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu flex-submenu\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,0,[\\\"historyType\\\"]],\\\"list\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"changeType\\\",\\\"list\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"holiday.details-comp.list\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,0,[\\\"historyType\\\"]],\\\"table\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"changeType\\\",\\\"table\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"holiday.details-comp.table\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"userDetails\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"historyType\\\"]],\\\"list\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"historyDataLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-submenu\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"defaults.field.user\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"get\\\",[[23,0,[\\\"user\\\"]],\\\"firstname\\\"],null],false],[0,\\\"  \\\"],[1,[28,\\\"get\\\",[[23,0,[\\\"user\\\"]],\\\"lastname\\\"],null],false],[9],[0,\\\"  \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"history.action.show_data\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[10,\\\"name\\\",\\\"worktimebank-entry-filter\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterHistory\\\",\\\"type\\\"],null]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"both\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.entry_type.both\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"manual\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.entry_type.manual\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"automatic\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-details.entry_type.automatic\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"translated_columns\\\",\\\"hideSort\\\"],[[23,0,[\\\"showHistoryColumns\\\"]],[23,0,[\\\"filteredHistoryData\\\"]],[23,0,[\\\"historyRowActions\\\"]],[23,0,[\\\"translated_columns\\\"]],true]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[11,\\\"class\\\",[29,[[23,2,[\\\"class\\\"]]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,7,[]],\\\"deducts\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[]],\\\"date\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"moment-format\\\",[[28,\\\"get\\\",[[23,2,[]],[23,7,[]]],null],\\\"DD.MM.YYYY\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"get\\\",[[23,2,[]],[23,7,[]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"if\\\",[[28,\\\"eq\\\",[[28,\\\"get\\\",[[23,2,[]],[23,7,[]]],null],true],null],[28,\\\"t\\\",[\\\"worktimebank.option.deducts\\\"],null],[28,\\\"t\\\",[\\\"worktimebank.option.adds\\\"],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[7]},null],[4,\\\"if\\\",[[23,4,[\\\"length\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"type\\\"]],\\\"manual\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-row-icon invisible\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"row_info\\\",\\\"status\\\"]],\\\"locked\\\"],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"lockedActions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[[23,6,[\\\"icon\\\"]]]]],[3,\\\"action\\\",[[23,0,[]],\\\"historyRowAction\\\",[23,6,[\\\"action\\\"]],[23,2,[]]]],[8],[4,\\\"if\\\",[[23,6,[\\\"text\\\"]]],null,{\\\"statements\\\":[[0,\\\" \\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,6,[\\\"text\\\"]]]]],false],[0,\\\" \\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[23,4,[]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[[23,5,[\\\"icon\\\"]]]]],[3,\\\"action\\\",[[23,0,[]],\\\"historyRowAction\\\",[23,5,[\\\"action\\\"]],[23,2,[]]]],[8],[4,\\\"if\\\",[[23,5,[\\\"text\\\"]]],null,{\\\"statements\\\":[[0,\\\" \\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,5,[\\\"text\\\"]]]]],false],[0,\\\" \\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2,3,4]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-5\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"defaults.field.user\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"get\\\",[[23,0,[\\\"user\\\"]],\\\"firstname\\\"],null],false],[0,\\\"  \\\"],[1,[28,\\\"get\\\",[[23,0,[\\\"user\\\"]],\\\"lastname\\\"],null],false],[9],[0,\\\"  \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table general-report collapse-table\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"holiday_season.season\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.earned\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.used\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.booked\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.left\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[\\\"move  \\\",[28,\\\"if\\\",[[24,[\\\"toggledSeasons\\\"]],\\\"move-SortUp\\\",\\\"move-SortDown\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"toggleAllSeasons\\\"]],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"data\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"holidayYear\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isHolidayReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"allDays\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"usedDays\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"bookedDays\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"daysLeft\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"allHolidayPays\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"usedHolidayPays\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"bookedHolidayPays\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"availableHolidayPays\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"in-array\\\",[[23,1,[\\\"holidayYear\\\"]],[24,[\\\"yearsArr\\\"]]],null],\\\"move move-SortUp\\\",\\\"move move-SortDown\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"showDetailsForSeason\\\",[23,1,[\\\"holidayYear\\\"]]]],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[[23,1,[\\\"holidayYear\\\"]],[24,[\\\"yearsArr\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"abcenses/holiday-details-comp/details-row-comp\\\",null,[[\\\"data\\\",\\\"year\\\",\\\"isHolidayReport\\\"],[[24,[\\\"data\\\"]],[23,1,[\\\"holidayYear\\\"]],[23,0,[\\\"isHolidayReport\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/holiday-details-comp/template.hbs\"}});","import { A } from '@ember/array';\nimport EmberObject, { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { getOwner } from '@ember/application';\nimport { typeOf, isEmpty } from '@ember/utils';\n\nexport default Controller.extend({\n    store: service(),\n    Collector: service('collector-service'),\n    fileExports: service('file-exports'),\n    ttapi: service(),\n    intl: service(),\n    flags: service(),\n    session: service(),\n    dialogs: service(),\n\n    selectedYear: null,\n\n    user: null,\n    employer: null,\n    page: 1,\n    ignoreWhereNoDaysLeft: false,\n\n    results: null,\n\n    error: false,\n    saving: false,\n\n    init() {\n        this._super();\n        this.queryParams = [\n            'page',\n            'employer',\n            'user',\n            'selectedYear',\n            'group',\n            'worktimegroup',\n            'superior',\n        ];\n        this.columnList = [\n            'lastname',\n            'firstname',\n            'allHolidayPays',\n            'usedHolidayPays',\n            'bookedHolidayPays',\n            'availableHolidayPays',\n        ];\n        this.rowActions = [\n            { action: 'showDetails', icon: 'move move-Search', text: this.intl.t('general.edit') },\n        ];\n\n        if (moment().month() >= 3) {\n            set(this, 'selectedYear', '' + moment().year());\n        } else {\n            set(this, 'selectedYear', '' + (moment().year() - 1));\n        }\n    },\n\n    holidays: alias('model.data'),\n    params: alias('model.params'),\n\n    filters: computed(function () {\n        return A([\n            EmberObject.create({\n                field: 'employer',\n                type: 'database',\n                form: 'user',\n                name: 'employer',\n                value: this.employer,\n            }),\n            EmberObject.create({\n                field: 'user',\n                type: 'database',\n                form: 'worktime',\n                name: 'user',\n                value: this.user,\n            }),\n            EmberObject.create({\n                field: 'group',\n                type: 'database',\n                form: 'user',\n                name: 'group',\n                value: this.group,\n            }),\n            EmberObject.create({\n                field: 'worktimegroup',\n                type: 'database',\n                form: 'user',\n                name: 'worktimegroup',\n                value: this.worktimegroup,\n            }),\n            EmberObject.create({\n                field: 'superior',\n                type: 'database',\n                form: 'user',\n                name: 'superior',\n                value: this.superior,\n            }),\n        ]);\n    }),\n\n    dateStart: computed('selectedYear', function () {\n        if (get(this.store.peekAll('companyInfo'), 'firstObject.country') === 'se')\n            return get(this, 'selectedYear') + '-04-01';\n        return get(this, 'selectedYear') + '-05-02';\n    }),\n\n    years: computed(function () {\n        const ret = [];\n        let nextHolidaySeason = moment().year();\n\n        for (\n            let start = nextHolidaySeason,\n                year = start,\n                end = nextHolidaySeason - 3,\n                asc = start <= end;\n            asc ? year <= end : year >= end;\n            asc ? year++ : year--\n        ) {\n            ret.push({\n                value: '' + year,\n                text: this.intl.t('holiday_season') + ' (' + year + ')',\n            });\n        }\n\n        return ret;\n    }),\n\n    translated_columns: computed(function () {\n        const translatedColumns = [\n            'report.user.lastname',\n            'report.user.firstname',\n            'report.holidays.allHolidayPays',\n            'report.holidays.usedHolidayPays',\n            'report.holidays.bookedHolidayPays',\n            'report.holidays.availableHolidayPays',\n        ];\n        return translatedColumns.map((item) => {\n            return this.intl.t(item);\n        });\n    }),\n\n    pageCount: computed('holidays.count', function () {\n        return Math.ceil(get(this, 'holidays.count') / 25);\n    }),\n\n    actions: {\n        addHolidayPay() {\n            set(this, 'deductsValue', true);\n            set(\n                this,\n                'holidayPayRecord',\n                this.store.createRecord('holidaypay', { date: this.years[0] }),\n            );\n        },\n\n        async editHolidayPay(row) {\n            let rec = this.store.peekRecord('holidaypay', row.id);\n            if (!rec) rec = await this.store.findRecord('holidaypay', row.id);\n            if (typeOf(rec['date']) === 'string') {\n                rec['date'] = { value: rec['date'].substr(0, 4) };\n            }\n            set(this, 'deductsValue', !rec['deducts']);\n            set(this, 'holidayPayRecord', rec);\n        },\n\n        async removeHolidayPay(row) {\n            let rec = this.store.peekRecord('holidaypay', row.id);\n            if (!rec) rec = await this.store.findRecord('holidaypay', row.id);\n            await rec.destroyRecord();\n            this.refreshReport();\n        },\n\n        onFieldChange(field, value) {\n            set(this, 'holidayPayRecord.' + field, value);\n        },\n\n        filterChanged(value, fieldName) {\n            set(this, 'page', 1);\n            return set(this, fieldName, !value ? null : value);\n        },\n\n        setSelectedYear(value) {\n            set(this, 'page', 1);\n            return set(this, 'selectedYear', value);\n        },\n\n        action(action, rowid) {\n            if (action === 'showDetails') {\n                set(this, 'editUser', rowid);\n                set(this, 'showDetails', true);\n            } else if (action === 'checkedRows') {\n                if (get(this, 'Collector').testNeedsOne('holidaypay@edit')) {\n                    set(this, 'checkedRows', rowid);\n                }\n            }\n        },\n\n        async save() {\n            set(this, 'saving', true);\n            try {\n                const year = this.holidayPayRecord['date']['value'];\n                this.holidayPayRecord['date'] = this.holidayPayRecord['date']\n                    ? year + '-01-01'\n                    : moment().format('YYYY-MM-DD');\n                this.holidayPayRecord['deducts'] = !this.deductsValue;\n                if (!isEmpty(this.checkedRows)) {\n                    this.checkedRows.forEach(async (row) => {\n                        let record = await this.Collector.copyRecord(this.holidayPayRecord);\n                        record['user'] = await this.store.peekRecord('user', row.id);\n                        await record.save();\n                    });\n                    set(this, 'checkedRows', null);\n                } else {\n                    await this.holidayPayRecord.validate();\n                    if (!this.holidayPayRecord.isValid) {\n                        this.holidayPayRecord['date'] = { value: year };\n                        return set(this, 'saving', false);\n                    }\n                    await this.holidayPayRecord.save();\n                }\n                set(this, 'saving', false);\n                this.refreshReport();\n            } catch (e) {\n                set(this, 'saving', false);\n                this.dialogs.alert(e.message);\n            }\n        },\n\n        async export_csv() {\n            set(this, 'showLoader', true);\n\n            const data = await this.getExportData();\n            const translated_columns = this.translated_columns;\n\n            const columns = this.columnList.map((ext, index) => {\n                return { name: translated_columns[index], ext: ext, obj: {} };\n            });\n\n            await this.fileExports.createCsv(this.form, data, columns);\n            set(this, 'showLoader', false);\n        },\n    },\n\n    async getExportData() {\n        const url = 'api/getUsersWithHolidays';\n        const params = this.model.params;\n        params.limit = 'all';\n        delete params.offset;\n        const response = await this.Collector.ttapi({\n            url: url,\n            data: params,\n        });\n\n        return response.users;\n    },\n\n    refreshReport() {\n        let controller = getOwner(this).lookup('controller:application');\n        let route = getOwner(this).lookup('route:' + get(controller, 'currentRouteName'));\n        route.refresh();\n        set(this, 'holidayPayRecord', null);\n        set(this, 'historyType', 'list');\n    },\n});\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * DS207: Consider shorter variations of null checks\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nimport { inject as service } from '@ember/service';\nimport Route from '@ember/routing/route';\nimport { get } from '@ember/object';\n\nexport default Route.extend({\n    store: service(),\n    flags: service(),\n\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        selectedYear: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n        worktimegroup: {\n            refreshModel: true,\n        },\n        superior: {\n            refreshModel: true,\n        },\n        ignoreWhereNoDaysLeft: {\n            refreshModel: true,\n        },\n    },\n\n    async model(params) {\n        const rowsPerPage = 25;\n        const offset = params.page != null ? (params.page - 1) * rowsPerPage : 0;\n        delete params.page;\n        params.limit = 25;\n        params.offset = offset;\n        params.order = 'lastname';\n\n        params.country = get(this.store.peekAll('companyInfo'), 'firstObject.country');\n\n        if (params.country === 'se') {\n            params.start = params.selectedYear + '-04-01';\n        } else {\n            params.start = params.selectedYear + '-05-02';\n        }\n\n        delete params.selectedYear;\n\n        if (!params.employer) {\n            delete params.employer;\n        }\n\n        if (params.user) {\n            params.id = params.user;\n        }\n        delete params.user;\n        const url = 'api/getUsersWithHolidays';\n        return {\n            params: params,\n            data: await this.Collector.ttapi({\n                url: url,\n                data: params,\n            }),\n        };\n    },\n\n    actions: {\n        refreshModel() {\n            return this.refresh();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"TMsQ63Jh\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"opt\\\",\\\"dd\\\",\\\"ddm\\\",\\\"year\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[23,0,[\\\"filters\\\"]],\\\"user\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control mb-5\\\"],[11,\\\"onChange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setSelectedYear\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"years\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,9,[\\\"value\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,9,[\\\"value\\\"]],[24,[\\\"selectedYear\\\"]]],null]],[8],[1,[23,9,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[9]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"holidays-report-buttons\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"holidaypay@edit\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary mt-5\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addHolidayPay\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"report.holiday_pay.add\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more report-actions\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,7,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,7,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"isMobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,8,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_csv\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_csv\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n        \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@class\\\",\\\"@value\\\",\\\"@onToggle\\\",\\\"@size\\\",\\\"@theme\\\",\\\"@onLabel\\\",\\\"@offLabel\\\",\\\"@showLabels\\\"],[\\\"ignoreWhereNoDaysLeftButton\\\",[23,0,[\\\"ignoreWhereNoDaysLeft\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"ignoreWhereNoDaysLeft\\\"]]],null],[28,\\\"not\\\",[[23,0,[\\\"ignoreWhereNoDaysLeft\\\"]]],null]],null],\\\"large\\\",\\\"light\\\",[28,\\\"t\\\",[\\\"report.holidays.hide_empty_ones\\\"],null],\\\"\\\",true]]],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content mt-5\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"checkable\\\",\\\"bubbleActions\\\",\\\"hideSort\\\"],[[23,0,[\\\"columnList\\\"]],[23,0,[\\\"translated_columns\\\"]],[28,\\\"await\\\",[[23,0,[\\\"holidays\\\",\\\"users\\\"]]],null],[23,0,[\\\"rowActions\\\"]],true,\\\"action\\\",true]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[25,[23,0,[\\\"page\\\"]],[23,0,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showDetails\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"report.holidaypays.details\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"showDetails\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"abcenses/holiday-details-comp\\\",null,[[\\\"user\\\",\\\"historyType\\\",\\\"isHolidayReport\\\",\\\"editRecord\\\",\\\"removeRecord\\\"],[[24,[\\\"editUser\\\"]],[23,0,[\\\"historyType\\\"]],false,[28,\\\"action\\\",[[23,0,[]],\\\"editHolidayPay\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeHolidayPay\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"holidayPayRecord\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"holidayPayRecord\\\"]]],null],null],null],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.holiday_pay.add\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\",\\\"@onFieldChange\\\"],[\\\"holidaypay\\\",[23,0,[\\\"holidayPayRecord\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"holidayPayRecord\\\"]]],null],null],null],[28,\\\"action\\\",[[23,0,[]],\\\"onFieldChange\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[23,0,[\\\"checkedRows\\\"]],[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"user\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"holidaypay.user\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"bankdeducter.add.users_selected\\\"],null],false],[0,\\\":\\\"],[7,\\\"b\\\",true],[8],[0,\\\" \\\"],[1,[23,0,[\\\"checkedRows\\\",\\\"length\\\"]],false],[9],[9],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"date\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"holidaypay.date\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[5,\\\"power-select\\\",[],[[\\\"@dropdownClass\\\",\\\"@options\\\",\\\"@selected\\\",\\\"@onChange\\\",\\\"@searchEnabled\\\"],[\\\"power-select-add-field\\\",[23,0,[\\\"years\\\"]],[28,\\\"get\\\",[[23,0,[\\\"holidayPayRecord\\\"]],[23,5,[\\\"name\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null],false]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[1,[23,6,[\\\"value\\\"]],false],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"deducts\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@class\\\"],[[28,\\\"t\\\",[\\\"report.holidaypay.deducts\\\"],null],\\\"ember-movenium-field-deducts\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[5,\\\"addon/fields/checkbox\\\",[],[[\\\"@form\\\",\\\"@name\\\",\\\"@value\\\",\\\"@onChange\\\"],[\\\"holidaypay\\\",\\\"deducts\\\",[23,0,[\\\"deductsValue\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"deductsValue\\\"]]],null]],null]]]],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,4,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"holidayPayRecord\\\"]],[23,5,[\\\"name\\\"]]],null],[23,0,[\\\"holidayPayRecord\\\"]],[28,\\\"action\\\",[[23,0,[]],[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null],[23,5,[\\\"mandatory\\\"]],[23,5,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[5]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[3,4]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Buttons\\\"]],[],[[\\\"@saving\\\",\\\"@save\\\",\\\"@cancel\\\"],[[23,0,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"holidayPayRecord\\\"]]],null],null],null]]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/holidaypays/template.hbs\"}});","/*eslint-disable ember/named-functions-in-promises */\nimport { A } from '@ember/array';\n\nimport { Promise } from 'rsvp';\nimport EmberObject, { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    store: service(),\n    Collector: service('collector-service'),\n    ttapi: service(),\n    intl: service(),\n    notifications: service(),\n    session: service(),\n    fileExports: service('file-exports'),\n\n    selectedYears: null,\n    importYear: null,\n\n    user: null,\n    employer: null,\n    page: 1,\n\n    results: null,\n\n    error: false,\n\n    selectedDelimiter: ';',\n\n    delimiterOptions: null,\n    init() {\n        this._super();\n        this.queryParams = [\n            'page',\n            'employer',\n            'user',\n            'selectedYears',\n            'group',\n            'worktimegroup',\n            'superior',\n            'used_saturdays',\n        ];\n        this.columnList = [\n            'lastname',\n            'firstname',\n            'holidayYear',\n            'allDays',\n            'usedDays',\n            'bookedDays',\n            'daysLeft',\n            'used_saturdays',\n        ];\n        this.selectedYears = moment().month() >= 3 ? [moment().year()] : [moment().year() - 1];\n        return (this.delimiterOptions = [\n            { id: ';', name: ';' },\n            { id: ',', name: ',' },\n        ]);\n    },\n\n    holidaysAlias: alias('model.data'),\n\n    autoAssumedHolidays: computed(function () {\n        if (get(this.store.peekAll('companyInfo'), 'firstObject.country') === 'se') return 25;\n        else return 30;\n    }),\n\n    showRecalculateButton: computed(function () {\n        if (\n            this.session.session.content.authenticated.scope ||\n            this.Collector.testNeeds(['development'])\n        ) {\n            return true;\n        } else return false;\n    }),\n\n    rowActions: computed('intl', function () {\n        let arr = [];\n\n        if (get(this, 'Collector').testNeeds(['userlevel=5'])) {\n            arr.pushObject({\n                action: 'editRow',\n                icon: 'move move-Pencil',\n                text: get(this, 'intl').t('general.edit'),\n            });\n        }\n\n        arr.pushObject({\n            action: 'showDetails',\n            icon: 'move move-Search',\n            text: get(this, 'intl').t('general.edit'),\n        });\n\n        return arr;\n    }),\n\n    filters: computed(function () {\n        return A([\n            EmberObject.create({\n                field: 'employer',\n                type: 'database',\n                form: 'user',\n                name: 'employer',\n                value: this.employer,\n            }),\n            EmberObject.create({\n                field: 'user',\n                type: 'database',\n                form: 'worktime',\n                name: 'user',\n                value: this.user,\n            }),\n            EmberObject.create({\n                field: 'group',\n                type: 'database',\n                form: 'user',\n                name: 'group',\n                value: this.group,\n            }),\n            EmberObject.create({\n                field: 'worktimegroup',\n                type: 'database',\n                form: 'user',\n                name: 'worktimegroup',\n                value: this.worktimegroup,\n            }),\n            EmberObject.create({\n                field: 'superior',\n                type: 'database',\n                form: 'user',\n                name: 'superior',\n                value: this.superior,\n            }),\n        ]);\n    }),\n\n    importField: computed('holidaysAlias.filename', function () {\n        const field = get(this, 'Collector').field('import', 'filename');\n        field.value = get(this, 'holidaysAlias.filename');\n        return field;\n    }),\n\n    data: computed('holidaysAlias.users', 'hideEmptyOnes', function () {\n        const users = get(this, 'holidaysAlias.users');\n        return new Promise((resolve) => {\n            return get(this, 'store')\n                .findAll('holiday')\n                .then((holidays) => {\n                    const usersWithHolidays = new Set();\n                    holidays.forEach((holiday) => {\n                        return usersWithHolidays.add(get(holiday, 'id').toString());\n                    });\n                    return resolve(usersWithHolidays);\n                });\n        }).then(() => {\n            return this.hideEmptyOnes\n                ? users.sortBy('lastname').filter((user) => user.daysLeft > 0)\n                : users.sortBy('lastname');\n            \n        });\n    }),\n\n    years: computed(function () {\n        const ret = [];\n        const holidaySeasonChangeDate = moment().startOf('year').add({ days: 1, months: 4 });\n        if (moment().isSameOrAfter(holidaySeasonChangeDate, 'day')) {\n            set(this, 'nextHolidaySeason', moment().year()); //eslint-disable-line\n        } else {\n            set(this, 'nextHolidaySeason', moment().year() - 1); //eslint-disable-line\n        }\n\n        for (\n            let start = get(this, 'nextHolidaySeason'),\n                year = start + 1,\n                end = get(this, 'nextHolidaySeason') - 3,\n                asc = start <= end;\n            asc ? year <= end : year >= end;\n            asc ? year++ : year--\n        ) {\n            ret.push(year);\n        }\n\n        // If user is not main user, we don't want to show the current year\n        // This filters out current year if we are before the holiday season change date\n        if (!get(this, 'Collector').testNeeds(['userlevel=5'])) {\n            const finalRet = [];\n\n            // Make sure we don't show the current year if we are before the holiday season change date\n            if (!moment().isSameOrAfter(holidaySeasonChangeDate, 'day')) {\n                finalRet.push(...(ret.filter((year) => year !== moment().year())));\n            } else {\n                finalRet.push(...ret);\n            }\n\n            return finalRet;\n        }\n\n        return ret;\n    }),\n\n    translated_columns: computed(function () {\n        const translatedColumns = [\n            'report.user.lastname',\n            'report.user.firstname',\n            'report.user.holidayyear',\n            'report.holidays.allDays',\n            'report.hoilidays.usedDays',\n            'report.holidays.bookedDays',\n            'report.holidays.daysLeft',\n            'report.holidays.saturdays',\n        ];\n        return translatedColumns.map((item) => {\n            return get(this, 'intl').t(item);\n        });\n    }),\n\n    pageCount: computed('holidaysAlias.count', 'hideEmptyOnes', function () {\n        let count = this.hideEmptyOnes ? this.data.length : this.holidaysAlias.count;\n        let perPage = this.hideEmptyOnes ? 25 : 25 * this.selectedYears.length;\n        return Math.ceil(count / perPage);\n    }),\n\n    actions: {\n        filterChanged(value, fieldName) {\n            set(this, 'page', 1);\n            return set(this, fieldName, !value ? null : value);\n        },\n\n        async recalculateHolidays(checkedRows) {\n            set(this, 'loading', true);\n\n            let ids = checkedRows.map((row) => row.id);\n            ids = ids.filter((item, index) => ids.indexOf(item) === index);\n\n            if(ids.length === 0) {\n                this.notifications.error(this.intl.t('report.holidays.no_users_selected'), { autoClear: true });\n                set(this, 'loading', false);\n                return;\n            }\n            \n            const url = 'api/holidays/recalculateUserHolidays';\n\n            let responses = [];\n            for(let i = 0; i < ids.length; i++) {\n                let res = await this.Collector.ttapi({\n                url: url,\n                data: {\n                    userid: ids[i],\n                },\n                method: 'POST',\n            });\n            responses.push(res);\n        }\n\n        if (responses.length > 0 && responses.filter(res => res.message).length === responses.length) {\n            this.notifications.success(this.intl.t('report.holidays.recalculation_success'), { autoClear: true });\n        } else {\n            this.notifications.error(this.intl.t('report.holidays.recalculation_failed'), { autoClear: true });\n        }\n        \n        set(this, 'loading', false);\n        },\n\n        setSelectedYears(value) {\n            if (!value.length)\n                return this.notifications.error(\n                    this.intl.t('report.holidays.cannot_remove_all_seasons'),\n                    { autoClear: true },\n                );\n            set(this, 'page', 1);\n            return set(this, 'selectedYears', value.sort().reverse());\n        },\n\n        async export_csv() {\n            set(this, 'showLoader', true);\n\n            const data = await this.getExportData();\n            const translated_columns = this.translated_columns;\n\n            const columns = this.columnList.map((ext, index) => {\n                return { name: translated_columns[index], ext: ext, obj: {} };\n            });\n\n            await this.fileExports.createCsv(this.form, data, columns);\n            set(this, 'showLoader', false);\n        },\n\n        action(action, rowid) {\n            if (action === 'showDetails') {\n                set(this, 'editUser', rowid);\n                set(this, 'showDetails', true);\n            } else if (action === 'editRow') {\n                const promises = A([]);\n                set(this, 'loading', true);\n                if (!Array.isArray(rowid)) {\n                    set(this, 'editUsers', [rowid]);\n                } else {\n                    set(this, 'editUsers', rowid);\n                }\n                set(this, 'editUser', rowid);\n                get(this, 'editUsers').forEach((row) => {\n                    this.editYear = row.holidayYear + '-01-01';\n                    return promises.push(\n                        get(this, 'store')\n                            .query('holiday', { user: row.id, year: this.editYear })\n                            .then((records) => {\n                                const record = get(records, 'firstObject');\n                                set(this, 'holidaydays', record ? get(record, 'days') : 0);\n                                return (row.currentHolidayRecord = record);\n                            }),\n                    );\n                });\n\n                Promise.all(promises).then(() => {\n                    return set(this, 'loading', false);\n                });\n            } else if (action === 'checkedRows') {\n                if (get(this, 'Collector').testNeedsOne('holiday@edit')) {\n                    set(this, 'checkedRows', rowid);\n                }\n            }\n        },\n\n        async save() {\n            const promises = A([]);\n            set(this, 'loading', true);\n            await Promise.all(\n                get(this, 'editUsers').map(async (row) => {\n                    let record;\n                    let user = await get(this, 'store').findRecord('user', row.id);\n                    if (!row.currentHolidayRecord) {\n                        record = get(this, 'store').createRecord('holiday', {\n                            user,\n                            days: get(this, 'holidaydays'),\n                            year: this.editYear,\n                        });\n                    } else {\n                        record = row.currentHolidayRecord;\n                        set(record, 'days', get(this, 'holidaydays'));\n                    }\n\n                    this.notifications.success(this.intl.t('holiday.dayamount_change'), { autoClear: true });\n\n                    return promises.push(record.save());\n                }),\n            );\n\n            return Promise.all(promises).then(() => {\n                set(this, 'checkedRows', null);\n                set(this, 'editUsers', null);\n                set(this, 'loading', false);\n                return this.send('refreshModel');\n            });\n        },\n\n        openImportDialog() {\n            set(this, 'record', get(this, 'store').createRecord('import'));\n            set(this, 'showImportDialog', true);\n            return false;\n        },\n\n        executeImport() {\n            //@set('error', false)\n            //if @get('record.filename').indexOf('.csv') == -1\n            //    @set('error', @get('intl').t(\"validation.wrong_filetype\"))\n            //    return\n            set(this, 'loading', true);\n            // we have to save this record first to get the s3-url\n            return get(this, 'record')\n                .save()\n                .then(() => {\n                    const file = get(this, 'record.filename')[0];\n\n                    const promise = get(this, 'ttapi').request('/import_holidays', {\n                        type: 'POST',\n                        //dataType: 'text'\n                        data: {\n                            import_file: file['s3url'],\n                            has_header: get(this, 'has_header'),\n                            delimiter: get(this, 'selectedDelimiter'),\n                            year: get(this, 'importYear') || get(this, 'years.0'), // default value is first year in dropdown\n                        },\n                    });\n                    return promise.then((results) => {\n                        set(this, 'loading', false);\n                        if (results.error) {\n                            set(this, 'error', results.error);\n                            return;\n                        }\n                        return set(this, 'results', results);\n                    });\n                });\n        },\n\n        setFile(file) {\n            return set(get(this, 'record'), 'filename', file);\n        },\n\n        closeImportDialog() {\n            set(this, 'showImportDialog', false);\n            set(this, 'results', null);\n            set(this, 'loading', false);\n            set(this, 'has_header', false);\n            if (get(this, 'results') || get(this, 'error')) {\n                this.send('refreshModel');\n            }\n            return set(this, 'error', false);\n        },\n    },\n\n    async getExportData() {\n        const url = 'api/getMultipleSeasons';\n        const params = this.model.params;\n        params.limit = 'all';\n        delete params.offset;\n        const response = await this.Collector.ttapi({\n            url: url,\n            data: params,\n        });\n\n        return response.users;\n    },\n});\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * DS207: Consider shorter variations of null checks\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nimport { inject as service } from '@ember/service';\nimport Route from '@ember/routing/route';\nimport { get } from '@ember/object';\n\nexport default Route.extend({\n    store: service(),\n    flags: service(),\n\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        selectedYears: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n        worktimegroup: {\n            refreshModel: true,\n        },\n        superior: {\n            refreshModel: true,\n        },\n    },\n\n    async model(params) {\n        const rowsPerPage = 25;\n        const offset = params.page != null ? (params.page - 1) * rowsPerPage : 0;\n        delete params.page;\n        params.limit = 25;\n        params.offset = offset;\n\n        params.country = get(this.store.peekAll('companyInfo'), 'firstObject.country');\n\n        const days = params.country === 'se' ? '-04-01' : '-05-02';\n\n        if (typeof params.selectedYears == 'string')\n            params.selectedYears = JSON.parse(params.selectedYears);\n        params.years = params.selectedYears.reduce((string, year, index) => {\n            return (string += index == 0 ? year + days : ',' + year + days);\n        }, '');\n\n        delete params.selectedYears;\n\n        if (!params.employer) {\n            delete params.employer;\n        }\n\n        if (params.user) {\n            params.id = params.user;\n        }\n        delete params.user;\n        const url = 'api/getMultipleSeasons';\n        return {\n            params: params,\n            data: await this.Collector.ttapi({\n                url: url,\n                data: params,\n            }),\n        };\n    },\n\n    actions: {\n        refreshModel() {\n            return this.refresh();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"0zWUdKjo\",\"block\":\"{\\\"symbols\\\":[\\\"year\\\",\\\"dd\\\",\\\"ddm\\\",\\\"year\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"user\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@class\\\",\\\"@tagName\\\",\\\"@options\\\",\\\"@onChange\\\",\\\"@selected\\\"],[\\\"yearFilter\\\",\\\"div\\\",[23,0,[\\\"years\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setSelectedYears\\\"],null],[28,\\\"string-to-array\\\",[[23,0,[\\\"selectedYears\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"holiday_season\\\"],null],false],[0,\\\" \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"holidays-report-container\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"holidays-report-buttons\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"checkedRows\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"name\\\",\\\"editDays\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"action\\\",\\\"editRow\\\",[24,[\\\"checkedRows\\\"]]]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.editDays\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"holiday@edit\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openImportDialog\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.show_import_dialog\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@class\\\",\\\"@value\\\",\\\"@onToggle\\\",\\\"@size\\\",\\\"@theme\\\",\\\"@onLabel\\\",\\\"@offLabel\\\",\\\"@showLabels\\\"],[\\\"hideEmptyOnesButton\\\",[23,0,[\\\"hideEmptyOnes\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"hideEmptyOnes\\\"]]],null],[28,\\\"not\\\",[[23,0,[\\\"hideEmptyOnes\\\"]]],null]],null],\\\"large\\\",\\\"light\\\",[28,\\\"t\\\",[\\\"report.holidays.hide_empty_ones\\\"],null],\\\"\\\",true]]],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more report-actions\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"isMobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_csv\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_csv\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRecalculateButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"recalculateHolidays\\\",[24,[\\\"checkedRows\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.recalculate_holidays\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"checkable\\\",\\\"bubbleActions\\\",\\\"hideSort\\\",\\\"order\\\"],[[24,[\\\"columnList\\\"]],[24,[\\\"translated_columns\\\"]],[28,\\\"await\\\",[[24,[\\\"data\\\"]]],null],[24,[\\\"rowActions\\\"]],true,\\\"action\\\",true,\\\"lastname\\\"]]],false],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[25,[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showDetails\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"report.holidays.details\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showDetails\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"abcenses/holiday-details-comp\\\",null,[[\\\"user\\\",\\\"isHolidayReport\\\"],[[24,[\\\"editUser\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"editUsers\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"report.holidays.allDays\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editUsers\\\"]]],null]],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"holiday@edit\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.setAllDays\\\"],null],false],[0,\\\": \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"class\\\"],[[24,[\\\"holidaydays\\\"]],\\\"form-control\\\"]]],false],[0,\\\"\\\\n\\\"],[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"name\\\",\\\"save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"checkedRows\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"strong\\\",true],[8],[1,[24,[\\\"checkedRows\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.users_selected\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showHistoryForRow\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/history-modal\\\",null,[[\\\"form\\\",\\\"rowid\\\",\\\"removeModal\\\"],[\\\"holiday\\\",[24,[\\\"showHistoryForRow\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showHistoryForRow\\\"]]],null]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showImportDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"report.holidays.import\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeImportDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"results\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.inserted\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[24,[\\\"results\\\",\\\"inserted\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.updated\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[24,[\\\"results\\\",\\\"updated\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn btn-m-link btn-block btn-lg save\\\"],[12,\\\"name\\\",\\\"ok\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeImportDialog\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"validation.wrong_fileformat\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.import\\\"],null],false],[0,\\\":\\\\n            \\\"],[1,[28,\\\"collector/fields/fileupload-field-ver3\\\",null,[[\\\"field\\\",\\\"bubbleChange\\\",\\\"model\\\"],[[24,[\\\"importField\\\"]],\\\"setFile\\\",[24,[\\\"record\\\",\\\"filename\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.has_header\\\"],null],false],[0,\\\":\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"ember-checkbox form-control\\\",[24,[\\\"has_header\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.delimiter\\\"],null],false],[0,\\\":\\\\n            \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\"],[[24,[\\\"delimiterOptions\\\"]],[24,[\\\"selectedDelimiter\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.import_year\\\"],null],false],[0,\\\":\\\\n            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"importYear\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"years\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,1,[]]],[8],[1,[23,1,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-help-text\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.import_help_text\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn btn-m-link btn-block btn-lg save\\\"],[12,\\\"name\\\",\\\"save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"executeImport\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\\n        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/holidays/template.hbs\"}});","import EmberObject, { computed, set } from '@ember/object';\nimport { A } from '@ember/array';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport GeneralReportController from '../../../controllers/general-report';\nimport { typeOf } from '@ember/utils';\n\nexport default GeneralReportController.extend({\n    session: service(),\n\n    form: 'abcense',\n\n    status: 'all',\n    dateSelector: true,\n    groupBy: null,\n\n    init() {\n        this._super();\n        this.showColumns = [\n            'user',\n            'abcensetype',\n            'startdate',\n            'starttime',\n            'enddate',\n            'endtime',\n            'dayamount',\n            'absence_hours',\n            'description',\n        ];\n        this.queryParams = ['startdate', 'status', 'user', 'abcensetype', 'group', 'groupBy'];\n        this.user = [];\n    },\n\n    abcenses: alias('model'),\n\n    filters: computed(function () {\n        const c = this.Collector;\n        const filter_fields = A([\n            EmberObject.create({ field: 'startdate' }, { wagePeriods: true }),\n            EmberObject.create({ field: 'abcensetype' }),\n            EmberObject.create({ field: 'groupBy', type: 'groupByFilter' }),\n        ]);\n        // hardcoded for delete for now..\n        // should make nicer\n        if (c.testNeedsOne('user.costcenter')) {\n            filter_fields.pushObject(EmberObject.create({ field: 'user' })); // collector-value-format-helper doesn't work if user-field is in extra-fields with sideloaded-search field\n            filter_fields.pushObject(\n                EmberObject.create({\n                    extra: true,\n                    type: 'search',\n                    field: 'costcenter',\n                    bindto: 'costcenter',\n                    sideload: 'user',\n                    form: 'user',\n                }),\n            );\n        }\n        return filter_fields;\n    }),\n\n    getAdditionalFilters: computed(function () {\n        if (this.session.currentUser.userlevel !== '1') {\n            return 'user.worktimegroup,user.employer';\n        }\n        return null;\n    }),\n\n    settings: EmberObject.create({\n        rowSettings: EmberObject.create({\n            editRoute: 'abcenses.edit',\n            historyRoute: 'abcenses.history',\n        }),\n        massedit: true,\n        sortByColumn: 'startdate-,enddate-',\n    }),\n\n    actions: {\n        filterChangeAction(value, field) {\n            if (typeOf(value) === 'object' || typeOf(value) == 'instance') {\n                set(this, field, value.id);\n            } else {\n                set(this, field, value);\n            }\n        },\n\n        closeEditModal() {\n            this.editRecord.rollbackAttributes();\n            set(this, 'editRecord', null);\n        },\n    },\n\n    startdate:\n        moment().startOf('month').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('month').format('YYYY-MM-DD'),\n});\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nimport { isPresent } from '@ember/utils';\n\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\nimport GeneralReportRoute from '../../../routes/general-report';\n\nconst AbcensesIndexRoute = GeneralReportRoute.extend({\n    capi: service(),\n    flags: service(),\n\n    queryParams: {\n        startdate: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n    },\n\n    form: 'abcense',\n\n    model(params) {\n        params = this._super(params);\n        params.sideload = true;\n        if (params.startdate && !this.Collector.testNeedsOne('tt3')) {\n            params['startdate_enddate'] = params.startdate;\n            delete params.startdate;\n        }\n\n        if (!this.flags.test('ember-movenium-form-report-absence')) {\n            if (isPresent(params.groupBy)) {\n                params.order = params.groupBy;\n                return this.capi.findAll('abcense', params);\n            } else {\n                return this.store.query('abcense', params);\n            }\n        } else {\n            if (params.page) delete params.page;\n            set(this.controllerFor('abcenses.index'), 'qParams', params);\n        }\n    },\n});\n\nexport default AbcensesIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"5AN783p6\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-absence\\\"],null]],null,{\\\"statements\\\":[[0,\\\"     \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@filter\\\",\\\"@additional\\\",\\\"@filterChangeAction\\\"],[\\\"abcense\\\",[23,0,[\\\"qParams\\\"]],\\\"startdate,abcensetype,user,status,groupBy\\\",[28,\\\"hash\\\",null,[[\\\"startdate\\\",\\\"order\\\"],[[23,0,[\\\"startdate\\\"]],\\\"startdate-,enddate-\\\"]]],[22,\\\"getAdditionalFilters\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/abcenses/edit/\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-absence-views\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,4,[\\\"TemplateSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"editRecord\\\"]]],null]],null],\\\"remove,history,overview,edit\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],\\\"abcense\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"localStorageKey\\\",\\\"status\\\",\\\"count\\\"],[\\\"bubbleTransition\\\",\\\"abcense\\\",[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],\\\"abcense\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"editRecord\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.add_abcense\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"collector/form-add/forms/absence\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\"],[\\\"abcense\\\",[23,0,[\\\"editRecord\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/index/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"clRxJmB5\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/loading/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"FIAHu7wW\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/billing/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Controller;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nController = Ember.Controller.extend({\n    ajax: Ember.inject.service(),\n    session: Ember.inject.service(),\n    excel: Ember.inject.service(),\n    exportFile: Ember.inject.service(),\n    start: moment().startOf('month').format('YYYY-MM-DD'),\n    end: moment().endOf('month').format('YYYY-MM-DD'),\n    columns: [\n        'customer.name',\n        'date',\n        'product.name',\n        'description',\n        'amount',\n        'price',\n        'status',\n        'salesman',\n    ],\n    group: null,\n    actions: {\n        fetchBills: function (type = null) {\n            var group;\n            if (this.get('loading')) {\n                return;\n            }\n            this.set('loading', true);\n            group = this.get('session.currentUser.group')\n                ? this.get('session.currentUser.group.id')\n                : this.get('group');\n            return this.get('ajax')\n                .request(config.APP.ADMINTOOLURL + 'api/visma/billing', {\n                    headers: {\n                        Authorization:\n                            'Bearer ' + this.get('session.session.authenticated.access_token'),\n                    },\n                    data: {\n                        date: this.get('start') + '_' + this.get('end'),\n                        type: type,\n                        group: group,\n                    },\n                })\n                .then((data) => {\n                    if (type === 'csv') {\n                        return this.get('excel').export(data, {\n                            fileName:\n                                'movenium_bills_' +\n                                this.get('start') +\n                                '_' +\n                                this.get('end') +\n                                '.xlsx',\n                        });\n                    } else if (type === 'netvisor') {\n                        const content = data.map((bill) => bill.join(';')).join('\\n');\n                        return this.exportFile.exportFile(content, 'partnerBills', 'csv');\n                    } else {\n                        return this.set('bills', data);\n                    }\n                })\n                .finally(() => {\n                    return this.set('loading', false);\n                });\n        },\n        change: function (value, field) {\n            if (Ember.isPresent(value)) {\n                return this.set(field, value.get('id'));\n            } else {\n                return this.set(field, null);\n            }\n        },\n    },\n});\n\nexport default Controller;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/billing/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Route;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting) {\n            return controller.set('group', null);\n        }\n    },\n});\n\nexport default Route;\n","export default Ember.HTMLBars.template({\"id\":\"SyXNKjWP\",\"block\":\"{\\\"symbols\\\":[\\\"data\\\",\\\"group\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"admintool.billing.from\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"date\\\",[24,[\\\"start\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"admintool.billing.to\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"date\\\",[24,[\\\"end\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!userlevel=8\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-3\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"clasS\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"admintool.billing.group\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"customer.group\\\"],[[\\\"change\\\",\\\"class\\\"],[\\\"change\\\",\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-m-link \\\",[28,\\\"if\\\",[[24,[\\\"loading\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"fetchBills\\\"]],[8],[1,[28,\\\"t\\\",[\\\"admintool.billing.show_report\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-m-link \\\",[28,\\\"if\\\",[[24,[\\\"loading\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"fetchBills\\\",\\\"csv\\\"]],[8],[1,[28,\\\"t\\\",[\\\"admintool.billing.download_report\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-m-link \\\",[28,\\\"if\\\",[[24,[\\\"loading\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"fetchBills\\\",\\\"netvisor\\\"]],[8],[1,[28,\\\"t\\\",[\\\"admintool.billing.netvisor\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[24,[\\\"bills\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"group\\\",\\\"customer\\\",[23,2,[]]]]],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"data\\\",\\\"columns\\\",\\\"translated_columns\\\"],[[23,1,[]],[24,[\\\"columns\\\"]],[24,[\\\"columns\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/billing/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/components/bill-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolBillComponent;\n\nimport Ember from 'ember';\n\nimport SettingsBillingBillCompComponent from '../../../settings/billing/bill-comp/component';\n\nAdmintoolBillComponent = SettingsBillingBillCompComponent.extend({\n    admintool: Ember.inject.service(),\n    getBillRows: Em.on('init', function () {\n        var promise;\n        promise = this.get('admintool').ajax({\n            url: 'billrows',\n            method: 'get',\n            data: {\n                month: this.get('last_month'),\n                customerid: this.get('customerid'),\n            },\n        });\n        return promise.then((bills) => {\n            return this.set('billrows', bills);\n        });\n    }),\n});\n\nexport default AdmintoolBillComponent;\n","export default Ember.HTMLBars.template({\"id\":\"wSEaQQaE\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"&default\\\"],\\\"statements\\\":[[14,2],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"_billrows\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-primary\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing.bill\\\"],null],false],[0,\\\" \\\"],[1,[22,\\\"billdate\\\"],false],[0,\\\" - \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"currency\\\",[[24,[\\\"fullPrice\\\"]],[24,[\\\"showCurrency\\\"]]],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_billrows\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"billing.products.title.\\\",[23,1,[\\\"customerproduct\\\",\\\"name\\\"]]],null]],null],false],[0,\\\" - \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing.unit_price\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"currency\\\",[[23,1,[\\\"price\\\"]],[23,1,[\\\"currency\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"campaign\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    (\\\"],[1,[28,\\\"t\\\",[\\\"billing.campaign\\\"],null],false],[0,\\\": \\\"],[1,[23,1,[\\\"campaign\\\"]],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"billing.amount\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"amount\\\"]],false],[9],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[23,1,[\\\"formatted_snapshot\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"billing.no_bills_for\\\"],[[\\\"month\\\"],[[24,[\\\"billdate\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/components/bill-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/createservice/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Controller;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nimport { inject as service } from '@ember/service';\n\nController = Ember.Controller.extend({\n    flags: service(),\n    session: service(),\n    loading: false,\n    country: '',\n    products: [],\n    products_fi: [\n        {\n            name: 'products.base',\n            product: 'base',\n        },\n        {\n            name: 'products.basic',\n            product: 'basic',\n        },\n        {\n            name: 'products.contractor',\n            product: 'contractor',\n        },\n    ],\n    products_se: [\n        {\n            name: 'products.basic',\n            product: 'basic',\n        },\n        {\n            name: 'products.personalliggare',\n            product: 'personalliggare',\n        },\n        {\n            name: 'products.contractor',\n            product: 'contractor',\n        },\n        {\n            name: 'products.plentry',\n            product: 'entry',\n        },\n        {\n            name: 'products.pro_se',\n            product: 'pro_se',\n        },\n    ],\n    url: Ember.computed(function () {\n        return config.APP.MAIN_TTAPI + '/createService';\n    }),\n    token: Ember.computed.alias('session.session.authenticated.access_token'),\n    init: function () {\n        this._super(...arguments);\n        if (this.get('flags').test('mini-entry-at2')) {\n            this.get('products_fi').pushObject({\n                name: 'products.mini_entry',\n                product: 'mini_entry',\n            });\n            return this.get('products_se').pushObject({\n                name: 'products.mini_entry',\n                product: 'mini_entry',\n            });\n        }\n    },\n    actions: {\n        showLoading: function () {\n            return this.set('loading', true);\n        },\n        setProducts: function (value) {\n            this.set('country', value);\n            if (value === 'fi') {\n                return this.set('products', this.get('products_fi'));\n            } else if (value === 'se') {\n                return this.set('products', this.get('products_se'));\n            } else {\n                return this.set('products', []);\n            }\n        },\n    },\n});\n\nexport default Controller;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/createservice/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Route;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    model: function (params) {},\n});\n\nexport default Route;\n","export default Ember.HTMLBars.template({\"id\":\"SPD3Y0iv\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h1\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.wait_title\\\"],null],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"form\\\",true],[11,\\\"action\\\",[29,[[22,\\\"url\\\"]]]],[10,\\\"method\\\",\\\"post\\\"],[11,\\\"onsubmit\\\",[28,\\\"action\\\",[[23,0,[]],\\\"showLoading\\\"],null]],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"loading\\\"]],\\\"hidden\\\"],null]],[8],[0,\\\"\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.email\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"input\\\",true],[10,\\\"name\\\",\\\"email\\\"],[10,\\\"class\\\",\\\"form-control\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.employer_country\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onChange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setProducts\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"option\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"fi\\\"],[8],[1,[28,\\\"t\\\",[\\\"customer.country.fi\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"se\\\"],[8],[1,[28,\\\"t\\\",[\\\"customer.country.se\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"products\\\"]]],null,{\\\"statements\\\":[[7,\\\"label\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"input\\\",true],[10,\\\"name\\\",\\\"service\\\"],[11,\\\"value\\\",[23,1,[\\\"product\\\"]]],[10,\\\"type\\\",\\\"radio\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[[23,1,[\\\"name\\\"]]],null],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"input\\\",true],[10,\\\"name\\\",\\\"country\\\"],[11,\\\"value\\\",[29,[[22,\\\"country\\\"]]]],[10,\\\"type\\\",\\\"hidden\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"input\\\",true],[10,\\\"name\\\",\\\"token\\\"],[11,\\\"value\\\",[29,[[22,\\\"token\\\"]]]],[10,\\\"type\\\",\\\"hidden\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"input\\\",true],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[11,\\\"value\\\",[29,[[28,\\\"t\\\",[\\\"general.create\\\"],null]]]],[10,\\\"type\\\",\\\"submit\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/createservice/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default Route.extend({\n    model() {\n        return this.modelFor('admintool.customer');\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"Y8u1iMWu\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"blocks-chart\\\",null,[[\\\"url\\\",\\\"title\\\",\\\"params\\\",\\\"type\\\"],[\\\"/partnerusers\\\",\\\"Unique users\\\",[28,\\\"hash\\\",null,[[\\\"partnerid\\\"],[[24,[\\\"model\\\",\\\"partnerid\\\"]]]]],\\\"area\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"blocks-chart\\\",null,[[\\\"url\\\",\\\"title\\\",\\\"params\\\",\\\"type\\\"],[\\\"/partnerforms\\\",\\\"Forms\\\",[28,\\\"hash\\\",null,[[\\\"partnerid\\\"],[[24,[\\\"model\\\",\\\"partnerid\\\"]]]]],\\\"bar\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"blocks-chart\\\",null,[[\\\"url\\\",\\\"title\\\",\\\"params\\\",\\\"type\\\"],[\\\"/partneractions\\\",\\\"Actions\\\",[28,\\\"hash\\\",null,[[\\\"partnerid\\\"],[[24,[\\\"model\\\",\\\"partnerid\\\"]]]]],\\\"bar\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"blocks-chart\\\",null,[[\\\"url\\\",\\\"title\\\",\\\"params\\\",\\\"type\\\"],[\\\"/partnerforminserts\\\",\\\"Rows per form\\\",[28,\\\"hash\\\",null,[[\\\"partnerid\\\"],[[24,[\\\"model\\\",\\\"partnerid\\\"]]]]],\\\"line\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"blocks-chart\\\",null,[[\\\"url\\\",\\\"title\\\",\\\"params\\\",\\\"type\\\"],[\\\"/partnerperminuteall\\\",\\\"Requests per minute\\\",[28,\\\"hash\\\",null,[[\\\"partnerid\\\"],[[24,[\\\"model\\\",\\\"partnerid\\\"]]]]],\\\"area\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"blocks-chart\\\",null,[[\\\"url\\\",\\\"title\\\",\\\"params\\\",\\\"type\\\"],[\\\"/partneractions\\\",\\\"Actions spread\\\",[28,\\\"hash\\\",null,[[\\\"partnerid\\\"],[[24,[\\\"model\\\",\\\"partnerid\\\"]]]]],\\\"pie\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/charts/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerController;\n\nimport Ember from 'ember';\n\nAdmintoolCustomerController = Ember.Controller.extend({\n    subMenus: [\n        {\n            link: 'admintool.customer.overview',\n            text: 'menu.admintool.overview',\n            needs: [],\n        },\n        {\n            link: 'admintool.customer.details',\n            text: 'menu.admintool.details',\n            needs: [],\n        },\n        {\n            link: 'admintool.customer.devices',\n            text: 'menu.admintool.devices',\n            needs: ['!userlevel=7,8'],\n        },\n        {\n            link: 'admintool.customer.reports.bills',\n            text: 'menu.admintool.bills',\n            needs: ['!userlevel=7,8'],\n        },\n        {\n            link: 'admintool.customer.reports.users',\n            text: 'menu.admintool.users',\n            needs: [],\n        },\n        {\n            link: 'admintool.customer.tt3tott4',\n            text: 'menu.admintool.tt3tott4',\n            needs: ['!userlevel=7,8'],\n        },\n        {\n            // this page makes mongo alerts and does not work at all because queries are so slow\n            //{link: 'admintool.customer.charts', text: \"menu.admintool.charts\", needs: []}\n            link: 'admintool.customer.history',\n            text: 'menu.admintool.history',\n            needs: ['!userlevel=7,8'],\n        },\n    ],\n});\n\nexport default AdmintoolCustomerController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/details/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerDetailsController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nAdmintoolCustomerDetailsController = GeneralAddController.extend({\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n});\n\nexport default AdmintoolCustomerDetailsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/details/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerDetailsRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nAdmintoolCustomerDetailsRoute = GeneralAddRoute.extend({\n    controllerName: 'admintool.customer.details',\n    afterSave: Em.computed('controller.model', function () {\n        var model;\n        model = this.get('controller.model');\n        return {\n            route: 'admintool.customer',\n            params: model,\n        };\n    }),\n    edit: true,\n    model: function () {\n        return this.modelFor('admintool.customer');\n    },\n});\n\nexport default AdmintoolCustomerDetailsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"XMN7Uapj\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/details/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/devices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerDevicesController;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nAdmintoolCustomerDevicesController = Ember.Controller.extend({\n    dialogs: Ember.inject.service(),\n    session: Em.inject.service(),\n    intl: Em.inject.service(),\n    formName: 'timecleandevice',\n    queryParams: Em.computed(function () {\n        return [\n            {\n                name: 'customer',\n                value: this.get('model.id'),\n            },\n        ];\n    }),\n    settings: Ember.computed(function () {\n        return {\n            form: null,\n            defaultValues: {},\n        };\n    }),\n    filters: Em.A([\n        Em.Object.create({\n            type: 'searchbox',\n        }),\n    ]),\n    init_stuff: function () {\n        if (!this.get('model.country')) {\n            return;\n        }\n        this.set('show_tc_popup', false);\n        this.set('selected_device', false);\n        this.set('adding_new_device', false);\n        this.store\n            .query('timecleandevice', {\n                customer: this.get('model.id'),\n                limit: 'all',\n                sideload: true,\n            })\n            .then((tcs) => {\n                return this.set('own_devices', tcs.filterBy('customer.id', this.get('model.id')));\n            });\n        //            @set 'customerless_devices', tcs.filterBy 'customer.id', null\n        this.store\n            .query('productcampaign', {\n                sideload: true,\n            })\n            .then((pcs) => {\n                return this.set('productCampaigns', pcs);\n            });\n        return this.store\n            .query('customerproduct', {\n                sideload: true,\n            })\n            .then((customerproduct) => {\n                var rfid_product;\n                this.set('customerproducts', customerproduct);\n                rfid_product = customerproduct.filter((product) => {\n                    if (\n                        product.get('name') === 'rfid' &&\n                        product.get('countries') === this.get('model.country')\n                    ) {\n                        return true;\n                    }\n                });\n                return this.set('currentProduct', rfid_product[0]);\n            });\n    },\n    //productCampaigns: Em.computed ->\n    //    @get('store').query('productcampaign', {sideload:true})\n    priceTypes: Em.computed(function () {\n        return [\n            {\n                id: 'purchase',\n                name: this.get('intl').t('timecleandevice.type.purchase'),\n            },\n            {\n                id: 'rental',\n                name: this.get('intl').t('timecleandevice.type.rental'),\n            },\n        ];\n    }),\n    refreshListAndCloseModal: function () {\n        return this.store\n            .query('timecleandevice', {\n                customer: this.get('model.id'),\n                sideload: true,\n            })\n            .then((tcs) => {\n                this.set('own_devices', tcs.filterBy('customer.id', this.get('model.id')));\n                //            @set 'customerless_devices', tcs.filterBy 'customer.id', null\n                this.set('show_tc_popup', false);\n                this.set('selected_device', false);\n                return this.set('new_form', false);\n            });\n    },\n    //Em.set(@get('settings'), 'form', null)\n    //Em.set(@get('settings'), 'defaultValues', {})\n    customerless_devices: Em.computed('searchvalue_delayed', function () {\n        return this.store.query('timecleandevice', {\n            q: this.get('searchvalue_delayed'),\n            customer: '(empty)',\n            sideload: true,\n        });\n    }),\n    actions: {\n        save_and_add_bill: function (device) {\n            return this.get('dialogs')\n                .confirm(\"Are you sure you wan't to connect this device to customer\")\n                .then((answer) => {\n                    var bill;\n                    if (!answer) {\n                        return;\n                    }\n                    bill = this.get('settings');\n                    device.set('customer', this.get('model'));\n                    this.set('recordSaved', 'refreshListAndCloseModal');\n                    return device.save().then(() => {\n                        bill['defaultValues']['amount'] = 1;\n                        bill['defaultValues']['customer'] = this.get('model');\n                        bill['defaultValues']['customerproduct'] = this.get('currentProduct');\n                        bill['defaultValues']['description'] = 'imei:' + device.get('imei');\n                        //                    bill['defaultValues']['price'] = @get('currentProduct').get 'price'\n                        // if user has bought device, add one time bill\n                        if (device.get('type') === 'purchase') {\n                            bill['form'] = 'bill';\n                            bill['defaultValues']['campaign'] = this.get('productCampaigns').findBy(\n                                'id',\n                                this.get('selectedCampaign'),\n                            );\n                            bill['defaultValues']['country'] = this.get('model.country');\n                            bill['defaultValues']['date'] = moment().format('YYYY-MM-DD');\n                            bill['defaultValues']['salesman'] = this.store\n                                .peekAll('user')\n                                .findBy('id', this.get('session.currentUser.id'));\n                        } else {\n                            bill['form'] = 'rcbill';\n                            bill['defaultValues']['startdate'] =\n                                moment().add(1, 'months').format('YYYY-MM') + '-01';\n                        }\n                        this.set('popup_title', this.get('intl').t('admintool.add_bill'));\n                        this.set('new_form', true);\n                        return this.set('show_tc_popup', false);\n                    });\n                });\n        },\n        refreshListAndCloseModal: function () {\n            return this.refreshListAndCloseModal();\n        },\n        removeModal: function () {\n            this.set('show_tc_popup', false);\n            this.set('selected_device', false);\n            this.set('new_form', false);\n            $('.modal').modal('hide');\n            this.set('show_modal', false);\n            return this.set('record', null);\n        },\n        close: function () {\n            this.set('show_tc_popup', false);\n            this.set('selected_device', false);\n            this.set('new_form', false);\n            return this.set('searchvalue', null);\n        },\n        show_add_popup: function () {\n            this.set('show_tc_popup', true);\n            this.set('popup_title', this.get('intl').t('admintool.link_device'));\n            return false;\n        },\n        select_device: function (dev) {\n            this.set('selected_device', dev);\n            return false;\n        },\n        add_device: function () {\n            var form;\n            this.set('popup_title', this.get('intl').t('admintool.add_device'));\n            form = this.get('settings');\n            form['form'] = 'timecleandevice';\n            form['defaultValues']['customer'] = this.get('model');\n            form['defaultValues']['description'] = null;\n            this.set('new_form', true);\n            this.set('recordSaved', 'addNewBill');\n            return false;\n        },\n        addNewBill: function (settings, record) {\n            var form;\n            this.set('new_form', false);\n            form = this.get('settings');\n            this.set('recordSaved', 'refreshListAndCloseModal');\n            Em.set(form, 'defaultValues.amount', 1);\n            Em.set(form, 'defaultValues.customer', this.get('model'));\n            Em.set(form, 'defaultValues.customerproduct', this.get('currentProduct'));\n            Em.set(form, 'defaultValues.description', 'imei:' + record.get('imei'));\n            Em.set(form, 'defaultValues.price', this.get('currentProduct').get('price'));\n            // if user has bought device, add one time bill\n            if (record.get('type') === 'purchase') {\n                Em.set(form, 'form', 'bill');\n                Em.set(\n                    form,\n                    'defaultValues.campaign',\n                    this.get('productCampaigns').findBy('id', this.get('selectedCampaign')),\n                );\n                Em.set(form, 'defaultValues.country', this.get('model.country'));\n                Em.set(form, 'defaultValues.date', moment().format('YYYY-MM-DD'));\n                Em.set(\n                    form,\n                    'defaultValues.salesman',\n                    this.store.peekAll('user').findBy('id', this.get('session.currentUser.id')),\n                );\n            } else {\n                Em.set(form, 'form', 'rcbill');\n                Em.set(\n                    form,\n                    'defaultValues.startdate',\n                    moment().add(1, 'months').format('YYYY-MM') + '-01',\n                );\n            }\n            this.set('new_form', true);\n            //@refreshListAndCloseModal()\n            return false;\n        },\n        changeCampaign: function (campaign) {\n            return this.set('selectedCampaign', campaign);\n        },\n        save: function () {\n            var camp, dev;\n            // first add device to customer\n            dev = this.get('selected_device');\n            dev.set('customer', this.get('model'));\n            camp = this.get('productCampaigns').findBy('id', this.get('selectedCampaign'));\n            return dev.save().then(() => {\n                var rec;\n                // next add campaign to this device\n                if (camp) {\n                    rec = this.store.createRecord('customercampaign', {\n                        campaign: camp,\n                        customer: this.get('model'),\n                    });\n                    rec.save();\n                    return this.refreshListAndCloseModal();\n                } else {\n                    return this.refreshListAndCloseModal();\n                }\n            });\n        },\n        edit_device: function (device) {\n            this.set('record', device);\n            this.set('show_modal', true);\n            return false;\n        },\n        checkBilling: function () {\n            var billtype;\n            if (this.get('record.customer') === null) {\n                if (this.get('record.type') === 'rental') {\n                    billtype = 'rcbill';\n                } else {\n                    billtype = 'bill';\n                }\n                //console.log @get('currentProduct')\n                this.get('store')\n                    .query(billtype, {\n                        customerproduct: this.get('currentProduct.id'),\n                        customer: this.get('model.id'),\n                    })\n                    .then((bills) => {\n                        return bills.filter((bill) => {\n                            if (bill.get('description').indexOf(this.get('record.imei') > -1)) {\n                                return bill.destroyRecord();\n                            }\n                        });\n                    });\n            }\n            this.refreshListAndCloseModal();\n            return this.set('show_modal', false);\n        },\n        filterChanged: function (value) {\n            return this.store\n                .query('timecleandevice', {\n                    sideload: true,\n                    q: value,\n                    customer: this.get('model.id'),\n                })\n                .then((tcs) => {});\n        },\n        searchChanged: function () {\n            return this.set('searchvalue_delayed', this.get('searchvalue'));\n        },\n    },\n});\n\nexport default AdmintoolCustomerDevicesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/devices/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerDetailsEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../../controllers/general-add';\n\nAdmintoolCustomerDetailsEditController = Ember.Controller.extend();\n\nexport default AdmintoolCustomerDetailsEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/devices/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerDetailsEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../../routes/general-add';\n\nAdmintoolCustomerDetailsEditRoute = Ember.Route.extend();\n\nexport default AdmintoolCustomerDetailsEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"hrpJLDVF\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"blaba\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/devices/edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/devices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerOverviewDevicesRoute;\n\nimport Ember from 'ember';\n\nAdmintoolCustomerOverviewDevicesRoute = Ember.Route.extend({\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.init_stuff();\n    },\n});\n\nexport default AdmintoolCustomerOverviewDevicesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Ym+NkHKV\",\"block\":\"{\\\"symbols\\\":[\\\"device\\\",\\\"device\\\"],\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"blockquote\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"admintool.add_device_help\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.own_devices\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"timecleandevice\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive table-hover general-report\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Imei\\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Number\\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Type\\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Desc\\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"own_devices\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"tr\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_device\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"imei\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"devicenumber\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"type\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_add_popup\\\"]],[8],[1,[28,\\\"t\\\",[\\\"admintool.add_device\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_tc_popup\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"title\\\",\\\"close\\\"],[[24,[\\\"popup_title\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"selected_device\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.customerless_devices\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                    \\\"],[1,[28,\\\"search-box\\\",null,[[\\\"value\\\",\\\"change\\\",\\\"classes\\\"],[[24,[\\\"searchvalue\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"searchChanged\\\"],null],\\\"form-control add-field\\\"]]],false],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive table-hover general-report\\\"],[8],[0,\\\"\\\\n\\\\n                        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Imei\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Number\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Type\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Desc\\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customerless_devices\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"tr\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"save_and_add_bill\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"imei\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"devicenumber\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"type\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add_device\\\"]],[8],[1,[28,\\\"t\\\",[\\\"admintool.add_device\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selected_device\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"admintool.chosen_device\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"selected_device\\\",\\\"imei\\\"]],false],[0,\\\" - \\\"],[1,[24,[\\\"selected_device\\\",\\\"devicenumber\\\"]],false],[0,\\\" - \\\"],[1,[24,[\\\"selected_device\\\",\\\"description\\\"]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.name\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"prompt\\\"],[[24,[\\\"priceTypes\\\"]],\\\"form-control add-fields\\\",[24,[\\\"selected_device\\\",\\\"type\\\"]],[28,\\\"t\\\",[\\\"admintool.default_campaign\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.name\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"prompt\\\",\\\"change\\\"],[[24,[\\\"productCampaigns\\\"]],\\\"form-control add-fields\\\",[24,[\\\"selectedCampaign\\\"]],[28,\\\"t\\\",[\\\"admintool.default_campaign\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"changeCampaign\\\",[24,[\\\"selectedCampaign\\\"]]],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"adding_new_device\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-footer\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selected_device\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"new_form\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"title\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"admintool.edit_device\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"settings\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"settings\\\",\\\"form\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"recordSaved\\\"]],\\\"close\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"show_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"title\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"admintool.edit_device\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"timecleandevice\\\",[24,[\\\"record\\\",\\\"id\\\"]],\\\"checkBilling\\\",\\\"removeModal\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/devices/template.hbs\"}});","import Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    collector: service('collector-service'),\n    init() {\n        this._super(...arguments);\n        this.rcbillColumns = [\n            'customerproduct',\n            'startdate',\n            'enddate',\n            'price',\n            'amount',\n            'description',\n        ];\n        this.fixedlimitColumns = ['customerproduct', 'limit', 'price'];\n        this.customercampaignColumns = ['campaign'];\n    },\n\n    history: alias('model'),\n});\n","import Route from '@ember/routing/route';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { hash } from 'rsvp';\n\nexport default Route.extend({\n    store: service(),\n\n    model() {\n        const store = get(this, 'store');\n        const customer = this.modelFor('admintool.customer');\n        return hash({\n            customer: customer,\n            customercampaign: store.query('customercampaign', {\n                customer: get(customer, 'id'),\n                row_info_status: 'all',\n                sideload: true,\n            }),\n            fixedprice: store.query('fixedprice', {\n                customer: get(customer, 'id'),\n                row_info_status: 'all',\n                sideload: true,\n            }),\n            fixedlimit: store.query('fixedlimit', {\n                customer: get(customer, 'id'),\n                row_info_status: 'all',\n                sideload: true,\n            }),\n            rcbill: store.query('rcbill', {\n                customer: get(customer, 'id'),\n                row_info_status: 'all',\n                sideload: true,\n            }),\n        });\n    },\n\n    setupController(controller, model) {\n        set(controller, 'history', model);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"ZzE0WZ+1\",\"block\":\"{\\\"symbols\\\":[\\\"limit\\\",\\\"column\\\",\\\"index\\\",\\\"price\\\",\\\"campaign\\\",\\\"index\\\",\\\"column\\\",\\\"bill\\\",\\\"column\\\",\\\"index\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-lg-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Customer\\\"],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/history-comp\\\",null,[[\\\"form\\\",\\\"row\\\"],[\\\"customer\\\",[24,[\\\"model\\\",\\\"customer\\\",\\\"id\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-lg-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Recurring bills\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"rcbill\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h5\\\",true],[8],[4,\\\"each\\\",[[24,[\\\"rcbillColumns\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[23,8,[]],[23,9,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,10,[]],0],null]],null,{\\\"statements\\\":[[0,\\\" ,\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector-field-name\\\",null,[[\\\"form\\\",\\\"field\\\"],[\\\"rcbill\\\",[23,9,[]]]]],false],[0,\\\": \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,9,[]],\\\"rcbill\\\",[28,\\\"get\\\",[[23,8,[]],[23,9,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[9,10]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/history-comp\\\",null,[[\\\"form\\\",\\\"row\\\"],[\\\"fixedprice\\\",[23,8,[\\\"id\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-lg-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Customer campaign\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"customercampaign\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h5\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customercampaignColumns\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"get\\\",[[23,5,[]],[23,7,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,6,[]],0],null]],null,{\\\"statements\\\":[[0,\\\" ,\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector-field-name\\\",null,[[\\\"form\\\",\\\"field\\\"],[\\\"customercampaign\\\",[23,7,[]]]]],false],[0,\\\": \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,7,[]],\\\"customercampaign\\\",[28,\\\"get\\\",[[23,5,[]],[23,7,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[7]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[1,[28,\\\"collector/history-comp\\\",null,[[\\\"form\\\",\\\"row\\\"],[\\\"customercampaign\\\",[23,5,[\\\"id\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5,6]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-lg-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Fixed price\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"fixedprice\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/history-comp\\\",null,[[\\\"form\\\",\\\"row\\\"],[\\\"fixedprice\\\",[23,4,[\\\"id\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-lg-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Fixed price limit\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"fixedlimit\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h5\\\",true],[8],[4,\\\"each\\\",[[24,[\\\"fixedlimitColumns\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,3,[]],0],null]],null,{\\\"statements\\\":[[0,\\\" ,\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector-field-name\\\",null,[[\\\"form\\\",\\\"field\\\"],[\\\"fixedlimit\\\",[23,2,[]]]]],false],[0,\\\": \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,2,[]],\\\"fixedlimit\\\",[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2,3]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/history-comp\\\",null,[[\\\"form\\\",\\\"row\\\"],[\\\"fixedlimit\\\",[23,1,[\\\"id\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/history/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/overview/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolOverviewController;\n\nimport Ember from 'ember';\n\nimport config from '../../../../config/environment';\n\nimport { isPresent } from '@ember/utils';\n\nAdmintoolOverviewController = Ember.Controller.extend({\n    session: Em.inject.service(),\n    admintool: Ember.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    tools: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    ajax: Ember.inject.service(),\n    store: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    dirtyRecords: false,\n    dirtyCustomer: false,\n    customerSaving: false,\n    price_disabled: true,\n    calculated_from_promo: false,\n    loginUserInfoId: null,\n    loadingFixedPrices: false,\n    errors: [],\n    init_stuff: function () {\n        var currency;\n        if (!this.get('model.country')) {\n            return;\n        }\n        this.set('calculated_from_promo', false);\n        this.set('fixed_price_model', null);\n        this.set('fixed_price', null);\n        // get fixed_price if any\n        this.set('loadingFixedPrices', true);\n        this.store\n            .query('fixedprice', {\n                customer: this.get('model.id'),\n            })\n            .then((fp) => {\n                this.set('loadingFixedPrices', false);\n                if (fp.get('firstObject')) {\n                    //console.log fp.get 'firstObject'\n                    this.set('fixed_price_model', fp.get('firstObject'));\n                    this.set('has_fixed_price', true);\n                    this.set('fixed_price', fp.get('firstObject.price'));\n                    return this.set('price_disabled', false);\n                } else {\n                    this.set('fixed_price', null);\n                    this.set('price_disabled', true);\n                    return this.set('has_fixed_price', false);\n                }\n            });\n        this.getAdminUsers().then((admins) => {\n            var intl;\n            this.set('loginUser', {\n                username: admins['users'][0]['username'],\n                userid: admins['users'][0]['id'],\n                partnerid: this.get('model.partnerid'),\n            });\n            intl = this.get('intl');\n            if (!this.get('model.login_user_info_name')) {\n                this.set('dirtyRecords', true);\n                this.set(\n                    'model.login_user_info_name',\n                    admins['users'][0]['firstname'] + ' ' + admins['users'][0]['lastname'],\n                );\n                this.set('model.login_user_info_phone', admins['users'][0]['phone']);\n                return this.set('model.login_user_info_email', admins['users'][0]['email']);\n            }\n        });\n        this.getBillingStarted().then((billingStarted) => {\n            return this.set('billingStarted', moment(billingStarted).format('YYYY-MM-' + '01'));\n        });\n        currency = function () {\n            switch (this.get('model.country')) {\n                case 'se':\n                    return 'sek';\n                case 'fi':\n                    return 'eur';\n            }\n        }.call(this);\n        this.set('showCurrency', currency);\n        // get salesmen\n        this.get('store')\n            .findAll('user', {\n                reload: true,\n            })\n            .then((users) => {\n                var salesmen;\n                this.set('salesmen', users);\n                salesmen = [];\n                users.forEach((user) => {\n                    return salesmen.push({\n                        id: user.get('id'),\n                        name: user.get('firstname') + ' ' + user.get('lastname'),\n                    });\n                });\n                return this.set('salesmen', salesmen);\n            });\n        this.getCustomerProducts().then((customerProductsAll) => {\n            var customerProducts, hiddenByName;\n            customerProducts = customerProductsAll['public'].concat(customerProductsAll['hidden']);\n            hiddenByName = customerProductsAll['hidden'].mapBy('name');\n            if (\n                hiddenByName.includes('generic_timetracker') ||\n                this.get('model.campaign') === 'visma' ||\n                this.get('model.campaign') === 'entry_mini'\n            ) {\n                this.set('clientVersion', 'visma');\n            } else {\n                this.set('clientVersion', 'movenium');\n            }\n            //@set 'customerProducts', customerProducts\n            //console.log customerProducts\n            // get all campaigns\n            return this.getCampaigns().then((campaigns) => {\n                // set campaigns to dropdown\n                this.set('campaigns', campaigns['camps']);\n                return this.getProductCampaigns().then((pCampaigns) => {\n                    var currentCamp;\n                    this.set('productcampaigns', pCampaigns);\n                    //console.log pCampaigns\n\n                    // find customers current campaigns\n                    currentCamp = campaigns['campaigns'].filterBy(\n                        'name',\n                        this.get('model.campaign'),\n                    );\n                    this.set('currentCamp', currentCamp);\n                    //console.log currentCamps\n                    return this.getCustomersProductCampaigns().then((cpCampaigns) => {\n                        var prodCamps;\n                        this.set('customersProductCampaigns', cpCampaigns);\n                        prodCamps = [];\n                        // add all product-campaigns into array\n                        cpCampaigns.forEach((cp) => {\n                            return prodCamps.push(pCampaigns.findBy('id', cp.get('campaign.id')));\n                        });\n                        //console.log prodCamps\n                        customerProducts.forEach((cProd) => {\n                            var def_camp, found;\n                            //cProd['default_price'] = cProd['price']\n\n                            // get default-price from default-campaign\n                            def_camp = campaigns['campaigns'].filter((cmp) => {\n                                if (\n                                    cmp.get('name') === 'default' &&\n                                    parseInt(cmp.get('product.id')) === parseInt(cProd['id'])\n                                ) {\n                                    return true;\n                                }\n                            });\n                            cProd['default_price'] = def_camp.get('firstObject.price');\n                            cProd['productcampaigns'] = pCampaigns.filterBy(\n                                'product.id',\n                                cProd['id'].toString(),\n                            );\n                            found = false;\n                            // search for product-campaign for this customer\n                            found = prodCamps.findBy('product.id', cProd['id'].toString());\n                            if (!found) {\n                                //search from current campaign\n                                found = currentCamp.findBy('product.id', cProd['id'].toString());\n                            }\n                            if (!found) {\n                                // get price from default-campaign\n                                found = def_camp.get('firstObject');\n                            }\n                            if (found) {\n                                cProd['price'] = found.get('price');\n                                cProd['campaign'] = found.get('id');\n                                cProd['org_campaign'] = found.get('id');\n                                return (cProd['custom_campaign'] = cpCampaigns.findBy(\n                                    'campaign.id',\n                                    found.get('id'),\n                                ));\n                            }\n                        });\n                        //console.log customerProducts\n                        return this.set('customerProducts', customerProducts);\n                    });\n                });\n            });\n        });\n        return this.get('store').query('fixedlimit', {\n            customer: this.get('model.id'),\n            sideload: true,\n        });\n    },\n    campaignTypes: Em.computed(function () {\n        return [\n            {\n                id: 'default',\n                name: this.get('intl').t('admintool.campaigns.default'),\n            },\n            {\n                id: 'customer',\n                name: this.get('intl').t('admintool.campaigns.customer'),\n            },\n        ];\n    }),\n    /*\n  price_disabled: Em.computed 'has_fixed_price', ->\n      if @get 'has_fixed_price'\n          return false\n      else\n          return true\n  */\n    allFixedLimits: Ember.computed('model.id', function () {\n        return this.get('store').peekAll('fixedlimit');\n    }),\n    fixedLimits: Ember.computed('allFixedLimits.[]', function () {\n        return this.get('allFixedLimits').filterBy('customer.id', this.get('model.id'));\n    }),\n    getBillingStarted: function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            if (this.get('model.billing_start')) {\n                return resolve(this.get('model.billing_start'));\n            } else {\n                this.set('calculated_from_promo', true);\n                return $.ajax({\n                    url:\n                        config.APP.ADMINTOOLURL +\n                        'getBillingStart?promocode=' +\n                        this.get('model.promocode') +\n                        '&created=' +\n                        this.get('model.createddate'),\n                    type: 'GET',\n                    headers: {\n                        Authorization:\n                            'Bearer ' + this.get('session.session.authenticated.access_token'),\n                    },\n                    success: (data) => {\n                        return resolve(data);\n                    },\n                });\n            }\n        });\n    },\n    getCustomerProducts: function () {\n        return $.ajax({\n            url:\n                config.APP.ADMINTOOLURL +\n                'getCustomerProducts?partnerid=' +\n                this.get('model.partnerid') +\n                '&country=' +\n                this.get('model.country'),\n            type: 'GET',\n            headers: {\n                Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n            },\n            success: (data) => {\n                return data;\n            },\n        });\n    },\n    getAllProducts: function () {\n        var params;\n        params = {\n            data: {\n                country: this.get('model.country'),\n                lang: moment.locale(),\n            },\n        };\n        return this.get('admintool').get('products', params);\n    },\n    getCampaigns: function () {\n        // we need to fetch ALL campaigns without limits\n        // should be safe because this route is not called that often\n        return this.get('store')\n            .query('campaign', {\n                sideload: true,\n                limit: 'all',\n            })\n            .then((campaigns) => {\n                var camp, camps, i, len, ref;\n                camps = [];\n                ref = campaigns.mapBy('name').uniq();\n                for (i = 0, len = ref.length; i < len; i++) {\n                    camp = ref[i];\n                    if (camp === 'default') {\n                        continue;\n                    }\n                    camps.push({\n                        id: camp,\n                        name: camp,\n                    });\n                }\n                return { camps, campaigns };\n            });\n    },\n    getProductCampaigns: function () {\n        return this.get('store').query('productcampaign', {\n            sideload: true,\n        });\n    },\n    getCustomersProductCampaigns: function () {\n        return this.get('store').query('customercampaign', {\n            sideload: true,\n            customer: this.get('model.id'),\n        });\n    },\n    statuslist: Em.computed(function () {\n        return [\n            {\n                id: 'normal',\n                name: this.get('intl').t('customer.status.normal'),\n            },\n            {\n                id: 'demo',\n                name: this.get('intl').t('customer.status.demo'),\n            },\n        ];\n    }),\n    //            {id: \"disabled\", name: @get('intl').t('customer.status.disabled')}\n    contractTermOptions: Em.computed(function () {\n        return [{\"id\": \"1\", name: \"1\"}, {\"id\": \"3\", name: \"3\"}, {\"id\": \"6\", name: \"6\"}, {\"id\": \"12\", name: \"12\"}, {\"id\": \"else\", name: this.get('intl').t('abcense.types.other')}, {\"id\": \"check\", name: this.get('intl').t('general.check')}];\n    }),\n    getAdminUsers: function () {\n        return $.ajax({\n            url:\n                config.APP.ADMINTOOLURL +\n                'getCustomerAdminUsers?partnerid=' +\n                this.get('model.partnerid'),\n            type: 'GET',\n            headers: {\n                Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n            },\n            success: (data) => {\n                return data;\n            },\n        });\n    },\n    billinginfo: Ember.computed('model', function () {\n        return this.get('store').query('billinginfo', {\n            partnerid: this.get('model.partnerid'),\n        });\n    }),\n    recurringBillRows: Ember.computed('model', function () {\n        return this.get('store').query('rcbill', {\n            customer: this.get('model.id'),\n            limit: 'all',\n            //            startdate: moment().subtract(10,'years').format('YYYY-MM-DD')+\"_\"+moment().endOf('month').format('YYYY-MM-DD'),\n            //            enddate: moment().startOf('month').format('YYYY-MM-DD')+\"_\"+moment().add(10,'years').format('YYYY-MM-DD')+\"||(empty)\",\n            sideload: true,\n        });\n    }),\n    billRows: Ember.computed('model', function () {\n        return this.get('store').query('bill', {\n            customer: this.get('model.id'),\n            date:\n                moment().startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('month').format('YYYY-MM-DD'),\n            limit: 'all',\n            sideload: true,\n        });\n    }),\n    tt3billing: Ember.computed('model', function () {\n        return this.get('store').query('tt3billing', {\n            customer: this.get('model.partnerid'),\n        });\n    }),\n    tt3billRows: Ember.computed('model', function () {\n        return this.get('store').query('tt3bill', {\n            customer: this.get('model.id'),\n            date:\n                moment().startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('month').format('YYYY-MM-DD'),\n            sideload: true,\n        });\n    }),\n    hasIntegrations: Ember.computed('model.integration', 'model.customization', function () {\n        return (\n            isPresent(this.get('model.integration')) || isPresent(this.get('model.customization'))\n        );\n    }),\n    actions: {\n        toggleFixedPrice: function () {\n            if (this.get('has_fixed_price')) {\n                this.set('price_disabled', true);\n            } else {\n                this.set('price_disabled', false);\n            }\n            return this.set('dirtyFixedPrice', true);\n        },\n        changedFixedPrice: function () {\n            return this.set('dirtyFixedPrice', true);\n        },\n        //console.log \"sdhkfsdh\"\n        saveFixedPrice: function () {\n            var c, model, price;\n            price = this.get('fixed_price');\n            this.set('fixed_price_saving', true);\n            c = this.get('Collector');\n            // if record not found, create one\n            if (!this.get('fixed_price_model')) {\n                model = this.store.createRecord('fixedprice', {\n                    price: price,\n                    customer: this.get('model'),\n                });\n            } else {\n                model = this.get('fixed_price_model');\n            }\n            // delete record\n            if (!this.get('has_fixed_price')) {\n                model.deleteRecord();\n                if (this.get('fixedLimits').length > 0) {\n                    this.dialogs\n                        .confirm(\n                            this.get('intl').t('admintool.fixedprice.confirm_remove_fixedlimits'),\n                        )\n                        .then((ret) => {\n                            if (ret) {\n                                return this.get('fixedLimits').invoke('destroyRecord');\n                            }\n                        });\n                }\n                this.set('fixed_price', null);\n                this.set('fixed_price_model', null);\n            } else {\n                model.set('price', price);\n                this.set('fixed_price_model', model);\n            }\n            return model.save().then(() => {\n                this.set('fixed_price_saving', false);\n                return this.set('dirtyFixedPrice', false);\n            });\n        },\n        delete: function (row) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('general.remove_row'))\n                .then(function (con) {\n                    if (con) {\n                        return row.destroyRecord();\n                    }\n                });\n        },\n        changeMainCampaign: function (campaign) {\n            var camps;\n            camps = this.store.peekAll('campaign').filterBy('name', campaign);\n            // this is kinda stupid but didn't come up with anything else\n            // iterate all products and set default-prices for all products\n            this.get('customerProducts').forEach((product) => {\n                if (!product['custom_campaign']) {\n                    return Ember.set(product, 'price', product['default_price']);\n                }\n            });\n            // ..after that set campaign-prices for those products that have them\n            return camps.forEach((camp) => {\n                var product;\n                product = this.get('customerProducts').findBy(\n                    'id',\n                    parseInt(camp.get('product.id')),\n                );\n                if (product && !product['custom_campaign']) {\n                    return Ember.set(product, 'price', camp.get('price'));\n                }\n            });\n        },\n        changeCampaign: function (product) {\n            var found_camp, new_camp;\n            this.set('dirtyRecords', true);\n            // if product-campaign\n            if (product['campaign'] !== '') {\n                // first get record for this products product-campaign\n                found_camp = this.store.peekRecord('productcampaign', product['campaign']);\n                if (!product['custom_campaign']) {\n                    // if this product didn't have customer-campaign, create new\n                    new_camp = this.store.createRecord('customercampaign', {\n                        campaign: found_camp,\n                        customer: this.get('model'),\n                    });\n                    product['custom_campaign'] = new_camp; // this product now has new customer-campaign (not saved yet)\n                } else {\n                    // update customer-campaign to new product-campaign\n                    product['custom_campaign'].set('campaign', found_camp);\n                    product['custom_campaign'].send('becomeDirty'); // manually set record dirty because of belongsTo\n                }\n                return Ember.set(product, 'price', found_camp.get('price'));\n            } else {\n                // mark customer-campaign as deleted\n                if (product['custom_campaign'].get('isNew')) {\n                    this.store.unloadRecord(product['custom_campaign']);\n                } else {\n                    product['custom_campaign'].deleteRecord(); // this is in db so it needs to be deleted\n                }\n                product['custom_campaign'] = null;\n                // use product default-price\n                found_camp = this.get('customerProducts').findBy('id', product['id']);\n                return Ember.set(product, 'price', found_camp['default_price']);\n            }\n        },\n        changeContractTerm: function (term) {\n            this.set('model.contractTermLength', term);\n            return this.set('dirtyRecords', true);\n        },\n        clearCache: function () {\n            return this.get('ajax')\n                .request(\n                    config.APP.TT4CAPIURL +\n                        '/system/clear_memcache?partnerid=' +\n                        this.get('model.partnerid'),\n                )\n                .then(() => {\n                    return this.get('notifications').success(\n                        this.get('intl').t('general.cache_cleared'),\n                        {\n                            autoClear: true,\n                        },\n                    );\n                });\n        },\n        saveCampaigns: function () {\n            this.store\n                .peekAll('customercampaign')\n                .filterBy('hasDirtyAttributes')\n                .forEach((cp) => {\n                    if (cp.get('hasDirtyAttributes')) {\n                        return cp.save();\n                    }\n                });\n            this.set('saving', false);\n            return this.set('dirtyRecords', false);\n        },\n        saveCustomer: function () {\n            this.set('errors', []);\n            // show error if billing_start or vatin is empty, otherwise save\n            if (\n                (!this.get('model.billing_start') || !this.get('model.vatin')) &&\n                this.get('model.status') === 'normal'\n            ) {\n                if (!this.get('model.billing_start')) {\n                    this.get('errors').pushObject(\n                        this.get('intl').t('admintool.overview.errors.billing_start'),\n                    );\n                }\n                if (!this.get('model.vatin')) {\n                    this.get('errors').pushObject(\n                        this.get('intl').t('admintool.overview.errors.vatin'),\n                    );\n                }\n                this.set('customerSaving', false);\n                return;\n            }\n            return this.get('model')\n                .save()\n                .then(() => {\n                    return this.set('customerSaving', false);\n                });\n        },\n        changedSalesman: function (salesman) {\n            this.set('model.salesman', this.get('store').peekRecord('user', salesman));\n            return this.get('model').send('becomeDirty');\n        },\n        login: function () {\n            if (this.get('clientVersion') === 'visma') {\n                return this.get('tools').login(this.get('loginUser'), config.APP.ENTRY_URL);\n            } else {\n                return this.get('tools').login(this.get('loginUser'));\n            }\n        },\n        forceBillingPopup: function () {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('admintool.overview.billing.force_popup_alert'))\n                .then((con) => {\n                    if (con) {\n                        return this.get('billinginfo.content').destroyRecord();\n                    }\n                });\n        },\n        addRCBill: function () {\n            this.get('store').createRecord('rcbill', {\n                customer: this.get('model'),\n            });\n            return this.transitionToRoute({\n                queryParams: {\n                    modal: 'rcbill,new',\n                },\n            });\n        },\n        addFixedLimit: function () {\n            this.get('store').createRecord('fixedlimit', {\n                customer: this.get('model'),\n            });\n            return this.transitionToRoute({\n                queryParams: {\n                    modal: ['fixedlimit', 'new'],\n                },\n            });\n        },\n        /* not implemented\n           changeBillingStart: (start) ->\n               @set 'model.billing_start', start\n               if start != \"\"\n                   @set 'calculated_from_promo', false\n               else\n                   @set 'calculated_from_promo', true\n           */\n        editBillinginfo: function () {\n            return this.transitionToRoute({\n                queryParams: {\n                    modal: 'billinginfo,' + this.get('billinginfo.id'),\n                },\n            });\n        },\n    },\n});\n\nexport default AdmintoolOverviewController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/overview/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolOverviewRoute;\n\nimport Ember from 'ember';\n\nAdmintoolOverviewRoute = Ember.Route.extend({\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.init_stuff();\n    },\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting) {\n            controller.set('loginUser', null);\n            return controller.set('clientVersion', null);\n        }\n    },\n});\n\nexport default AdmintoolOverviewRoute;\n","export default Ember.HTMLBars.template({\"id\":\"LjNut4u4\",\"block\":\"{\\\"symbols\\\":[\\\"tt3bill\\\",\\\"bill\\\",\\\"bill\\\",\\\"limit\\\",\\\"product\\\",\\\"tt3bill\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"loginUser\\\"]],[24,[\\\"clientVersion\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-warning btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"login\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.login\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[2,\\\" general company info \\\"],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.name\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"name\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.vatin\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"vatin\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.partnerid\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"partnerid\\\"]],true]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.created\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"row_info\\\",\\\"created\\\"]],true]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.salesman\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"prompt\\\",\\\"bubbleChange\\\",\\\"disabled\\\"],[[24,[\\\"salesmen\\\"]],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"salesman\\\",\\\"id\\\"]],[28,\\\"t\\\",[\\\"general.choose\\\"],null],\\\"changedSalesman\\\",[28,\\\"needs\\\",[\\\"customer.salesman@disable\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.status\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"prompt\\\"],[[24,[\\\"statuslist\\\"]],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"status\\\"]],[28,\\\"t\\\",[\\\"general.choose\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"customer.campaign@hide\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.campaign\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"disabled\\\",\\\"prompt\\\",\\\"change\\\"],[[24,[\\\"campaigns\\\"]],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"campaign\\\"]],[28,\\\"if\\\",[[24,[\\\"price_disabled\\\"]],false,true],null],[28,\\\"t\\\",[\\\"general.choose\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"changeMainCampaign\\\",[24,[\\\"model\\\",\\\"campaign\\\"]]],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.info\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"info\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"customer.billing_start@hide\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.billing_start\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"billing_start\\\"]],[28,\\\"if\\\",[[24,[\\\"model\\\",\\\"billing_start\\\"]],true,false],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.contact.name\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"login_user_info_name\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.contact.email\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"login_user_info_email\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.contact.phone\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"login_user_info_phone\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"admintool.contract_term\\\"],null],false],[0,\\\" (\\\"],[1,[28,\\\"t\\\",[\\\"general.month_short\\\"],null],false],[0,\\\")\\\"],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"prompt\\\",\\\"change\\\"],[[24,[\\\"contractTermOptions\\\"]],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"contractTermLength\\\"]],[28,\\\"t\\\",[\\\"general.choose\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"changeContractTerm\\\",[24,[\\\"model\\\",\\\"contractTermLength\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mt-5 alert alert-danger\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.customer.vatin_or_billing_start_missing\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"hasDirtyAttributes\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"customerSaving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveCustomer\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-block btn-lg btn-warning\\\"],[11,\\\"onClick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"delete\\\",[24,[\\\"model\\\"]]],null]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Delete\\\"],[8],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.customer.inactivate\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"models\\\"],[\\\"button\\\",\\\"btn btn-block btn-lg btn-primary\\\",\\\"forms.form-history\\\",[28,\\\"array\\\",[\\\"customer\\\",[24,[\\\"model\\\",\\\"id\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Search\\\"],[8],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.customer.history\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-block btn-lg btn-info\\\"],[11,\\\"onClick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"clearCache\\\"],null]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Hammer\\\"],[8],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.customer.clear_cache\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!userlevel=7,8\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasIntegrations\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info customer-info-box\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"integration\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.customer.info.integration\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"p\\\",true],[8],[1,[24,[\\\"model\\\",\\\"integration\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"customization\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.customer.info.customization\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"p\\\",true],[8],[1,[24,[\\\"model\\\",\\\"customization\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[2,\\\" product info \\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"tt3billing\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"                \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"TT3 laskutusasetukset\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Kuvaus\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Aktiiviset\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Tyyppi\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Hinta\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Raja 1\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Hinta 1\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Raja 2\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Hinta 2\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Raja 3\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Hinta 3\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Alkaen\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"tt3billing\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"desc\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3billing\\\",\\\"only_active_users\\\",[23,6,[\\\"only_active_users\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"type\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"price\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"step1\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"step1_price\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"step2\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"step2_price\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"step3\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"step3_price\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3billing\\\",\\\"startdate\\\",[23,6,[\\\"startdate\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"delete\\\",[23,6,[]]]],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[10,\\\"style\\\",\\\"position:relative;\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"has_fixed_price\\\"]],[24,[\\\"tt3billing\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well overlay-well\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.customer.product\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.customer.campaign\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.customer.product_price\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.customer.product_unit\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customerProducts\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,5,[\\\"header\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"prompt\\\",\\\"change\\\"],[[23,5,[\\\"productcampaigns\\\"]],\\\"form-control add-fields\\\",[23,5,[\\\"campaign\\\"]],[28,\\\"t\\\",[\\\"admintool.default_campaign\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"changeCampaign\\\",[23,5,[]]],null]]]],false],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"currency\\\",[[23,5,[\\\"price\\\"]],[24,[\\\"showCurrency\\\"]]],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,5,[\\\"pricetype\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"dirtyRecords\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveCampaigns\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[10,\\\"style\\\",\\\"position:relative;\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"tt3billing\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well overlay-well\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"loadingFixedPrices\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.has_fixed_price\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"name\\\",\\\"click\\\",\\\"checked\\\"],[\\\"form-control add-fields\\\",\\\"checkbox\\\",\\\"setting\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggleFixedPrice\\\"],null],[24,[\\\"has_fixed_price\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.fixed_price\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"step\\\",\\\"key-up\\\",\\\"disabled\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"number\\\",\\\"0.01\\\",[28,\\\"action\\\",[[23,0,[]],\\\"changedFixedPrice\\\"],null],[28,\\\"if\\\",[[24,[\\\"has_fixed_price\\\"]],false,true],null],\\\"form-control add-fields\\\",[24,[\\\"fixed_price\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"dirtyFixedPrice\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"fixed_price_saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveFixedPrice\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"customer.overview.customerPricing\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addFixedLimit\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.fixedlimit.customerproduct\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.fixedlimit.limit\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.fixedlimit.price\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fixedLimits\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"customerproduct\\\",\\\"fixedlimit\\\",[28,\\\"get\\\",[[23,4,[]],\\\"customerproduct\\\"],null]]]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"limit\\\",\\\"fixedlimit\\\",[28,\\\"get\\\",[[23,4,[]],\\\"limit\\\"],null]]]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"price\\\",\\\"fixedlimit\\\",[28,\\\"get\\\",[[23,4,[]],\\\"price\\\"],null]]]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-row-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"query\\\"],[[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[28,\\\"concat\\\",[\\\"fixedlimit,\\\",[23,4,[\\\"id\\\"]]],null]]]]]],{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"delete\\\",[23,4,[]]]],[8],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.rcbills\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"pull-right btn btn-success\\\"],[11,\\\"onClick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"addRCBill\\\"],null]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.rcbill.customerproduct\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.rcbill.amount\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.rcbill.price\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.rcbill.description\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"customer.overview.rcstartend\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"recurringBillRows\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,3,[\\\"customerproduct\\\",\\\"humanname\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,3,[\\\"amount\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,3,[\\\"price\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,3,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,3,[\\\"startdate\\\"]],false],[0,\\\" - \\\"],[1,[23,3,[\\\"enddate\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-row-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"query\\\"],[[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[28,\\\"concat\\\",[\\\"rcbill,\\\",[23,3,[\\\"id\\\"]]],null]]]]]],{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"delete\\\",[23,3,[]]]],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.bills\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"customer.overview.bills_description\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.customerproduct\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.amount\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.price\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.description\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.salesman\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"billRows\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"bill\\\",\\\"customerproduct\\\",[23,2,[\\\"customerproduct\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"bill\\\",\\\"amount\\\",[23,2,[\\\"amount\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"bill\\\",\\\"price\\\",[23,2,[\\\"price\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"bill\\\",\\\"description\\\",[23,2,[\\\"description\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"bill\\\",\\\"salesman\\\",[23,2,[\\\"salesman\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-row-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"query\\\"],[[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[28,\\\"concat\\\",[\\\"bill,\\\",[23,2,[\\\"id\\\"]]],null]]]]]],{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"delete\\\",[23,2,[]]]],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[4,\\\"each\\\",[[24,[\\\"tt3billRows\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3bill\\\",\\\"description\\\",[23,1,[\\\"description\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3bill\\\",\\\"amount\\\",[23,1,[\\\"amount\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3bill\\\",\\\"price\\\",[23,1,[\\\"price\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3bill\\\",\\\"code\\\",[23,1,[\\\"code\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-row-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"query\\\"],[[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[28,\\\"concat\\\",[\\\"tt3bill,\\\",[23,1,[\\\"id\\\"]]],null]]]]]],{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"delete\\\",[23,1,[]]]],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"billinginfo\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"billinginfo\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-success\\\"],[11,\\\"onClick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"editBillinginfo\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"admintool.overview.billing_edit\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"billinginfo\\\",\\\"isDeleted\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.overview.billing.type\\\"],null],false],[0,\\\": \\\"],[7,\\\"code\\\",true],[8],[1,[24,[\\\"billinginfo\\\",\\\"billingtype\\\"]],false],[9],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"billinginfo\\\",\\\"billingtype\\\"]],\\\"email\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.email\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"billinginfo\\\",\\\"email\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"billinginfo\\\",\\\"billingtype\\\"]],\\\"eInvoice\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.e_invoice_address\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"billinginfo\\\",\\\"e_invoice_address\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.e_invoice_opreator\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"billinginfo\\\",\\\"e_invoice_operator\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"billinginfo\\\",\\\"billingtype\\\"]],\\\"paper\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.street\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"billinginfo\\\",\\\"street\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.zip\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"billinginfo\\\",\\\"zip\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.town\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"billinginfo\\\",\\\"town\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.e_invoice_country\\\"],null],false],[0,\\\": \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-uppercase\\\"],[8],[1,[24,[\\\"billinginfo\\\",\\\"country\\\"]],false],[9],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.use_company_address\\\"],null],false],[0,\\\"\\\\n                                    : \\\"],[4,\\\"if\\\",[[24,[\\\"billinginfo\\\",\\\"use_company_address\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"standard-icon\\\",[\\\"checked\\\"],null],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"standard-icon\\\",[\\\"unchecked\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.invoice_ref\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"billinginfo\\\",\\\"invoice_ref\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.overview.billing.status\\\"],null],false],[0,\\\": \\\"],[7,\\\"code\\\",true],[8],[1,[24,[\\\"billinginfo\\\",\\\"status\\\"]],false],[9],[9],[0,\\\"\\\\n\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-action\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"forceBillingPopup\\\"]],[8],[1,[28,\\\"t\\\",[\\\"admintool.overview.billing.force_popup\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.overview.billing.info_missing\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/overview/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/reports/bills/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolReportsController;\n\nimport Ember from 'ember';\n\nimport config from '../../../../../config/environment';\n\nAdmintoolReportsController = Ember.Controller.extend({\n    store: Ember.inject.service(),\n    billingHash: Ember.computed('model', function () {\n        return (\n            config.APP.MAIN_TTAPI +\n            '/service/' +\n            btoa(this.get('model.id') + '_' + this.get('model.country'))\n        );\n    }),\n    tt3bills: Ember.computed('model', function () {\n        return this.get('store').query('tt3bill', {\n            customer: this.get('model.id'),\n            sideload: true,\n            order: 'date-',\n        });\n    }),\n    customerid: Em.computed('model.id', function () {\n        return this.get('model.id');\n    }),\n    month: Ember.computed(function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n    oldMonths: Em.computed('month', function () {\n        var i, j, month, months;\n        month = this.get('month');\n        months = [];\n        for (i = j = 1; j < 4; i = ++j) {\n            months.push(moment(month).subtract(i, 'month').format('YYYY-MM-DD'));\n        }\n        return months;\n    }),\n    actions: {\n        showOldBills: function () {\n            this.set('showOldBills', true);\n            return false;\n        },\n    },\n});\n\nexport default AdmintoolReportsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/reports/bills/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolReportsRoute;\n\nimport Ember from 'ember';\n\nAdmintoolReportsRoute = Ember.Route.extend({\n    model: function () {\n        return this.modelFor('admintool.customer');\n    },\n    setupController: function (controller, model) {\n        return this._super(controller, model);\n    },\n});\n\n//controller.init_stuff()\nexport default AdmintoolReportsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"2LBLieDF\",\"block\":\"{\\\"symbols\\\":[\\\"tt3bill\\\",\\\"oldmonth\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.customer.edit.bills.public_hash\\\"],null],false],[0,\\\": \\\"],[1,[22,\\\"billingHash\\\"],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"admintool/components/bill-comp\\\",null,[[\\\"month\\\",\\\"customerid\\\"],[[24,[\\\"month\\\"]],[24,[\\\"customerid\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"showOldBills\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showOldBills\\\"]],[8],[1,[28,\\\"t\\\",[\\\"billing.show_old_bills\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"oldMonths\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"admintool/components/bill-comp\\\",null,[[\\\"month\\\",\\\"customerid\\\"],[[23,2,[]],[24,[\\\"customerid\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-striped\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.date\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.customerproduct\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.amount\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.price\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.description\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"tt3bills\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3bill\\\",\\\"date\\\",[23,1,[\\\"date\\\"]]]]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3bill\\\",\\\"description\\\",[23,1,[\\\"description\\\"]]]]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3bill\\\",\\\"amount\\\",[23,1,[\\\"amount\\\"]]]]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3bill\\\",\\\"price\\\",[23,1,[\\\"price\\\"]]]]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3bill\\\",\\\"code\\\",[23,1,[\\\"code\\\"]]]]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"total\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/reports/bills/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/reports/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerReportsController;\n\nimport Ember from 'ember';\n\nAdmintoolCustomerReportsController = Ember.Controller.extend();\n\nexport default AdmintoolCustomerReportsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/reports/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerReportsRoute;\n\nimport Ember from 'ember';\n\nAdmintoolCustomerReportsRoute = Ember.Route.extend({\n    model: function () {\n        return this.modelFor('admintool.customer');\n    },\n});\n\nexport default AdmintoolCustomerReportsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"J/qFSIE7\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/reports/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/reports/users/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerReportsUsersController;\n\nimport Ember from 'ember';\n\nimport config from 'tt4/config/environment';\n\nAdmintoolCustomerReportsUsersController = Ember.Controller.extend({\n    tools: Ember.inject.service(),\n    admintool: Ember.inject.service(),\n    ajax: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    init_stuff: function () {\n        return this.getData().then((data) => {\n            return this.set('users', data);\n        });\n    },\n    searchObserver: Ember.observer('q', function () {\n        //run immediatly if empty value\n        if (this.get('q') === '') {\n            return Ember.run(this, this.doSearch);\n        } else {\n            return Ember.run.debounce(this, this.doSearch, 1000);\n        }\n    }),\n    userlevel: 5,\n    getData: function () {\n        var c, promise;\n        c = this.get('Collector');\n        promise = this.get('admintool').ajax({\n            url: 'get_form_data',\n            method: 'get',\n            data: {\n                form: 'user',\n                partnerid: this.get('model.partnerid'),\n                q: this.get('q'),\n                userlevel: this.get('userlevel'),\n                order: 'userlevel-',\n                sideload: true,\n            },\n        });\n        return promise.then((data) => {\n            data.forEach((row) => {\n                return (row['userlevel'] =\n                    parseInt(row['userlevel']) < 10\n                        ? c._format_(row['userlevel'], 'user', 'userlevel')\n                        : row['userlevel']);\n            });\n            return data;\n        });\n    },\n    userlevels: Ember.computed(function () {\n        var intl;\n        intl = this.get('intl');\n        return [\n            {\n                id: 1,\n                name: intl.t('user.userlevel.1'),\n            },\n            {\n                id: 2,\n                name: intl.t('user.userlevel.2'),\n            },\n            {\n                id: 3,\n                name: intl.t('user.userlevel.3'),\n            },\n            {\n                id: 4,\n                name: intl.t('user.userlevel.4'),\n            },\n            {\n                id: 5,\n                name: intl.t('user.userlevel.5'),\n            },\n            {\n                id: 6,\n                name: intl.t('user.userlevel.6'),\n            },\n        ];\n    }),\n    doSearch: function () {\n        return this.getData().then((data) => {\n            return this.set('users', data);\n        });\n    },\n    actions: {\n        login: function (username) {\n            if (\n                this.get('model.campaign') === 'visma' ||\n                this.get('model.campaign') === 'entry_mini'\n            ) {\n                return this.get('tools').login(\n                    {\n                        username: username,\n                    },\n                    config.APP.ENTRY_URL,\n                );\n            } else {\n                return this.get('tools').login({\n                    username: username,\n                });\n            }\n        },\n        clearCache: function (username) {\n            return this.get('ajax')\n                .request(\n                    config.APP.TT4CAPIURL +\n                        '/system/clear_memcache?partnerid=' +\n                        this.get('model.partnerid') +\n                        '&username=' +\n                        username,\n                )\n                .then(() => {\n                    return this.get('notifications').success(\n                        this.get('intl').t('general.user_cache_cleared'),\n                        {\n                            autoClear: true,\n                        },\n                    );\n                });\n        },\n        filterChanged: function () {\n            return this.doSearch();\n        },\n    },\n});\n\nexport default AdmintoolCustomerReportsUsersController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/reports/users/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerReportsUsersRoute;\n\nimport Ember from 'ember';\n\nAdmintoolCustomerReportsUsersRoute = Ember.Route.extend({\n    model: function () {\n        return this.modelFor('admintool.customer');\n    },\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.init_stuff();\n    },\n});\n\nexport default AdmintoolCustomerReportsUsersRoute;\n","export default Ember.HTMLBars.template({\"id\":\"CTZh9vOP\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row reports-header-row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-6 col-md-4 col-lg-3 input-group report-more\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"placeholder\\\"],[\\\"text\\\",[24,[\\\"q\\\"]],\\\"form-control\\\",[28,\\\"t\\\",[\\\"general.search\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"value\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"input-group-addon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeSearch\\\"]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Cross\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Search\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-6 col-md-4 col-lg-3 input-group report-more\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\"],[[24,[\\\"userlevels\\\"]],[24,[\\\"userlevel\\\"]],\\\"filterChanged\\\",[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive table-hover general-report\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.user.firstname\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.user.lastname\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.user.username\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.user.phone\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.user.email\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.user.userlevel\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Actions\\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"users\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"firstname\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"username\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"phone\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"email\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"userlevel\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-warning\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"login\\\",[23,1,[\\\"username\\\"]]]],[8],[0,\\\"Login\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-warning\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clearCache\\\",[23,1,[\\\"username\\\"]]]],[8],[0,\\\"Clear user cache\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/reports/users/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nAdmintoolCustomerRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    model: function (params) {\n        return this.get('store').findRecord('customer', params.id, {\n            include: true,\n        });\n    },\n    beforeModel: function () {\n        return this.transitionTo('admintool.customer.overview');\n    },\n});\n\nexport default AdmintoolCustomerRoute;\n","export default Ember.HTMLBars.template({\"id\":\"vNYmIGoj\",\"block\":\"{\\\"symbols\\\":[\\\"sublink\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"subMenus\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subMenus\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",null,[[\\\"needs\\\"],[[23,1,[\\\"needs\\\"]]]]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"div\\\",\\\"submenu-item\\\",[23,1,[\\\"link\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/tt3tott4/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerDetailsController;\n\nimport Ember from 'ember';\n\nAdmintoolCustomerDetailsController = Ember.Controller.extend({\n    admintool: Ember.inject.service(),\n    tt3service: Ember.computed('model.forms', function () {\n        return this.get('model.forms.tt3flag');\n    }),\n    products: Ember.computed.alias('model.tt3tott4.added_products'),\n    keys: Ember.computed('model.tt3tott4.keys', function () {\n        return this.get('model.tt3tott4.keys').join('\\n');\n    }),\n    actions: {\n        tt3tott4: function () {\n            var promise, w;\n            w = confirm(\n                'Are you sure!?\\n\\nUse this action only if you are 100% sure what this button does. This action is irreversible and prohibits TT3 usage completely',\n            );\n            console.log('w', w);\n            if (!w) {\n                return;\n            }\n            promise = this.get('admintool').ajax({\n                url: 'tt3tott4',\n                method: 'get',\n                data: {\n                    partnerid: this.get('model.partnerid'),\n                    execute: true,\n                },\n            });\n            return promise.then((back) => {\n                alert(\n                    'Concrats!\\n\\nService is now pure TT4.\\nReport saved to ' +\n                        back.report_saved_to,\n                );\n                return this.send('refreshModel');\n            });\n        },\n    },\n});\n\nexport default AdmintoolCustomerDetailsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/tt3tott4/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerDetailsRoute;\n\nimport Ember from 'ember';\n\nAdmintoolCustomerDetailsRoute = Ember.Route.extend({\n    admintool: Ember.inject.service(),\n    model: function () {\n        var parent;\n        parent = this.modelFor('admintool.customer');\n        return Ember.RSVP.hash({\n            partnerid: parent.get('partnerid'),\n            forms: this.get('admintool').ajax({\n                url: 'get_form_data',\n                method: 'get',\n                data: {\n                    form: 'forms',\n                    partnerid: parent.get('partnerid'),\n                    rawoutput: true,\n                },\n            }),\n            tt3tott4: this.get('admintool').ajax({\n                url: 'tt3tott4',\n                method: 'get',\n                data: {\n                    partnerid: parent.get('partnerid'),\n                },\n            }),\n        });\n    },\n    actions: {\n        refreshModel: function () {\n            return this.refresh();\n        },\n    },\n});\n\nexport default AdmintoolCustomerDetailsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"2GsQT4r2\",\"block\":\"{\\\"symbols\\\":[\\\"product\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"tt3service\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[0,\\\"This service is TT3 version\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Transform service to pure TT4 by clicked button below\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"tt3tott4\\\"]],[8],[0,\\\"Make this service great again!\\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[7,\\\"b\\\",true],[8],[0,\\\"NOTE: Own role settings are lost when this action is executed. Please move own role settings to TT4 by hand.\\\\n    Check also that settings are correct in TT4 afterwards.\\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Products\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"products\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"li\\\",true],[8],[1,[23,1,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Extra\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"textarea\\\",true],[10,\\\"cols\\\",\\\"40\\\"],[10,\\\"rows\\\",\\\"5\\\"],[8],[1,[22,\\\"keys\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[0,\\\"This service is already pure TT4\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/tt3tott4/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/reports/bi/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolTimecleanController;\n\nimport Ember from 'ember';\n\nAdmintoolTimecleanController = Ember.Controller.extend({\n    subMenus: [\n        {\n            link: 'admintool.reports.bi.timecleanlog',\n            text: 'menu.admintool.timecleanlog',\n            needs: [],\n        },\n        {\n            link: 'admintool.reports.bi.findtimeclean',\n            text: 'menu.admintool.find_timeclean',\n            needs: [],\n        },\n    ],\n});\n\nexport default AdmintoolTimecleanController;\n","import Controller from '@ember/controller';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport config from '../../../../../config/environment';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    ajax: service(),\n    session: service(),\n    ttapi2: service(),\n    dialogs: service(),\n    intl: service(),\n\n    queryParams: ['imei'],\n\n    imei: null,\n    notInUse: alias('model'),\n\n    texts: computed(function () {\n        return {\n            header: 'Timeclean Overview',\n            registeredTo: 'Registered to services',\n            commands: 'Commands',\n        };\n    }),\n\n    imeiOk: computed('imei', function () {\n        return get(this, 'imei.length') === 15;\n    }),\n\n    registeredTo: computed('imei', function () {\n        return get(this, 'ajax').request(\n            config.APP.ADMINTOOLURL + 'BI/fetchDeviceServices?imei=' + get(this, 'imei'),\n            {\n                type: 'GET',\n                headers: {\n                    Authorization:\n                        'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n                },\n            },\n        );\n    }),\n\n    commands: computed('imei', function () {\n        return get(this, 'ttapi2').request(\n            '/at2/jsonapi/commands?filter[imei]=' + get(this, 'imei'),\n        );\n    }),\n\n    actions: {\n        register(partnerid) {\n            get(this, 'ajax')\n                .request(config.APP.REALTTAPI + '/api/registerTC', {\n                    type: 'POST',\n                    headers: {\n                        Authorization:\n                            'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n                    },\n                    data: { imei: get(this, 'imei'), partnerid: partnerid },\n                })\n                .then(this.refresh.bind(this));\n\n            set(this, 'showRegisterAdder', false);\n        },\n\n        remove(partnerid) {\n            get(this, 'dialogs')\n                .confirm(get(this, 'intl').t('report.confirm_delete'))\n                .then(this.removeNow.bind(this, partnerid));\n        },\n    },\n\n    refresh() {\n        this.notifyPropertyChange('imei');\n    },\n\n    removeNow(partnerid, con) {\n        if (!con) return;\n        get(this, 'ajax')\n            .request(\n                config.APP.REALTTAPI +\n                    '/api/registerTC?imei=' +\n                    get(this, 'imei') +\n                    '&partnerid=' +\n                    partnerid,\n                {\n                    type: 'DELETE',\n                    headers: {\n                        Authorization:\n                            'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n                    },\n                },\n            )\n            .then(this.refresh.bind(this));\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"WYfq+Ugw\",\"block\":\"{\\\"symbols\\\":[\\\"command\\\",\\\"service\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"h3\\\",true],[8],[1,[24,[\\\"texts\\\",\\\"header\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group input-group-lg\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"placeholder\\\",\\\"value\\\"],[\\\"form-control\\\",[28,\\\"t\\\",[\\\"select.search.imei\\\"],null],[24,[\\\"imei\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Search\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"imeiOk\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content col-md-5 \\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[24,[\\\"texts\\\",\\\"registeredTo\\\"]],false],[0,\\\" \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showRegisterAdder\\\"]]],null],true]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9],[9],[0,\\\" \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"registeredTo\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"registeredTo\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label label-info\\\"],[8],[1,[23,2,[\\\"partnerid\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[23,2,[\\\"name\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    (service is not found from admintool)\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[11,\\\"onClick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,2,[\\\"partnerid\\\"]]],null]],[10,\\\"class\\\",\\\"pull-right move move-Delete\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},{\\\"statements\\\":[[0,\\\"                            Not registered to any service\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content col-md-5 col-md-offset-1\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[24,[\\\"texts\\\",\\\"commands\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"commands\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"commands\\\"]]],null],\\\"data\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[23,1,[\\\"command\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"status\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label label-warning pull-right\\\"],[8],[1,[23,1,[\\\"status\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label label-default pull-right\\\"],[8],[0,\\\"pending\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                            No commands\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[0,\\\"Type 15 characters imei\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRegisterAdder\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"general.add\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showRegisterAdder\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"class\\\"],[[24,[\\\"partnerid\\\"]],\\\"form-control\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"register\\\",[24,[\\\"partnerid\\\"]]]],[8],[0,\\\"Register\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showRegisterAdder\\\"]]],null],false]],[8],[0,\\\"Close\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/reports/bi/findtimeclean/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport { inject as service } from '@ember/service';\n\nexport default Route.extend(AuthenticatedRouteMixin, {\n    Collector: service('collector-service'),\n\n    beforeModel(transition) {\n        if (!this.Collector.testNeeds(['userlevel=5'])) {\n            transition.abort();\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"RZtAl2yH\",\"block\":\"{\\\"symbols\\\":[\\\"sublink\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"subMenus\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subMenus\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",null,[[\\\"needs\\\"],[[23,1,[\\\"needs\\\"]]]]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"div\\\",\\\"submenu-item\\\",[23,1,[\\\"link\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/reports/bi/template.hbs\"}});","import Controller from '@ember/controller';\nimport { Promise as EmberPromise } from 'rsvp';\nimport PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\nimport ObjectProxy from '@ember/object/proxy';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    ttapi2: service(),\n    notinuse: alias('model'),\n\n    filters: computed('imeiFilter', 'tagFilter', 'date', function () {\n        let filters = new Object();\n        if (get(this, 'imeiFilter.target.value')) {\n            filters.imei = get(this, 'imeiFilter.target.value');\n        }\n        if (get(this, 'tagFilter.target.value')) {\n            filters.tagid = get(this, 'tagFilter.target.value');\n        }\n        if (get(this, 'date')) {\n            filters.datetime = get(this, 'date');\n        }\n\n        return filters;\n    }),\n\n    logs: computed('filters', function () {\n        let url = 'at2/timecleanlog';\n        let filters = get(this, 'filters');\n        if (filters) {\n            for (const key in filters) {\n                if (key == Object.keys(filters)[0]) {\n                    url += '?' + key + '=' + filters[key];\n                } else {\n                    url += '&' + key + '=' + filters[key];\n                }\n            }\n        }\n        return ObjectProxy.extend(PromiseProxyMixin).create({\n            //eslint-disable-line\n            promise: new EmberPromise((resolve) => {\n                get(this, 'ttapi2')\n                    ._get(url)\n                    .then((back) => this._resolvePromise(back, resolve));\n            }),\n        });\n    }),\n\n    _resolvePromise(back, resolve) {\n        resolve(back.message);\n    },\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"1cI1Aig8\",\"block\":\"{\\\"symbols\\\":[\\\"value\\\",\\\"key\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row filter-comp-component\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-4\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"date-range-picker\\\",null,[[\\\"value\\\",\\\"dateChange\\\"],[[24,[\\\"date\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"dateFilter\\\"]]],null]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-4\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"placeholder\\\",\\\"keyUp\\\"],[\\\"form-control\\\",[28,\\\"t\\\",[\\\"select.search.imei\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"imeiFilter\\\"]]],null]],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Search\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-4\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"placeholder\\\",\\\"keyUp\\\"],[\\\"form-control\\\",[28,\\\"t\\\",[\\\"select.search.tagid\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"tagFilter\\\"]]],null]],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Search\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content col-md-10 col-md-offset-1\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.timecleanlog\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"logs\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"logs\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"logs\\\",\\\"content\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[24,[\\\"logs\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[1,[28,\\\"admintool/reports/bi/timecleanlog/timeclean-row\\\",null,[[\\\"value\\\"],[[23,1,[]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.no_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/reports/bi/timecleanlog/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport config from 'tt4/config/environment';\n\nexport default Component.extend({\n    ajax: service(),\n    session: service(),\n    show: false,\n\n    info: computed('value', function () {\n        if (get(this, 'value.success')) return get(this, 'value.success');\n        return get(this, 'value.error');\n    }),\n\n    rowActions: computed('value', function () {\n        if (get(this, 'value.error'))\n            return { label: 'label-danger', value: get(this, 'value.error').substring(0, 100) };\n\n        const stamps = get(this, 'value.success.stamps');\n        if (get(this, 'value.success.imei_not_found'))\n            return { label: 'label-danger', value: 'imei not found' };\n        if (!stamps) return { label: 'label-danger', value: 'skipped' };\n\n        const parnterids = Object.keys(stamps);\n\n        const actions = [];\n\n        parnterids.forEach((partnerid) => {\n            const stamp = stamps[partnerid];\n            if (get(stamp, 'worktime.worktime.id')) {\n                actions.push(\n                    get(stamp, 'worktime.worktime.endtime') ? 'worktime ended' : 'worktime started',\n                );\n            }\n            if (get(stamp, 'presence.presence.id')) {\n                actions.push(\n                    get(stamp, 'presence.presence.out') ? 'presence ended' : 'presence started',\n                );\n            }\n        });\n\n        if (actions.length == 1) return { label: 'label-warning', value: actions[0] };\n        if (actions.length > 1) return { label: 'label-warning', value: 'many actions' };\n\n        return { label: 'label-danger', value: 'skipped' };\n    }),\n\n    actions: {\n        sendStamp(message) {\n            get(this, 'ajax')\n                .request(config.APP.REALTTAPI + '/api/sendstamp', {\n                    type: 'POST',\n                    headers: {\n                        Authorization:\n                            'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n                    },\n                    data: 'base64:' + btoa(message),\n                })\n                .then(this._showMessage.bind(this));\n        },\n    },\n    _showMessage(resp) {\n        set(this, 'responseMessage', resp.message);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"+7tkIoC3\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"value\\\",\\\"datetime\\\"]],\\\"LLL\\\"],null],false],[0,\\\"\\\\n\\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label label-success\\\"],[8],[4,\\\"link-to\\\",null,[[\\\"query\\\",\\\"route\\\"],[[28,\\\"hash\\\",null,[[\\\"imei\\\"],[[24,[\\\"value\\\",\\\"stampinfo\\\",\\\"imei\\\"]]]]],\\\"admintool.reports.bi.findtimeclean\\\"]],{\\\"statements\\\":[[1,[24,[\\\"value\\\",\\\"stampinfo\\\",\\\"imei\\\"]],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label label-info\\\"],[8],[1,[24,[\\\"value\\\",\\\"stampinfo\\\",\\\"tagid\\\"]],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label label-default\\\"],[8],[1,[24,[\\\"value\\\",\\\"stampinfo\\\",\\\"direction\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"glyphicon glyphicon-chevron-down pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"show\\\"]]],null],[28,\\\"not\\\",[[24,[\\\"show\\\"]]],null]]],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"label \\\",[24,[\\\"rowActions\\\",\\\"label\\\"]],\\\" pull-right\\\"]]],[8],[1,[24,[\\\"rowActions\\\",\\\"value\\\"]],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row info\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"XML:\\\"],[7,\\\"pre\\\",true],[8],[1,[24,[\\\"value\\\",\\\"message\\\"]],false],[9],[0,\\\" \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\" Stampinfo:\\\"],[7,\\\"pre\\\",true],[8],[1,[28,\\\"show-json\\\",[[24,[\\\"value\\\",\\\"stampinfo\\\"]],4],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\" \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendStamp\\\",[24,[\\\"value\\\",\\\"message\\\"]]]],[8],[0,\\\"Send stamp again\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"responseMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\" Message: \\\"],[7,\\\"pre\\\",true],[8],[1,[22,\\\"responseMessage\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"Stamp: \\\"],[7,\\\"pre\\\",true],[8],[1,[28,\\\"show-json\\\",[[24,[\\\"info\\\"]],4],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/reports/bi/timecleanlog/timeclean-row/template.hbs\"}});","import Controller from '@ember/controller';\n\n// eslint-disable-next-line ember/alias-model-in-controller\nexport default Controller.extend({\n    // eslint-disable-next-line ember/avoid-leaking-state-in-ember-objects\n    columns: [\n        { name: 'Name', valuePath: 'name', width: 200 },\n        { name: 'Description', valuePath: 'description', width: 500 },\n        { name: 'Key', valuePath: 'key', width: 300 },\n    ],\n});\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\n\nexport default Route.extend({\n    cc: service(),\n    model() {\n        return this.cc.request('ld-flags');\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"gOS+xA8c\",\"block\":\"{\\\"symbols\\\":[\\\"table\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[0,\\\"List of feature flags and a description of what they do\\\"],[9],[0,\\\"\\\\n\\\"],[5,\\\"ember-table\\\",[[12,\\\"class\\\",\\\"movenium-table\\\"]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"head\\\"]],[],[[\\\"@columns\\\"],[[23,0,[\\\"columns\\\"]]]]],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[\\\"@rows\\\"],[[28,\\\"to-array\\\",[[24,[\\\"model\\\"]]],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/reports/featureflags/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport { inject as service } from '@ember/service';\n\nexport default Route.extend(AuthenticatedRouteMixin, {\n    Collector: service('collector-service'),\n\n    beforeModel(transition) {\n        if (!this.Collector.testNeeds(['products.admintool'])) {\n            transition.abort();\n            this.transitionTo('my-sites.index');\n        }\n    },\n});\n","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\n\nconst CollectorAddModalAbsenceComponent = Component.extend({\n    type: 'multi',\n    layoutName: computed('record', function () {\n        return 'collector/record-comp';\n    }),\n\n    multipleDays: computed('type', function () {\n        if (get(this, 'type') === 'single') return false;\n        return true;\n    }),\n\n    settings: computed('record', 'type', function () {\n        if (this.type === 'multi') {\n            return {\n                form: 'abcense',\n                skip: ['starttime', 'endtime', 'status', 'absence_hours'],\n                mandatory: ['startdate', 'enddate', 'dayamount'],\n            };\n        } else {\n            // if hour-type adding\n            let ret;\n            if (this.Collector.testNeedsOne('products.absences_hours')) {\n                ret = {\n                    form: 'abcense',\n                    skip: ['dayamount', 'status', 'enddate'],\n                    mandatory: ['startdate', 'absence_hours'],\n                };\n            } else {\n                ret = {\n                    form: 'abcense',\n                    skip: ['dayamount', 'status', 'enddate'],\n                    mandatory: ['starttime', 'endtime', 'startdate'],\n                };\n            }\n            return ret;\n        }\n    }),\n\n    actions: {\n        changeType(type) {\n            set(this, 'type', type);\n            if (type === 'multi') {\n                set(this, 'record.starttime', null);\n                set(this, 'record.endtime', null);\n                return set(this, 'record.absence_hours', null);\n            } else {\n                set(this, 'record.enddate', null);\n                return set(this, 'record.dayamount', null);\n            }\n        },\n\n        didInsertElement() {\n            this.setRightType();\n        },\n\n        removeModal(settings) {\n            if (this.cancelClicked) {\n                return this.cancelClicked(settings, false);\n            }\n        },\n\n        modalRecordSaved(settings, record) {\n            if (this.recordSaved) {\n                return this.recordSaved(settings, record);\n            }\n        },\n\n        setRightType() {\n            let type = 'single';\n            const record = this.record;\n            if (!record || get(record, 'isNew')) {\n                type = 'multi';\n            }\n            if ((record && get(record, 'starttime') === '') || !get(record, 'starttime')) {\n                type = 'multi';\n            } else {\n                type = 'single';\n            }\n            set(this, 'type', type);\n        },\n    },\n});\n\nexport default CollectorAddModalAbsenceComponent;\n","export default Ember.HTMLBars.template({\"id\":\"zdm894Wp\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"record\\\",\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"type\\\"]],\\\"multi\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"changeType\\\",\\\"multi\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"menu.add_abcense_multiple\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"type\\\"]],\\\"single\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"changeType\\\",\\\"single\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"menu.add_abcense_single\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-absence-content\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"abcenses/add/abcense-record-comp\\\",null,[[\\\"form\\\",\\\"settings\\\",\\\"multipleDays\\\",\\\"record_id\\\",\\\"record\\\",\\\"cancelClicked\\\",\\\"recordSaved\\\"],[\\\"abcense\\\",[24,[\\\"settings\\\"]],[24,[\\\"multipleDays\\\"]],[24,[\\\"record_id\\\"]],[24,[\\\"record\\\"]],\\\"removeModal\\\",\\\"modalRecordSaved\\\"]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/add-modal/absence/template.hbs\"}});","import { inject as service } from '@ember/service';\nimport recordComp from '../../record-comp/component';\nimport { copy } from 'ember-copy';\n\nconst CollectorAddModalAdmintoolComponent = recordComp.extend({\n    store: service(),\n    intl: service(),\n\n    layoutName: 'collector/record-comp',\n\n    returnField(field) {\n        if (\n            field.type === 'database' &&\n            this.form === 'timecleandevice' &&\n            field.name === 'customer'\n        ) {\n            const features = copy(field.features);\n            features.hide = true;\n            field.features = features;\n        }\n        return field;\n    },\n});\n\nexport default CollectorAddModalAdmintoolComponent;\n","import { inject as service } from '@ember/service';\nimport recordComp from '../../record-comp/component';\nimport { set } from '@ember/object';\n\nconst CollectorAddModalCardComponent = recordComp.extend({\n    store: service(),\n    session: service(),\n\n    layoutName: 'collector/record-comp',\n\n    init() {\n        this._super();\n        this.store.createRecord('card', {\n            taxnumber: this.session.currentUser.taxnumber,\n            name: this.session.currentUser.firstname + ' ' + this.session.currentUser.lastname,\n            owner: 'partner',\n        });\n\n        set(this, 'record_id', 'new');\n    },\n});\n\nexport default CollectorAddModalCardComponent;\n","/*eslint-disable ember/named-functions-in-promises */\nimport { getOwner } from '@ember/application';\n\nimport { Promise } from 'rsvp';\nimport PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\nimport ObjectProxy from '@ember/object/proxy';\nimport { next, once, bind } from '@ember/runloop';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport Component from '@ember/component';\nimport pdf_mixin from '../../../mixins/pdf-export';\n\nconst CollectorAddModalComponent = Component.extend(pdf_mixin, {\n    Collector: service('collector-service'),\n    store: service(),\n    gui: service(),\n    flags: service(),\n    localStorageWrapper: service(),\n    intl: service(),\n    router: service(),\n    record: null,\n\n    fields: computed('form', function () {\n        return get(this, 'Collector')\n            .fieldArray(get(this, 'form'))\n            .reject((field) => field.features.hide);\n    }),\n\n    _modal: computed('modal', function () {\n        return get(this, 'modal').split(',');\n    }),\n\n    form: computed('_modal', function () {\n        return get(this, '_modal')[0];\n    }),\n\n    type: computed('_modal', function () {\n        return get(this, '_modal')[2];\n    }),\n\n    storeRecord: computed('record', function () {\n        const record = get(this, 'store').peekRecord(get(this, 'form'), get(this, 'record'));\n        if (!record) {\n            next(this, () => {\n                return set(this, 'modal', []); //eslint-disable-line\n            });\n        }\n\n        return record;\n    }),\n\n    recordCompComponent: computed('form', function () {\n        const addModal = (() => {\n            switch (get(this, 'form')) {\n                case 'worktask':\n                    return 'worktask';\n                case 'timecleandevice':\n                    return 'admintool';\n                case 'abcense':\n                    return 'absence';\n                case 'worktime':\n                    return 'worktime';\n                case 'presence':\n                    return 'presence';\n                case 'card':\n                    return 'card';\n            }\n        })();\n        if (addModal) {\n            return 'collector/add-modal/' + addModal;\n        } else {\n            return 'collector/record-comp';\n        }\n    }),\n\n    currentHolidays: computed(function () {\n        return ObjectProxy.extend(PromiseProxyMixin).create({\n            promise: new Promise((resolve) => {\n                const userId = get(\n                    get(this, 'store').peekRecord(get(this, 'form'), get(this, 'record')),\n                    'user.id',\n                );\n                const start = moment().format('YYYY') + '-05-02';\n                const country = get(\n                    get(this, 'store').peekAll('companyInfo'),\n                    'firstObject.country',\n                );\n\n                const url = 'api/getUsersWithHolidays';\n                return get(this, 'Collector')\n                    .ttapi({\n                        url: url + '?id=' + userId + '&start=' + start + '&country=' + country,\n                    })\n                    .then((back) => {\n                        return resolve({ value: back['users'][0]['availabledays'] });\n                    });\n            }),\n        });\n    }),\n\n    didReceiveAttrs() {\n        if (get(this, 'record')) return;\n        const modal = get(this, '_modal');\n        if (modal[1]) {\n            set(this, 'record', modal[1]);\n        } else {\n            set(this, 'record', false);\n        }\n    },\n\n    willInsertElement() {\n        return once(this, bind(this, this.hideMobileHeader));\n    },\n\n    didDestroyElement() {\n        return set(this, 'gui.hideMobileHeader', false);\n    },\n\n    actions: {\n        modalRecordSaved(settings, record) {\n            //            @get('notifications').success(@get('intl').t(\"modal.record.saved\",  {form: record.constructor.modelName}), {\n            //                autoClear: true\n            //                clearDuration: 2000\n            //            })\n            set(this, 'record', get(record, 'id'));\n            return set(this, 'saved', true);\n        },\n\n        removeModal(settings, cleaningDone) {\n            // this is ugly but only way I came up with...\n            const promise = new Promise((resolve) => {\n                if (!cleaningDone) {\n                    if (get(this, 'record') === 'new') {\n                        const found = get(this, 'store')\n                            .peekAll(get(this, 'form'))\n                            .find((record) => {\n                                return get(record, 'hasDirtyAttributes');\n                            });\n                        if (found) {\n                            found.deleteRecord();\n                        }\n                    } else {\n                        if (get(this, 'record')) {\n                            const record = get(this, 'store').peekRecord(\n                                get(this, 'form'),\n                                get(this, 'record'),\n                            );\n                            if (record) {\n                                record.rollbackAttributes();\n                            }\n                        }\n                    }\n                }\n                // Only refresh model for presence form for now, this should be removed or slowly added more options\n                if (\n                    !['show', 'history'].includes(get(this, 'type')) &&\n                    ['presence', 'abcense', 'group', 'site_safety_event', 'worktask'].includes(\n                        get(this, 'form'),\n                    )\n                ) {\n                    const controller = getOwner(this).lookup('controller:application');\n                    const routeName = get(this.router, 'currentRouteName');\n                    if (routeName.includes(get(this, 'form'))) {\n                        const route = getOwner(this).lookup(\n                            'route:' + get(controller, 'currentRouteName'),\n                        );\n                        return route.refresh().then(() => {\n                            return resolve();\n                        });\n                    } else {\n                        return resolve();\n                    }\n                } else {\n                    return resolve();\n                }\n            });\n            // we have to wait for model-refreshing is done before removing modal, otherwise it creates some weird issues with array-type query-params\n            return promise.then(() => {\n                set(this, 'modal', null);\n                return set(this, 'showEmailModal', false);\n            });\n        },\n\n        showEmailModal() {\n            return set(this, 'showEmailModal', true);\n        },\n\n        sendEmail(to, title, content) {\n            set(this, 'loading', true);\n            const intl = get(this, 'intl');\n            const c = get(this, 'Collector');\n            set(this, 'loading', true);\n            const form = get(this, 'form');\n            const fields = c.fields(form);\n\n            const titles = [];\n            const columns = [];\n            const export_fields = [];\n            for (let name in fields) {\n                const field = fields[name];\n                set(field, 'ext', name);\n                if (field.features && field.features.hide_column) {\n                    continue;\n                }\n                titles.push(c.getTranslationForColumn(form, field.ext));\n                columns.push(field.ext);\n                export_fields.push(field);\n            }\n\n            return this.formatCollectorFieldsToPdfArray(\n                export_fields,\n                get(this, 'storeRecord'),\n                'row',\n            ).then((data) => {\n                const element = this.createPdfTableElementRows(columns, [data], titles);\n                return this.createPdfFromElements(element, 'base64').then((pdf) => {\n                    return c\n                        .ttapi({\n                            url: 'sendReportAsEmail',\n                            data: {\n                                to_address: to,\n                                header: title,\n                                content,\n                                email: pdf,\n                                lang: intl.primaryLocale,\n                            },\n                            method: 'post',\n                        })\n                        .then(() => {\n                            set(this, 'loading', false);\n                            set(this, 'emailSent', true);\n                            return get(this, 'localStorageWrapper').setUserSetting(\n                                'last_sent_email_address',\n                                to,\n                            );\n                        });\n                });\n            });\n        },\n    },\n\n    hideMobileHeader() {\n        set(this, 'gui.hideMobileHeader', true);\n    },\n});\n\nexport default CollectorAddModalComponent;\n","import { set } from '@ember/object';\nimport recordComp from '../../record-comp/component';\nimport { inject as service } from '@ember/service';\n\nexport default recordComp.extend({\n    Collector: service('collector-service'),\n    layoutName: 'collector/record-comp',\n\n    returnField(field) {\n        if (\n            field.name == 'description' &&\n            this.Collector.testNeedsOne('products.personalliggareandid06')\n        ) {\n            set(field, 'features.mandatory', true);\n        }\n        return field;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"TKpYcYCd\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showEmailModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"export-modal\\\",null,[[\\\"form\\\",\\\"sendEmailAction\\\",\\\"includeEmail\\\",\\\"showEmailModal\\\",\\\"emailSent\\\",\\\"loading\\\",\\\"removeModal\\\"],[[24,[\\\"form\\\"]],\\\"sendEmail\\\",true,[24,[\\\"showEmailModal\\\"]],[24,[\\\"emailSent\\\"]],[24,[\\\"loading\\\"]],\\\"removeModal\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-container\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup-header\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"menu.add_\\\",[24,[\\\"form\\\"]]],null]],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross add-modal-cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"modal-popup-content \\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"isSafari\\\"]],\\\"isMobileSafari\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"saved\\\"]],[28,\\\"is-equal\\\",[[24,[\\\"type\\\"]],\\\"show\\\"],null]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"type\\\"]],\\\"show\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saved.title\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"storeRecord\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-saved-content\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"storeRecord\\\",\\\"row_info\\\",\\\"status\\\"]],\\\"locked\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"t\\\",[\\\"modal.record_locked.warning\\\"],null],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[23,1,[\\\"name\\\"]],[23,1,[\\\"form\\\"]]]]],false],[0,\\\": \\\"],[9],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[[23,1,[]],[23,1,[\\\"form\\\"]],[24,[\\\"storeRecord\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"form\\\"]],\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcensetype.usesholiday\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"customersetting.hide_holidays\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"absence.your_holidays_now\\\"],null],false],[0,\\\":\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentHolidays\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                            \\\"],[1,[24,[\\\"currentHolidays\\\",\\\"value\\\"]],false],[0,\\\"\\\\n                                        \\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-lg btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showEmailModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"saved.modal.email\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-lg btn-block modal-saved-buttons\\\"],[12,\\\"name\\\",\\\"ok-button\\\"],[12,\\\"data-anchor\\\",\\\"saved-button-ok\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"type\\\"]],\\\"history\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-history-content\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"record\\\"]],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-lg btn-block modal-saved-buttons\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"modal-add-form-worktime\\\"],null]],null,{\\\"statements\\\":[[1,[28,\\\"components/tab-component\\\",null,[[\\\"form\\\",\\\"closeModal\\\"],[[24,[\\\"form\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null]]]],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[24,[\\\"recordCompComponent\\\"]]],[[\\\"form\\\",\\\"record_id\\\",\\\"cancelClicked\\\",\\\"recordSaved\\\"],[[24,[\\\"form\\\"]],[24,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"modalRecordSaved\\\"],null]]]],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-overlay\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/add-modal/template.hbs\"}});","/*eslint-disable ember/named-functions-in-promises */\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\nimport recordComp from '../../record-comp/component';\n\nconst CollectorAddModalWorktaskComponent = recordComp.extend({\n    store: service(),\n    intl: service(),\n\n    layoutName: 'collector/record-comp',\n\n    init() {\n        this._super();\n        this.currentValues = {\n            date: null,\n            userid: null,\n        };\n    },\n\n    actions: {\n        setValue(value, field, set) {\n            if (set == null) {\n                set = true;\n            }\n            this._super(value, field, set);\n            return this.updateMessage();\n        },\n    },\n\n    /*\n    check if worktasks are found for selected user for selected date\n    */\n    updateMessage() {\n        if (\n            get(this, 'currentValues.date') === get(this, 'record.date') &&\n            get(this, 'currentValues.userid') === get(this, 'record.user.id')\n        ) {\n            return;\n        }\n\n        set(this, 'currentValues', {\n            date: get(this, 'record.date'),\n            userid: get(this, 'record.user.id'),\n        });\n\n        if (!get(this, 'record.user.id') || !get(this, 'record.date')) {\n            set(this, 'messageBox', null);\n            return;\n        }\n\n        const params = { user: get(this, 'record.user.id'), date: get(this, 'record.date') };\n        if (get(this, 'record.id')) {\n            params.id = '!' + get(this, 'record.id');\n        }\n        return this.store.query('worktask', params).then((tasks) => {\n            const filtered_tasks = tasks.filter((task) => {\n                return get(task, 'id') !== this.record_id;\n            });\n\n            let hours = 0;\n            filtered_tasks.forEach((task) => (hours += get(task, 'est_hours')));\n\n            const minutes = Math.round((hours - Math.floor(hours)) * 60);\n            const formatted_hours =\n                Math.floor(hours) + ':' + (minutes < 10 ? '0' : '') + minutes + 'h';\n\n            if (get(filtered_tasks, 'length') > 0) {\n                const message = this.intl.t('worktask.worktasks_found', {\n                    count: get(filtered_tasks, 'length'),\n                    hours: formatted_hours,\n                });\n\n                return set(this, 'messageBox', message);\n            } else {\n                return set(this, 'messageBox', null);\n            }\n        });\n    },\n});\n\nexport default CollectorAddModalWorktaskComponent;\n","/*eslint-disable ember/named-functions-in-promises */\nimport collector from '../../../../classes/collector';\nimport recordComp from '../../record-comp/component';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nconst CollectorAddModalWorktimeComponent = recordComp.extend({\n    Collector: service('collector-service'),\n    dialogs: service(),\n    router: service(),\n    flags: service(),\n    intl: service(),\n    store: service(),\n    ttapi: service(),\n    session: service(),\n\n    init() {\n        this._super();\n        const fields = collector.getFormObjects('worktime');\n        if (\n            !fields.starttime.features.hide &&\n            !fields.endtime.features.hide &&\n            !fields.work_hours.features.mandatory\n        ) {\n            fields.starttime.features.default_value = '07:00';\n            fields.endtime.features.default_value = moment().format('HH:mm');\n            fields.date.features.default_value = moment().format('YYYY-MM-DD');\n        }\n\n        if (fields.starttime.features.hide && fields.endtime.features.hide) {\n            return (fields.date.features.default_value = moment().format('YYYY-MM-DD'));\n        }\n    },\n\n    actions: {\n        afterSave(settings, row) {\n            // save worktime adding to ttapi\n            this.ttapi.request('/worktimeAdded', {\n                method: 'post',\n                data: {\n                    username: get(row, 'user.username'),\n                    userid: get(row, 'user.id'),\n                    starttime: get(row, 'starttime'),\n                    date: get(row, 'date'),\n                },\n            });\n\n            // Alert for missing orientation or outdated pass\n            if (\n                this.Collector.testNeedsOne('modules.orientations') &&\n                get(this, 'session.currentUser.userlevel') === '1' &&\n                !get(this, 'session.currentUser.no_orientation')\n            ) {\n                const project = get(row, 'project.id');\n                if (this.Collector.testNeedsOne('products.rakentajanpaketti')) {\n                    if (\n                        get(row, 'project.proj_type') === '2' ||\n                        get(row, 'project.proj_type') === null\n                    ) {\n                        return;\n                    }\n                }\n                const user = get(row, 'user.id');\n                return this.store\n                    .query('orientation', { ori_site: project, ori_user: user, limit: 1 })\n                    .then((data) => {\n                        if (\n                            this.Collector.testNeedsOne('products.orientations_self') &&\n                            get(data, 'meta.count') === 0\n                        ) {\n                            return this.dialogs\n                                .alert(\n                                    this.intl.t('worktime.after_save.orientation.self_orientation'),\n                                )\n                                .then(() => {\n                                    return this.router.transitionTo(\n                                        'orientations.own-orientation',\n                                        get(row, 'project.id'),\n                                    );\n                                });\n                        } else if (get(data, 'meta.count') === 0) {\n                            if (this.flags.test('disable-worktime-orientations-missing-warning')) {\n                                return;\n                            }\n\n                            return this.dialogs.alert(\n                                this.intl.t('worktime.after_save.orientation.not_found'),\n                            );\n                        } else if (\n                            get(data, 'firstObject.pass_end') &&\n                            moment().isAfter(moment(get(data, 'firstObject.pass_end')))\n                        ) {\n                            return this.dialogs.alert(\n                                this.intl.t('worktime.after_save.orientation.outdated'),\n                            );\n                        }\n                    });\n            }\n        },\n    },\n});\n\nexport default CollectorAddModalWorktimeComponent;\n","export default Ember.HTMLBars.template({\"id\":\"e4mlkhdh\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"field\\\"],\\\"statements\\\":[[5,\\\"dump-dev\\\",[],[[\\\"@text\\\"],[\\\"add-modal/worktime\\\"]]],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"record-comp-content\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"messageBox\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning modal-message-box\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[22,\\\"messageBox\\\"],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"showFields\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-container\\\",[[23,2,[]]],[[\\\"change\\\",\\\"model\\\"],[\\\"setValue\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"stashed_fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"stashed-fields\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"show-stashed-link\\\"],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_stashed_fields\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"general.add.hide_stashed\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"general.add.show_stashed\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"glyphicon \\\",[28,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]],\\\"glyphicon-chevron-up\\\",\\\"glyphicon-chevron-down\\\"],null],\\\" \\\"]]],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"panel panel-default \\\",[28,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]],\\\"show-stashed-div\\\",\\\"hide-stashed-div\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"stashed_fields\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"collector/field-container\\\",[[23,1,[]]],[[\\\"change\\\",\\\"model\\\"],[\\\"setValue\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"validationMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"error-message\\\",null,[[\\\"error\\\"],[[24,[\\\"validationMessage\\\"]]]]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row record-comp-buttons\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\",\\\"form\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]],\\\"worktime\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[12,\\\"data-anchor\\\",\\\"worktime-cancel-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/add-modal/worktime/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/custom-filters-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorCustomFiltersCompComponent;\n\nimport Ember from 'ember';\n\nimport filterComp from '../filters-comp/component';\n\nCollectorCustomFiltersCompComponent = filterComp.extend({\n    _filters: Em.computed('filters', function () {\n        var filters, types;\n        types = this.get('filters').split(',');\n        filters = Em.A([]);\n        $.each(types, (key, item) => {\n            var filter;\n            filter = item.split('.');\n            if (!this.get('form')) {\n                this.set('form', filter[0]);\n            }\n            return filters.pushObject(this.getFilterObject(filter[1], filter[0]));\n        });\n        return filters;\n    }),\n});\n\nexport default CollectorCustomFiltersCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"TGKs9+h9\",\"block\":\"{\\\"symbols\\\":[\\\"filter\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"_filters\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"date\\\",[23,1,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6 col-lg-4\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"date-range-picker\\\",null,[[\\\"autoApply\\\",\\\"ranges\\\",\\\"opens\\\",\\\"start\\\",\\\"end\\\",\\\"value\\\"],[true,false,\\\"right\\\",[23,1,[\\\"start\\\"]],[23,1,[\\\"end\\\"]],[23,1,[\\\"value\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6 col-lg-4\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,1,[]]],[[\\\"change\\\"],[\\\"valueChanged\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/custom-filters-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\n\n/*\n\n    Render any field found from forms\n\n    Usage:\n\n        1) Give form and field directly as string\n\n            ie. {{collector/field-comp \"worktime.user\" change=\"valueChanged\"}}\n\n        2) Give field as object field = {form: <form>, name: <name of the field>, type: <type of field>}\n\n            ie. {{collector/field-comp field change=\"valueChanged\"}}\n\n    Changes are sent back with \"change\" action. You need to define what you want to\n    do when action is triggered.\n\n        ie.  {{collector/field-comp ... change=\"doSomething\"}}\n\n*/\nvar CollectorFieldCompComponent;\n\nimport Ember from 'ember';\n\nCollectorFieldCompComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    flags: Ember.inject.service(),\n    currentValue: null,\n    validated: Em.computed.lt('errors.length', 1),\n    //    console.log \"validated\", @get('errors'), @get('errors.length')\n    //    @get('errors.length') < 1\n    _class: null,\n    __class: Ember.computed('_class', 'fieldComponent', function () {\n        return this.get('_class').replace('form-control', 'power-select-dropdown');\n    }),\n    _field: Ember.computed('field', function () {\n        var c, field, initValue, options, ret, subFields, subForm;\n        field = this.get('field');\n        initValue = this.get('value');\n        if (typeof field === 'string') {\n            c = this.get('Collector');\n            ret = c.field(field.split('.')[0], field.split('.')[1]);\n        } else {\n            ret = field;\n        }\n        if (this.get('useAsFilter') && ret.type === 'databasearray') {\n            options = this.get('Collector').field(ret.form, ret.field).options;\n            subForm = Ember.get(options, 'form');\n            subFields = Ember.get(options, 'fields');\n            if (subForm != null && subFields != null) {\n                this.set('originalFieldName', Ember.get(ret, 'field'));\n                if (ret.field === 'involved') {\n                    ret = this.get('Collector').field(ret.form, 'user');\n                } else {\n                    ret = this.get('Collector').field(subForm, subFields[0]);\n                }\n            }\n        }\n        if (initValue) {\n            ret.value = initValue;\n        }\n        if (this.get('prompt')) {\n            ret.prompt = this.get('prompt');\n        }\n        return ret;\n    }),\n    _useForcedProjectField: function () {\n        var ref;\n        if (!this.get('Collector').testNeeds(['userlevel=1'])) {\n            return false;\n        }\n        if (this.get('_field.skipForcedGPS')) {\n            return false;\n        }\n        return (\n            this.get('Collector').fieldExists('project', 'force_location') &&\n            ((ref = this.get('_field.form')) === 'worktime' || ref === 'presence') &&\n            !this.get('useAsFilter')\n        );\n    },\n    // Hey you! When you add support to new fields, check also nfc-component, there is a list of not supported field types\n    fieldComponent: Ember.computed('_field.external_type', 'forcetype', function () {\n        if (this.get('forcetype')) {\n            return 'collector/fields/' + this.get('forcetype');\n        }\n        if (!this.get('_field')) {\n            Ember.assert('Collector field component had empty field', {\n                id: 'collector.empty-field',\n            });\n        }\n        switch (this.get('_field.type')) {\n            case 'textbox':\n                return 'collector/fields/text-field';\n            case 'number':\n            case 'price':\n                if (\n                    this.get('_field.name') === 'km' &&\n                    this.get('Collector').testNeedsOne('products.timetracker_km_automatic')\n                ) {\n                    return 'collector/fields/gps-auto-km';\n                } else {\n                    return 'collector/fields/number-field';\n                }\n                break;\n            case 'dropdown_values':\n            case 'dropdown_options':\n                return 'collector/fields/dropdown-field';\n            case 'dropdown_userlevel':\n                return 'collector/fields/dropdown-userlevel-field';\n            case 'database':\n                if (\n                    this.get('_field.options.form') === 'project' &&\n                    this._useForcedProjectField()\n                ) {\n                    return 'collector/fields/database-gps-force-field';\n                }\n                if (\n                    (this.get('flags').test('power-database') || this.get('usePowerDropdown')) &&\n                    !this.get('useAsFilter')\n                ) {\n                    return 'collector/fields/power-database';\n                } else {\n                    return 'collector/fields/database-field';\n                }\n                break;\n            case 'multiselect':\n                if (this.get('useAsFilter')) {\n                    return 'collector/fields/database-field';\n                } else {\n                    return 'collector/fields/multiselect-field';\n                }\n                break;\n            case 'status':\n                return 'collector/fields/status-field';\n            case 'textarea':\n            case 'textarea_varchar':\n                return 'collector/fields/textarea-field';\n            case 'time_new':\n                return 'collector/fields/time-field';\n            case 'date':\n                return 'collector/fields/date-field';\n            case 'username':\n                return 'collector/fields/username-field';\n            case 'password':\n                return 'collector/fields/password-field';\n            case 'hdfile':\n                return 'collector/fields/fileupload-field-ver3';\n            case 'checkbox':\n                return 'collector/fields/checkbox-field';\n            case 'month_dropdown':\n                return 'collector/fields/month_dropdown-field';\n            case 'search':\n                return 'collector/fields/search-field';\n            case 'signature':\n                return 'collector/fields/signature-field';\n            case 'minutes':\n                return 'collector/fields/number-field';\n            case 'gpslocation':\n                return 'collector/fields/gps-field';\n            case 'price':\n                return 'collector/fields/number-field';\n            case 'big_price':\n                return 'collector/fields/number-field';\n            case 'decimal':\n                return 'collector/fields/number-field';\n            case 'radio':\n                return 'collector/fields/radio-field';\n            case 'label':\n                return 'collector/fields/label-field';\n            case 'databasearray':\n                if (this.get('_field.options.form') === 'user') {\n                    return 'collector/fields/databasearray-field';\n                } else {\n                    return 'collector/fields/databasearray-adder-field';\n                }\n                break;\n            case 'dropdown_country':\n                return 'collector/fields/dropdown-country-field';\n            case 'checkboxgroup':\n                return 'collector/fields/checkboxgroup-field';\n            case 'hours-and-minutes':\n            case 'hours':\n                return 'collector/fields/hours-and-minutes-field';\n            case 'timeclean_imei':\n                return 'collector/fields/timeclean-field';\n            case 'weather':\n                return 'collector/fields/weather-field';\n            case 'timerlink':\n                return 'collector/fields/timerlink-field';\n            case 'datetime':\n                return 'collector/fields/datetime-field';\n            case 'work_permit_attachment':\n                    return 'collector/fields/work-permit-attachment';\n            default:\n                return null;\n        }\n    }),\n    observeValidationState: Em.observer('errors.length', function () {\n        return this.sendAction(\n            'change',\n            this.get('currentValue'),\n            this.get('_field.name'),\n            this.get('validated'),\n        );\n    }),\n    validateField: function (fieldName) {\n        return this.get('model').validate([fieldName]);\n    },\n    setModelAndValidate: function (value, wait) {\n        var fieldName, model;\n        model = this.get('model');\n        if (!model) {\n            return;\n        }\n        if (model.get('isDeleted')) {\n            return;\n        }\n        fieldName = this.get('_field.name');\n        model.set(fieldName, value);\n        // if we want to wait x milliseconds before validating\n        if (wait) {\n            return Ember.run.debounce(this, this.validateField, fieldName, 700);\n        } else {\n            return this.validateField(fieldName);\n        }\n    },\n    didReceiveAttrs: function () {\n        var def;\n        if (!this.get('_class')) {\n            def =\n                this.get('fieldComponent') === 'collector/fields/power-database'\n                    ? 'power-select-dropdown'\n                    : 'form-control';\n            return this.set('_class', this.get('class') || def);\n        }\n    },\n    actions: {\n        bubbleChange: function (\n            value,\n            fieldName,\n            setModel = true,\n            setComponent = true,\n            wait = false,\n        ) {\n            if (setModel) {\n                this.setModelAndValidate(value, wait);\n            }\n            if (this.get('originalFieldName')) {\n                fieldName = this.get('originalFieldName');\n            }\n            // a little hack for extra-filters search-field\n            // (do not set currentValue because field doesn't exist anymore)\n            if (setComponent) {\n                this.set('currentValue', value);\n            }\n            return this.sendAction('change', value, fieldName, setModel);\n        },\n        createNew: function () {\n            return this.createNew();\n        },\n    },\n});\n\nCollectorFieldCompComponent.reopenClass({\n    positionalParams: ['field'],\n});\n\nexport default CollectorFieldCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"F4+xJceS\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"fieldComponent\\\"]],\\\"collector/fields/power-database\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"component\\\",[\\\"collector/fields/power-database\\\"],[[\\\"field\\\",\\\"_class\\\",\\\"prompt\\\",\\\"_value\\\",\\\"filter\\\",\\\"onchange\\\",\\\"model\\\",\\\"showCreate\\\",\\\"createLabel\\\",\\\"createNew\\\"],[[24,[\\\"_field\\\"]],[24,[\\\"__class\\\"]],[24,[\\\"prompt\\\"]],[24,[\\\"value\\\"]],[24,[\\\"filter\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"bubbleChange\\\"],null],[24,[\\\"model\\\"]],[24,[\\\"showCreate\\\"]],[24,[\\\"createLabel\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"createNew\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"fieldComponent\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"component\\\",[[24,[\\\"fieldComponent\\\"]]],[[\\\"field\\\",\\\"_class\\\",\\\"bubbleChange\\\",\\\"model\\\",\\\"useAsFilter\\\",\\\"showEmptySelection\\\",\\\"filter\\\"],[[24,[\\\"_field\\\"]],[24,[\\\"_class\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"bubbleChange\\\"],null],[24,[\\\"model\\\"]],[24,[\\\"useAsFilter\\\"]],[24,[\\\"showEmptySelection\\\"]],[24,[\\\"filter\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"field\\\",\\\"type\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"field.not_supported\\\"],[[\\\"fieldtype\\\"],[[24,[\\\"field\\\",\\\"type\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-container/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldContainerComponent;\n\nimport Ember from 'ember';\n\nimport { isArray } from '@ember/array';\n\nimport { computed } from '@ember/object';\n\nimport validator from 'tt4/classes/validations';\n\nCollectorFieldContainerComponent = Ember.Component.extend({\n    errors: Em.computed('model.errors', 'model.errors.[]', function () {\n        return this.get('model.errors.' + this.get('_field.name'));\n    }),\n    hasErrors: Em.computed.gt('errors.length', 0),\n    fieldLabel: Em.computed.oneWay('_field.translated_name'),\n    firstError: Em.computed('errors.[]', function () {\n        return this.get('errors.firstObject');\n    }),\n    init: function () {\n        this._super();\n        if (isArray(this.get('field.features.mandatory'))) {\n            return this.get('field.features.mandatory').forEach((item) => {\n                var i, k, results;\n                results = [];\n                for (k in item) {\n                    i = item[k];\n                    results.push(\n                        Ember.defineProperty(\n                            this,\n                            'mandatoryObservable',\n                            Ember.computed.alias('model.' + k),\n                        ),\n                    );\n                }\n                return results;\n            });\n        }\n    },\n    isMandatory: computed('field', 'mandatoryObservable', function () {\n        if (\n            this.get('field.features.mandatory') &&\n            !isArray(this.get('field.features.mandatory'))\n        ) {\n            return true;\n        } else if (isArray(this.get('field.features.mandatory')) && this.get('model')) {\n            return validator._is_visible(this.get('model'), this.get('field.features.mandatory'));\n        }\n        return false;\n    }),\n    actions: {\n        change: function (value, fieldName, validated) {\n            if (!fieldName) {\n                fieldName = this.get('_field.name');\n            }\n            return this.sendAction('change', value, fieldName, validated);\n        },\n    },\n    _field: Ember.computed('field', function () {\n        var c, field;\n        field = this.get('field');\n        if (typeof field === 'string') {\n            c = this.get('Collector');\n            return c.field(field.split('.')[0], field.split('.')[1]);\n        } else {\n            return field;\n        }\n    }),\n});\n\nCollectorFieldContainerComponent.reopenClass({\n    positionalParams: ['field'],\n});\n\nexport default CollectorFieldContainerComponent;\n","export default Ember.HTMLBars.template({\"id\":\"Cspbb1id\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"hasErrors\\\"]],\\\"has-error has-feedback\\\"],null]]]],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[\\\"field-\\\",[23,0,[\\\"field\\\",\\\"name\\\"]]],null]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[22,\\\"fieldLabel\\\"],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"field\\\",\\\"info\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"field-info-bubble\\\",[],[[\\\"@text\\\"],[[24,[\\\"field\\\",\\\"info\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"isMandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"firstError\\\",\\\"message\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[25,1]],null,{\\\"statements\\\":[[0,\\\"         \\\"],[14,1,[[23,0,[]],[24,[\\\"field\\\"]],[24,[\\\"model\\\"]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"field\\\"]]],[[\\\"_class\\\",\\\"usePowerDropdown\\\",\\\"filter\\\",\\\"change\\\",\\\"model\\\"],[\\\"form-control add-fields\\\",[24,[\\\"usePowerDropdown\\\"]],[24,[\\\"filter\\\"]],\\\"change\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-container/template.hbs\"}});","import { getProperties, get, set } from '@ember/object';\nimport { isPresent } from '@ember/utils';\nimport Component from '@ember/component';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    intl: service(),\n    Collector: service('collector-service'),\n    notifications: service(),\n    customerSettings: service(),\n    gps: service(),\n    didReceiveAttrs() {\n        const worktimegroup = get(this, 'worktimegroup');\n        let coordsString = null;\n\n        if (isPresent(worktimegroup)) {\n            coordsString = get(this, 'customerSettings').checkSetting(\n                `autokm_address_${worktimegroup}`,\n            );\n        } else {\n            coordsString = get(this, 'customerSettings').checkSetting(`autokm_address`);\n        }\n        if (coordsString) {\n            set(this, 'active', true);\n            const coords = JSON.parse(coordsString);\n\n            if (coords.no_back_forth) {\n                set(this, 'backForthActive', false);\n            } else {\n                set(this, 'backForthActive', true);\n            }\n\n            get(this, 'gps')\n                .GetLocationByLatLng({ lat: coords.latitude, lng: coords.longitude })\n                .then((resp) => this._setAddress(resp));\n        }\n    },\n\n    actions: {\n        saveSetting() {\n            const full_address = getProperties(this, 'address', 'postal', 'city');\n            const gps = get(this, 'gps');\n            gps.GetLocationByAddress(Object.values(full_address).join(' ')).then((resp) =>\n                this._saveSettings(resp),\n            );\n        },\n        checkboxChanged() {\n            this.toggleProperty('active');\n            const checked = get(this, 'active');\n            if (!checked) {\n                let settingstr = 'autokm_address';\n                if (isPresent(get(this, 'worktimegroup'))) {\n                    settingstr += `_${get(this, 'worktimegroup')}`;\n                }\n                get(this, 'customerSettings').setSetting(settingstr, 'off');\n                get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n                    autoClear: true,\n                });\n            }\n        },\n        checkboxChangedBackForth() {\n            this.toggleProperty('backForthActive');\n            const checked = get(this, 'backForthActive');\n            var setting = get(this, 'customerSettings').checkSetting('autokm_address');\n            var settingObj = JSON.parse(setting);\n            let settingstr = 'autokm_address';\n            if (isPresent(get(this, 'worktimegroup'))) {\n                settingstr += `_${get(this, 'worktimegroup')}`;\n            }\n            let promise = null;\n            if (!checked) {\n                settingObj.no_back_forth = true;\n                promise = get(this, 'customerSettings').setSetting(\n                    settingstr,\n                    JSON.stringify(settingObj),\n                );\n            } else {\n                delete settingObj.no_back_forth;\n                promise = get(this, 'customerSettings').setSetting(\n                    settingstr,\n                    JSON.stringify(settingObj),\n                );\n            }\n            promise.then(() => {\n                get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n                    autoClear: true,\n                });\n            });\n        },\n    },\n\n    _setAddress(resp) {\n        const split1 = resp.split(', ');\n        const split2 = split1[1].split(' ');\n        set(this, 'address', split1[0]);\n        set(this, 'postal', split2[0]);\n        set(this, 'city', split2[1]);\n    },\n\n    _saveSettings(resp) {\n        if (!resp.error) {\n            let settingstr = 'autokm_address';\n            if (isPresent(get(this, 'worktimegroup'))) {\n                settingstr += `_${get(this, 'worktimegroup')}`;\n            }\n            if (!get(this, 'backForthActive')) {\n                resp.no_back_forth = true;\n            }\n            get(this, 'customerSettings')\n                .setSetting(settingstr, JSON.stringify(resp))\n                .then(() => this._successNotification());\n        } else {\n            get(this, 'notifications').error(get(this, 'intl').t('settings.autokm.address_error'), {\n                autoClear: true,\n            });\n        }\n    },\n\n    _successNotification() {\n        get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n            autoClear: true,\n        });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"YCJ+S+x2\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"change\\\"],[\\\"checkbox\\\",[24,[\\\"active\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"checkboxChanged\\\"],null]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"settings.autokm.activate_address_only\\\"],null],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"standard-icon-popover\\\",null,[[\\\"icon\\\",\\\"text\\\"],[\\\"info\\\",[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"settings.autokm.activate_address.desc\\\"],null]],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"active\\\"]]],null,{\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"change\\\"],[\\\"checkbox\\\",[24,[\\\"backForthActive\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"checkboxChangedBackForth\\\"],null]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"settings.autokm.activate_back_and_forth\\\"],null],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"standard-icon-popover\\\",null,[[\\\"icon\\\",\\\"text\\\"],[\\\"info\\\",[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"settings.autokm.activate_back_and_forth.desc\\\"],null]],null]]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.address.street\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"address\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.address.postal\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"number\\\",[24,[\\\"postal\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.address.city\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"city\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/autokm-setting/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-setting-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldSettingCompComponent;\n\nimport Ember from 'ember';\n\nCollectorFieldSettingCompComponent = Ember.Component.extend({\n    store: Em.inject.service(),\n    intl: Em.inject.service(),\n    notifications: Ember.inject.service(),\n    date_interval_setting: Ember.computed.equal('configs.setting.name', 'date_interval'),\n    showSaveButton: Ember.computed(\n        'setting.value',\n        'setting.hasDirtyAttributes',\n        'date_interval_future',\n        function () {\n            if (\n                this.get('setting.value') >= 0 &&\n                (this.get('setting.hasDirtyAttributes') || this.get('date_interval_future'))\n            ) {\n                return true;\n            }\n            return false;\n        },\n    ),\n    didReceiveAttrs: function () {\n        var configs;\n        this._super();\n        configs = this.get('configs');\n        return this.get('store')\n            .findAll('form', {\n                reload: true,\n            })\n            .then((forms) => {\n                var arr, field, form, setting;\n                form = forms.filterBy('external_type', configs.form);\n                field = form.get('firstObject.fields').filterBy('external_type', configs.field);\n                setting = field.get('firstObject.settings').filterBy('name', configs.setting.name);\n                setting.get('firstObject').rollbackAttributes(); // revert all possible changes\n                if (setting.get('firstObject')) {\n                    this.set('setting', setting.get('firstObject'));\n                } else {\n                    configs.setting.field = field.get('firstObject');\n                    this.set(\n                        'setting',\n                        this.get('store').createRecord('form-field-setting', configs.setting),\n                    );\n                }\n                if (this.get('setting').get('name') === 'date_interval') {\n                    if (this.get('setting').get('value').split(',').length > 1) {\n                        arr = this.get('setting').get('value').split(',');\n                        this.get('setting').set('value', arr[0]);\n                        this.set('date_interval_future', arr[1]);\n                        if (arr[1]) {\n                            this.set('date_interval_future_check', true);\n                        }\n                    }\n                    if (this.get('setting').get('value') === 'locked') {\n                        return this.get('setting').set('value', 1);\n                    }\n                }\n            });\n    },\n    description: Em.computed('configs', function () {\n        var string;\n        string = `settings.${this.get('configs.form')}.${this.get('configs.field')}.${this.get('configs.setting')}`;\n        if (\n            this.get('intl').exists(\n                `settings.${this.get('configs.form')}.${this.get('configs.field')}.${this.get('configs.setting')}`,\n            )\n        ) {\n            return this.get('intl').t(\n                `settings.${this.get('configs.form')}.${this.get('configs.field')}.${this.get('configs.setting')}`,\n            );\n        }\n    }),\n    actions: {\n        save: function () {\n            var old_value, setting, tmp_value, val;\n            setting = this.get('setting');\n            if (setting.get('value')) {\n                old_value = setting.get('value');\n                tmp_value = setting.get('value');\n                if (this.get('configs').setting.name === 'date_interval') {\n                    if (setting.get('value') === '0' || setting.get('value') === '1') {\n                        tmp_value = 'locked';\n                    }\n                    if (\n                        this.get('date_interval_future') &&\n                        this.get('date_interval_future_check')\n                    ) {\n                        val = Math.abs(this.get('date_interval_future'));\n                        tmp_value += ',' + val;\n                    }\n                }\n                setting.set('value', tmp_value);\n                return setting.save().then(() => {\n                    setting.set('value', old_value);\n                    return this.get('notifications').success(this.get('intl').t('general.saved'), {\n                        autoClear: true,\n                    });\n                });\n            }\n        },\n    },\n});\n\nexport default CollectorFieldSettingCompComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-setting-comp/number-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldSettingCompNumberFieldComponent;\n\nimport Ember from 'ember';\n\nCollectorFieldSettingCompNumberFieldComponent = Ember.Component.extend({\n    customerSettings: Ember.inject.service(),\n    value: Em.computed(function () {\n        return (\n            this.get('customerSettings').checkSetting(this.get('configs.setting')) ||\n            this.get('configs.defaultVal')\n        );\n    }),\n    actions: {\n        save: function (value) {\n            this.get('customerSettings').setSetting(this.get('configs.setting'), value);\n            return this.sendAction('settingSaved');\n        },\n        validateInput: function () {\n            if (this.get('configs.value') < this.get('configs.minVal')) {\n                return this.set('configs.value', this.get('configs.minVal'));\n            }\n        },\n    },\n});\n\nexport default CollectorFieldSettingCompNumberFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"gfq/0G/g\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"min\\\",\\\"keyUp\\\"],[\\\"number\\\",[24,[\\\"value\\\"]],\\\"form-control add-fields\\\",[24,[\\\"configs\\\",\\\"minVal\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validateInput\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"configs\\\",\\\"unit\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"input-group-addon add-fields\\\"],[10,\\\"style\\\",\\\"margin-right: 3px\\\"],[8],[1,[24,[\\\"configs\\\",\\\"unit\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-btn\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"value\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/number-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-setting-comp/overtime-setting/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldSettingCompOvertimeSettingComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nimport config from '../../../../config/environment';\n\nCollectorFieldSettingCompOvertimeSettingComponent = Ember.Component.extend({\n    Collector: Em.inject.service('collector-service'),\n    session: Em.inject.service(),\n    store: Em.inject.service(),\n    intl: Em.inject.service(),\n    initapp: Em.inject.service(),\n    servicehandler: Em.inject.service(),\n    tools: Em.inject.service(),\n    notifications: Em.inject.service(),\n    //startdate: Em.computed ->\n    //    moment().format('YYYY-MM-DD')\n    fieldsToBeRemoved: [],\n    salarytypes: Em.computed(function () {\n        var fields;\n        fields = [];\n        if (\n            this.get('Collector').testNeeds(['products.salarytype||products.selectablesalarytype'])\n        ) {\n            return this.get('store')\n                .query('salarytype', {\n                    type: '(empty)',\n                })\n                .then((salarytypes) => {\n                    //console.log salarytypes\n                    salarytypes.forEach((stype) => {\n                        if (stype.get('id')) {\n                            return fields.push({\n                                id: stype.get('id'),\n                                text: stype.get('name'),\n                            });\n                        }\n                    });\n                    return fields;\n                });\n        } else {\n            return fields;\n        }\n    }),\n    init: function () {\n        var _overtime_types;\n        this._super(...arguments);\n        _overtime_types = Ember.Object.create({\n            daily_overtime: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.daily_overtime',\n                in_use: false,\n                settings: {\n                    _50start: 8,\n                    _100start: 10,\n                },\n                product: 'overtime_daily',\n                rule_creator: function (settings) {\n                    return [\n                        {\n                            name: '_50',\n                            values: {\n                                from: settings._50start,\n                                to: settings._100start,\n                            },\n                        },\n                        {\n                            name: '_100',\n                            values: {\n                                from: settings._100start,\n                            },\n                        },\n                    ];\n                },\n                rule_parser: function (rules) {\n                    return {\n                        _50start: '_50.values.from',\n                        _100start: '_100.values.from',\n                    };\n                },\n            },\n            weekly_overtime: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.weekly_overtime',\n                in_use: false,\n                settings: {\n                    _week50start: 0,\n                    _week100start: 8,\n                },\n                product: 'overtime_weekly',\n                rule_creator: function (settings) {\n                    return [\n                        {\n                            name: '_week50',\n                            values: {\n                                from: settings._week50start,\n                                to: settings._week100start,\n                            },\n                        },\n                        {\n                            name: '_week100',\n                            values: {\n                                from: settings._week100start,\n                            },\n                        },\n                    ];\n                },\n                rule_parser: function (rules) {\n                    return {\n                        _week50start: '_week50.values.from',\n                        _week100start: '_week100.values.from',\n                    };\n                },\n            },\n            extrahours_overtime: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.extrahours',\n                in_use: false,\n                settings: {\n                    _extrahours_start: 7.5,\n                    _extrahours_end: 8,\n                },\n                product: 'overtime_extrahours',\n                rule_creator: function (settings) {\n                    return [\n                        {\n                            name: '_extrahours',\n                            values: {\n                                from: settings._extrahours_start,\n                                to: settings._extrahours_end,\n                            },\n                        },\n                    ];\n                },\n                rule_parser: function (rules) {\n                    return {\n                        _extrahours_start: '_extrahours.values.from',\n                        _extrahours_end: '_extrahours.values.to',\n                    };\n                },\n            },\n            time_based: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.time_based',\n                in_use: false,\n                settings: {\n                    _evening_start: '16:00',\n                    _evening_end: '21:00',\n                    _night_start: '21:00',\n                    _night_end: '06:00',\n                },\n                product: 'overtime_time_based',\n                rule_creator: function (settings) {\n                    return [\n                        {\n                            name: '_evening',\n                            values: {\n                                from: settings._evening_start,\n                                to: settings._evening_end,\n                                do_not_calculate_if_overtime: settings._evening_checked,\n                                calculate_compensations_always:\n                                    settings._calculate_compensations_always,\n                            },\n                        },\n                        {\n                            name: '_night',\n                            values: {\n                                from: settings._night_start,\n                                to: settings._night_end,\n                                do_not_calculate_if_overtime: settings._night_checked,\n                                calculate_compensations_always:\n                                    settings._calculate_compensations_always,\n                            },\n                        },\n                    ];\n                },\n                rule_parser: function () {\n                    return {\n                        _evening_start: '_evening.values.from',\n                        _evening_end: '_evening.values.to',\n                        _evening_checked: '_evening.values.do_not_calculate_if_overtime',\n                        _night_start: '_night.values.from',\n                        _night_end: '_night.values.to',\n                        _night_checked: '_night.values.do_not_calculate_if_overtime',\n                        _calculate_compensations_always:\n                            '_night.values.calculate_compensations_always',\n                    };\n                },\n            },\n            time_based_se: {\n                needs: ['serviceCountry@se'],\n                name: 'overtime.time_based',\n                in_use: false,\n                settings: {},\n                product: 'overtime_time_based_se',\n                alwaysOn: true,\n                rule_creator: function (settings) {\n                    return [];\n                },\n                rule_parser: function () {\n                    return {};\n                },\n            },\n            overtime_splitted: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.split_overtimehours',\n                in_use: false,\n                settings: {},\n                product: 'overtime_splitted',\n                rule_creator: function (settings) {\n                    return [\n                        {\n                            name: '_overtimehours',\n                            values: {},\n                        },\n                        {\n                            name: '_basichours',\n                            values: {},\n                        },\n                    ];\n                },\n                rule_parser: function () {\n                    return {};\n                },\n            },\n        });\n        this.set('_overtime_types', _overtime_types);\n        return this.set('days', [\n            {\n                id: 'mo',\n                name: this.get('intl').t('workday.calendar.week.monday'),\n            },\n            {\n                id: 'tu',\n                name: this.get('intl').t('workday.calendar.week.tuesday'),\n            },\n            {\n                id: 'we',\n                name: this.get('intl').t('workday.calendar.week.wednesday'),\n            },\n            {\n                id: 'th',\n                name: this.get('intl').t('workday.calendar.week.thursday'),\n            },\n            {\n                id: 'fr',\n                name: this.get('intl').t('workday.calendar.week.friday'),\n            },\n            {\n                id: 'sa',\n                name: this.get('intl').t('workday.calendar.week.saturday'),\n            },\n            {\n                id: 'su',\n                name: this.get('intl').t('workday.calendar.week.sunday'),\n            },\n        ]);\n    },\n    // filter all the overtime_types with needs\n    overtime_types: Ember.computed('worktimegroup', function () {\n        var keys, ret, types;\n        types = this.get('_overtime_types');\n        keys = Object.keys(types);\n        ret = {};\n        keys.forEach((key) => {\n            // skip types that has needs but needs return false\n            if (types[key].needs && !this.get('Collector').testNeeds(types[key].needs)) {\n                return;\n            }\n            // all the other types goes to ret\n            return (ret[key] = types[key]);\n        });\n        return Ember.Object.create(ret);\n    }),\n    fields: Ember.computed(function () {\n        return this.get('Collector')\n            .fieldArray('worktime')\n            .filterBy('type', 'hours')\n            .rejectBy('name', 'work_hours');\n    }),\n    didReceiveAttrs: function () {\n        if (this.get('customrules')) {\n            return this.setRules(this.parseIfString(this.get('customrules')));\n        } else {\n            return this.getGeneralRules();\n        }\n    },\n    parseIfString: function (mixed) {\n        if (Ember.typeOf(mixed) === 'string') {\n            return JSON.parse(mixed);\n        }\n        return mixed;\n    },\n    getGeneralRules: function () {\n        var data;\n        data = {};\n        if (this.get('worktimegroup')) {\n            data.worktimegroup = this.get('worktimegroup');\n        }\n        return this.get('Collector')\n            .ttapi({\n                url: 'overtime/settings',\n                method: 'get',\n                data: data,\n            })\n            .then((rules) => {\n                var i, len, rule, search_rule, stypes, types_arr;\n                // get salarytypes\n                if (\n                    this.get('Collector').testNeeds([\n                        'products.salarytype||products.selectablesalarytype',\n                    ])\n                ) {\n                    search_rule = false;\n                    // check every compensation and overtime type and take first element that has salarytypes\n                    for (i = 0, len = rules.length; i < len; i++) {\n                        rule = rules[i];\n                        if (rule.values != null && rule.values.salarytypes) {\n                            search_rule = rule;\n                        }\n                    }\n                    if (search_rule) {\n                        types_arr = search_rule.values.salarytypes.split(',');\n                        stypes = [];\n                        this.get('store')\n                            .query('salarytype', {\n                                id: search_rule.values.salarytypes,\n                            })\n                            .then((salarytypes) => {\n                                return salarytypes.forEach((stype) => {\n                                    if (types_arr.indexOf(stype.get('id')) > -1) {\n                                        stypes.push({\n                                            id: stype.get('id'),\n                                            text: stype.get('name'),\n                                        });\n                                    }\n                                    return this.set('salarytype', stypes);\n                                });\n                            });\n                    } else {\n                        this.set('salarytype', null);\n                    }\n                }\n                return this.setRules(rules);\n            });\n    },\n    setRules: function (rules) {\n        var i, len, overtime_types, ref, type;\n        this.set('customTimeBased', Em.A([]));\n        this.set('customDayBased', Em.A([]));\n        overtime_types = this.get('overtime_types');\n        ref = Object.keys(overtime_types);\n        for (i = 0, len = ref.length; i < len; i++) {\n            type = ref[i];\n            if (overtime_types[type].alwaysOn === true) {\n                this.turnOn(type);\n            } else {\n                this.setValuesForOvertimeType(type, rules, overtime_types[type].rule_parser(rules));\n            }\n        }\n        this.getCustomFields('hoursbetween', rules);\n        return this.getCustomDayFields('custom_dayrule', rules);\n    },\n    getCustomFields: function (type, rules) {\n        return rules.filterBy('name', type).forEach((item) => {\n            return this.get('customTimeBased').pushObject({\n                name: Ember.get(item, 'field'),\n                text: Ember.get(item, 'text'),\n                start: Ember.get(item, 'values.from'),\n                end: Ember.get(item, 'values.to'),\n                checked:\n                    Ember.get(item, 'values.do_not_calculate_if_overtime') === void 0 ||\n                    Ember.get(item, 'values.do_not_calculate_if_overtime') === true\n                        ? true\n                        : false,\n            });\n        });\n    },\n    getCustomDayFields: function (type, rules) {\n        return rules.filterBy('name', type).forEach((item) => {\n            var daysArr;\n            daysArr = Ember.get(item, 'values.days').split('-');\n            return this.get('customDayBased').pushObject({\n                name: Ember.get(item, 'field'),\n                text: Ember.get(item, 'text'),\n                start: Ember.get(item, 'values.from'),\n                end: Ember.get(item, 'values.to'),\n                start_day: daysArr[0],\n                end_day: daysArr[1],\n            });\n        });\n    },\n    //checked: if Ember.get(item, 'values.do_not_calculate_if_overtime') == undefined || Ember.get(item, 'values.do_not_calculate_if_overtime') == true then true else false\n    setValuesForOvertimeType: function (type, rules, paths) {\n        var i, len, path, paths_splitted, results, rule, value, value_name, values;\n        values = Object.keys(paths);\n        rules.forEach((rule) => {\n            if (rule.name === '_basichours') {\n                return this.set('overtime_types.overtime_splitted.in_use', true);\n            } else {\n                return this.set('overtime_types.overtime_splitted.in_use', false);\n            }\n        });\n        results = [];\n        for (i = 0, len = values.length; i < len; i++) {\n            value_name = values[i];\n            paths_splitted = paths[value_name].split('.');\n            rule = rules.findBy('name', paths_splitted[0]);\n            if (!rule) {\n                this.turnOff(type);\n                continue;\n            }\n            path = paths_splitted.slice(1).join('.');\n            value = Ember.get(rule, path);\n            if (value || (!value && type === 'time_based')) {\n                this.turnOn(type);\n                results.push(this.set('overtime_types.' + type + '.settings.' + value_name, value));\n            } else {\n                results.push(void 0);\n            }\n        }\n        return results;\n    },\n    // special check for checkboxes (because old customers do not have these checkboxes saved)\n    //if value_name.indexOf(\"_checked\") >= 0 && value == undefined\n    //    @set 'overtime_types.' + type + '.settings.' + value_name, true\n    //else if value_name.indexOf(\"_checked\") >= 0 && value == false\n    //    @set 'overtime_types.' + type + '.settings.' + value_name, false\n\n    //_100start: Ember.get rules.findBy('name', '_100'), 'values.from'\n    turnOn: function (type) {\n        return this.set('overtime_types.' + type + '.in_use', true);\n    },\n    turnOff: function (type) {\n        return this.set('overtime_types.' + type + '.in_use', false);\n    },\n    updateNeededProducts: function (needed_products, unneeded_products) {\n        var c;\n        c = this.get('Collector');\n        needed_products.forEach((needed_product) => {\n            if (!c.testNeeds(['products.' + needed_product])) {\n                c.addProduct(needed_product);\n                return this.sendAction('refreshNeeded');\n            }\n        });\n        return unneeded_products.forEach((unneeded_product) => {\n            var worktimegroup;\n            if (c.testNeeds(['products.' + unneeded_product])) {\n                worktimegroup = this.get('worktimegroup') ? this.get('worktimegroup') : null;\n                c.removeProduct(unneeded_product, worktimegroup);\n                return this.sendAction('refreshNeeded');\n            }\n        });\n    },\n    searchFieldWithName: function (fields, name) {\n        var fieldKeys, found;\n        fieldKeys = Object.keys(fields);\n        found = null;\n        fieldKeys.forEach((key) => {\n            if (fields[key].name === name) {\n                return (found = key);\n            }\n        });\n        if (found) {\n            return found.split('.')[1];\n        } else {\n            return null;\n        }\n    },\n    onlyOneRuleForField: function (field, type) {\n        return this.get(type).findBy('name', field).length < 2;\n    },\n    actions: {\n        checkValues: function (value1, value2) {\n            if (value1.toString() === value2.toString()) {\n                return this.set('disabled', true);\n            } else {\n                return this.set('disabled', false);\n            }\n        },\n        moreInfo: function () {\n            return window.open(\n                config.APP.CDN_URL + '/documents/Ylity%C3%B6t+ja+lis%C3%A4t+asetukset.pdf',\n                '_blank',\n            );\n        },\n        addTimeBased: function () {\n            return this.get('customTimeBased').pushObject({});\n        },\n        addDayBased: function () {\n            return this.get('customDayBased').pushObject({});\n        },\n        removeCustomTimeBased: function (row) {\n            if (\n                Ember.get(row, 'name') &&\n                this.onlyOneRuleForField(Ember.get(row, 'name'), 'customTimeBased')\n            ) {\n                this.get('fieldsToBeRemoved').push(Ember.get(row, 'name'));\n            }\n            return this.get('customTimeBased').removeObject(row);\n        },\n        removeCustomDayBased: function (row) {\n            if (\n                Ember.get(row, 'name') &&\n                this.onlyOneRuleForField(Ember.get(row, 'name'), 'customDayBased')\n            ) {\n                this.get('fieldsToBeRemoved').push(Ember.get(row, 'name'));\n            }\n            return this.get('customDayBased').removeObject(row);\n        },\n        createAndSaveRules: function () {\n            var fields,\n                i,\n                j,\n                k,\n                len,\n                len1,\n                len2,\n                needed_products,\n                overtime_type,\n                overtime_types,\n                ref,\n                ref1,\n                rule,\n                rules,\n                type,\n                unneeded_products,\n                wt,\n                wtypes,\n                wtypesString;\n            //console.info \"types\",Object.keys(@get('overtime_types')), @get 'overtime_types'\n            rules = [];\n            needed_products = [];\n            unneeded_products = [];\n            overtime_types = this.get('overtime_types');\n            wtypes = [];\n            wtypesString = '';\n            if (this.get('salarytype')) {\n                ref = this.get('salarytype');\n                for (i = 0, len = ref.length; i < len; i++) {\n                    wt = ref[i];\n                    wtypes.push(wt.id);\n                }\n                wtypesString = wtypes.join();\n            }\n            ref1 = Object.keys(overtime_types);\n            for (j = 0, len1 = ref1.length; j < len1; j++) {\n                type = ref1[j];\n                overtime_type = overtime_types[type];\n                if (overtime_type.in_use) {\n                    rules.pushObjects(overtime_type.rule_creator(overtime_type.settings));\n                    needed_products.pushObject(overtime_type.product);\n                } else {\n                    unneeded_products.pushObject(overtime_type.product);\n                }\n            }\n            for (k = 0, len2 = rules.length; k < len2; k++) {\n                rule = rules[k];\n                rule['values']['salarytypes'] = wtypesString;\n            }\n            this.updateNeededProducts(needed_products, unneeded_products);\n            fields = {};\n            this.get('customTimeBased').forEach((row) => {\n                var field, sameField;\n                // if no name given add atleast something\n                if (!Ember.get(row, 'name') && !Ember.get(row, 'text')) {\n                    Ember.set(row, 'text', 'empty');\n                }\n                if (!Ember.get(row, 'name') && Ember.get(row, 'text')) {\n                    sameField = this.searchFieldWithName(fields, Ember.get(row, 'text'));\n                    if (sameField) {\n                        Ember.set(row, 'name', sameField);\n                    } else {\n                        Ember.set(\n                            row,\n                            'name',\n                            '_' + this.get('tools').computerizeHumanInput(Ember.get(row, 'text')),\n                        );\n                    }\n                }\n                field = Ember.get(row, 'name');\n                fields['worktime.' + field] = {\n                    type: 'hours',\n                    name: Ember.get(row, 'text'),\n                };\n                fields['worktime.' + field + '.@hide'] = 'true';\n                return rules.pushObject({\n                    name: 'hoursbetween',\n                    field: field,\n                    text: Ember.get(row, 'text'),\n                    values: {\n                        from: Ember.get(row, 'start'),\n                        to: Ember.get(row, 'end'),\n                        do_not_calculate_if_overtime:\n                            Ember.get(row, 'checked') === void 0\n                                ? 'false'\n                                : Ember.get(row, 'checked'),\n                    },\n                });\n            });\n            this.get('customDayBased').forEach((row) => {\n                var field, sameField;\n                // if no name given add atleast something\n                if (!Ember.get(row, 'name') && !Ember.get(row, 'text')) {\n                    Ember.set(row, 'text', 'empty');\n                }\n                if (!Ember.get(row, 'name') && Ember.get(row, 'text')) {\n                    sameField = this.searchFieldWithName(fields, Ember.get(row, 'text'));\n                    if (sameField) {\n                        Ember.set(row, 'name', sameField);\n                    } else {\n                        Ember.set(\n                            row,\n                            'name',\n                            '_' + this.get('tools').computerizeHumanInput(Ember.get(row, 'text')),\n                        );\n                    }\n                }\n                field = Ember.get(row, 'name');\n                fields['worktime.' + field] = {\n                    type: 'hours',\n                    name: Ember.get(row, 'text'),\n                };\n                fields['worktime.' + field + '.@hide'] = 'true';\n                return rules.pushObject({\n                    name: 'custom_dayrule',\n                    field: field,\n                    text: Ember.get(row, 'text'),\n                    values: {\n                        from: Ember.get(row, 'start'),\n                        to: Ember.get(row, 'end'),\n                        days: Ember.get(row, 'start_day') + '-' + Ember.get(row, 'end_day'),\n                        do_not_calculate_if_overtime:\n                            Ember.get(row, 'checked') === void 0\n                                ? 'false'\n                                : Ember.get(row, 'checked'),\n                        calculate_compensations_always:\n                            this.get(\n                                'overtime_types.time_based.settings._calculate_compensations_always',\n                            ) === void 0\n                                ? 'false'\n                                : this.get(\n                                      'overtime_types.time_based.settings._calculate_compensations_always',\n                                  ),\n                    },\n                });\n            });\n            this.get('fieldsToBeRemoved').forEach((item) => {\n                return (fields['!worktime.' + item] = true);\n            });\n            this.set('fieldsToBeRemoved', []);\n            if (this.get('customrules')) {\n                return this.sendAction('save', rules);\n            } else {\n                return this.saveGeneralSettings(fields, rules);\n            }\n        },\n    },\n    saveGeneralSettings: function (fields, rules) {\n        var data;\n        if (Object.keys(fields).length > 0) {\n            this.sendAction('refreshNeeded');\n        }\n        this.get('servicehandler').manipulateService(fields);\n        data = {\n            rules: JSON.stringify(rules),\n        };\n        if (this.get('worktimegroup')) {\n            data.worktimegroup = this.get('worktimegroup');\n        }\n        return this.get('Collector')\n            .ttapi({\n                url: 'overtime/settings',\n                method: 'post',\n                data: data,\n            })\n            .then(() => {\n                this.get('initapp').clearInit();\n                return this.get('notifications').success(this.get('intl').t('general.saved'), {\n                    autoClear: true,\n                });\n            });\n    },\n});\n\nexport default CollectorFieldSettingCompOvertimeSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"iGZFo+HY\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"field\\\",\\\"salarytype\\\",\\\"dayRow\\\",\\\"row\\\",\\\"&default\\\"],\\\"statements\\\":[[14,6],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"horizontal\\\"]],\\\"horizontal-overtime-settings\\\",\\\"vertical-overtime-settings\\\"],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"company_info\\\",\\\"country\\\"]],\\\"fi\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-box small-box\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item active\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"overtime_settings.split_overtimehours.title\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item text-item\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"row\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moreInfo\\\"]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"infoButton col-xs-2\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_settings.moreInfo\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"checked\\\"],[\\\"form-control\\\",\\\"checkbox\\\",[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"in_use\\\"]]]]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-10\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_settings.split_overtimehours\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-box small-box\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item active\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"name\\\"]]],null],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"pull-right\\\",\\\"extrahours_overtime\\\",[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.start\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[24,[\\\"disabled\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.error\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"min\\\",\\\"type\\\",\\\"input\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"0\\\",\\\"number\\\",[28,\\\"action\\\",[[23,0,[]],\\\"checkValues\\\",[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_start\\\"]],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_end\\\"]]],null],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_start\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.end\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[24,[\\\"disabled\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.error\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"min\\\",\\\"type\\\",\\\"input\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"0\\\",\\\"number\\\",[28,\\\"action\\\",[[23,0,[]],\\\"checkValues\\\",[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_start\\\"]],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_end\\\"]]],null],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_end\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-box small-box\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item active\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"name\\\"]]],null],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"pull-right\\\",\\\"daily_overtime\\\",[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item text-item\\\"],[8],[0,\\\"\\\\n\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"overtime.daily_overtime._50starts\\\"],null],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_50start\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"overtime.daily_overtime._100starts\\\"],null],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_100start\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-box small-box\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item active\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"name\\\"]]],null],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"pull-right\\\",\\\"weekly_overtime\\\",[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item text-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-11\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.weekly_overtime._week100starts\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"standard-icon-popover\\\",null,[[\\\"icon\\\",\\\"text\\\"],[\\\"info\\\",[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"overtime.weekly_overtime.info\\\"],null]],null]]]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"min\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"0\\\",\\\"number\\\",[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100start\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-box big-box\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item active\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"name\\\"]]],null],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"pull-right\\\",\\\"daily_overtime\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"in_use\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"in_use\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item text-item\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.enabled_help\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 box-header\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"overtime.time_based.title\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner-rounded-box\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.time_based.evening\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_start\\\"]]]]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-1 centered\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_end\\\"]]]]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"checked\\\"],[\\\"form-control\\\",\\\"checkbox\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_checked\\\"]]]]],false],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.time_based.night\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_start\\\"]]]]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-1 centered\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_end\\\"]]]]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"checked\\\"],[\\\"form-control\\\",\\\"checkbox\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_checked\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customTimeBased\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control\\\",[23,5,[\\\"text\\\"]]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[23,5,[\\\"start\\\"]]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-1 centered\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[23,5,[\\\"end\\\"]]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"checked\\\"],[\\\"form-control\\\",\\\"checkbox\\\",[23,5,[\\\"checked\\\"]]]]],false],[0,\\\"\\\\n                                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeCustomTimeBased\\\",[23,5,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cross\\\"],[8],[9],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-buttons\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addTimeBased\\\"]],[8],[1,[28,\\\"t\\\",[\\\"overtime.add_time_based\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 box-header\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"overtime.day_based.title\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner-rounded-box\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customDayBased\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"day-based-rows\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control\\\",[23,4,[\\\"text\\\"]]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[24,[\\\"days\\\"]],[23,4,[\\\"start_day\\\"]],[28,\\\"t\\\",[\\\"overtime.day_based.choose_start_day\\\"],null]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[23,4,[\\\"start\\\"]]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"centered\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[24,[\\\"days\\\"]],[23,4,[\\\"end_day\\\"]],[28,\\\"t\\\",[\\\"overtime.day_based.choose_end_day\\\"],null]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[23,4,[\\\"end\\\"]]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"checked\\\"],[\\\"form-control\\\",\\\"checkbox\\\",[23,4,[\\\"checked\\\"]]]]],false],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeCustomDayBased\\\",[23,4,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cross\\\"],[8],[9],[9],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-buttons\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addDayBased\\\"]],[8],[1,[28,\\\"t\\\",[\\\"overtime.add_day_based\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"checked\\\"],[\\\"form-control\\\",\\\"checkbox\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_calculate_compensations_always\\\"]]]]],false],[9],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"overtime_types.time_based.calculate_always\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.salarytype||products.selectablesalarytype\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-box small-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item active\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"overtime.select_salarytypes\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item text-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"overtime.salarytypes_help\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"salarytypes\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@options\\\",\\\"@selected\\\",\\\"@placeholder\\\",\\\"@onChange\\\",\\\"@noMatchesMessage\\\"],[[23,0,[\\\"salarytypes\\\"]],[23,0,[\\\"salarytype\\\"]],[28,\\\"t\\\",[\\\"overtime.select_salarytypes\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"salarytype\\\"]]],null]],null],[28,\\\"t\\\",[\\\"overtime.no_salarytypes_found\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[23,3,[\\\"text\\\"]],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"time_based_se\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-box small-box\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item active\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[[24,[\\\"overtime_types\\\",\\\"time_based_se\\\",\\\"name\\\"]]],null],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"pull-right\\\",\\\"daily_overtime\\\",[24,[\\\"overtime_types\\\",\\\"time_based_se\\\",\\\"in_use\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"time_based_se\\\",\\\"in_use\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item text-item\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customTimeBased\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"mandatoryfieldSelection\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,1,[\\\"name\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"option\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,2,[\\\"name\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"name\\\"]],[23,2,[\\\"name\\\"]]],null]],[8],[1,[23,2,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control\\\",[23,1,[\\\"text\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[23,1,[\\\"start\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-1\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[23,1,[\\\"end\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-1\\\"],[8],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeCustomTimeBased\\\",[23,1,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cross\\\"],[8],[9],[9],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addTimeBased\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9],[9],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-box button-box\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary main-button\\\"],[12,\\\"disabled\\\",[22,\\\"disabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"createAndSaveRules\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/overtime-setting/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-setting-comp/pause-setting/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorSettingCompPauseSettingComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nCollectorSettingCompPauseSettingComponent = Ember.Component.extend({\n    store: Em.inject.service(),\n    session: Em.inject.service(),\n    intl: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    init: function () {\n        if (this.get('Collector').testNeedsOne('products.rfid_pause')) {\n            this.set('nfcPauseOn', true);\n        }\n        this._super();\n        return this.getSetting();\n    },\n    getSetting: function () {\n        var configs, setting_params;\n        setting_params = {\n            name: 'default_value',\n            value: 30,\n        };\n        if (this.get('worktimegroup')) {\n            setting_params.condition = '$userProfile->worktimegroup==' + this.get('worktimegroup');\n        }\n        configs = {\n            form: 'worktime',\n            field: 'pause',\n            setting: setting_params,\n        };\n        return this.get('store')\n            .findAll('form', {\n                reload: true,\n            })\n            .then((forms) => {\n                var field, form, setting;\n                form = forms.filterBy('external_type', configs.form);\n                field = form.get('firstObject.fields').filterBy('external_type', configs.field);\n                if (field.get('length') > 0) {\n                    setting = field\n                        .get('firstObject.settings')\n                        .filterBy('name', configs.setting.name);\n                    setting = setting.filter((item) => {\n                        var arr;\n                        if (this.get('worktimegroup')) {\n                            if (!item.get('condition')) {\n                                return false;\n                            }\n                            arr = item.get('condition').split('==');\n                            return arr[1] === this.get('worktimegroup');\n                        } else {\n                            return item.get('condition') === '';\n                        }\n                    });\n                    if (setting.get('firstObject')) {\n                        return this.set('setting', setting.get('firstObject'));\n                    } else {\n                        configs.setting.field = field.get('firstObject');\n                        return this.set(\n                            'setting',\n                            this.get('store').createRecord('form-field-setting', configs.setting),\n                        );\n                    }\n                } else {\n                    return this.set('setting', false);\n                }\n            });\n    },\n    actions: {\n        saveSetting: function () {\n            return this.get('setting')\n                .save()\n                .then(() => {\n                    var ret;\n                    if (this.get('nfcPauseOn')) {\n                        ret = this.get('Collector').setProducts(['products.rfid_pause']);\n                    } else {\n                        ret = this.get('Collector').setProducts(['!products.rfid_pause']);\n                    }\n                    return Ember.RSVP.Promise.all(ret).then(() => {\n                        // unfortunately we need to send products.pause as param so that famocos can be updated\n                        return this.sendAction('settingSaved', 'products.pause');\n                    });\n                });\n        },\n    },\n});\n\nexport default CollectorSettingCompPauseSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"gPYAlCJ1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.timetracker.default_pause_help\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"number\\\",[24,[\\\"setting\\\",\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/pause-setting/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-setting-comp/postpopulated-worktimes/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldSettingCompSaldoSettingComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nCollectorFieldSettingCompSaldoSettingComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    ttapi: Em.inject.service(),\n    customerSettings: Em.inject.service(),\n    notifications: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    loading: true,\n    settingKey: Ember.computed('worktimegroup', function () {\n        return (\n            'postpopulated_worktimes_project' +\n            (this.get('worktimegroup') ? '_' + this.get('worktimegroup') : '')\n        );\n    }),\n    didReceiveAttrs: function () {\n        return this.get('ttapi')\n            ._get('/settings?worktimegroup=' + this.get('worktimegroup'))\n            .then((ret) => {\n                var projectSetting;\n                projectSetting = ret.findBy('key', this.get('settingKey'));\n                if (projectSetting) {\n                    this.set('selectedProject', projectSetting.value);\n                }\n                return this.set('loading', false);\n            });\n    },\n    projectField: Ember.computed('selectedProject', function () {\n        var field;\n        field = this.get('Collector').field('worktime', 'project');\n        field.value = this.get('selectedProject');\n        return field;\n    }),\n    actions: {\n        saveSetting: function () {\n            return this.get('customerSettings')\n                .setSetting(\n                    this.get('settingKey'),\n                    this.get('selectedProject.id'),\n                    this.get('worktimegroup'),\n                )\n                .then(() => {\n                    return this.get('notifications').success(this.get('intl').t('general.saved'), {\n                        autoClear: true,\n                    });\n                });\n        },\n        changeProject: function (project) {\n            return this.set('selectedProject', project);\n        },\n    },\n});\n\nexport default CollectorFieldSettingCompSaldoSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"76hQpxEQ\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"projectField\\\"]]],[[\\\"change\\\"],[\\\"changeProject\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/postpopulated-worktimes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-setting-comp/push-setting/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorSettingCompPushSettingComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nimport moment from 'moment';\n\nCollectorSettingCompPushSettingComponent = Ember.Component.extend({\n    store: Em.inject.service(),\n    session: Em.inject.service(),\n    moment: Em.inject.service(),\n    intl: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    notifications: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    flags: Ember.inject.service(),\n    setting_default: '16:00',\n    use_missing_hours: Em.computed(function () {\n        if (\n            this.get('customerSettings').checkSetting(\n                'push_notification_time_hours_' +\n                    this.get('session.currentUser.company_info.country'),\n            ) &&\n            !this.get('flags').test('notification-settings-v2')\n        ) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n    time: Em.computed(function () {\n        var date, utctime;\n        utctime = this.get('customerSettings').checkSetting(this.get('configs.name'));\n        date = moment().format('YYYY-MM-DD');\n        return (\n            this.get('moment')\n                .moment(date + ' ' + utctime + ':00Z')\n                .format('HH:mm') || this.setting_default\n        );\n    }),\n    /*\n  is_dirty: Em.computed 'setting', ->\n      if @get('setting')  != @get('setting_default')\n          return true\n      else\n          return false\n  */\n    actions: {\n        saveSetting: function () {\n            var promises, utctime;\n            promises = [];\n            utctime = this.get('moment')\n                .moment(moment().format('YYYY-MM-DD') + ' ' + this.get('time') + ':00')\n                .utc()\n                .format('HH:mm');\n            if (this.get('use_missing_hours')) {\n                promises.push(\n                    this.get('customerSettings').setSetting(\n                        'push_notification_time_hours_' +\n                            this.get('session.currentUser.company_info.country'),\n                        utctime,\n                    ),\n                );\n            } else if (\n                this.get('customerSettings').checkSetting(\n                    'push_notification_time_hours_' +\n                        this.get('session.currentUser.company_info.country'),\n                )\n            ) {\n                promises.push(\n                    this.get('customerSettings').setSetting(\n                        'push_notification_time_hours_' +\n                            this.get('session.currentUser.company_info.country'),\n                        'off',\n                    ),\n                );\n            }\n            promises.push(\n                this.get('customerSettings').setSetting(this.get('configs.name'), utctime),\n            );\n            return Ember.RSVP.Promise.all(promises).then(() => {\n                return this.get('notifications').success(this.get('intl').t('general.saved'), {\n                    autoClear: true,\n                });\n            });\n        },\n    },\n});\n\nexport default CollectorSettingCompPushSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"p5FBv3Q9\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"flag.notification-settings-v2\\\"],null]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\"],[\\\"checkbox\\\",[24,[\\\"use_missing_hours\\\"]]]]],false],[1,[28,\\\"t\\\",[\\\"settings.notifications.use_missing_hours\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"time\\\",[24,[\\\"time\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/push-setting/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-setting-comp/saldo-setting/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldSettingCompSaldoSettingComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nimport config from '../../../../config/environment';\n\nimport { isArray } from '@ember/array';\n\nCollectorFieldSettingCompSaldoSettingComponent = Ember.Component.extend({\n    Collector: Em.inject.service('collector-service'),\n    session: Em.inject.service(),\n    store: Em.inject.service(),\n    intl: Em.inject.service(),\n    dialogs: Ember.inject.service(),\n    //startdate: Em.computed ->\n    //    moment().format('YYYY-MM-DD')\n    didReceiveAttrs: function () {\n        this.set('loading', true);\n        return this.get('Collector')\n            .ttapi({\n                url: 'saldo/saldoSettings',\n            })\n            .then((back) => {\n                var skip_worktimegroups;\n                // these are the default-values if no saldo-settings are found\n                if (back.length === 0) {\n                    back = {};\n                    back.startdate = moment().format('YYYY-MM-DD');\n                    back.minimum = 20 * 60;\n                    back.maximum = 40 * 60;\n                    back.dailymaximum = 4 * 60;\n                    this.send('saveSetting');\n                }\n                skip_worktimegroups = back.skip_worktimegroups;\n                // sooooo ugly :(\n                this.set('startdate', back.startdate);\n                this.set('minimum_saldo', back.minimum / 60);\n                this.set('maximum_saldo', back.maximum / 60);\n                this.set('dailymaximum_saldo', back.dailymaximum / 60);\n                this.set('old_startdate', back.startdate);\n                this.set('old_minimum_saldo', back.minimum / 60);\n                this.set('old_maximum_saldo', back.maximum / 60);\n                this.set('old_dailymaximum_saldo', back.dailymaximum / 60);\n                this.set('saldo_absence_id', back.saldo_absence_id);\n                this.set('autocut_saldo', back.auto_cut);\n                this.set('old_autocut_saldo', this.get('autocut_saldo'));\n                this.set('skip_worktimegroups', skip_worktimegroups);\n                this.set('old_skip_worktimegroups', skip_worktimegroups);\n                this.set('split_basichours', back.split_basichours);\n                this.set('old_split_basichours', this.get('split_basichours'));\n                return this.set('loading', false);\n            });\n    },\n    isFiService: Ember.computed('session.currentUser', function () {\n        if (this.get('session.currentUser.company_info.country') === 'fi') {\n            return true;\n        }\n    }),\n    dirty: Ember.computed(\n        'startdate',\n        'old_startdate',\n        'minimum_saldo',\n        'old_minimum_saldo',\n        'maximum_saldo',\n        'old_maximum_saldo',\n        'dailymaximum_saldo',\n        'old_dailymaximum_saldo',\n        'autocut_saldo',\n        'old_autocut_saldo',\n        'skip_worktimegroups',\n        'old_skip_worktimegroups',\n        'old_split_basichours',\n        'split_basichours',\n        function () {\n            return (\n                this.get('startdate') !== this.get('old_startdate') ||\n                this.get('minimum_saldo') !== this.get('old_minimum_saldo') ||\n                this.get('maximum_saldo') !== this.get('old_maximum_saldo') ||\n                this.get('dailymaximum_saldo') !== this.get('old_dailymaximum_saldo') ||\n                this.get('autocut_saldo') !== this.get('old_autocut_saldo') ||\n                this.get('skip_worktimegroups') !== this.get('old_skip_worktimegroups') ||\n                this.get('split_basichours') !== this.get('old_split_basichours')\n            );\n        },\n    ),\n    worktimegroupField: Ember.computed('skip_worktimegroups', function () {\n        var field;\n        field = this.get('Collector').field('user', 'worktimegroup');\n        field.type = 'multiselect';\n        return field;\n    }),\n    showAddSaldoAbsenceButton: Ember.computed('saldo_absence_id', function () {\n        if (!this.get('Collector').testNeeds(['abcense'])) {\n            return false;\n        }\n        if (!this.get('startdate')) {\n            return false;\n        }\n        if (!this.get('saldo_absence_id')) {\n            return true;\n        }\n        if (!this.get('store').peekRecord('abcensetype', this.get('saldo_absence_id'))) {\n            return true;\n        }\n    }),\n    createSaldoAbsence: function () {\n        return new Ember.RSVP.Promise((resolve) => {\n            var record;\n            if (!this.get('Collector').testNeeds(['abcense'])) {\n                resolve(null);\n            }\n            if (!this.get('saldo_absence_id')) {\n                // create new absence type\n                record = this.get('store').createRecord('abcensetype', {\n                    name: this.get('intl').t('saldo.saldo_absence'),\n                });\n                return record.save().then(function (saved) {\n                    return resolve(saved.get('id'));\n                });\n            } else if (!this.get('store').peekRecord('abcensetype', this.get('saldo_absence_id'))) {\n                return this.get('store')\n                    .query('abcensetype', {\n                        id: this.get('saldo_absence_id'),\n                    })\n                    .then((rows) => {\n                        if (Ember.isEmpty(rows)) {\n                            // create new absence type\n                            record = this.get('store').createRecord('abcensetype', {\n                                name: this.get('intl').t('saldo.saldo_absence'),\n                            });\n                            return record.save().then(function (saved) {\n                                return resolve(saved.get('id'));\n                            });\n                        } else {\n                            return resolve(this.get('saldo_absence_id'));\n                        }\n                    });\n            } else {\n                return resolve(this.get('saldo_absence_id'));\n            }\n        });\n    },\n    recalculateOldSaldos: function (between) {\n        var startdate;\n        startdate = between.split('_')[0];\n        return this.get('dialogs')\n            .confirm(\n                this.get('intl').t('saldo.calculateHistorySaldo', {\n                    startdate: moment(startdate).format('L'),\n                }),\n            )\n            .then((con) => {\n                if (con) {\n                    return this.get('Collector').ttapi({\n                        method: 'get',\n                        url: 'saldo/calculateSaldos?date=' + between + '&userid=all',\n                    });\n                }\n            });\n    },\n    actions: {\n        moreInfo: function () {\n            return window.open(config.APP.CDN_URL + '/documents/Saldot+ohje.pdf', '_blank');\n        },\n        changeWorktimegroups: function (value) {\n            return this.set('skip_worktimegroups', value);\n        },\n        saveSetting: function () {\n            return this.createSaldoAbsence().then((saldo_absence_id) => {\n                var data, old_startdate, recalculationNeeded;\n                data = {\n                    startdate: this.get('startdate'),\n                    minimum: parseInt(this.get('minimum_saldo'), 10) * 60,\n                    maximum: parseInt(this.get('maximum_saldo'), 10) * 60,\n                    dailymaximum: parseFloat(this.get('dailymaximum_saldo'), 10) * 60,\n                    saldo_absence_id: saldo_absence_id,\n                };\n                if (this.get('skip_worktimegroups')) {\n                    data.skip_worktimegroups = isArray(this.get('skip_worktimegroups'))\n                        ? this.get('skip_worktimegroups').join(',')\n                        : this.get('skip_worktimegroups');\n                } else {\n                    data.skip_worktimegroups = '';\n                }\n                if (this.get('autocut_saldo')) {\n                    data.auto_cut = true;\n                } else {\n                    data.auto_cut = '';\n                }\n                if (this.get('split_basichours')) {\n                    data.split_basichours = true;\n                    this.get('Collector').addProduct('saldo_splitted');\n                } else {\n                    data.split_basichours = '';\n                    this.get('Collector').removeProduct('saldo_splitted');\n                }\n                return this.get('Collector')\n                    .ttapi(\n                        {\n                            method: 'post',\n                            url: 'saldo/saldoSettings',\n                            data: data,\n                        },\n                        (old_startdate =\n                            this.get('old_startdate') || moment().format('YYYY-MM-DD')),\n                        this.get('startdate') < old_startdate\n                            ? (recalculationNeeded =\n                                  this.get('startdate') +\n                                  '_' +\n                                  moment(old_startdate).subtract(1, 'day').format('YYYY-MM-DD'))\n                            : (recalculationNeeded = false),\n                    )\n                    .then((back) => {\n                        this.set('old_startdate', this.get('startdate'));\n                        this.set('old_minimum_saldo', this.get('minimum_saldo'));\n                        this.set('old_maximum_saldo', this.get('maximum_saldo'));\n                        this.set('old_dailymaximum_saldo', this.get('dailymaximum_saldo'));\n                        this.set('old_autocut_saldo', this.get('autocut_saldo'));\n                        this.set('old_skip_worktimegroups', this.get('skip_worktimegroups'));\n                        this.set('old_split_basichours', this.get('split_basichours'));\n                        if (this.get('saldo_absence_id') === saldo_absence_id) {\n                            this.notifyPropertyChange('saldo_absence_id');\n                        } else {\n                            this.set('saldo_absence_id', saldo_absence_id);\n                        }\n                        this.sendAction('settingSaved');\n                        if (recalculationNeeded) {\n                            return this.recalculateOldSaldos(recalculationNeeded);\n                        }\n                    });\n            });\n        },\n        changeSaldotype: function (type) {\n            return this.set('saldotype', type);\n        },\n    },\n});\n\nexport default CollectorFieldSettingCompSaldoSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"oDB+fmpG\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"saldo.start\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"form-control add-fields\\\",[24,[\\\"startdate\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"saldo.minimum\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"minimum_saldo\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"saldo.maximum\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"maximum_saldo\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"saldo.dailymaximum\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"dailymaximum_saldo\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"saldo.autocut\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"form-control add-fields\\\",[24,[\\\"autocut_saldo\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"saldo.split_basichours\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"form-control add-fields\\\",[24,[\\\"split_basichours\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktimegroup\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"saldo.skip_worktimegroups\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"worktimegroupField\\\"]]],[[\\\"change\\\",\\\"value\\\"],[\\\"changeWorktimegroups\\\",[24,[\\\"skip_worktimegroups\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isFiService\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"moreInfo\\\"]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"info-button-md col-xs-2\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[1,[28,\\\"t\\\",[\\\"saldo.more_info_link\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"dirty\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showAddSaldoAbsenceButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"saldo.add_saldo_absence\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/saldo-setting/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"q9wV2j0/\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[[24,[\\\"configs\\\",\\\"type\\\"]],[24,[\\\"setting\\\",\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"description\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"date_interval_setting\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"ember-checkbox form-control\\\",[24,[\\\"date_interval_future_check\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.date_interval.can_save_to_future\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"date_interval_future_check\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"date_interval_future\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.date_interval.can_save_to_future_desc\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSaveButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/template.hbs\"}});","import { inject as service } from '@ember/service';\nimport Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\n\nexport default Component.extend({\n    loadTranslations: service(),\n    intl: service(),\n\n    loading: true,\n\n    terms: computed(function () {\n        const terms = get(this, 'intl').t('terms.project');\n        const changesArr = terms.split(/\\n/g);\n        const termList = changesArr[0].split(/,/g);\n\n        return termList.map((item, key) => {\n            return { id: '' + key, text: item };\n        });\n    }),\n\n    didReceiveAttrs() {\n        set(this, 'selectedTerm', get(this, 'loadTranslations').getTermsIndex());\n        set(this, 'loading', false);\n    },\n\n    actions: {\n        termsChanged(index) {\n            get(this, 'loadTranslations').saveTermsIndex(index);\n            get(this, 'loadTranslations').fetch();\n\n            set(this, 'selectedTerm', index);\n\n            get(this, 'loadTranslations').saveTermsIndex(index);\n            this.settingSaved(false);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"k9bJWbZY\",\"block\":\"{\\\"symbols\\\":[\\\"term\\\"],\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"settings.general.terms_desc\\\"],null],false],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"termsChanged\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"terms\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,1,[\\\"id\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"selectedTerm\\\"]]],null]],[8],[1,[23,1,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/terms-setting/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-setting-comp/time-setting/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorSettingCompTimeSettingComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nCollectorSettingCompTimeSettingComponent = Ember.Component.extend({\n    store: Em.inject.service(),\n    session: Em.inject.service(),\n    intl: Em.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    notifications: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    setting_default: '16:00',\n    time: Em.computed(function () {\n        return (\n            this.get('customerSettings').checkSetting(this.get('configs.name')) ||\n            this.setting_default\n        );\n    }),\n    second_time: Em.computed(function () {\n        return this.get('customerSettings').checkSetting(\n            this.get('configs.secondary_setting_name'),\n        );\n    }),\n    field1Translation: Em.computed(function () {\n        if (\n            this.get('configs.name').indexOf('_fi') > 0 ||\n            this.get('configs.name').indexOf('_se') > 0\n        ) {\n            return this.get('intl').t(\n                'settings.' + this.get('configs.name').slice(0, -3) + '.field',\n            );\n        } else {\n            return this.get('intl').t('settings.' + this.get('configs.name') + '.field');\n        }\n    }),\n    field2Translation: Em.computed(function () {\n        if (\n            this.get('configs.secondary_setting_name').indexOf('_fi') > 0 ||\n            this.get('configs.secondary_setting_name').indexOf('_se') > 0\n        ) {\n            return this.get('intl').t(\n                'settings.' + this.get('configs.secondary_setting_name').slice(0, -3) + '.field',\n            );\n        } else {\n            return this.get('intl').t('settings.' + this.get('configs.name') + '.field');\n        }\n    }),\n    /*\n  is_dirty: Em.computed 'setting', ->\n      if @get('setting')  != @get('setting_default')\n          return true\n      else\n          return false\n  */\n    actions: {\n        saveSetting: function () {\n            return this.get('customerSettings')\n                .setSetting(this.get('configs.name'), this.get('time'))\n                .then(() => {\n                    var promise;\n                    promise = new Em.RSVP.Promise((resolve, reject) => {\n                        if (this.get('configs.secondary_setting_name')) {\n                            return this.get('customerSettings')\n                                .setSetting(\n                                    this.get('configs.secondary_setting_name'),\n                                    this.get('second_time'),\n                                )\n                                .then(() => {\n                                    return resolve();\n                                });\n                        } else {\n                            return resolve();\n                        }\n                    });\n                    return promise.then(() => {\n                        return this.get('notifications').success(\n                            this.get('intl').t('general.saved'),\n                            {\n                                autoClear: true,\n                            },\n                        );\n                    });\n                });\n        },\n    },\n});\n\n//@get('setting').save().then =>\n//    @sendAction('settingSaved')\nexport default CollectorSettingCompTimeSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"P8HLPR3t\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"configs\\\",\\\"secondary_setting_name\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-horizontal\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-6 control-label\\\"],[8],[1,[22,\\\"field1Translation\\\"],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"time\\\",[24,[\\\"time\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-6 control-label\\\"],[8],[1,[22,\\\"field2Translation\\\"],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"time\\\",[24,[\\\"second_time\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"time\\\",[24,[\\\"time\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/time-setting/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/base-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsBaseFieldComponent;\n\nimport Ember from 'ember';\n\nimport collectorField from '../../../../mixins/collector-field';\n\nCollectorFieldsBaseFieldComponent = Ember.Component.extend(collectorField, {\n    object: Ember.computed.alias('field.name'),\n    addModelObs: Ember.on('init', function () {\n        var modelfield;\n        this.updateValueFromModel();\n        modelfield = 'model.' + this.get('object');\n        return this.addObserver(modelfield, this, this.modelChanged);\n    }),\n    modelChanged: function () {\n        return Ember.run.once(this, this.updateValueFromModel);\n    },\n    updateValueFromModel: function () {\n        var modelfieldid;\n        if (this.get('model')) {\n            modelfieldid = this.get('model.' + this.get('object'));\n            if (modelfieldid !== undefined && modelfieldid !== null) {\n                this.set('value', modelfieldid);\n                return this.set('field.value', modelfieldid);\n            }\n        } else if (this.get('field.value')) {\n            return this.set('value', this.get('field.value'));\n        }\n    },\n});\n\nexport default CollectorFieldsBaseFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"LVLkTfTY\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/base-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/checkbox-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsCheckboxFieldComponent;\n\nimport Ember from 'ember';\n\nimport textInput from '../text-field/component';\n\nCollectorFieldsCheckboxFieldComponent = textInput.extend({\n    intl: Ember.inject.service(),\n    options: Em.computed(function () {\n        return [\n            {\n                id: '',\n                name: this.field.prompt ? this.field.prompt : this.get('intl').t('general.choose'),\n            },\n            {\n                id: 'off',\n                name: this.get('intl').t('general.no'),\n            },\n            {\n                id: 'on',\n                name: this.get('intl').t('general.yes'),\n            },\n        ];\n    }),\n});\n\nexport default CollectorFieldsCheckboxFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"d4xqXVIW\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"useAsFilter\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\"],[[24,[\\\"_class\\\"]],[24,[\\\"options\\\"]],[24,[\\\"value\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/fields/toggle-field\\\",null,[[\\\"toggled\\\",\\\"name\\\",\\\"form\\\",\\\"disabled\\\",\\\"class\\\"],[[24,[\\\"value\\\"]],[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"field\\\",\\\"form\\\"]],[24,[\\\"disabled\\\"]],\\\"smallerText\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/checkbox-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/checkboxgroup-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsCheckboxgroupFieldComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collectorField from '../../../../mixins/collector-field';\n\nCollectorFieldsCheckboxgroupFieldComponent = Ember.Component.extend(collectorField, {\n    intl: Ember.inject.service(),\n    checkboxes: Ember.computed('field.options', 'field.value', function () {\n        var checked, key, options_arr, ref, text, value;\n        options_arr = Ember.A([]);\n        ref = this.get('field.options');\n        for (key in ref) {\n            value = ref[key];\n            checked = false;\n            if (Array.isArray(this.get('model.' + this.get('field.name')))) {\n                if (indexOf.call(this.get('model.' + this.get('field.name')), key) >= 0) {\n                    checked = true;\n                }\n            }\n            text =\n                value.substring(0, 1) === '$'\n                    ? this.get('intl').t(\n                          this.get('field.form') + 's.' + this.get('field.name') + '.' + key,\n                      )\n                    : value;\n            if (text === value && this.get('intl').exists(value)) {\n                text = this.get('intl').t(value);\n            }\n            options_arr.pushObject(\n                Ember.Object.create({\n                    checked: checked,\n                    key: key,\n                    text: text,\n                }),\n            );\n        }\n        return options_arr;\n    }),\n    actions: {\n        check: function (box) {\n            box.toggleProperty('checked');\n            return this.sendAction(\n                'bubbleChange',\n                this.get('checkboxes').filterBy('checked').mapBy('key'),\n                this.get('field.name'),\n            );\n        },\n    },\n});\n\nexport default CollectorFieldsCheckboxgroupFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"1stWsTpw\",\"block\":\"{\\\"symbols\\\":[\\\"box\\\"],\\\"statements\\\":[[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-unstyled\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"checkboxes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"checked\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-success\\\"],[8],[1,[28,\\\"standard-icon\\\",[\\\"ok\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[1,[23,1,[\\\"text\\\"]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[12,\\\"class\\\",\\\"nostyle-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"check\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"checked\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"standard-icon\\\",[\\\"checked\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"standard-icon\\\",[\\\"unchecked\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[1,[23,1,[\\\"text\\\"]],false],[0,\\\"\\\\n                        \\\"],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/checkboxgroup-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/database-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDropdownFieldComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collectorField from '../../../../mixins/collector-field';\n\nimport $ from 'jquery';\n\nCollectorFieldsDropdownFieldComponent = Ember.Component.extend(collectorField, {\n    localStorageWrapper: Em.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    store: Ember.inject.service(),\n    sessionGlobals: Ember.inject.service(),\n    dialogs: Em.inject.service(),\n    router: Em.inject.service(),\n    showOptions: false,\n    value: '',\n    text: '',\n    search: '',\n    prompt: Ember.computed('field.prompt', function () {\n        if (this.get('field.show_prompt')) {\n            return this.get('field.prompt');\n        }\n        if (this.get('field.features.remove_empty_selection')) {\n            return null;\n        }\n        if (this.get('field.prompt.string')) {\n            return this.get('field.prompt');\n        }\n        if (this.get('field.prompt')) {\n            return this.get('intl').t(this.get('field.prompt'));\n        } else {\n            if (this.get('useAsFilter')) {\n                return (\n                    this.get('intl').t('general.select_choose') +\n                    ' ' +\n                    this.Collector.getTranslationForColumn(\n                        this.get('field.form'),\n                        this.get('field.name'),\n                    ) +\n                    '...'\n                );\n            } else {\n                return this.get('intl').t('general.select_choose');\n            }\n        }\n    }),\n    query: '',\n    options: Em.A([]),\n    // possible values\n    //   normal = browser's internal component\n    //   search = custom dropdown with search\n    //   lastused = list of last used selctions from localstorage <- not used anymore\n    dropdownType: 'normal',\n    use_normal_dropdown_limit: 30,\n    ajax_search_limit: Em.computed.alias('use_normal_dropdown_limit'),\n    localStorage_size_limit: 20,\n    useBrowsersInternalDropdown: true,\n    localStorageKey: Em.computed('field.name', function () {\n        return 'select_' + this.get('field.name');\n    }),\n    defaultValueForNormalDropdown: null,\n    initAliases: Em.on('init', function () {\n        return Ember.defineProperty(\n            this,\n            'modelValue',\n            Ember.computed.alias('model.' + this.get('field.name')),\n        );\n    }),\n\n    // decide which version to use\n\n    initilizeDropdown: Em.on(\n        'init',\n        Em.observer('session.currentUser', 'field.filterOptions', function () {\n            var settings;\n            if (!this.get('session.currentUser')) {\n                return;\n            }\n            settings = this.getSettingsFromLs();\n            //if settings.use and settings.objects? and settings.objects.length > 3\n            //    @set 'dropdownType', 'lastused'\n            //    @set 'options', @getOptionsFromLocalStorage()\n            //    @set 'moreCount', 'more'\n            //    return\n            return Ember.run.next(() => {\n                // fetching must be done in next loop so everything is settled down and possible reloader field is ready\n                if (this.get('isDestroyed')) {\n                    return;\n                }\n                return this.fetchFromDatabase().then((data) => {\n                    if (this.get('isDestroyed')) {\n                        return;\n                    }\n                    if (\n                        !this.get('field.show_prompt') &&\n                        !this.get('field.value') &&\n                        this.get('field.features.remove_empty_selection')\n                    ) {\n                        this.fetchRecordById(Ember.get(data, 'firstObject.id')).then((record) => {\n                            // super ugly hax to prevent overwriting delayed changes from parent component\n                            // already made an issue to rewrite this whole component EP-4228\n                            return Ember.run.later(\n                                this,\n                                () => {\n                                    if (!this.get('value')) {\n                                        return this.sendChange(record);\n                                    }\n                                },\n                                2500,\n                            );\n                        });\n                    }\n                    if (this.get('queryRowCount') > this.get('ajax_search_limit')) {\n                        if (!settings.use) {\n                            this.setUseLocalStorage();\n                        }\n                        //@set 'moreCount', data.count - @get 'ajax_search_limit'\n                        return this.set('dropdownType', 'search');\n                    } else {\n                        this.set('dropdownType', 'normal');\n                        if (this.get('field.value')) {\n                            return this.set(\n                                'defaultValueForNormalDropdown',\n                                this.get('field.value'),\n                            );\n                        } else {\n                            return this.set(\n                                'defaultValueForNormalDropdown',\n                                this.get('model.' + this.get('field.name') + '.id'),\n                            );\n                        }\n                    }\n                });\n            });\n        }),\n    ),\n    offset: 0,\n\n    // Fetch options from backend .. Use search query if it is set\n\n    fetchFromDatabase: function (loadMore) {\n        var c, field, promise;\n        c = this.get('Collector');\n        field = c.field(this.get('form'), this.get('object'));\n        if (loadMore) {\n            this.set('offset', this.get('offset') + this.get('ajax_search_limit'));\n        } else {\n            this.set('offset', 0);\n        }\n        promise = this.queryBackend(field.options.form);\n        //lataa aluksi, paina lataa lisää, offsettiä kasvatetaan ajax_search_limitin verran, tulos appendataan optionseihin\n        promise.then((data) => {\n            var moreCount, options;\n            options = this.convertOptions(data);\n            if (this.get('isDestroyed')) {\n                return;\n            }\n            this.set('loading', false);\n            if (loadMore) {\n                this.get('options').pushObjects(options);\n            } else {\n                this.set('options', options);\n            }\n            moreCount = this.get('queryRowCount') - this.get('options.length');\n            return this.set('moreCount', moreCount > 0 ? moreCount : null);\n        });\n        //@set 'useSaveToLocalStorage', true if data.count >= @get('search_limit') and not query\n        return promise;\n    },\n    queryBackend: function (form) {\n        var c, params, promise, query_field, row_status, show_removed_arr;\n        c = this.get('Collector');\n        if (this.get('useAsFilter') && this.get('sessionGlobals').get('show_removed')) {\n            show_removed_arr = this.get('sessionGlobals').get('show_removed');\n            if (show_removed_arr && show_removed_arr[form]) {\n                row_status = 'removed';\n            }\n        }\n        params = {\n            form: this.get('form'),\n            field: this.get('object'),\n            limit: this.get('ajax_search_limit'),\n            offset: this.get('offset'),\n            row_info_status: row_status,\n            q: this.get('query'),\n        };\n        //if values loaded by some other field, use that as parameter\n        if (this.get('loadedValuesBy')) {\n            query_field = c.field(this.get('form'), this.get('loadedValuesByKey'));\n            params[query_field.options.form] = this.get('loadedValuesBy');\n        }\n        this.addFilterOptionsToParams(params);\n        promise = this.get('store').query(form, params);\n        promise.then((data) => {\n            if (this.get('isDestroyed')) {\n                return;\n            }\n            if (this != null) {\n                return this.set('queryRowCount', data.meta.count);\n            }\n        });\n        return promise;\n    },\n    addFilterOptionsToParams: function (params) {\n        var filterOptions, key, results;\n        filterOptions = this.get('field.filterOptions');\n        results = [];\n        for (key in filterOptions) {\n            results.push((params[key] = filterOptions[key]));\n        }\n        return results;\n    },\n    convertOptions: function (data) {\n        var options;\n        options = [];\n        data.forEach((row) => {\n            return options.push({\n                id: row.get('id'),\n                text: this.getText(row),\n            });\n        });\n        return options;\n    },\n\n    //   fetch preselected object from localstorage and show it in dropdown\n\n    setDefaultValue: Ember.on(\n        'init',\n        Em.observer('dropdownType', function () {\n            var id, option;\n            if (Ember.isPresent(this.get('field.value')) && this.get('dropdownType') !== 'normal') {\n                id = this.get('field.value');\n                option = this.getOptionsFromLocalStorage().findBy('id', parseInt(id, 10));\n                if (option) {\n                    return this.setState(id, option.text);\n                } else {\n                    return this.fetchRecordById(id).then((record) => {\n                        return this.setState(id, this.getText(record));\n                    });\n                }\n            }\n        }),\n    ),\n\n    //   Create list of options to use with browser's internal component\n\n    normalDropdownOptions: Em.computed('options', 'defaultValueForNormalDropdown', function () {\n        var field, subform;\n        if (\n            !this.get('useAsFilter') &&\n            !this.get('model.isNew') &&\n            Ember.isPresent(this.get('defaultValueForNormalDropdown')) &&\n            !this.get('options').findBy('id', this.get('defaultValueForNormalDropdown'))\n        ) {\n            field = this.get('Collector').field(this.get('form'), this.get('object'));\n            subform = field.options.form;\n            this.get('options').pushObject({\n                id: this.get('defaultValueForNormalDropdown'),\n                text: this.getText(\n                    this.get('store').peekRecord(\n                        subform,\n                        this.get('defaultValueForNormalDropdown'),\n                    ),\n                ),\n            });\n        }\n        return this.get('options').map((option) => {\n            Ember.set(option, 'name', option.text);\n            return option;\n        });\n    }),\n\n    //   Same as above but include \"last used\" objects\n\n    normalDropdownOptionsWithLastused: Em.computed('normalDropdownOptions', function () {\n        var lastUsedCount = 10; // Number of 'last used' items to display\n        var intl, lastused;\n        lastused = this.getOptionsFromLocalStorage()\n            .slice(0, lastUsedCount)\n            .map(function (option) {\n                option.name = option.text;\n                return option;\n            });\n        intl = this.get('intl');\n        if (this.get('loadedValuesBy')) {\n            lastused = false;\n        }\n        if (lastused.length > 0 && this.get('normalDropdownOptions.length') > 10) {\n            return [\n                {\n                    label: intl.t('select.last_selections'),\n                    options: lastused,\n                },\n                {\n                    label: intl.t('select.all'),\n                    options: this.get('normalDropdownOptions'),\n                },\n            ];\n        } else {\n            return null;\n        }\n    }),\n\n    //   options for \"custom dropdown with search\"\n\n    optionsForSearcheableDropdown: Ember.computed('options.[]', function () {\n        var temp;\n        temp = Em.A([]);\n        //if not @get 'search'\n        //    temp.pushObject {id: null, text: @get('intl').t(\"select.clear\"), class: \"clear\"}\n\n        //if @get('dropdownType') == 'lastused' and not @get 'search'\n        //    temp.pushObject {id: null, text: @get('intl').t(\"select.last_selections\"), class: \"lastused\"}\n        return temp.pushObjects(this.get('options'));\n    }),\n\n    //   Same as above but include \"last used\" objects\n\n    optionsForSearcheableDropdownWithLastused: Em.computed(\n        'optionsForSearcheableDropdown',\n        function () {\n            var intl, lastused, temp;\n            lastused = this.getOptionsFromLocalStorage().slice(0, 15);\n            if (this.get('loadedValuesBy')) {\n                lastused = false;\n            }\n            intl = this.get('intl');\n            temp = Em.A([]);\n            if (!this.get('search')) {\n                temp.pushObject({\n                    id: null,\n                    text: this.get('intl').t('select.clear'),\n                    class: 'clear',\n                });\n            }\n            if (lastused.length > 0 && !this.get('search')) {\n                temp.pushObject({\n                    id: null,\n                    text: this.get('intl').t('select.last_selections'),\n                    class: 'lastused',\n                });\n                temp.pushObjects(lastused);\n                temp.pushObject({\n                    id: null,\n                    text: this.get('intl').t('select.all'),\n                    class: 'lastused',\n                });\n            }\n            temp.pushObjects(this.get('optionsForSearcheableDropdown'));\n            return temp;\n        },\n    ),\n\n    //  Observe when user types something to searchable dropdown and update options accordingly\n\n    ObserveSearch: Ember.observer('search', function () {\n        var search;\n        search = this.get('search');\n        if (!search && this.get('dropdownType') === 'lastused') {\n            this.set('moreCount', 'more');\n            this.set('options', this.getOptionsFromLocalStorage());\n            return;\n        }\n        if (typeof search !== 'string') {\n            return;\n        }\n        if (!this.get('showOptions')) {\n            return;\n        }\n        this.set('query', search);\n        this.set('loading', true);\n        return Ember.run.debounce(this, this.fetchFromDatabase, 700);\n    }),\n    // i hope no one finds this..\n    obsValue: Em.observer('field.value', function () {\n        if (Em.isEmpty(this.get('field.value'))) {\n            return this.set('search', null);\n        }\n    }),\n    loadedValuesBy: null,\n\n    // this is for reloading options in another dropdown according to value in another (ie tasks by projects)\n\n    modifyDatabaseItems: function (sender, key, user_selected = true) {\n        var c,\n            data,\n            field,\n            form,\n            forms,\n            old_value,\n            promise,\n            query,\n            query_field,\n            query_key,\n            subform,\n            value;\n        old_value = this.get('field.value');\n        c = this.get('Collector');\n        query = this.get('query');\n        query_key = key.split('.')[1];\n        value = this.get('model.' + query_key + '.id');\n        // reload supporting multiselects .. those values are array of indexes .. not a record\n        if (!value && Ember.isArray(this.get('model.' + query_key))) {\n            value = this.get('model.' + query_key);\n        }\n        // dismiss unneeded observer calls\n        if (value === this.get('loadedValuesBy')) {\n            return;\n        }\n        if (!value && !this.get('loadedValuesBy')) {\n            return;\n        }\n        // test that field has linkings for query_key .. if it doesn't and request is made api returns error\n        // only test for project tasks .. ugly hack.. :(\n        if (this.get('object') === 'task' && query_key === 'project') {\n            forms = c.forms();\n            form = forms[this.get('object')];\n            if (form != null && form.features != null) {\n                if (Ember.isArray(form.features.link)) {\n                    if (form.features.link.indexOf(query_key) === -1) {\n                        return;\n                    }\n                } else if (form.features.link !== query_key) {\n                    return;\n                }\n            } else {\n                return;\n            }\n        }\n        this.set('loadedValuesBy', value);\n        this.set('loadedValuesByKey', query_key);\n        data = {};\n        query_field = c.field(this.get('form'), query_key);\n        if (value) {\n            data[query_field.options.form] = value;\n        }\n        data['form'] = this.get('form');\n        data['field'] = this.get('object');\n        field = c.field(this.get('form'), this.get('object'));\n        promise = this.get('store').query(field.options.form, data);\n        subform = field.options.form;\n        // Not using search limit since this doesn't work with search dropdown and we want all options.\n        return promise.then((data) => {\n            var add_option, option, options;\n            options = this.convertOptions(data);\n            if (this.get('isDestroyed')) {\n                return;\n            }\n            if (!old_value) {\n                this.send('select');\n            }\n            option = [];\n            if (old_value) {\n                option = options.filterBy('id', old_value.toString());\n                // this is the last resort .. if there is more than 100 filtered records and old_value is not one of them .. we\n                // try to fetch record with peekRecord and add it on the fly to options.. it should be found (almost always) because\n                // we came to edit route from report witch has already sideloaded the correct record\n                if (\n                    Ember.isEmpty(option) &&\n                    !this.get('model.isNew') &&\n                    ((user_selected && data.get('meta.count') > 100) || !user_selected) &&\n                    this.router._router.currentPath !== 'timetracker.timecard.add'\n                ) {\n                    add_option = {\n                        id: old_value,\n                        text: this.getText(this.get('store').peekRecord(subform, old_value)),\n                    };\n                    option = [add_option];\n                    options.push(add_option);\n                }\n            }\n            value = void 0;\n            if (option.get('length') > 0) {\n                value = option[0];\n            } else if (options.length === 1 && !field.features.do_not_preselect) {\n                value = options[0];\n            }\n            if (this.get('dropdownType') === 'normal') {\n                this.set('defaultValueForNormalDropdown', value ? value.id : value);\n                this.send('normalSelect', value ? value.id : value);\n            } else {\n                this.send('select', value);\n            }\n            return this.set('options', options);\n        });\n    },\n\n    // add observers for modifyDatabaseItems method\n\n    didReceiveAttrs: function () {\n        var c, field, forms, self;\n        field = this.get('field');\n        c = this.get('Collector');\n        forms = c.fieldArray(this.get('form'));\n        self = this;\n        return forms.forEach(function (form) {\n            var ref, reload;\n            reload = form.features.reload;\n            if (!Ember.isArray(reload)) {\n                reload = [reload];\n            }\n            if (((ref = field.name), indexOf.call(reload, ref) >= 0)) {\n                self.addObserver('model.' + form.name, self, self.modifyDatabaseItems);\n                return Ember.run.later(() => {\n                    return self.modifyDatabaseItems(self, 'model.' + form.name, false);\n                }, 500);\n            }\n        });\n    },\n    getText: function (record, field) {\n        var i, len, ref, ref1, text, val;\n        text = '';\n        if (!record) {\n            return '';\n        }\n        if ((!field && !this.get('form')) || !this.get('object')) {\n            return '';\n        }\n        if (!field) {\n            field = this.get('Collector').field(this.get('form'), this.get('object'));\n        }\n        ref = field.options.fields;\n        for (i = 0, len = ref.length; i < len; i++) {\n            field = ref[i];\n            if (!field) {\n                continue;\n            }\n            val = record.get(field);\n            if (val && (ref1 = Ember.typeOf(val)) !== 'object' && ref1 !== 'array') {\n                text += val + ' ';\n            }\n        }\n        return text.slice(0, -1);\n    },\n    setState: function (id, text = '') {\n        this.set('value', id);\n        this.set('text', text);\n        return this.set('search', text);\n    },\n    //ObservePromptTranslation: Ember.on 'init', Ember.observer 'promptTranslation', ->\n    //    @set 'prompt', @get('intl').t @get 'promptTranslation'\n    addModelObs: Ember.on('init', function () {\n        var modelfield;\n        //@updateValueFromModel true\n        modelfield = 'model.' + this.get('object');\n        return this.addObserver(modelfield, this, this.modelChanged);\n    }),\n    modelChanged: function () {\n        if (!this.get('userHasSelected')) {\n            return Ember.run.once(this, this.updateValueFromModel);\n        }\n    },\n    updateValueFromModel: function (init) {\n        var modelfieldid, modelfieldtext, option_id, option_text, orig_value;\n        modelfieldid = 'model.' + this.get('object') + '.id';\n        modelfieldtext = 'model.' + this.get('object') + '.name';\n        option_id = +this.get(modelfieldid);\n        orig_value = this.get('value');\n        option_text = this.get(modelfieldtext);\n        if (!option_text) {\n            option_text = this.getRealOptionText();\n        }\n        if (option_id != null && option_id && option_id !== orig_value) {\n            if (init) {\n                this.set('field.value', option_id);\n                return this.setDefaultValue();\n            } else {\n                return this.setState(option_id, option_text);\n            }\n        }\n    },\n    getRealOptionText: function () {\n        var fields, textArr;\n        fields = Ember.get(\n            this.get('Collector').field(this.get('form'), this.get('object')),\n            'options.fields',\n        );\n        textArr = [];\n        fields.forEach((field) => {\n            return textArr.push(this.get('model.' + this.get('object') + '.' + field));\n        });\n        return textArr.join(' ');\n    },\n    fetchRecordById: function (id) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var f, field, parsedid, record;\n            if (!id) {\n                resolve(null);\n            }\n            field = this.get('field');\n            f = this.get('Collector').field(field.form, field.name);\n            parsedid = id.length > 15 ? id : parseInt(id, 10);\n            record = this.get('store').peekRecord(f.options.form, parsedid);\n            if (record) {\n                return resolve(record);\n            } else {\n                return this.get('store')\n                    .findRecord(f.options.form, parsedid)\n                    .then(\n                        (record) => {\n                            return resolve(record);\n                        },\n                        function (reason) {\n                            return resolve(null);\n                        },\n                    );\n            }\n        });\n    },\n    pushToStore: function (type, data) {\n        data.type = type;\n        data.attributes = data.values;\n        return this.get('store').push({\n            data: data,\n        });\n    },\n    //#####################################################################################################\n\n    // LocalStorage\n\n    sendChange: function (record) {\n        if (record === null) {\n            this.set('field.value', null);\n        } else if (typeof record === 'object') {\n            this.set('field.value', record.get('id'));\n        } else {\n            this.set('field.value', record);\n        }\n        return this.sendAction('bubbleChange', record, this.get('field.name'));\n    },\n    getSettingsFromLs: function () {\n        return this.get('localStorageWrapper').getUserSetting(this.get('localStorageKey'), {});\n    },\n    saveSettingsToLs: function (settings) {\n        if (!this.get('session.currentUser')) {\n            return;\n        }\n        return this.get('localStorageWrapper').setUserSetting(\n            this.get('localStorageKey'),\n            settings,\n        );\n    },\n    setUseLocalStorage: function () {\n        var settings;\n        settings = this.getSettingsFromLs();\n        settings.use = true;\n        return this.saveSettingsToLs(settings);\n    },\n    addToLastused: function (id, text) {\n        var item, lastused, settings;\n        settings = this.getSettingsFromLs();\n        lastused = Em.A(settings.objects);\n        if ((item = lastused.findBy('id', id))) {\n            item.used = moment().format('YYYY-MM-DD HH:mm:ss');\n            item.text = text;\n        } else {\n            lastused.pushObject({\n                id: id,\n                text: text,\n                used: moment().format('YYYY-MM-DD hh:mm:ss'),\n            });\n        }\n        settings.objects = lastused\n            .sortBy('used')\n            .reverse()\n            .slice(0, this.get('localStorage_size_limit'));\n        return this.saveSettingsToLs(settings);\n    },\n    removeFromLastUsed: function (id) {\n        var item, lastused, settings;\n        settings = this.getSettingsFromLs();\n        lastused = Em.A(settings.objects);\n        if ((item = lastused.findBy('id', id))) {\n            lastused.removeObject(item);\n            settings.objects = lastused\n                .sortBy('used')\n                .reverse()\n                .slice(0, this.get('localStorage_size_limit'));\n            return this.saveSettingsToLs(settings);\n        }\n    },\n    getOptionsFromLocalStorage: function () {\n        var settings;\n        settings = this.getSettingsFromLs();\n        return Em.A(settings.objects);\n    },\n    //####################################################################################################\n    setSessionRemoved: function (state) {\n        var show_removed;\n        if (state === 'show_removed') {\n            this.set('show_removed', true);\n            show_removed = this.get('sessionGlobals').get('show_removed');\n            if (!show_removed || show_removed === null) {\n                show_removed = {};\n            }\n            show_removed[this.get('field.name')] = true;\n            this.get('sessionGlobals').set('show_removed', show_removed);\n            this.initilizeDropdown();\n        }\n        if (state === 'hide_removed') {\n            this.set('show_removed', false);\n            show_removed = this.get('sessionGlobals').get('show_removed');\n            //if !show_removed || show_removed is null\n            //    show_removed = {}\n            if (show_removed[this.get('field.name')]) {\n                delete show_removed[this.get('field.name')];\n                this.get('sessionGlobals').set('show_removed', show_removed);\n            }\n            return this.initilizeDropdown();\n        }\n    },\n    clearOptions: function () {\n        return this.set('options', []);\n    },\n    actions: {\n        focusIn: function () {\n            this.set('search', '');\n            return Em.run.later(\n                this,\n                function () {\n                    return this.set('showOptions', true);\n                },\n                200,\n            );\n        },\n        touchMove: function () {\n            //If the user touches this field and starts scrolling, we actually want to scroll and not snap to this field and open options\n            // #UX´\n            return Em.run.debounce(\n                this,\n                function () {\n                    return this.set('touchMoving', true);\n                },\n                50,\n            );\n        },\n        touchStart: function () {\n            //Only open the options if we have not initiated scrolling\n            return Em.run.later(\n                this,\n                function () {\n                    if (!this.get('touchMoving')) {\n                        this.set('search', '');\n                        return this.set('showOptions', true);\n                    }\n                },\n                200,\n            );\n        },\n        touchEnd: function () {\n            //We have ended fiddling with this field,\n            // if we were moving then blur to not snap scroll back to this field because of mobile shenanigans\n            if (this.get('touchMoving')) {\n                this.set('touchMoving', false);\n                return this.element.querySelector('input').blur();\n            }\n        },\n        closeOptions: function () {\n            this.set('showOptions', false);\n            this.set('search', this.get('text') || this.get('prompt'));\n            return this.set('query', '');\n        },\n        focusOut: function () {\n            this.set('showOptions', false);\n            this.set('search', this.get('text') || this.get('prompt'));\n            this.set('query', '');\n            return this.fetchFromDatabase();\n        },\n        loadMore: function () {\n            return this.fetchFromDatabase(true);\n        },\n        normalSelect: function (id) {\n            var option;\n            if (id === null || id === '' || id === void 0 || id === 'null') {\n                this.sendChange(null);\n            }\n            if (id === 'show_removed' || id === 'hide_removed') {\n                if (id === 'show_removed') {\n                    this.get('dialogs').alert(this.get('intl').t('general.showing_removed'));\n                }\n                this.setSessionRemoved(id);\n                return;\n            }\n            if (id === '(empty)') {\n                this.sendChange(id);\n                return;\n            }\n            option = this.get('normalDropdownOptions').findBy('id', parseInt(id, 10));\n            if (option) {\n                this.addToLastused(parseInt(id, 10), option.name);\n            }\n            return this.fetchRecordById(id).then((record) => {\n                return this.sendChange(record);\n            });\n        },\n        select: function (option) {\n            this.set('userHasSelected', true);\n            if (!option) {\n                option = {};\n            }\n            if (option === 'show_removed' || option === 'hide_removed') {\n                this.setSessionRemoved(option);\n                return;\n            }\n            this.set('search', option.id ? option.text : this.get('prompt'));\n            this.set('value', option.id);\n            this.set('text', option.id ? option.text : null);\n            this.set('showOptions', false);\n            this.set('query', null);\n            this.fetchFromDatabase(); // Trigger fetchFromDatabase to update options and computed values\n            if (this.get('value')) {\n                return this.fetchRecordById(this.get('value')).then((record) => {\n                    if (\n                        record.get != null &&\n                        record.get('row_info.status') === 'removed' &&\n                        !this.get('useAsFilter')\n                    ) {\n                        this.get('dialogs').alert(\n                            this.get('intl').t('collector.fields.database.last_used_is_removed'),\n                        );\n                        this.removeFromLastUsed(option.id);\n                        this.set('value', null);\n                        this.set('text', null);\n                        this.set('search', this.get('prompt'));\n                        return this.sendChange(null);\n                    } else {\n                        this.addToLastused(option.id, option.text);\n                        return this.sendChange(record);\n                    }\n                });\n            } else {\n                return this.sendChange(null);\n            }\n        },\n        toggleRemoved: function () {\n            this.set('showOptions', false);\n            if (this.get('show_removed')) {\n                return this.setSessionRemoved('hide_removed');\n            } else {\n                this.get('dialogs').alert(this.get('intl').t('general.showing_removed'));\n                return this.setSessionRemoved('show_removed');\n            }\n        },\n    },\n});\n\nexport default CollectorFieldsDropdownFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"tqGQtcSe\",\"block\":\"{\\\"symbols\\\":[\\\"option\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"dropdownType\\\"]],\\\"normal\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"field\\\",\\\"optionGroups\\\",\\\"classes\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\",\\\"disabled\\\",\\\"autoclear\\\",\\\"useAsFilter\\\",\\\"showEmptySelection\\\"],[[24,[\\\"normalDropdownOptions\\\"]],[24,[\\\"field\\\"]],[24,[\\\"normalDropdownOptionsWithLastused\\\"]],[24,[\\\"_class\\\"]],[24,[\\\"defaultValueForNormalDropdown\\\"]],\\\"normalSelect\\\",[24,[\\\"prompt\\\"]],[24,[\\\"disabled\\\"]],[24,[\\\"field\\\",\\\"autoclear\\\"]],[24,[\\\"useAsFilter\\\"]],[24,[\\\"showEmptySelection\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"ajax-select \\\",[28,\\\"unless\\\",[[24,[\\\"showOptions\\\"]],[24,[\\\"then\\\"]],\\\"active\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[0,\\\"    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"visible-xs-block\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"placeholder\\\",\\\"class\\\",\\\"touchMove\\\",\\\"touchStart\\\",\\\"touchEnd\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"text\\\",[28,\\\"if\\\",[[24,[\\\"prompt\\\"]],[24,[\\\"prompt\\\"]],[28,\\\"t\\\",[\\\"select.search\\\"],null]],null],[24,[\\\"_class\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"touchMove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"touchStart\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"touchEnd\\\"],null],[24,[\\\"search\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross searchclear\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeOptions\\\"]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"hidden-xs\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"placeholder\\\",\\\"class\\\",\\\"focus-in\\\",\\\"focus-out\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"text\\\",[28,\\\"if\\\",[[24,[\\\"prompt\\\"]],[24,[\\\"prompt\\\"]],[28,\\\"t\\\",[\\\"select.search\\\"],null]],null],[24,[\\\"_class\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"focusIn\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"focusOut\\\"],null],[24,[\\\"search\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"options\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"optionsForSearcheableDropdownWithLastused\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[11,\\\"onmousedown\\\",[28,\\\"action\\\",[[23,0,[]],\\\"select\\\",[23,1,[]]],null]],[11,\\\"class\\\",[29,[[23,1,[\\\"class\\\"]],\\\" \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"value\\\"]]],null],\\\"selected\\\"],null]]]],[8],[1,[23,1,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"footer\\\"],[8],[1,[28,\\\"t\\\",[\\\"select.empty\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"moreCount\\\"]],\\\"more\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"footer\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"loadMore\\\"],[[\\\"on\\\"],[\\\"mouseDown\\\"]]],[8],[1,[28,\\\"t\\\",[\\\"select.search_more\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"moreCount\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"footer\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"loadMore\\\"],[[\\\"on\\\"],[\\\"mouseDown\\\"]]],[8],[0,\\\"+ \\\"],[1,[22,\\\"moreCount\\\"],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"select.more\\\"],null],false],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"useAsFilter\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"show_removed\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"action-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleRemoved\\\"],[[\\\"on\\\"],[\\\"mouseDown\\\"]]],[8],[1,[28,\\\"t\\\",[\\\"general.hide_removed\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"action-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleRemoved\\\"],[[\\\"on\\\"],[\\\"mouseDown\\\"]]],[8],[1,[28,\\\"t\\\",[\\\"general.show_removed\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"visible-xs-block\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/database-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/database-gps-force-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDatabaseForceGpsFieldComponent;\n\nimport Ember from 'ember';\n\nimport collectorField from '../../../../mixins/collector-field';\n\nCollectorFieldsDatabaseForceGpsFieldComponent = Ember.Component.extend(collectorField, {\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    store: Ember.inject.service(),\n    gps: Ember.inject.service(),\n    classes: 'form-control add-fields',\n    init: function () {\n        this._super();\n        this.set('forced_projects', Em.A([]));\n        Ember.defineProperty(\n            this,\n            'modelValue',\n            Ember.computed.oneWay('model.' + this.get('field.name')),\n        );\n        this.fetchProjects();\n        return this.get('gps').on('lockedPositionChanged', () => {\n            return this.fetchProjects();\n        });\n    },\n    fetchProjects: function () {\n        var forced, forced_params;\n        forced = Ember.A([]);\n        forced_params = {\n            force_location: 'on',\n            location_map: '!(empty)',\n            limit: 'all',\n        };\n        this.addFilterOptionsToParams(forced_params);\n        if (!this.get('gps').get('lockedPosition')) {\n            return;\n        }\n        return this.get('store')\n            .query('project', forced_params)\n            .then((data) => {\n                var gps;\n                if (this.get('isDestroyed')) {\n                    return;\n                }\n                this.set('forced_projects', forced);\n                gps = this.get('gps');\n                data.forEach((project) => {\n                    var projLoc;\n                    projLoc = JSON.parse(project.get('location_map'));\n                    if (\n                        project.get('location_map') &&\n                        gps.withinAcceptedDistance(\n                            {\n                                lat: projLoc.latitude,\n                                lon: projLoc.longitude,\n                            },\n                            {\n                                lat: gps.get('lockedLatitude'),\n                                lon: gps.get('lockedLongitude'),\n                            },\n                        )\n                    ) {\n                        return forced.pushObject(project);\n                    }\n                });\n                if (\n                    this.get('modelValue.id') &&\n                    this.get('modelValue.force_location') === 'on' &&\n                    !forced.findBy('id', this.get('modelValue.id'))\n                ) {\n                    return this.send('changeValue', null);\n                }\n            });\n    },\n    normal_projects: Ember.computed(function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                var params;\n                params = {\n                    force_location: 'off',\n                };\n                this.addFilterOptionsToParams(params);\n                return this.get('store')\n                    .query('project', params)\n                    .then((data) => {\n                        if (this.get('isDestroyed')) {\n                            resolve({\n                                value: null,\n                            });\n                            return;\n                        }\n                        return resolve({\n                            value: data,\n                        });\n                    });\n            }),\n        });\n    }),\n    addFilterOptionsToParams: function (params) {\n        var filterOptions, key, results;\n        filterOptions = this.get('field.filterOptions');\n        results = [];\n        for (key in filterOptions) {\n            results.push((params[key] = filterOptions[key]));\n        }\n        return results;\n    },\n    willDestroy: function () {\n        return this.get('gps').off('lockedPositionChanged', this, 'fetchProjects');\n    },\n    actions: {\n        changeValue: function (value) {\n            if (value) {\n                value = this.get('store').peekRecord(this.get('field.options.form'), value);\n            }\n            return this.sendAction('bubbleChange', value, this.get('field'));\n        },\n    },\n});\n\nexport default CollectorFieldsDatabaseForceGpsFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"2z4kJUhb\",\"block\":\"{\\\"symbols\\\":[\\\"project\\\",\\\"project\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"select\\\",true],[11,\\\"disabled\\\",[22,\\\"disabled\\\"]],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[11,\\\"class\\\",[22,\\\"classes\\\"]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[11,\\\"selected\\\",[28,\\\"unless\\\",[[24,[\\\"modelValue\\\"]],true],null]],[8],[1,[28,\\\"t\\\",[\\\"gps.choose\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"gps\\\",\\\"lockedPosition\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"optgroup\\\",true],[11,\\\"label\\\",[28,\\\"t\\\",[\\\"gps.forced_projects\\\"],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"forced_projects\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[24,[\\\"modelValue\\\",\\\"id\\\"]],[23,2,[\\\"id\\\"]]],null]],[11,\\\"value\\\",[29,[[23,2,[\\\"id\\\"]]]]],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"form\\\"]],[23,2,[]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"optgroup\\\",true],[11,\\\"label\\\",[28,\\\"t\\\",[\\\"gps.normal_projects\\\"],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"normal_projects\\\",\\\"value\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[24,[\\\"modelValue\\\",\\\"id\\\"]],[23,1,[\\\"id\\\"]]],null]],[11,\\\"value\\\",[29,[[23,1,[\\\"id\\\"]]]]],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"form\\\"]],[23,1,[]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"gps\\\",\\\"lockedPosition\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"gps\\\",\\\"status\\\"]],\\\"error\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"show-linefeeds\\\",[[28,\\\"t\\\",[[24,[\\\"gps\\\",\\\"lastErrorMessage\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"general.loading\\\"],null]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/database-gps-force-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/databasearray-adder-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDatabasearrayAdderFieldComponent;\n\nimport Ember from 'ember';\n\n//import recordComp from '../../record-comp/component'\nCollectorFieldsDatabasearrayAdderFieldComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    /*\n  THESE THREE VALUES MUST BE CODED BETTER IF THIS FIELD IS USED SOMEWHERE ELSE THAN WORKTIME.MATERIAL\n  */\n    form: Ember.computed.alias('field.options.form'),\n    parentform: Ember.computed.alias('field.form'),\n    fieldname: Ember.computed.alias('field.name'),\n    //records: Ember.computed.alias 'model.material'\n    //helperArray: Ember.A []\n    initAliases: Ember.on('init', function () {\n        return Ember.defineProperty(\n            this,\n            'records',\n            Ember.computed.alias('model.' + this.get('fieldname')),\n        );\n    }),\n    didInsertElement: function () {\n        var ids;\n        this.set('helperArray', Ember.A([]));\n        ids = [];\n        return this.get('records').then((records) => {\n            var promise;\n            records.forEach((record) => {\n                if (record.get('id')) {\n                    return ids.push(record.get('id'));\n                }\n            });\n            promise = new Em.RSVP.Promise((resolve, reject) => {\n                if (ids.length > 0) {\n                    return resolve(\n                        this.get('store').query(this.get('form'), {\n                            id: ids.join(','),\n                            include: true,\n                        }),\n                    );\n                } else {\n                    return resolve([]);\n                }\n            });\n            return promise.then(() => {\n                return records.forEach((record) => {\n                    var show_fields;\n                    // set correct values for every field\n                    show_fields = this.showFields().map(function (field) {\n                        var key;\n                        key = field.name + (field.type === 'database' ? '.id' : '');\n                        field.value = record.get(key);\n                        return field;\n                    });\n                    return this.get('helperArray').pushObject({\n                        record: record,\n                        showFields: show_fields,\n                    });\n                });\n            });\n        });\n    },\n    //willDestroyElement: ->\n    //    console.log \"destroy\"\n    //    @get('records.lastObject').deleteRecord()\n    showFields: function () {\n        var c, fields, form, parentfields;\n        c = this.get('Collector');\n        // Collector form\n        form = this.get('form');\n        parentfields = c.fieldArray(this.get('parentform'));\n        // Fetch form fields with collector service\n        fields = c.fieldArray(form);\n        return fields.filter(function (field) {\n            if (field.features != null && field.features.hide) {\n                return false;\n            }\n            return !parentfields.findBy('name', field.name);\n        });\n    },\n    createAddRow: function () {\n        var parentfields, record;\n        record = this.get('store').createRecord(this.get('form'));\n        //record.send('becomeClean')\n        parentfields = this.get('Collector').fieldArray(this.get('parentform'));\n        parentfields.forEach((field) => {\n            return record.set(field.name, this.get('model.' + field.name));\n        });\n        this.get('records').pushObject(record);\n        return this.get('helperArray').pushObject({\n            record: record,\n            showFields: this.showFields(),\n        });\n    },\n    autoSetHours: function () {\n        var allAreTheSame, endtime, lastOneMinutes, minutes, split, sumBefore;\n        if (this.get('field.features.validate_check') !== 'multipleHours') {\n            return;\n        }\n        minutes = 0;\n        endtime = this.get('model.endtime') ? this.get('model.endtime') : moment().format('HH:mm');\n        if (\n            !this.get('model.starttime') &&\n            !this.get('model.endtime') &&\n            this.get('model.work_hours')\n        ) {\n            split = this.get('model.work_hours').split(':');\n            minutes = parseInt(split[0], 10) * 60 + parseInt(split[1], 10);\n        } else {\n            minutes = moment(this.get('model.date') + ' ' + endtime).diff(\n                moment(this.get('model.date') + ' ' + this.get('model.starttime')),\n                'minutes',\n            );\n        }\n        if (this.get('model.pause')) {\n            minutes -= this.get('model.pause');\n        }\n        if (!minutes) {\n            return;\n        }\n        if (minutes < 0) {\n            minutes += 1440;\n        }\n        sumBefore = 0;\n        lastOneMinutes = null;\n        allAreTheSame = true;\n        this.get('records').forEach((row) => {\n            var addMinutes;\n            if (typeof row.get('hours') === 'string') {\n                split = row.get('hours').split(':');\n                addMinutes = parseInt(split[0], 10) * 60 + parseInt(split[1], 10);\n            } else if (typeof row.get('hours') === 'number') {\n                addMinutes = row.get('hours') * 60;\n            } else {\n                return;\n            }\n            if (lastOneMinutes && lastOneMinutes !== addMinutes) {\n                allAreTheSame = false;\n            }\n            lastOneMinutes = addMinutes;\n            return (sumBefore += addMinutes);\n        });\n        // if all hours is divided to rows and all rows are the same we change hours of every row\n        if (sumBefore === minutes && allAreTheSame) {\n            return this.get('records').forEach((record) => {\n                return record.set('hours', minutes / this.get('records.length') / 60);\n            });\n            // if rows have been edited and there is still minutes left add all of those minutes to new row\n        } else if (minutes > sumBefore) {\n            return this.get('records.lastObject').set('hours', (minutes - sumBefore) / 60);\n        }\n    },\n    actions: {\n        change: function (record) {\n            return this.sendAction(\n                'bubbleChange',\n                this.get('model.' + this.get('field.name')),\n                this.get('field'),\n                false,\n            );\n        },\n        //    if @get('records').indexOf(record) == @get('records.length') - 1\n        //        @createAddRow()\n        addRow: function () {\n            this.createAddRow();\n            this.autoSetHours();\n            return false;\n        },\n        remove: function (helperRow) {\n            var record;\n            //console.log \"before\", @get('records.length')\n            record = Ember.get(helperRow, 'record');\n            this.get('records').removeObject(record);\n            this.get('helperArray').removeObject(helperRow);\n            if (record.get('isNew')) {\n                return record.deleteRecord();\n            } else {\n                record.destroyRecord();\n                return this.sendAction(\n                    'bubbleChange',\n                    this.get('model.' + this.get('field.name')),\n                    this.get('field'),\n                    false,\n                );\n            }\n        },\n    },\n});\n\n//console.log \"after\", @get('records.length')\n//if @get('records.length') < 1\n//    @createAddRow()\nexport default CollectorFieldsDatabasearrayAdderFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"srFKcB9d\",\"block\":\"{\\\"symbols\\\":[\\\"helperRow\\\",\\\"field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"records\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"table\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"helperArray\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"databasearray-adder-field-content-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"showFields\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"databasearray-adder-field-content\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"databasearray-adder-field-content-label\\\"],[8],[1,[23,2,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"collector/field-comp\\\",[[23,2,[]]],[[\\\"change\\\",\\\"model\\\",\\\"filter\\\",\\\"class\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",[24,[\\\"record\\\"]]],null],[23,1,[\\\"record\\\"]],[24,[\\\"filter\\\"]],\\\"form-control add-fields\\\\n                        databasearray-adder-select\\\"]]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"remove move move-Cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,1,[]]]],[8],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"plus\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addRow\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/databasearray-adder-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/databasearray-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDatabasearrayFieldComponent;\n\nimport Ember from 'ember';\n\nimport {\n    //import baseField from '../base-field/component'\n    copy,\n} from 'ember-copy';\n\nCollectorFieldsDatabasearrayFieldComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    //#######\n    // THIS CURRENTLY ONLY WORKS WITH USER FIELD\n    // IF YOU WANT TO USE ELSEWHERE THEN MAKE IT WORK!!!!\n    //######\n    loadValues: Ember.computed('model', function () {\n        var c, hasMany;\n        c = this.get('Collector');\n        if (c.fieldExists(this.get('field.form'), this.get('field.name'))) {\n            hasMany = this.get('model').hasMany(this.get('field.name')).ids();\n            if (hasMany.length > 0) {\n                return this.get('store').query('user', {\n                    field: this.get('field.name'),\n                    form: this.get('field.form'),\n                    id: hasMany.join(','),\n                });\n            }\n        }\n    }),\n    databaseField: Ember.computed('field', function () {\n        var field;\n        field = copy(this.get('field'));\n        field.value = void 0;\n        return field;\n    }),\n    actions: {\n        setValue: function (value) {\n            this.get('model.' + this.get('field.name')).pushObject(value);\n            this.set('databaseField.value', void 0);\n            this.set('showDropdown', false);\n            return this.sendAction(\n                'bubbleChange',\n                this.get('model.' + this.get('field.name')),\n                this.get('field.name'),\n                false,\n            );\n        },\n        removeItem: function (value) {\n            this.get('model.' + this.get('field.name')).removeObject(value);\n            this.set('showDropdown', false);\n            return this.sendAction(\n                'bubbleChange',\n                this.get('model.' + this.get('field.name')),\n                this.get('field.name'),\n                false,\n            );\n        },\n        addValue: function () {\n            this.toggleProperty('showDropdown');\n            return false;\n        },\n    },\n});\n\nexport default CollectorFieldsDatabasearrayFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"5dZCJ57A\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"databasearray-field-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showDropdown\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/fields/database-field\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"bubbleChange\\\"],[[24,[\\\"databaseField\\\"]],\\\"involved-dropdown form-control add-fields\\\",\\\"setValue\\\"]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"databasearray-field-close-dropdown input-group-addon link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addValue\\\"]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cross\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"loadValues\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[28,\\\"get\\\",[[24,[\\\"model\\\"]],[24,[\\\"field\\\",\\\"name\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"databasearray-field-item\\\"],[12,\\\"title\\\",[28,\\\"concat\\\",[[23,1,[\\\"firstname\\\"]],\\\" \\\",[23,1,[\\\"lastname\\\"]]],null]],[12,\\\"style\\\",[29,[\\\"background-color:\\\\n                 \\\",[28,\\\"unless\\\",[[23,1,[\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]],[28,\\\"randomize-color\\\",[[23,1,[\\\"firstname\\\"]],[23,1,[\\\"lastname\\\"]]],null]],null],\\\";\\\\n                 background-image: url(\\\\n            '\\\",[28,\\\"if\\\",[[23,1,[\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]],[28,\\\"api-image\\\",[[23,1,[\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],null]],null],\\\"')\\\"]]],[3,\\\"action\\\",[[23,0,[]],\\\"removeItem\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[23,1,[\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"short-format\\\",[[28,\\\"concat\\\",[[23,1,[\\\"firstname\\\"]],\\\" \\\",[23,1,[\\\"lastname\\\"]]],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"remove-item\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cross\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[4,\\\"unless\\\",[[24,[\\\"showDropdown\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"databasearray-field-add-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addValue\\\"]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/databasearray-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/date-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDateFieldComponent;\n\nimport Ember from 'ember';\n\nimport { inject as service } from '@ember/service';\n\nimport baseField from '../text-field/component';\n\nCollectorFieldsDateFieldComponent = baseField.extend({\n    evented: service(),\n    dropdown_date: Ember.computed(function () {\n        var arr, date, date_interval, end, i, j, ref, ref1, splitted, start;\n        date_interval = this.get('field.features.date_interval');\n        if (!date_interval) {\n            return null;\n        }\n        if (date_interval === 'locked') {\n            return 'locked';\n        }\n        arr = Em.A();\n        splitted = ('' + date_interval).split(',');\n        if (splitted.length > 1) {\n            start = splitted[1] * -1;\n            end = splitted[0];\n        } else {\n            start = 0;\n            end = date_interval;\n        }\n        for (\n            i = j = ref = start, ref1 = end;\n            ref <= ref1 ? j < ref1 : j > ref1;\n            i = ref <= ref1 ? ++j : --j\n        ) {\n            date = moment().subtract(i, 'days');\n            arr.push(\n                Ember.Object.create({\n                    id: date.format('YYYY-MM-DD'),\n                    name: date.format('dddd L'),\n                }),\n            );\n        }\n        return arr;\n    }),\n    init: function () {\n        this._super();\n        return this.evented.on('onResumed', this, 'updateDate');\n    },\n    willDestroyElement: function () {\n        this._super();\n        return this.evented.off('onResumed', this, 'updateDate');\n    },\n    updateDate: function () {\n        return this.notifyPropertyChange('dropdown_date');\n    },\n});\n\nexport default CollectorFieldsDateFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"xGThM79I\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"dropdown_date\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"dropdown_date\\\"]],\\\"locked\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"value\\\"]],\\\"dddd L\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"select-comp\\\",null,[[\\\"content\\\",\\\"value\\\",\\\"classes\\\"],[[24,[\\\"dropdown_date\\\"]],[24,[\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"max\\\",\\\"value\\\",\\\"name\\\",\\\"class\\\",\\\"disabled\\\"],[\\\"9999-12-31\\\",[24,[\\\"value\\\"]],[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"_class\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/date-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/datetime-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDatetimeFieldComponent;\n\nimport Ember from 'ember';\n\nimport baseField from '../text-field/component';\n\nimport moment from 'moment';\n\nCollectorFieldsDatetimeFieldComponent = baseField.extend({\n    datevalue: Em.computed('value', function () {\n        if (!this.get('value')) {\n            return '';\n        }\n        return this.get('value').substr(0, 10);\n    }),\n    timevalue: Em.computed('value', function () {\n        if (!this.get('value')) {\n            return '';\n        }\n        return this.get('value').substr(11, 5);\n    }),\n    actions: {\n        changeTime: function (event) {\n            var time, tmpValue;\n            time = event.target.value;\n            tmpValue = this.get('value') ? this.get('value') : moment().format('YYYY-MM-DD');\n            return this.set('value', tmpValue.substr(0, 10) + ' ' + time);\n        },\n        changeDate: function (event) {\n            var date, tmpValue;\n            date = event.target.value;\n            tmpValue = this.get('value') ? this.get('value') : moment().format('YYYY-MM-DD HH:mm');\n            return this.set('value', date + ' ' + tmpValue.substr(11, 5));\n        },\n    },\n});\n\nexport default CollectorFieldsDatetimeFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"HHxKEV5D\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"name\\\",\\\"disabled\\\",\\\"input\\\"],[\\\"form-control add-fields date-input-component combined-fields\\\",[24,[\\\"datevalue\\\"]],[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"name\\\"]],\\\"-date\\\"],null],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeDate\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[0,\\\"    \\\"],[7,\\\"input\\\",true],[11,\\\"class\\\",[28,\\\"concat\\\",[[24,[\\\"_class\\\"]],\\\" combined-fields\\\"],null]],[11,\\\"name\\\",[29,[[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"name\\\"]],\\\"-time\\\"],null]]]],[11,\\\"value\\\",[22,\\\"timevalue\\\"]],[11,\\\"disabled\\\",[22,\\\"disabled\\\"]],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"changeTime\\\"],null]],[10,\\\"type\\\",\\\"time\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/datetime-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/dropdown-country-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDropdownCountryFieldComponent;\n\nimport Ember from 'ember';\n\nimport base from '../base-field/component';\n\nCollectorFieldsDropdownCountryFieldComponent = base.extend({\n    countryLists: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    prompt: Em.computed(function () {\n        return this.get('intl').t('general.choose') + '...';\n    }),\n    options: Ember.computed.alias('countryLists.fullList'),\n    _value: Ember.computed('field.value', function () {\n        if (this.get('field.value')) {\n            return this.get('field.value').toLowerCase();\n        }\n    }),\n    actions: {\n        bubbleChange: function (value) {\n            return this.sendAction('bubbleChange', value, this.get('field.name'));\n        },\n    },\n});\n\nexport default CollectorFieldsDropdownCountryFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"736lg5jJ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\",\\\"disabled\\\",\\\"autoclear\\\",\\\"name\\\"],[[24,[\\\"options\\\"]],[24,[\\\"_class\\\"]],[24,[\\\"_value\\\"]],\\\"bubbleChange\\\",[24,[\\\"prompt\\\"]],[24,[\\\"disabled\\\"]],[24,[\\\"field\\\",\\\"autoclear\\\"]],[24,[\\\"field\\\",\\\"name\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/dropdown-country-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/dropdown-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDropdownFieldComponent;\n\nimport Ember from 'ember';\n\nimport collectorField from '../../../../mixins/collector-field';\n\nimport $ from 'jquery';\n\nCollectorFieldsDropdownFieldComponent = Ember.Component.extend(collectorField, {\n    intl: Em.inject.service(),\n    localStorageWrapper: Em.inject.service(),\n    setDefaultValue: Ember.on('init', function () {\n        if (this.get('field.value')) {\n            return this.set('value', this.get('field.value'));\n        }\n    }),\n    fieldoptions: Em.computed('field.options', 'field.options.[]', function () {\n        var field, options;\n        options = this.get('field.options');\n        if (!options) {\n            return;\n        }\n        field = this.get('field');\n        return options.map((item) => {\n            if (this.get('intl').exists(field.form + '.' + field.name + '.' + item.value)) {\n                Ember.set(\n                    item,\n                    'value',\n                    this.get('intl').t(field.form + '.' + field.name + '.' + item.value),\n                );\n            }\n            return item;\n        });\n    }),\n    localStorageKey: Em.computed('field.name', function () {\n        return 'select_' + this.get('field.name');\n    }),\n    actions: {\n        change: function () {\n            //update localstorage\n            this.get('localStorageWrapper').setUserSetting(\n                this.get('localStorageKey'),\n                $('select', this.element).val(),\n            );\n            //TODO: Should maybe use normal dropdown component and not own thing ?\n            return this.sendAction(\n                'bubbleChange',\n                $('select', this.element).val(),\n                this.get('field.name'),\n            );\n        },\n    },\n});\n\nexport default CollectorFieldsDropdownFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"X20Cg8rA\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[7,\\\"select\\\",false],[12,\\\"name\\\",[24,[\\\"field\\\",\\\"name\\\"]]],[12,\\\"class\\\",[29,[[22,\\\"_class\\\"]]]],[12,\\\"disabled\\\",[22,\\\"disabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"change\\\"],[[\\\"on\\\"],[\\\"change\\\"]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[8],[1,[28,\\\"if\\\",[[24,[\\\"field\\\",\\\"prompt\\\"]],[24,[\\\"field\\\",\\\"prompt\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fieldoptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[29,[[23,1,[\\\"id\\\"]]]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"value\\\"]]],null]],[8],[0,\\\"\\\\n            \\\"],[1,[23,1,[\\\"value\\\"]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/dropdown-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/dropdown-userlevel-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDropdownCountryFieldComponent;\n\nimport Ember from 'ember';\n\nimport base from '../base-field/component';\n\nCollectorFieldsDropdownCountryFieldComponent = base.extend({\n    intl: Ember.inject.service(),\n    options: Ember.computed('field.options', function () {\n        var i, len, new_option, option, options, real_options;\n        options = this.get('field.options');\n        real_options = [];\n        for (i = 0, len = options.length; i < len; i++) {\n            option = options[i];\n            if (option) {\n                if (typeof option !== 'object') {\n                    new_option = {};\n                    new_option.id = option;\n                    option = new_option;\n                }\n                if (parseInt(option.id) > 9) {\n                    option.name = option.id.substring(2);\n                    option.id = parseInt(option.id).toString(); // to remove all but numbers (in case of own userroles)\n                } else {\n                    option.name = this.get('intl').t(\n                        this.get('field.form') + '.' + this.get('field.name') + '.' + option.id,\n                    );\n                }\n                real_options.push(option);\n            }\n        }\n        return real_options;\n    }),\n    prompt: Ember.computed('field.prompt', function () {\n        if (this.get('field.prompt.string')) {\n            return this.get('field.prompt');\n        }\n        if (this.get('field.prompt')) {\n            return this.get('intl').t(this.get('field.prompt'));\n        } else {\n            return this.get('intl').t('general.select_choose');\n        }\n    }),\n    actions: {\n        bubbleChange: function (value) {\n            return this.sendAction('bubbleChange', value, this.get('field.name'));\n        },\n    },\n});\n\nexport default CollectorFieldsDropdownCountryFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"tTd4y7Pr\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\",\\\"disabled\\\",\\\"autoclear\\\"],[[24,[\\\"options\\\"]],[24,[\\\"_class\\\"]],[24,[\\\"field\\\",\\\"value\\\"]],\\\"bubbleChange\\\",[24,[\\\"prompt\\\"]],[24,[\\\"disabled\\\"]],[24,[\\\"field\\\",\\\"autoclear\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/dropdown-userlevel-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/fileupload-field-ver3/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsFileUploadFieldComponent;\n\nimport Ember from 'ember';\n\nimport config from '../../../../config/environment';\nimport { blackListFiles } from 'tt4/ember-movenium/utils/file';\nimport { get, set, computed } from '@ember/object';\n\nimport File from 'ember-file-upload/file';\n\nimport collector from 'tt4/classes/collector';\n\nimport { resizeImage } from 'tt4/utils/file-util';\n\n// Thumbnail configuration\n// 100px width provides good quality for 50px display (2x retina) and 100px file preview areas\nconst THUMBNAIL_WIDTH = 100;\nconst THUMBNAIL_QUALITY = 80;\n\nCollectorFieldsFileUploadFieldComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    gui: Ember.inject.service(),\n    capi: Ember.inject.service(),\n    FileQueue: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    is_image_file: Ember.computed.alias('field.features.is_image'),\n    // cache for saving base64 images to show in preview before those are even sent\n    base64imageCache: {},\n    base64Cache: {},\n    testQueue: {\n        files: [\n            {\n                name: 'testlongsafaslfsdsdf sdfsdf.txt',\n                progress: 20,\n            },\n            {\n                name: 'test2.txt',\n                progress: 70,\n            },\n        ],\n    },\n    is_image_file: computed.alias('field.features.is_image'),\n    single_file: computed.alias('field.features.single_file'),\n    is_public: computed.alias('field.features.public'),\n    init: function () {\n        this._super();\n        return (this.value = this.get('field.value'));\n    },\n    showAddButton: computed('single_file', 'value.[]', function () {\n        if (this.get('single_file') && this.get('value.length') > 0) {\n            return false;\n        } else if (this.get('gui.isIE')) {\n            return false;\n        } else {\n            return true;\n        }\n    }),\n    addButtonText: computed(function () {\n        if (this.get('field.form') === 'logo') {\n            return this.get('intl').t('add.logo');\n        } else if (this.get('is_image_file') && this.get('gui.isAndroid')) {\n            return this.get('intl').t('field.fileupload.add_from_camera');\n        } else if (this.get('is_image_file')) {\n            return this.get('intl').t('add.image');\n        } else {\n            return this.get('intl').t('add.file');\n        }\n    }),\n    queueName: computed('field.form', 'field.name', function () {\n        return (\n            'files_' +\n            this.get('field.form') +\n            '.' +\n            this.get('field.name') +\n            '.' +\n            Math.random().toString(36).substring(7)\n        );\n    }),\n    imageTypes: [\n        'image/gif',\n        'image/png',\n        'image/jpg',\n        'image/jpeg',\n        'image/gif',\n        'image/svg',\n        'image/bmp',\n    ],\n    exeTypes: [\n        'application/octet-stream',\n        'application/x-msdownload',\n        'application/exe',\n        'application/x-exe',\n        'application/dos-exe',\n        'vms/exe',\n        'application/x-winexe',\n        'application/msdos-windows',\n        'application/x-msdos-program',\n    ],\n    isImageType: function (type) {\n        return this.imageTypes.indexOf(type) !== -1;\n    },\n    addFile: function (file) {\n        if (!Ember.isArray(this.get('value'))) {\n            this.set('value', []);\n        }\n        this.get('value').pushObject(file);\n        return this.send('change', this.get('value'));\n    },\n    fileList: computed('value.[]', 'awsurl', function () {\n        if (!this.get('value')) {\n            return;\n        }\n        return this.get('value').map((file) => {\n            var fileObj;\n            fileObj = {\n                name: get(file, 'name'),\n                type: get(file, 'type'),\n                originalFile: file,\n            };\n            if (this.isImageType(get(file, 'type'))) {\n                // For images: prefer S3 thumbnail URL from API. Fall back to local base64 cache\n                // for files uploaded in current session that don't have S3 URLs yet (upload in progress)\n                fileObj.s3thumb =\n                    get(file, 's3thumb') || this.get('base64imageCache')[get(file, 'name_on_hd')];\n                // For modal, use full image URL instead of thumbnail\n                fileObj.previewFile = get(file, 's3url') || fileObj.s3thumb;\n            } else if (get(file, 's3url')) {\n                // Use signed URLs for other files - prefer s3url, fall back to traditional url, then base64Cache\n                fileObj.previewFile = get(file, 's3url');\n            } else if (get(file, 'url')) {\n                fileObj.previewFile = this.get('Collector').makeFileUrl(\n                    collector.api_url() + '/',\n                    get(file, 'url'),\n                );\n            } else {\n                fileObj.previewFile = this.get('base64Cache')[get(file, 'name_on_hd')];\n            }\n            return fileObj;\n        });\n    }),\n    uploadFile: function (file, isImageType = false) {\n        const fileExt = file.name?.split('.')[1].toLowerCase();\n        if (blackListFiles().includes('.' + fileExt)) {\n            get(this, 'FileQueue.files').removeObject(file);\n            return this.notifications.error(this.intl.t('field.fileupload.blocked_filetype'), {\n                autoClear: true,\n            });\n        }\n        var policyurl;\n        policyurl = 'awsurl?filename=' + get(file, 'name') + '&format=policy';\n        if (this.get('is_public')) {\n            policyurl += '&public=true';\n        }\n        if (isImageType) {\n            policyurl += '&thumb=true';\n        }\n        return this.get('capi')\n            .request(policyurl)\n            .then(\n                (response) => {\n                    var fileObj, task;\n                    fileObj = {\n                        name: get(file, 'name'),\n                        type: get(file, 'type'),\n                        name_on_hd: response.s3file,\n                    };\n                    task = file.upload(response.url, {\n                        data: response.inputs,\n                    });\n                    if (isImageType) {\n                        this.createThumb(get(file, 'name'), get(file, 'type'), file.blob, response);\n                        file.readAsDataURL().then((base64Url) => {\n                            this.get('base64imageCache')[response.s3file] = base64Url;\n                            return this.notifyPropertyChange('fileList');\n                        });\n                    } else {\n                        file.readAsDataURL().then((url) => {\n                            this.get('base64Cache')[response.s3file] = url;\n                            return this.notifyPropertyChange('fileList');\n                        });\n                    }\n                    task.then((response) => {\n                        return this.notifyPropertyChange('fileList');\n                    });\n                    file.task = task;\n                    file.name_on_hd = response.s3file;\n                    return this.addFile(fileObj);\n                },\n                (reason) => {\n                    return alert('upload failed');\n                },\n            );\n    },\n    createThumb: function (filename, type, blob, policyResponse) {\n        return this.resizeImageToThumbnail(blob).then((resized) => {\n            var resizedImageFile;\n            resizedImageFile = File.fromDataURL(resized);\n            set(resizedImageFile, 'name', filename);\n            set(resizedImageFile, 'type', type);\n            return resizedImageFile.upload(policyResponse.thumb.url, {\n                data: policyResponse.thumb.inputs,\n            }).then((result) => {\n                return result;\n            }).catch((error) => {\n                console.error('Thumbnail upload failed:', error);\n                throw error;\n            });\n        }).catch((error) => {\n            console.error('Thumbnail creation failed:', error);\n            throw error;\n        });\n    },\n    resizeImageToThumbnail: function (file) {\n        return new Ember.RSVP.Promise((resolve) => {\n            return resizeImage(file, THUMBNAIL_WIDTH, null, THUMBNAIL_QUALITY, true).then((resized) => {\n                return resolve(resized);\n            }).catch((error) => {\n                console.error('Thumbnail creation failed:', error);\n                throw error;\n            });\n        });\n    },\n\n    resizeMainImage: function (file) {\n        return new Ember.RSVP.Promise((resolve) => {\n            // Don't pass width parameter - let utility's smart logic decide based on image size\n            return resizeImage(file).then((resized) => {\n                return resolve(resized);\n            }).catch((error) => {\n                console.error('Main image processing failed:', error);\n                throw error;\n            });\n        });\n    },\n    actions: {\n        uploadImage: function (file) {\n            if (get(file, 'size') > 20971520) {\n                return this.get('notifications').error(\n                    this.get('intl').t('field.fileupload.file_too_large'),\n                    {\n                        autoClear: true,\n                    },\n                );\n            }\n            if (this.isImageType(get(file, 'type'))) {\n                return this.resizeMainImage(file.blob).then((resized) => {\n                    var queue, resizedImageFile;\n                    queue = get(this, 'FileQueue').find(this.get('queueName'));\n                    // original file must be removed from queue by hand\n                    get(this, 'FileQueue.files').removeObject(file);\n                    resizedImageFile = File.fromDataURL(resized);\n                    set(resizedImageFile, 'name', get(file, 'name'));\n                    set(resizedImageFile, 'type', get(file, 'type'));\n                    get(this, 'FileQueue.files').pushObject(resizedImageFile);\n                    get(queue, 'files').pushObject(resizedImageFile);\n                    return this.uploadFile(resizedImageFile, true);\n                });\n            } else {\n                return this.uploadFile(file);\n            }\n        },\n        abort: function (file) {\n            this.get('value').removeObject(this.get('value').findBy('name_on_hd', file.name_on_hd));\n            this.send('change', this.get('value'));\n            return file.task.cancel();\n        },\n        addFile: function (source = null) {\n            var options;\n            options = {\n                allowEdit: false,\n                targetWidth: 1600,\n                targetHeight: 1600,\n                quality: 70,\n                destinationType: Camera.DestinationType.FILE_URI,\n                sourceType:\n                    source === 'gallery'\n                        ? Camera.PictureSourceType.PHOTOLIBRARY\n                        : Camera.PictureSourceType.CAMERA,\n                mediaType: Camera.MediaType.PICTURE,\n                encodingType: Camera.EncodingType.JPEG,\n                correctOrientation: true,\n                encodingType: 0,\n            };\n            return navigator.camera.getPicture(\n                (imageData) => {\n                    return window.resolveLocalFileSystemURL(\n                        imageData,\n                        (fileEntry) => {\n                            return fileEntry.file((file) => {\n                                file.type = 'image/jpeg';\n                                file.name = file.name.replace(\n                                    'image.',\n                                    'image' + moment().format('YYYY-MM-DD-hh-mm-ss') + '.',\n                                );\n                                return this.send('uploadImage', {\n                                    blob: file,\n                                    name: file.name,\n                                    type: file.type,\n                                });\n                            });\n                        },\n                        function (e) {\n                            throw new Ember.Error(e);\n                        },\n                    );\n                },\n                function (message) {\n                    throw new Ember.Error(message);\n                },\n                options,\n            );\n        },\n        removeFile: function (file) {\n            if (this.showModal) {\n                this.set('showModal', false);\n            }\n            this.get('value').removeObject(file);\n            return this.send('change', this.get('value'));\n        },\n        change: function (value) {\n            this.set('value', value);\n            return this.sendAction('bubbleChange', value, this.get('field.name'));\n        },\n    },\n});\n\nexport default CollectorFieldsFileUploadFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"fgPqt54H\",\"block\":\"{\\\"symbols\\\":[\\\"queue\\\",\\\"file\\\",\\\"file\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"gui\\\",\\\"isIE\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"field.warning.ie_not_supported\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"file-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fileList\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"file-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"includes\\\",[[23,3,[\\\"type\\\"]],[24,[\\\"exeTypes\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"file-preview\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumb-container\\\"],[8],[0,\\\"\\\\n                            \\\"],[4,\\\"unless\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cancel delete\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeFile\\\",[23,3,[\\\"originalFile\\\"]]]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"move move-Note file-icon\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[\\\"s3thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"file-preview\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"previewFile\\\"]]],null],[23,3,[\\\"previewFile\\\"]]],null]]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showModal\\\"]]],null]],null]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumb-container\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[23,3,[\\\"s3thumb\\\"]],\\\")\\\"]]],[8],[0,\\\"\\\\n                            \\\"],[4,\\\"unless\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cancel delete\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeFile\\\",[23,3,[\\\"originalFile\\\"]]]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"file-preview\\\"],[11,\\\"href\\\",[29,[[23,3,[\\\"previewFile\\\"]]]]],[11,\\\"download\\\",[29,[[23,3,[\\\"name\\\"]]]]],[11,\\\"target\\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"isAndroid\\\"]],\\\"_blank\\\",\\\"\\\"],null]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumb-container\\\"],[8],[0,\\\"\\\\n                            \\\"],[4,\\\"unless\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cancel delete\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeFile\\\",[23,3,[\\\"originalFile\\\"]]]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"move move-Note file-icon\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"queue-filename\\\"],[11,\\\"title\\\",[29,[[23,3,[\\\"name\\\"]]]]],[8],[1,[23,3,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@outsideClose\\\",\\\"@classes\\\"],[[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showModal\\\"]]],null],false],null],true,\\\"\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"img\\\",true],[11,\\\"src\\\",[23,0,[\\\"previewFile\\\"]]],[10,\\\"style\\\",\\\"max-width: 90vw;\\\"],[8],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"file-queue\\\",null,[[\\\"name\\\"],[[24,[\\\"queueName\\\"]]]]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"files\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,1,[\\\"files\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,2,[\\\"state\\\"]],\\\"uploading\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3 queue-filename\\\"],[11,\\\"title\\\",[29,[[23,2,[\\\"name\\\"]]]]],[8],[0,\\\"\\\\n                        \\\"],[1,[23,2,[\\\"name\\\"]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-7\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"progress\\\"]],100],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[11,\\\"aria-valuenow\\\",[29,[[23,2,[\\\"progress\\\"]]]]],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[11,\\\"style\\\",[28,\\\"concat\\\",[\\\"width: \\\",[23,2,[\\\"progress\\\"]],\\\"%;\\\"],null]],[8],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cancel\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"abort\\\",[23,2,[]]]],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[4,\\\"if\\\",[[24,[\\\"showAddButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"is_image_file\\\"]],[24,[\\\"gui\\\",\\\"isAndroid\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link inline-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addFile\\\",\\\"gallery\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-picture\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"field.fileupload.add_from_gallery\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link inline-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addFile\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-camera\\\"],[8],[9],[0,\\\" \\\"],[1,[22,\\\"addButtonText\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"file-upload\\\",null,[[\\\"name\\\",\\\"accept\\\",\\\"onfileadd\\\"],[[24,[\\\"queueName\\\"]],[28,\\\"if\\\",[[24,[\\\"is_image_file\\\"]],\\\"image/*\\\",\\\"*\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"uploadImage\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"btn btn-m-link\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"is_image_file\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-camera\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-file\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[1,[22,\\\"addButtonText\\\"],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/fileupload-field-ver3/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/gps-auto-km/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GpsAutoKmComponent;\n\nimport Ember from 'ember';\n\nGpsAutoKmComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    session: Ember.inject.service(),\n    Google: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    classes: 'form-control add-fields',\n    calcDist: Em.computed('model.project', 'model.user', function () {\n        var userid;\n\n        //first get user address\n        userid = this.get('session.currentUser.id');\n        if (this.get('model.user.id') && this.get('model.user.id') !== userid) {\n            userid = this.get('model.user.id');\n        }\n        this.get('store')\n            .findRecord('user', userid, {\n                reload: true,\n                include: true,\n            })\n            .then((user) => {\n                var user_address;\n                if (!user.get('address') || !user.get('city')) {\n                    return;\n                }\n                user_address = user.get('address') + ', ' + user.get('city');\n                if (user.get('fin_address')) {\n                    user_address = user.get('fin_address') + ', ' + user.get('fin_city');\n                }\n                return this.calculateProjectDist(user_address);\n            });\n    }),\n    calculateProjectDist: function (user_address) {\n        var projectid;\n        projectid = this.get('model.project.id');\n        if (projectid) {\n            return this.get('store')\n                .findRecord('project', projectid, {\n                    reload: true,\n                })\n                .then((project) => {\n                    var coords, office_dist, project_address, project_dist;\n                    if (!project.get('address') || !project.get('city')) {\n                        this.set('model.km', null);\n                        return;\n                    }\n                    project_address = project.get('address') + ', ' + project.get('city');\n                    coords = this.hasAddressSetting();\n                    office_dist = null;\n                    if (coords) {\n                        office_dist = this.calculateAddressSettingDist(\n                            JSON.parse(coords),\n                            project_address,\n                        );\n                    }\n                    project_dist = this.get('Google').routeDistanceAndTime(\n                        user_address,\n                        project_address,\n                    );\n                    Ember.RSVP.Promise.all([project_dist, office_dist]).then((data) => {\n                        var coordsJson, dist, finaldist, finaltime;\n                        if (Ember.isPresent(data[0]) || Ember.isPresent(data[1])) {\n                            dist = data[0]\n                                ? data[0]\n                                : {\n                                      dist: 2e308,\n                                  };\n                            if (\n                                data[1] &&\n                                data[1].dist &&\n                                parseInt(data[1].dist) < parseInt(dist.dist)\n                            ) {\n                                dist = data[1];\n                            }\n                            finaldist = dist.dist;\n                            finaltime = dist.time;\n                            if (coords) {\n                                coordsJson = JSON.parse(coords);\n                                if (!coordsJson.no_back_forth) {\n                                    finaldist = finaldist * 2;\n                                    finaltime = finaltime * 2;\n                                }\n                            }\n                            this.set('model.km', finaldist);\n                            return this.set('model.traveltime', finaltime);\n                        } else {\n                            this.set('model.km', null);\n                            return this.set('model.traveltime', null);\n                        }\n                    });\n                });\n        }\n    },\n    hasAddressSetting: function () {\n        var coordsString, worktimegroup;\n        worktimegroup =\n            this.get('model.user.worktimegroup.id') ||\n            this.get('session.currentUser.worktimegroup.id');\n        coordsString = this.get('customerSettings').checkSetting('autokm_address');\n        if (worktimegroup) {\n            coordsString = this.get('customerSettings').checkSetting(\n                'autokm_address_' + worktimegroup,\n            );\n        }\n        return coordsString;\n    },\n    calculateAddressSettingDist: function (coords, project_address) {\n        return this.get('Google').routeDistanceAndTime(\n            {\n                lat: coords.latitude,\n                lng: coords.longitude,\n            },\n            project_address,\n        );\n    },\n    isMandatory: Em.computed('field', function () {\n        if (this.get('field.features.mandatory')) {\n            return true;\n        }\n        return false;\n    }),\n});\n\nexport default GpsAutoKmComponent;\n","export default Ember.HTMLBars.template({\"id\":\"/pyC9UYF\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"value\\\",\\\"class\\\",\\\"disabled\\\"],[\\\"number\\\",[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"model\\\",\\\"km\\\"]],[24,[\\\"_class\\\"]],[24,[\\\"field\\\",\\\"features\\\",\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"],[1,[22,\\\"calcDist\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/gps-auto-km/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/gps-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsGpsFieldComponent;\n\nimport Ember from 'ember';\n\nimport textInput from '../text-field/component';\n\nCollectorFieldsGpsFieldComponent = textInput.extend({\n    store: Ember.inject.service(),\n    session: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    showDistanceError: false,\n    shortestFound: false,\n    errorMsg: false,\n    error_arr: Em.A([]),\n    fetchLocation: Em.on('init', function () {\n        var id, options, self;\n        self = this;\n        if (!this.get('model.isNew')) {\n            return;\n        }\n        options = {\n            enableHighAccuracy: true,\n            timeout: 50000,\n            maximumAge: 5000,\n        };\n        if (navigator.geolocation) {\n            id = navigator.geolocation.watchPosition(\n                function (location) {\n                    var loc, project;\n                    loc = {};\n                    loc.latitude = location.coords.latitude;\n                    loc.longitude = location.coords.longitude;\n                    loc.accuracy = location.coords.accuracy;\n                    self.set('gps_location', JSON.stringify(loc));\n                    self.set('value', JSON.stringify(loc));\n                    if (self.get('distance') === null) {\n                        project = self.get('model.project');\n                        if (project) {\n                            return self\n                                .get('store')\n                                .findRecord('project', project.get('id'), {\n                                    reload: true,\n                                })\n                                .then((record) => {\n                                    var forced, proj_loc, value;\n                                    value = self.get('value');\n                                    proj_loc = record.get('location_map');\n                                    forced = record.get('force_location');\n                                    if (proj_loc && value) {\n                                        return self.calculateDistance(proj_loc, value, forced);\n                                    } else {\n                                        return self.set('distance', null);\n                                    }\n                                });\n                        } else {\n                            return self.set('distance', null);\n                        }\n                    }\n                },\n                function (error) {\n                    var errorKey;\n                    console.log(error);\n                    if (error.code === error.PERMISSION_DENIED) {\n                        errorKey = 'permissindenied';\n                    } else if (error.code === error.POSITION_UNAVAILABLE) {\n                        errorKey = 'poisition_unavailable';\n                    } else if (error.code === error.TIMEOUT) {\n                        errorKey = 'timeout';\n                    } else {\n                        errorKey = 'unknown_error';\n                    }\n                    return self.set('errorMsg', self.intl.t('gps.errors.' + errorKey));\n                },\n                options,\n            );\n            return this.set('watchID', id);\n        } else {\n            return this.set('notSupported', true);\n        }\n    }),\n    removeWatch: Em.on('willDestroyElement', function () {\n        return navigator.geolocation.clearWatch(this.get('watchID'));\n    }),\n    locObs: Ember.observer('gps_location', function () {\n        var distance;\n        if (!(typeof this.get === 'function' ? this.get('first_location') : void 0)) {\n            this.set('first_location', this.get('gps_location'));\n        }\n        //calc dist\n        distance = this.calcDist(this.get('gps_location'), this.get('first_location'));\n        //if distance is changed over 100m\n        if (distance > 100) {\n            //copy present location to temp pos\n            this.set('first_location', this.get('gps_location'));\n            //set distance null, so that everything will be calculated again\n            return this.set('distance', null);\n        }\n    }),\n    //listen changes in address fields\n    projectObserver: Ember.observer('model.project', function () {\n        return Ember.run.once(this, this.processProjectChange);\n    }),\n    processProjectChange: function () {\n        var id, value;\n        id = this.get('model.project.id');\n        this.set('showDistanceError', false);\n        this.set('distance', null);\n        if (id) {\n            value = this.get('value');\n            return this.get('store')\n                .findRecord('project', id, {\n                    reload: true,\n                })\n                .then((record) => {\n                    var forced, proj_loc;\n                    proj_loc = record.get('location_map');\n                    forced = record.get('force_location');\n                    if (proj_loc && value) {\n                        return this.calculateDistance(proj_loc, value, forced);\n                    } else {\n                        return this.set('distance', null);\n                    }\n                });\n        } else {\n            return this.set('distance', null);\n        }\n    },\n    //update distance in value when distance is changed\n    distanceObs: Em.observer('distance', 'value', function () {\n        var loc;\n        if (!this.get('distance')) {\n            if (this.get('value')) {\n                loc = JSON.parse(this.get('value'));\n                if (loc && loc.distance) {\n                    delete loc.distance;\n                }\n                return this.set('value', JSON.stringify(loc));\n            }\n        }\n    }),\n    calcDist: function (loc1, loc2) {\n        var loc1_latlng, loc1_parsed, loc2_latlng, loc2_parsed;\n        loc1_parsed = JSON.parse(loc1);\n        loc2_parsed = JSON.parse(loc2);\n        loc1_latlng = new window.google.maps.LatLng(loc1_parsed.latitude, loc1_parsed.longitude);\n        loc2_latlng = new window.google.maps.LatLng(loc2_parsed.latitude, loc2_parsed.longitude);\n        return window.google.maps.geometry.spherical.computeDistanceBetween(\n            loc1_latlng,\n            loc2_latlng,\n        );\n    },\n    calculateDistance: function (project_loc, present_loc, forced) {\n        var dist_txt, distance, loc, pres_latlng, pres_loc, proj_latlng, proj_loc;\n        proj_loc = JSON.parse(project_loc);\n        pres_loc = JSON.parse(present_loc);\n        if (proj_loc && pres_loc) {\n            proj_latlng = new window.google.maps.LatLng(proj_loc.latitude, proj_loc.longitude);\n            pres_latlng = new window.google.maps.LatLng(pres_loc.latitude, pres_loc.longitude);\n            distance = window.google.maps.geometry.spherical.computeDistanceBetween(\n                proj_latlng,\n                pres_latlng,\n            );\n            loc = JSON.parse(this.get('value'));\n            if (loc) {\n                loc.distance = distance;\n                this.set('value', JSON.stringify(loc));\n                if (distance > 1000) {\n                    dist_txt = Math.round(distance / 1000) + 'km';\n                } else {\n                    dist_txt = Math.round(distance) + 'm';\n                }\n                return this.set('distance', dist_txt);\n            }\n        }\n    },\n});\n\nexport default CollectorFieldsGpsFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"6HRl1ZlX\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"value\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showDistanceError\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h5\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"standard-icon\\\",[\\\"warning\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"gps.location.distance_too_big\\\"],null],false],[9],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"distance\\\"]]],null,{\\\"statements\\\":[[0,\\\"(\\\"],[1,[22,\\\"distance\\\"],false],[0,\\\")\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"gps.location.found\\\"],null],false],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"distance\\\"]]],null,{\\\"statements\\\":[[0,\\\"(\\\"],[1,[28,\\\"t\\\",[\\\"gps.location.distance\\\"],null],false],[0,\\\" \\\"],[1,[22,\\\"distance\\\"],false],[0,\\\")\\\"]],\\\"parameters\\\":[]},null],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-success\\\"],[8],[1,[28,\\\"standard-icon\\\",[\\\"ok\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"notSupported\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"gps.not_supported\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"errorMsg\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[23,0,[\\\"errorMsg\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/gps-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/hours-and-minutes-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsTimeFieldComponent;\n\nimport Ember from 'ember';\n\nimport baseField from '../text-field/component';\n\nCollectorFieldsTimeFieldComponent = baseField.extend({\n    _hours: '',\n    _minutes: '',\n    hours: Em.computed('value', function () {\n        var hours, valarr;\n        if (Em.isPresent(this.get('value'))) {\n            if (typeof this.get('value') === 'string') {\n                valarr = this.get('value').split(':');\n                hours = parseInt(Number(valarr[0]));\n            } else {\n                hours = parseInt(Number(this.get('value')));\n            }\n            if (hours <= 9) {\n                hours = '0' + hours;\n            }\n        }\n        this.set('_hours', hours);\n        return hours;\n    }),\n    minutes: Em.computed('value', function () {\n        var hours, mins, valarr;\n        if (Em.isPresent(this.get('value'))) {\n            if (typeof this.get('value') === 'string') {\n                valarr = this.get('value').split(':');\n                hours = parseInt(Number(valarr[0]));\n                mins = parseInt(Number(valarr[1]));\n            } else {\n                hours = parseInt(Number(this.get('value')));\n                mins = Math.round((Number(this.get('value')) - hours) * 60);\n            }\n            if (mins <= 9) {\n                mins = '0' + mins;\n            }\n        } else {\n            mins = null;\n        }\n        this.set('_minutes', mins);\n        return mins;\n    }),\n    minute_options: Em.computed(function () {\n        var i, j, ret, value;\n        ret = [];\n        for (i = j = 0; j <= 59; i = ++j) {\n            if (i < 10) {\n                value = '0' + i;\n            } else {\n                value = i;\n            }\n            ret.push({\n                id: value,\n                name: value,\n            });\n        }\n        ret.max = ret.length - 1;\n        return ret;\n    }),\n    hour_options: Em.computed(function () {\n        var hours, i, j, ref, ret, value;\n        if (this.get('field.features.validate_check') === 'hour24Check') {\n            hours = 24;\n        } else {\n            hours = 45;\n        }\n        ret = [];\n        for (i = j = 0, ref = hours; 0 <= ref ? j <= ref : j >= ref; i = 0 <= ref ? ++j : --j) {\n            if (i < 10) {\n                value = '0' + i;\n            } else {\n                value = i;\n            }\n            ret.push({\n                id: value,\n                name: value,\n            });\n        }\n        return ret;\n    }),\n    actions: {\n        setHours: function (value) {\n            var hours;\n            value = Number(parseInt(event.target.value));\n            if (value < 0) {\n                value = 0;\n            }\n            hours = '';\n            if (value < 10) {\n                hours = '0' + value;\n            } else {\n                hours = value;\n            }\n            this.set('_hours', hours);\n            if (\n                this.get('_minutes') == null ||\n                this.get('_minutes') == '' ||\n                isNaN(this.get('_minutes'))\n            ) {\n                this.set('_minutes', '00');\n            }\n            return this.set('value', hours + ':' + this.get('_minutes'));\n        },\n        setMins: function (value) {\n            var minutes;\n            value = Number(parseInt(event.target.value));\n            if (value > this.get('minute_options.max') || value < 0) {\n                value = 0;\n            }\n            minutes = '';\n            if (value < 10) {\n                minutes = '0' + value;\n            } else {\n                minutes = value;\n            }\n            this.set('_minutes', minutes);\n            if (this.get('_hours') === '' || isNaN(this.get('_hours'))) {\n                this.set('_hours', '00');\n            }\n            return this.set('value', this.get('_hours') + ':' + minutes);\n        },\n    },\n});\n\nexport default CollectorFieldsTimeFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"ePPzBzQ6\",\"block\":\"{\\\"symbols\\\":[\\\"opt\\\",\\\"opt\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control add-fields hours-and-minutes\\\"],[11,\\\"name\\\",[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"name\\\"]],\\\"-hours\\\"],null]],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setHours\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[11,\\\"disabled\\\",[22,\\\"disabled\\\"]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[24,[\\\"hours\\\"]],null,true],null]],[8],[0,\\\"--\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"hour_options\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[29,[[23,2,[\\\"id\\\"]]]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[28,\\\"number\\\",[[24,[\\\"hours\\\"]]],null],[28,\\\"number\\\",[[23,2,[\\\"id\\\"]]],null],true],null]],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"],[9],[1,[28,\\\"t\\\",[\\\"general.hour_abbr\\\"],null],false],[0,\\\"\\\\n    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control add-fields hours-and-minutes\\\"],[11,\\\"name\\\",[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"name\\\"]],\\\"-minutes\\\"],null]],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setMins\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[11,\\\"disabled\\\",[22,\\\"disabled\\\"]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[24,[\\\"hours\\\"]],null,true],null]],[8],[0,\\\"--\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"minute_options\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[29,[[23,1,[\\\"id\\\"]]]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[28,\\\"number\\\",[[24,[\\\"minutes\\\"]]],null],[28,\\\"number\\\",[[23,1,[\\\"id\\\"]]],null],true],null]],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[1,[28,\\\"t\\\",[\\\"general.min_abbr\\\"],null],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"hidden-xs desktop-input\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"min\\\",\\\"focus-out\\\",\\\"disabled\\\"],[\\\"number\\\",\\\"form-control add-fields inline\\\",[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"name\\\"]],\\\"-hours\\\"],null],[24,[\\\"_hours\\\"]],0,[28,\\\"action\\\",[[23,0,[]],\\\"setHours\\\",[24,[\\\"hours\\\"]]],null],[24,[\\\"disabled\\\"]]]]],false],[1,[28,\\\"t\\\",[\\\"general.hour_abbr\\\"],null],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"min\\\",\\\"max\\\",\\\"focus-out\\\",\\\"disabled\\\"],[\\\"number\\\",\\\"form-control add-fields inline\\\",[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"name\\\"]],\\\"-minutes\\\"],null],[24,[\\\"_minutes\\\"]],0,[24,[\\\"minute_options\\\",\\\"max\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setMins\\\",[24,[\\\"minutes\\\"]]],null],[24,[\\\"disabled\\\"]]]]],false],[1,[28,\\\"t\\\",[\\\"general.min_abbr\\\"],null],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/hours-and-minutes-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/label-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsLabelFieldComponent;\n\nimport Ember from 'ember';\n\nimport base from '../base-field/component';\n\nCollectorFieldsLabelFieldComponent = base.extend({\n    // Methods\n\n    _labels: Ember.computed('value', function () {\n        if (this.get('value')) {\n            return this.get('value').split(',');\n        }\n        return [];\n    }),\n    actions: {\n        removeLabel: function (label) {\n            var value;\n            value = this.get('_labels');\n            if (value.indexOf(label) !== -1) {\n                if (value.length === 1) {\n                    value = [];\n                } else {\n                    value.splice(value.indexOf(label), 1);\n                }\n                return this.sendAction('bubbleChange', value.join(','), this.get('field.name'));\n            }\n        },\n        addLabel: function (label) {\n            var value;\n            if (label) {\n                value = this.get('_labels');\n                value.push(label);\n                this.sendAction('bubbleChange', value.join(','), this.get('field.name'));\n                return this.set('label', '');\n            }\n        },\n    },\n});\n\nexport default CollectorFieldsLabelFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"+z4CRVgE\",\"block\":\"{\\\"symbols\\\":[\\\"label\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label-box\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label-box-input\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_labels\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label-m label-m-info\\\"],[8],[1,[23,1,[]],false],[4,\\\"unless\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cancel link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeLabel\\\",[23,1,[]]]],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[4,\\\"unless\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"focusOut\\\"],[\\\"text\\\",\\\"label-box-input-field\\\",[24,[\\\"label\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addLabel\\\",[24,[\\\"label\\\"]]],null]]]],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/label-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/month-dropdown-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsMonthDropdownFieldComponent;\n\nimport Ember from 'ember';\n\nimport baseField from '../base-field/component';\n\nCollectorFieldsMonthDropdownFieldComponent = baseField.extend({\n    selectedMonth: 0,\n    //get 36 previous months\n    months: Ember.computed(function () {\n        var count, montharr, obj;\n        count = 1;\n        montharr = [];\n        while (count < 36) {\n            obj = {\n                id: this.get('useAsFilter')\n                    ? moment()\n                          .subtract(count - 1, 'months')\n                          .startOf('month')\n                          .format('YYYY-MM')\n                    : moment()\n                          .subtract(count - 1, 'months')\n                          .startOf('month')\n                          .format('YYYY-MM-DD'),\n                name: moment()\n                    .subtract(count - 1, 'months')\n                    .format('MMMM YYYY'),\n            };\n            count++;\n            montharr.push(obj);\n        }\n        return montharr;\n    }),\n    actions: {\n        valueChanged: function (value) {\n            return this.bubbleChange(value, this.get('field.name'));\n        },\n    },\n});\n\nexport default CollectorFieldsMonthDropdownFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"45XviF4Z\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\",\\\"bubbleChange\\\"],[[24,[\\\"_class\\\"]],[24,[\\\"months\\\"]],[24,[\\\"value\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"valueChanged\\\"],null]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/month-dropdown-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/multiselect-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsMultiselectComponent;\n\nimport Ember from 'ember';\n\nimport CollectorFieldsDropdownFieldComponent from '../database-field/component';\n\nimport $ from 'jquery';\n\nCollectorFieldsMultiselectComponent = CollectorFieldsDropdownFieldComponent.extend({\n    intl: Ember.inject.service(),\n    selected_options: Em.A([]),\n    selected_option_ids: Em.A([]),\n    //showOptions: true\n\n    // overwrite database-field fetchFromDatabase\n    fetchFromDatabase: function () {\n        return this.initilizeDropdown();\n    },\n    initilizeDropdown: Em.on(\n        'init',\n        Em.observer('session.currentUser', function () {\n            var c, form, limit, object, promise, query, self;\n            if (!this.get('session.currentUser')) {\n                return;\n            }\n            self = this;\n            c = this.get('Collector');\n            form = this.get('field.form');\n            object = this.get('field.name');\n            query = this.get('query');\n            limit = 25;\n            promise = c.ajax({\n                url: form + '/' + object,\n                data: {\n                    limit: limit,\n                    q: query,\n                },\n            });\n            return promise.then((data) => {\n                var sel_ids;\n                sel_ids = this.create_id_array(this.get('selected_options'));\n                // remove all already selected options\n                if (this.get('selected_options').length > 0) {\n                    this.set('options', Em.A([]));\n                    data[object].forEach(function (obj) {\n                        if (sel_ids.indexOf(obj['id']) < 0) {\n                            return self.get('options').pushObject(obj);\n                        }\n                    });\n                } else {\n                    this.set('options', data[object]);\n                }\n                return this.set('moreCount', data.count > limit ? data.count - limit : null);\n            });\n        }),\n    ),\n    unselected_options: Ember.computed('selected_options.[]', 'options.[]', function () {\n        return this.get('options').reject((option) => {\n            return this.get('selected_options').findBy('id', option.id);\n        });\n    }),\n    // get all records and filter them\n    setDefaultValue: Ember.on('init', function () {\n        var c, field, form, ids, object, promise, self, value;\n        self = this;\n        field = this.get('field');\n        if (field.value == null) {\n            //empty selected options if value not set\n            this.set('selected_options', []);\n            return;\n        }\n        value = field.value;\n        c = this.get('Collector');\n        form = this.get('field.form');\n        object = this.get('field.name');\n        if (typeof value === 'string') {\n            ids = value;\n        } else {\n            ids = value.join();\n        }\n        if (ids === '') {\n            this.setValues([]);\n            return;\n        }\n        promise = c.ajax({\n            url: form + '/' + object,\n            data: {\n                id: ids,\n            },\n        });\n        return promise.then((data) => {\n            return this.setValues(data[object]);\n        });\n    }),\n    setValues: function (values) {\n        var text;\n        this.set('selected_options', values);\n        this.set('value', values);\n        text = this.getText(values);\n        this.set('text', text);\n        return this.set('search', text);\n    },\n    getText: function (values) {\n        if (values.length > 3) {\n            return values.length + ' ' + this.get('intl').t('select.chosen');\n        } else if (values.length > 0) {\n            return values.mapBy('text').join(',');\n        } else {\n            return this.get('prompt');\n        }\n    },\n    create_id_array: function (objects) {\n        var tmp;\n        tmp = Em.A([]);\n        objects.forEach(function (obj) {\n            return tmp.pushObject(obj['id']);\n        });\n        return tmp;\n    },\n    actions: {\n        deselect: function (option) {\n            this.get('selected_options').removeObject(option);\n            this.get('options').pushObject(option);\n            this.set(\n                'value',\n                this.get('selected_options').length + ' ' + this.get('intl').t('select.chosen'),\n            );\n            this.set('text', this.getText(this.get('selected_options')));\n            //$('input', this.element).blur()\n            return this.sendAction(\n                'bubbleChange',\n                this.create_id_array(this.get('selected_options')) || null,\n                this.get('field.name'),\n            );\n        },\n        select: function (option) {\n            if (option === null) {\n                this.set('selected_options', Em.A([]));\n                option = {};\n                this.set('showOptions', false);\n                $('input', this.element).blur();\n                this.set('text', this.get('prompt'));\n                this.set('search', this.get('prompt'));\n            } else {\n                this.get('selected_options').pushObject(option);\n                this.get('options').removeObject(option);\n            }\n            //$('input', this.element).blur()\n            //if (@get('selected_options').length > 0)\n            //    @set 'search', @get('selected_options').length+\" \"+@get('intl').t 'select.chosen'\n            //else\n            //    @set 'search', @get 'prompt'\n            this.set('value', option.id);\n            this.set('text', this.getText(this.get('selected_options')));\n            //@set 'showOptions', false\n            this.set('query', null);\n            return this.sendAction(\n                'bubbleChange',\n                this.create_id_array(this.get('selected_options')) || null,\n                this.get('field.name'),\n            );\n        },\n        select_all: function () {\n            var all_options;\n            all_options = Em.A([]);\n            all_options.pushObjects(this.get('selected_options'));\n            all_options.pushObjects(this.get('options'));\n            this.set('selected_options', all_options);\n            this.set('options', Em.A([]));\n            this.set(\n                'text',\n                this.get('selected_options').length + ' ' + this.get('intl').t('select.chosen'),\n            );\n            return this.sendAction(\n                'bubbleChange',\n                this.create_id_array(this.get('selected_options')) || null,\n                this.get('field.name'),\n            );\n        },\n    },\n});\n\nexport default CollectorFieldsMultiselectComponent;\n","export default Ember.HTMLBars.template({\"id\":\"o+eb54Xn\",\"block\":\"{\\\"symbols\\\":[\\\"opt\\\",\\\"selected_option\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"ajax-select multiselect \\\",[28,\\\"unless\\\",[[24,[\\\"showOptions\\\"]],[24,[\\\"then\\\"]],\\\"active\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"placeholder\\\",\\\"class\\\",\\\"focus-in\\\",\\\"focus-out\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"text\\\",[24,[\\\"field\\\",\\\"name\\\"]],[28,\\\"if\\\",[[24,[\\\"field\\\",\\\"placeholder\\\"]],[28,\\\"t\\\",[[24,[\\\"field\\\",\\\"placeholder\\\"]]],null],[28,\\\"t\\\",[\\\"select.search\\\"],null]],null],[24,[\\\"_class\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"focusIn\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"focusOut\\\"],null],[24,[\\\"search\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"options\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"header\\\"],[8],[1,[28,\\\"t\\\",[\\\"select.selected\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selected_options\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"selected_options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"deselect\\\",[23,2,[]]],[[\\\"on\\\"],[\\\"mouseDown\\\"]]],[8],[1,[23,2,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"footer\\\"],[8],[1,[28,\\\"t\\\",[\\\"select.empty\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"header\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"header\\\"],[8],[1,[28,\\\"t\\\",[\\\"select.unselected\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"unselected_options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",\\\"clear\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"select_all\\\",null],[[\\\"on\\\"],[\\\"mouseDown\\\"]]],[8],[1,[28,\\\"t\\\",[\\\"select.select_all\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"unselected_options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"value\\\"]]],null],\\\"selected\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"select\\\",[23,1,[]]],[[\\\"on\\\"],[\\\"mouseDown\\\"]]],[8],[1,[23,1,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"footer\\\"],[8],[1,[28,\\\"t\\\",[\\\"select.empty\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"moreCount\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"footer\\\"],[8],[1,[28,\\\"t\\\",[\\\"select.more\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/multiselect-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/number-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsNumberFieldComponent;\n\nimport Ember from 'ember';\n\nimport textInput from '../text-field/component';\n\nCollectorFieldsNumberFieldComponent = textInput.extend({\n    session: Ember.inject.service(),\n    unit: Ember.computed('field', function () {\n        var currency;\n        currency = function () {\n            switch (this.get('session.currentUser.company_info.country')) {\n                case 'se':\n                    return 'SEK';\n                case 'fi':\n                    return '€';\n            }\n        }.call(this);\n        switch (this.get('field.type')) {\n            case 'minutes':\n                return 'min';\n            case 'price':\n                return currency;\n            case 'big_price':\n                return currency;\n            default:\n                return this.get('field.options');\n        }\n    }),\n});\n\nexport default CollectorFieldsNumberFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"MKagR7gl\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"unit\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-10\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"value\\\",\\\"class\\\",\\\"disabled\\\",\\\"step\\\"],[\\\"number\\\",[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"value\\\"]],[24,[\\\"_class\\\"]],[24,[\\\"disabled\\\"]],[24,[\\\"any\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[22,\\\"unit\\\"],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"value\\\",\\\"class\\\",\\\"disabled\\\",\\\"step\\\"],[\\\"number\\\",[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"value\\\"]],[24,[\\\"_class\\\"]],[24,[\\\"disabled\\\"]],[24,[\\\"any\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/number-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/password-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsUsernameFieldComponent;\n\nimport Ember from 'ember';\n\nimport text from '../text-field/component';\n\nimport { computed } from '@ember/object';\n\nCollectorFieldsUsernameFieldComponent = text.extend({\n    show_generated: true,\n    showPassword: computed('value', 'show_generated', function () {\n        return this.get('value') && this.get('value') !== 'secured' && this.get('show_generated');\n    }),\n    actions: {\n        changeFieldType: function () {\n            return this.set('show_generated', false);\n        },\n    },\n});\n\nexport default CollectorFieldsUsernameFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"3Dwc1cq9\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"input\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\"],[[28,\\\"if\\\",[[24,[\\\"showPassword\\\"]],\\\"text\\\",\\\"password\\\"],null],[28,\\\"if\\\",[[24,[\\\"_class\\\"]],[24,[\\\"_class\\\"]],\\\"form-control add-fields\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"changeFieldType\\\"],null],[24,[\\\"field\\\",\\\"ext\\\"]],[24,[\\\"placeholder\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/password-field/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set, defineProperty } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { debounce } from '@ember/runloop';\nimport RSVP from 'rsvp';\nimport isDisabled from 'tt4/utils/isDisabled';\n\nexport default Component.extend({\n    store: service(),\n    gui: service(),\n    intl: service(),\n    localstorage: service(),\n\n    isopen: false,\n\n    form: alias('field.form'),\n    subform: alias('field.options.form'),\n    subformfields: alias('field.options.fields'),\n    fieldName: alias('field.name'),\n\n    placeholder: computed('field.prompt', 'prompt', function () {\n        if (this.prompt) return this.prompt;\n        if (!get(this, 'field.prompt')) return null;\n        return get(this, 'intl').t(get(this, 'field.prompt'));\n    }),\n\n    options: computed('filter', function () {\n        return new RSVP.Promise((resolve, reject) => {\n            this._performSearch(\n                null,\n                (options) => {\n                    // do not use lastused if selection are filtered by something or not that many selections in first place\n                    if (get(this, 'filter') || get(options, 'length') < 20) return resolve(options);\n\n                    const lastused = this.getLastUsed(options);\n                    if (lastused) lastused.then(resolve, reject);\n                    else resolve(options);\n                },\n                reject,\n            );\n        });\n    }),\n\n    value: computed('modelValue', 'fieldValue', '_value', 'field.value', function () {\n        if (typeof this._value !== 'undefined') {\n            return !this._value || typeof this._value === 'object'\n                ? this._value\n                : this.store.peekRecord(this.subform, this._value);\n        }\n        if (get(this, 'modelValue')) return get(this, 'modelValue');\n        return get(this, 'fieldValue');\n    }),\n\n    init() {\n        this._super(...arguments);\n        // modelValue alias must be defined this way because field name is dynamic\n        if (get(this, 'model'))\n            defineProperty(this, 'modelValue', alias('model.' + get(this, 'fieldName')));\n    },\n\n    didReceiveAttrs() {\n        if (isDisabled(get(this, 'field'), get(this, 'model'))) {\n            set(this, '_disabled', true);\n        }\n    },\n\n    actions: {\n        search(term) {\n            return new RSVP.Promise((resolve, reject) => {\n                debounce(this, this._performSearch, term, resolve, reject, 600);\n            });\n        },\n\n        changeId(id) {\n            this.send('change', get(this, 'store').peekRecord(get(this, 'subform'), id));\n        },\n\n        change(value) {\n            this.saveLastUsed(value);\n\n            if (get(this, 'model')) set(this, 'model.' + get(this, 'fieldName'), value);\n            else set(this, 'fieldValue', value);\n\n            this.onchange(value, get(this, 'fieldName'));\n        },\n\n        createNew() {\n            this.createNew();\n        },\n\n        showOrHideCreate() {\n            return this.showCreate && this.Collector.testNeeds([this.subform + '@add']);\n        },\n    },\n\n    saveLastUsed(record) {\n        if (!record) return;\n        let lastused = get(this, 'localstorage').getItem('lastused.' + get(this, 'subform'));\n        if (!lastused) lastused = [];\n\n        lastused.unshift(get(record, 'id'));\n\n        const lastUsedCount = 10; // Number of 'last used' items to display\n\n        get(this, 'localstorage').setItem(\n            'lastused.' + get(this, 'subform'),\n            Array.from(new Set(lastused)).slice(0, lastUsedCount),\n        );\n    },\n\n    getLastUsed(all) {\n        const lastused = get(this, 'localstorage').getItem('lastused.' + get(this, 'subform'));\n\n        if (!lastused) return false;\n\n        return new RSVP.Promise((resolve, reject) => {\n            get(this, 'store')\n                .query(get(this, 'subform'), {\n                    id: lastused.join(','),\n                    form: get(this, 'form'),\n                    field: get(this, 'fieldName'),\n                })\n                .then(this.createGroups.bind(this, resolve, all), reject);\n        });\n    },\n\n    createGroups(resolve, all, records) {\n        resolve([\n            {\n                groupName: get(this, 'intl').t('select.last_selections'),\n                options: records.toArray(),\n            },\n            { groupName: get(this, 'intl').t('select.all'), options: all.toArray() },\n        ]);\n    },\n\n    optionsUpdated(term, options) {\n        if (this.isDestroyed) {\n            return;\n        }\n        if (!term)\n            set(this, 'useNormalDropdown', get(this, 'gui').isMobile() && options.length < 20);\n\n        // reset value if not in options\n        if (\n            this.recordIsDirty() &&\n            typeof get(this, 'value') !== 'undefined' &&\n            get(this, 'filter') &&\n            !options.includes(get(this, 'value'))\n        ) {\n            // we still need to check from backend if value really is ok and just not in 20 first options\n            get(this, 'store')\n                .query(get(this, 'subform'), this._createQueryParams(null, get(this, 'value.id')))\n                .then(this.clearFieldIfResolvesEmpty.bind(this));\n        } else {\n            set(this, 'disabled', false);\n        }\n    },\n\n    clearFieldIfResolvesEmpty(result) {\n        if (result.length < 1) this.send('change', null);\n        set(this, 'disabled', false);\n    },\n\n    /**\n     * Create queryParams for options fetching from backend\n     * @param {String} term Search term given by user\n     * @param {String} id Parameter if you want to get only known record by id\n     */\n    _createQueryParams(term = null, id = null) {\n        const params = {\n            form: get(this, 'form'),\n            field: get(this, 'fieldName'),\n            limit: 100,\n            offset: 0,\n        };\n\n        if (id) params.id = id;\n        if (term) params.q = term;\n\n        if (get(this, 'filter')) {\n            for (const key of Object.keys(get(this, 'filter'))) {\n                const filterValue = this.filter[key];\n                if (filterValue) {\n                    params[key] =\n                        typeof filterValue === 'string' ? filterValue : get(this.filter[key], 'id');\n                }\n            }\n        }\n\n        return params;\n    },\n\n    _performSearch(term, resolve, reject) {\n        if (get(this, 'filter') && !term) set(this, 'disabled', true);\n        const promise = get(this, 'store').query(\n            get(this, 'subform'),\n            this._createQueryParams(term),\n        );\n        promise.then(this.optionsUpdated.bind(this, term), () => {});\n        promise.then(resolve, reject);\n    },\n\n    recordIsDirty() {\n        return !!this.model?.isNew || !!this.model?.hasDirtyAttributes;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"CgqFht+M\",\"block\":\"{\\\"symbols\\\":[\\\"record\\\",\\\"field\\\",\\\"opt\\\",\\\"field\\\",\\\"subopt\\\",\\\"field\\\",\\\"@createLabel\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"useNormalDropdown\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control add-fields collector-fields-power-database-select\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"changeId\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[11,\\\"disabled\\\",[23,0,[\\\"_disabled\\\"]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"option\\\",true],[8],[1,[23,0,[\\\"placeholder\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"options\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[\\\"groupName\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"optgroup\\\",true],[11,\\\"label\\\",[23,3,[\\\"groupName\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,5,[\\\"id\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,5,[]],[28,\\\"await\\\",[[24,[\\\"value\\\"]]],null]],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subformfields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"get\\\",[[23,5,[]],[23,6,[]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,3,[\\\"id\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,3,[]],[28,\\\"await\\\",[[24,[\\\"value\\\"]]],null]],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subformfields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"get\\\",[[23,3,[]],[23,4,[]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"power-select-with-create\\\",[],[[\\\"@class\\\",\\\"@dropdownClass\\\",\\\"@tagName\\\",\\\"@allowClear\\\",\\\"@selected\\\",\\\"@preventScroll\\\",\\\"@placeholder\\\",\\\"@options\\\",\\\"@loadingMessage\\\",\\\"@disabled\\\",\\\"@searchEnabled\\\",\\\"@search\\\",\\\"@searchMessage\\\",\\\"@noMatchesMessage\\\",\\\"@onopen\\\",\\\"@onclose\\\",\\\"@onCreate\\\",\\\"@showCreateWhen\\\",\\\"@showCreatePosition\\\",\\\"@suggestedOptionComponent\\\",\\\"@matchTriggerWidth\\\",\\\"@onChange\\\"],[[23,0,[\\\"_class\\\"]],\\\"power-select-add-field\\\",\\\"div\\\",true,[23,0,[\\\"value\\\"]],true,[23,0,[\\\"placeholder\\\"]],[23,0,[\\\"options\\\"]],[28,\\\"t\\\",[\\\"general.loading\\\"],null],[28,\\\"or\\\",[[23,0,[\\\"disabled\\\"]],[28,\\\"is-pending\\\",[[23,0,[\\\"value\\\"]]],null],[23,0,[\\\"_disabled\\\"]]],null],true,[28,\\\"action\\\",[[23,0,[]],\\\"search\\\"],null],[28,\\\"t\\\",[\\\"select.search\\\"],null],[28,\\\"t\\\",[\\\"general.no_search_results\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"isopen\\\"]]],null],true],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"isopen\\\"]]],null],false],null],[28,\\\"action\\\",[[23,0,[]],\\\"createNew\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showOrHideCreate\\\"],null],\\\"bottom\\\",[28,\\\"component\\\",[\\\"suggested-option\\\"],[[\\\"label\\\"],[[28,\\\"if\\\",[[23,7,[]],[23,7,[]],[28,\\\"t\\\",[\\\"general.add\\\"],null]],null]]]],false,[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subformfields\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isopen\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overlay\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/power-database/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/radio-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsRadioFieldComponent;\n\nimport Ember from 'ember';\n\nimport base from '../base-field/component';\n\nCollectorFieldsRadioFieldComponent = base.extend({\n    // Methods\n\n    setValue: Em.on('init', function () {\n        return this.set('value', this.get('field.value'));\n    }),\n    didRender: function () {\n        if (this.element.offsetWidth < 250) {\n            return this.element.children[0].classList.add('is-narrow');\n        }\n    },\n    actions: {\n        change: function (value) {\n            this.set('value', value);\n            return this.sendAction('bubbleChange', value, this.get('field.name'));\n        },\n    },\n});\n\nexport default CollectorFieldsRadioFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"eCktBXDo\",\"block\":\"{\\\"symbols\\\":[\\\"option\\\",\\\"index\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-button-group-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"field\\\",\\\"options\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"field\\\",\\\"name\\\"]],\\\"affects_overtime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"btn-m flex-button-group-item-small flex-button-modal \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],[24,[\\\"value\\\"]]],null],\\\"flex-button-group-item-small-selected\\\"],null]]]],[12,\\\"name\\\",[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"name\\\"]],\\\"-\\\",[23,2,[]]],null]],[3,\\\"action\\\",[[23,0,[]],\\\"change\\\",[23,1,[]]]],[8],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],[24,[\\\"value\\\"]]],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark radio-button-checkbox hidden-xs\\\"],[8],[9]],\\\"parameters\\\":[]},null],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"form\\\"]],\\\".\\\",[24,[\\\"field\\\",\\\"name\\\"]],\\\".\\\",[23,1,[]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"name\\\",[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"name\\\"]],\\\"-\\\",[23,2,[]]],null]],[12,\\\"class\\\",[29,[\\\"btn-m btn-lg flex-button-group-item \\\",[28,\\\"concat\\\",[\\\"radio-button-\\\",[24,[\\\"form\\\"]],\\\"-\\\",[23,2,[]]],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],[24,[\\\"value\\\"]]],null],\\\"flex-button-group-selected\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"change\\\",[23,1,[]]]],[8],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],[24,[\\\"value\\\"]]],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\" \\\"]],\\\"parameters\\\":[]},null],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"form\\\",\\\"field\\\"],[[23,1,[]],[24,[\\\"form\\\"]],[24,[\\\"field\\\",\\\"name\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1,2]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/radio-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/search-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsTextFieldComponent;\n\nimport Ember from 'ember';\n\nimport collectorField from '../../../../mixins/collector-field';\n\nCollectorFieldsTextFieldComponent = Ember.Component.extend(collectorField, {\n    intl: Ember.inject.service(),\n\n    // Methods\n\n    setValue: Em.on('init', function () {\n        return this.set('value', this.get('field.value'));\n    }),\n    placeholder: Ember.computed(function () {\n        return this.get('intl').t('general.search');\n    }),\n    // Send the change action\n    valueObserver: Em.observer('value', function () {\n        if (this.get('value') === this.get('field.value')) {\n            return;\n        }\n        return Ember.run.debounce(\n            this,\n            function () {\n                return this.sendAction(\n                    'bubbleChange',\n                    this.get('value'),\n                    this.get('field.name'),\n                    true,\n                    false,\n                );\n            },\n            2000,\n        );\n    }),\n});\n\nexport default CollectorFieldsTextFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"Lqn6yl3m\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group has-feedback\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"placeholder\\\"],[\\\"text\\\",[24,[\\\"value\\\"]],\\\"form-control\\\",[24,[\\\"placeholder\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-search form-control-feedback\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/search-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/signature-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsSignatureFieldComponent;\n\nimport Ember from 'ember';\n\nimport baseField from '../base-field/component';\n\nimport config from '../../../../config/environment';\n\nimport SignaturePad from 'signature_pad';\n\nimport $ from 'jquery';\n\nCollectorFieldsSignatureFieldComponent = baseField.extend({\n    intl: Ember.inject.service(),\n    signature_pad: null,\n    title: Ember.computed(function () {\n        return this.get('intl').t('modal.signature.title');\n    }),\n    sig: null,\n    signatureSrc: Ember.computed('value', function () {\n        if (typeof this.get('value') === 'string') {\n            return this.get('value');\n        }\n        if (Ember.isArray(this.get('value'))) {\n            return config.APP.COLLECTOR_API_URL + '/' + this.get('value')[0].url;\n        }\n        return config.APP.COLLECTOR_API_URL + '/' + this.get('value').url;\n    }),\n    placeholder: Em.computed(function () {\n        if (this.get('placeholderText')) {\n            return this.get('placeholderText');\n        } else {\n            return this.get('intl').t('field.signature.placeholder');\n        }\n    }),\n    actions: {\n        showSignModal: function () {\n            return this.set('showModal', true);\n        },\n        save: function () {\n            var signature_pad;\n            signature_pad = this.get('signature_pad');\n            if (signature_pad.isEmpty()) {\n                this.set('sig', null);\n                this.sendAction('bubbleChange', null, this.get('field.name'));\n            } else {\n                this.set('sig', signature_pad.toDataURL());\n                this.sendAction('bubbleChange', signature_pad.toDataURL(), this.get('field.name'));\n            }\n            return this.set('showModal', false);\n        },\n        clear: function () {\n            var signature_pad;\n            signature_pad = this.get('signature_pad');\n            return signature_pad.clear();\n        },\n        didinsert: function () {\n            var canvas, signature_pad;\n            canvas = $('canvas').get(0);\n            signature_pad = new SignaturePad(canvas);\n            if (this.get('sig')) {\n                signature_pad.fromDataURL(this.get('sig'));\n            }\n            return this.set('signature_pad', signature_pad);\n        },\n        removeModal: function () {\n            if (this.get('isDestroyed')) {\n                return;\n            }\n            return this.set('showModal', false);\n        },\n    },\n});\n\nexport default CollectorFieldsSignatureFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"bCvVCGBP\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\"],\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"name\\\",[24,[\\\"field\\\",\\\"name\\\"]]],[12,\\\"class\\\",[29,[\\\"list-group-item \\\",[28,\\\"if\\\",[[24,[\\\"value\\\"]],\\\"list-group-item-success\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"showSignModal\\\",\\\"signature-modal\\\",[24,[\\\"model\\\"]],[24,[\\\"field\\\",\\\"ext\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[1,[22,\\\"placeholder\\\"],false],[0,\\\"\\\\n    \\\"],[4,\\\"if\\\",[[24,[\\\"value\\\"]]],null,{\\\"statements\\\":[[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"signature-preview\\\"],[11,\\\"src\\\",[22,\\\"signatureSrc\\\"]],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"field.signature.placeholder\\\"],null]],[8],[9],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok-sign pull-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"bs-modal\\\",[[12,\\\"class\\\",\\\"signature-modal\\\"]],[[\\\"@open\\\",\\\"@onShown\\\",\\\"@onHidden\\\"],[[23,0,[\\\"showModal\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"didinsert\\\"],null],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showModal\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[1,[23,0,[\\\"title\\\"]],false],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"canvas\\\",true],[10,\\\"width\\\",\\\"500\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n        \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"default\\\",[28,\\\"action\\\",[[23,0,[]],\\\"clear\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"modal.clear\\\"],null],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n        \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"primary\\\",[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"modal.ok\\\"],null],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/signature-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/status-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsStatusFieldComponent;\n\nimport Ember from 'ember';\n\nimport textInput from '../text-field/component';\n\nCollectorFieldsStatusFieldComponent = textInput.extend({\n    intl: Ember.inject.service(),\n    prompt: Ember.computed('field.prompt', function () {\n        if (this.get('field.prompt')) {\n            return this.get('field.prompt');\n        }\n        if (this.get('field.translated_name')) {\n            return (\n                this.get('intl').t('general.select_with_fieldname') +\n                ' ' +\n                this.get('field.translated_name').toLowerCase() +\n                '...'\n            );\n        }\n        return this.get('intl').t('general.select_choose');\n    }),\n    options: Ember.computed('field.options', {\n        set: function (key, value) {\n            return (this._value = value);\n        },\n        get: function () {\n            var intl;\n            if (this._value) {\n                return this._value;\n            }\n            intl = this.get('intl');\n            return Em.A(\n                this.get('field.options').map(function (item) {\n                    var name;\n                    if (intl.exists('status.' + item)) {\n                        name = intl.t('status.' + item);\n                    } else {\n                        name = item;\n                    }\n                    return Ember.Object.create({\n                        id: item,\n                        name: name,\n                    });\n                }),\n            );\n        },\n    }),\n    actions: {\n        change: function (id) {\n            return this.sendAction('bubbleChange', id, this.get('field.name'));\n        },\n    },\n});\n\nexport default CollectorFieldsStatusFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"AQUMMq4H\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[7,\\\"select\\\",true],[11,\\\"class\\\",[29,[[22,\\\"_class\\\"]]]],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[8],[1,[28,\\\"if\\\",[[24,[\\\"prompt\\\"]],[24,[\\\"prompt\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[29,[[23,1,[\\\"id\\\"]]]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"value\\\"]]],null]],[8],[0,\\\"\\\\n            \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/status-field/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\nimport { debounce } from '@ember/runloop';\nimport { A } from '@ember/array';\n\nexport default Component.extend({\n    store: service(),\n\n    tags: null,\n    options: A([]),\n\n    init: function () {\n        this._super(...arguments);\n        set(this, 'tags', []);\n    },\n\n    actions: {\n        addTag(tag) {\n            set(this, 'tag', tag);\n            debounce(this, this.addTagToList, 120);\n        },\n\n        removeTagAtIndex(index) {\n            get(this, 'tags').removeAt(index);\n        },\n\n        queryForUser(currentInputValue) {\n            if (currentInputValue === '') {\n                return;\n            }\n            set(this, 'currentInputValue', currentInputValue);\n            debounce(this, this.queryBackend, 700);\n        },\n    },\n\n    queryBackend() {\n        set(this, 'options', A([]));\n\n        let users = get(this, 'store').query(get(this, 'form'), {\n            q: get(this, 'currentInputValue'),\n        });\n        users.then((results) => {\n            set(this, 'showDropdown', true);\n            let field = get(this, 'field');\n            results.forEach((result) => {\n                if (get(result, field)) {\n                    get(this, 'options').pushObject(get(result, field));\n                }\n            });\n        });\n    },\n\n    addTagToList() {\n        let tag = get(this, 'tag');\n        let tagObj = { tag: tag, error: false };\n\n        set(this, 'showDropdown', false);\n\n        if (this.validateEmail(tag)) {\n            tagObj.error = true;\n        }\n\n        get(this, 'tags').pushObject(tagObj);\n\n        this.tagListChanged(get(this, 'tags'));\n    },\n\n    validateEmail(email) {\n        return !/^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i.test(\n            email,\n        );\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"TUyk36y0\",\"block\":\"{\\\"symbols\\\":[\\\"opt\\\",\\\"tag\\\"],\\\"statements\\\":[[4,\\\"tag-input\\\",null,[[\\\"tags\\\",\\\"addTag\\\",\\\"removeTagAtIndex\\\",\\\"onKeyUp\\\"],[[24,[\\\"tags\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addTag\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeTagAtIndex\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"queryForUser\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[23,2,[\\\"error\\\"]],\\\"error\\\"],null]],[8],[1,[23,2,[\\\"tag\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[4,\\\"if\\\",[[24,[\\\"showDropdown\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"options\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"ajax-select\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"options\\\"],[10,\\\"id\\\",\\\"tag-list-dropdown\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"addTag\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                            \\\"],[1,[23,1,[]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/tag-input-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/text-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsTextFieldComponent;\n\nimport Ember from 'ember';\n\nimport base from '../base-field/component';\n\nCollectorFieldsTextFieldComponent = base.extend({\n    // Methods\n\n    setValue: Em.on('init', function () {\n        return Ember.run.next(this, () => {\n            if (this.get('field.value') && !this.get('model.' + this.get('field.name'))) {\n                return this.set('value', this.get('field.value'));\n            }\n        });\n    }),\n    // Send the change action\n    valueObserver: Em.observer('value', function () {\n        if (this.get('value') === this.get('field.value')) {\n            return;\n        }\n        return this.sendAction('bubbleChange', this.get('value'), this.get('field.name'));\n    }),\n    actions: {\n        touchMove: function () {\n            //If the user touches this field and starts scrolling, we actually want to scroll and not snap to this field and open options\n            // #UX\n            return Em.run.debounce(\n                this,\n                function () {\n                    console.log('setting touchmoving');\n                    return this.set('touchMoving', true);\n                },\n                50,\n            );\n        },\n        touchEnd: function () {\n            //We have ended fiddling with this field,\n            // if we were moving then blur to not snap scroll back to this field because of mobile shenanigans\n            console.log(this.get('touchMoving'));\n            if (this.get('touchMoving')) {\n                this.set('touchMoving', false);\n                return this.element.querySelector('input').blur();\n            }\n        },\n    },\n});\n\nexport default CollectorFieldsTextFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"qiqYrjKw\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"value\\\",\\\"class\\\",\\\"disabled\\\",\\\"touchMove\\\",\\\"touchEnd\\\"],[\\\"text\\\",[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"value\\\"]],[24,[\\\"_class\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"touchMove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"touchEnd\\\"],null]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/text-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/textarea-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsTextareaFieldComponent;\n\nimport Ember from 'ember';\n\nimport base from '../base-field/component';\n\nimport $ from 'jquery';\n\nCollectorFieldsTextareaFieldComponent = base.extend({\n    // Methods\n\n    setValue: Em.on('init', function () {\n        return this.set('value', this.get('field.value'));\n    }),\n    // Send the change action\n    valueObserver: Em.observer('value', function () {\n        if (this.get('value') === this.get('field.value')) {\n            return;\n        }\n        return this.sendAction('bubbleChange', this.get('value'), this.get('field.name'));\n    }),\n    actions: {\n        touchMove: function () {\n            //If the user touches this field and starts scrolling, we actually want to scroll and not snap to this field and open options\n            // #UX\n            return Em.run.debounce(\n                this,\n                function () {\n                    console.log('setting touchmoving');\n                    return this.set('touchMoving', true);\n                },\n                50,\n            );\n        },\n        touchEnd: function () {\n            //We have ended fiddling with this field,\n            // if we were moving then blur to not snap scroll back to this field because of mobile shenanigans\n            console.log(this.get('touchMoving'));\n            if (this.get('touchMoving')) {\n                this.set('touchMoving', false);\n                return $('textarea', this.element).blur();\n            }\n        },\n    },\n});\n\nexport default CollectorFieldsTextareaFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"4+Z2zXeH\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"cols\\\",\\\"value\\\",\\\"class\\\",\\\"disabled\\\",\\\"touchMove\\\",\\\"touchEnd\\\"],[4,8,[24,[\\\"value\\\"]],[24,[\\\"_class\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"touchMove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"touchEnd\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/textarea-field/template.hbs\"}});","import baseField from '../text-field/component';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default baseField.extend({\n    gui: service(),\n\n    actions: {\n        changeValue(event) {\n            const value = event.target.value;\n            set(this, 'value', value);\n            if (this.bubbleChange) this.bubbleChange(value, get(this, 'field.name'));\n        },\n\n        timefy() {\n            const value = this.tryToGuessTime(get(this, 'value'));\n            set(this, 'value', value);\n            if (this.bubbleChange) this.bubbleChange(value, get(this, 'field.name'));\n        },\n\n        select() {\n            this.element.querySelector('input').select();\n        },\n    },\n\n    tryToGuessTime(str) {\n        let hours, mins;\n        if (!str) return '';\n        if (str.includes(':')) {\n            const exploded = str.split(':');\n            mins = parseInt(exploded[1]);\n            hours = parseInt(exploded[0]);\n        } else if (str.includes('.')) {\n            const exploded = str.split('.');\n            mins = parseInt(exploded[1]);\n            hours = parseInt(exploded[0]);\n        } else if (str.length >= 3) {\n            mins = parseInt(str.substring(str.length - 2, str.length));\n            hours = parseInt(str.substring(0, str.length - 2));\n        } else if (str === '') {\n            return '';\n        } else {\n            hours = parseInt(str, 10);\n            mins = 0;\n        }\n\n        if (isNaN(hours)) hours = 0;\n        if (isNaN(mins)) mins = 0;\n\n        if (hours < 0) hours *= -1;\n        if (hours > 23) hours = 23;\n        if (mins < 0) mins = 0;\n        if (mins > 60) mins = 59;\n\n        if (hours < 10) hours = '0' + hours;\n        if (mins < 10) mins = '0' + mins;\n\n        return '' + hours + ':' + mins;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"lU8cOVd1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"gui\\\",\\\"isMobileComputed\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"input\\\",true],[11,\\\"class\\\",[22,\\\"_class\\\"]],[11,\\\"name\\\",[24,[\\\"field\\\",\\\"name\\\"]]],[11,\\\"value\\\",[22,\\\"value\\\"]],[11,\\\"disabled\\\",[22,\\\"disabled\\\"]],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\"],null]],[10,\\\"type\\\",\\\"time\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"autocomplete\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"disabled\\\",\\\"focusIn\\\",\\\"focusOut\\\",\\\"enter\\\"],[\\\"text\\\",\\\"off\\\",[28,\\\"concat\\\",[[24,[\\\"_class\\\"]],\\\" narrow\\\"],null],[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"select\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"timefy\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"timefy\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/time-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/timeclean-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsIMEIFieldComponent;\n\nimport Ember from 'ember';\n\nimport base from '../base-field/component';\n\nimport { debounce } from '@ember/runloop';\n\nCollectorFieldsIMEIFieldComponent = base.extend({\n    onInit: Em.on('init', function () {\n        var arr, i, item, len, value;\n        value = this.get('model.rfid_device_id');\n        if (value) {\n            if (typeof value === 'string') {\n                value = JSON.parse(value);\n            }\n            if (Array.isArray(value)) {\n                arr = Em.A([]);\n                for (i = 0, len = value.length; i < len; i++) {\n                    item = value[i];\n                    arr.pushObject({\n                        value: parseInt(item, 10),\n                    });\n                }\n                return this.set('array', arr);\n            }\n        }\n    }),\n    makeArray: Em.observer('model.rfid_device_id', function () {\n        var arr, i, item, len, value;\n        value = this.get('model.rfid_device_id');\n        if (value) {\n            if (typeof value === 'string') {\n                value = JSON.parse(value);\n            }\n            if (Array.isArray(value)) {\n                arr = Em.A([]);\n                for (i = 0, len = value.length; i < len; i++) {\n                    item = value[i];\n                    arr.pushObject({\n                        value: parseInt(item, 10),\n                    });\n                }\n                return this.set('array', arr);\n            }\n        }\n    }),\n    setValue: Em.observer('array.[]', 'array.@each.value', function () {\n        var i, item, len, ref, value;\n        value = [];\n        ref = this.get('array');\n        for (i = 0, len = ref.length; i < len; i++) {\n            item = ref[i];\n            if (item.value !== '') {\n                value.push(item.value);\n            }\n        }\n        this.set('value', JSON.stringify(value));\n        if (this.get('value') === this.get('field.value')) {\n            return;\n        }\n        return this.sendAction('bubbleChange', this.get('value'), this.get('field.name'));\n    }),\n    actions: {\n        change: function () {\n            return debounce(\n                this,\n                function () {\n                    return this.sendAction(\n                        'bubbleChange',\n                        this.get('value'),\n                        this.get('field.name'),\n                        true,\n                        false,\n                    );\n                },\n                2000,\n            );\n        },\n        add: function () {\n            if (!this.get('array')) {\n                this.set('array', Em.A([]));\n            }\n            return this.get('array').pushObject({\n                value: '',\n            });\n        },\n        remove: function (obj) {\n            return this.get('array').removeObject(obj);\n        },\n    },\n});\n\nexport default CollectorFieldsIMEIFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"mMVrYrDZ\",\"block\":\"{\\\"symbols\\\":[\\\"val\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"useAsFilter\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"value\\\",\\\"class\\\",\\\"key-up\\\"],[\\\"text\\\",[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"value\\\"]],[24,[\\\"_class\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"array\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-inline\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,1,[\\\"value\\\"]],[24,[\\\"_class\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,1,[]]]],[8],[1,[28,\\\"standard-icon\\\",[\\\"remove\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success btn-sm\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add\\\"]],[8],[1,[28,\\\"t\\\",[\\\"project.add.imei\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/timeclean-field/template.hbs\"}});","import Component from '@ember/component';\nimport { inject } from '@ember/service';\nimport { computed, get, set } from '@ember/object';\nimport { isPresent } from '@ember/utils';\n// import collectorField from '../../../../mixins/collector-field';\nimport moment from 'moment';\nimport { later } from '@ember/runloop';\n\nexport default Component.extend({\n    store: inject(),\n\n    _record: computed('field.value', function () {\n        if (isPresent(get(this, 'field.value'))) {\n            return get(this, 'store').peekRecord(\n                get(this, 'field.options.form'),\n                get(this, 'field.value'),\n            );\n        } else {\n            const record = get(this, 'store').createRecord(get(this, 'field.options.form'));\n            this.sendAction('bubbleChange', record, get(this, 'field.name')); //eslint-disable-line\n            return record;\n        }\n    }),\n\n    _isRunning: computed('_record.{starttime,endtime}', function () {\n        return (\n            isPresent(get(this, '_record.starttime')) && !isPresent(get(this, '_record.endtime'))\n        );\n    }),\n    _isStopped: computed('_record.endtime', function () {\n        return isPresent(get(this, '_record.endtime'));\n    }),\n\n    time: computed(function () {\n        if (isPresent(get(this, '_record.endtime'))) {\n            return this.giveFormattedDifference(\n                get(this, '_record.starttime'),\n                get(this, '_record.endtime'),\n            );\n        } else if (isPresent(get(this, '_record.starttime'))) {\n            return this.giveFormattedDifference(get(this, '_record.starttime'), moment());\n        } else {\n            return '00:00:00';\n        }\n    }),\n\n    init() {\n        this._super(...arguments);\n        this._ticker();\n    },\n\n    actions: {\n        toggleButton() {\n            if (get(this, '_isStopped')) return;\n            const record = get(this, '_record');\n            if (isPresent(get(record, 'starttime'))) {\n                set(record, 'endtime', moment().format('YYYY-MM-DDTHH:mm:ss.SSSZ'));\n                record.save();\n            } else {\n                this._ticker();\n                set(record, 'starttime', moment().format('YYYY-MM-DDTHH:mm:ss.SSSZ'));\n                record.save();\n            }\n        },\n    },\n\n    _ticker() {\n        if (get(this, '_isStopped')) return;\n        this.notifyPropertyChange('time');\n        later(this, this._ticker, 1000);\n    },\n\n    giveFormattedDifference(start, end) {\n        const ms = moment(end).diff(moment(start));\n        const d = moment.duration(ms);\n        const hours = Math.floor(d.asHours());\n        return (hours < 10 ? '0' + hours : hours) + moment.utc(ms).format(':mm:ss');\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"iy3iI78z\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",[29,[\\\"circle-button \\\",[28,\\\"if\\\",[[24,[\\\"_isRunning\\\"]],\\\"stop\\\",\\\"start\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"_isStopped\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"toggleButton\\\"]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move \\\",[28,\\\"concat\\\",[\\\"move-\\\",[28,\\\"if\\\",[[24,[\\\"_isRunning\\\"]],\\\"Stop\\\",\\\"Play\\\"],null]],null]]]],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"h4\\\",true],[8],[1,[22,\\\"time\\\"],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/timerlink-field/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\n/*\n    Give this component:\n        name(String), this will be used to determine the translation keys for the labels (name + \".on\" / name + \".off\")\n                    -if no name is give/found, will fallback to general \"general.on\" and \"general.off\" translation key\n                    -this will also become the x-toggle's input's name attribute\n        showLabels(bool) whether labels (on/off text) will be show\n        disabled(bool) whether the field is toggleable\n        theme(String) One of 'light', 'ios', 'flat', 'flip', 'skewed', 'default'.\n        size(String) One of 'small', 'medium', 'large'.\n\n    some defaults are set below but you can override them by giving them to this component separetely\n*/\nexport default Component.extend({\n    intl: service(),\n\n    showLabels: true,\n    theme: 'material',\n    size: 'large',\n\n    onLabel: computed(function () {\n        return get(this, 'form') + '.' + get(this, 'name') + '.on';\n    }),\n\n    offLabel: computed(function () {\n        return get(this, 'form') + '.' + get(this, 'name') + '.off';\n    }),\n\n    fallbackOnLabel: computed('intl.primaryLocale', function () {\n        if (this.getLocale() === 'xy') {\n            return get(this, 'onLabel');\n        } else {\n            return 'general.yes';\n        }\n    }),\n\n    fallbackOffLabel: computed('intl.primaryLocale', function () {\n        if (this.getLocale() === 'xy') {\n            return get(this, 'offLabel');\n        } else {\n            return 'general.no';\n        }\n    }),\n\n    getLocale() {\n        let intl = get(this, 'intl');\n        return get(intl, 'primaryLocale');\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"g0I+2h7M\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"theme\\\",\\\"onLabel\\\",\\\"offLabel\\\",\\\"showLabels\\\",\\\"size\\\",\\\"name\\\",\\\"disabled\\\",\\\"class\\\"],[[24,[\\\"toggled\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"toggled\\\"]]],null]],null],[24,[\\\"theme\\\"]],[28,\\\"t\\\",[[24,[\\\"onLabel\\\"]]],[[\\\"default\\\"],[[24,[\\\"fallbackOnLabel\\\"]]]]],[28,\\\"t\\\",[[24,[\\\"offLabel\\\"]]],[[\\\"default\\\"],[[24,[\\\"fallbackOffLabel\\\"]]]]],[24,[\\\"showLabels\\\"]],[24,[\\\"size\\\"]],[24,[\\\"name\\\"]],[24,[\\\"disabled\\\"]],[24,[\\\"class\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/toggle-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/username-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsUsernameFieldComponent;\n\nimport Ember from 'ember';\n\nimport text from '../text-field/component';\n\nCollectorFieldsUsernameFieldComponent = text.extend({\n    // Send the change action\n    valueObserver: Em.observer('value', function () {\n        return this.sendAction(\n            'bubbleChange',\n            this.get('value'),\n            this.get('field.name'),\n            true,\n            true,\n            700,\n        );\n    }),\n});\n\nexport default CollectorFieldsUsernameFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"Md4pBhaC\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"value\\\"]],[24,[\\\"_class\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/username-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/weather-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nimport Ember from 'ember';\n\nimport base from '../base-field/component';\n\nimport { inject as service } from '@ember/service';\n\nimport config from '../../../../config/environment';\n\nexport default base.extend({\n    gps: service(),\n    weather: service(),\n    weatherLoading: true,\n    didInsertElement: function () {\n        return this.get('gps').start();\n    },\n    translations: {\n        temp: '°C',\n        wspeed: 'm/s',\n        percent: '%',\n    },\n\n    // Methods\n\n    setValue: Em.on('init', function () {\n        return Ember.run.next(this, () => {\n            if (this.get('field.value') && !this.get('model.' + this.get('field.name'))) {\n                return this.set('value', this.get('field.value'));\n            }\n        });\n    }),\n    // Send the change action\n    valueObserver: Em.observer('value', function () {\n        if (this.get('value') === this.get('field.value')) {\n            return;\n        }\n        return this.sendAction('bubbleChange', this.get('value'), this.get('field.name'));\n    }),\n    gpsWeather: Ember.computed(\n        'gps.lockedPosition',\n        'gps.lockedLatitude',\n        'gps.lockedLongitude',\n        'gps.lockedAccuracy',\n        function () {\n            var position;\n            this.set('weatherLoading', true);\n            if (!this.get('gps.lockedPosition')) {\n                Ember.run.next(this, () => {\n                    this.set('value', null);\n                    return this.set('weatherLoading', false);\n                });\n                return false;\n            } else {\n                position = {\n                    latitude: this.get('gps.lockedLatitude'),\n                    longitude: this.get('gps.lockedLongitude'),\n                    accuracy: this.get('gps.lockedAccuracy'),\n                };\n                return this.get('weather')\n                    .fetchByGPS(position)\n                    .then((weather) => {\n                        Ember.run.next(this, () => {\n                            this.set('value', weather);\n                            return this.set('weatherLoading', false);\n                        });\n                        return true;\n                    });\n            }\n        },\n    ),\n});\n","export default Ember.HTMLBars.template({\"id\":\"S+1TUeiA\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"weather-info\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"gpsWeather\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"weatherLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.fetching_weather\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move move-\\\",[24,[\\\"value\\\",\\\"weather\\\"]],\\\" weather-icon\\\"]]],[8],[9],[0,\\\"\\\\n                    \\\"],[1,[24,[\\\"value\\\",\\\"temperature\\\"]],false],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[0,\\\", \\\"],[1,[24,[\\\"value\\\",\\\"windspeed\\\"]],false],[1,[24,[\\\"translations\\\",\\\"wspeed\\\"]],false],[0,\\\", \\\"],[1,[24,[\\\"value\\\",\\\"humidity\\\"]],false],[1,[24,[\\\"translations\\\",\\\"percent\\\"]],false],[0,\\\", \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.abbr_dew_point\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"value\\\",\\\"dew_point\\\"]],false],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"weather-brand\\\"],[8],[0,\\\"—\\\"],[1,[28,\\\"t\\\",[\\\"general.weather_provider\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/weather-field/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"cKu8SXDK\",\"block\":\"{\\\"symbols\\\":[\\\"@record\\\",\\\"@remove\\\",\\\"@type\\\",\\\"@openModal\\\",\\\"@canRemove\\\"],\\\"statements\\\":[[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"added-attachment-item \\\",[28,\\\"if\\\",[[28,\\\"or\\\",[[23,1,[\\\"hasDirtyAttributes\\\"]],[23,1,[\\\"isDirty\\\"]]],null],\\\"unsaved-changes\\\"],null],\\\"\\\\n        \\\",[28,\\\"if\\\",[[28,\\\"is-before\\\",[[23,1,[\\\"valid_until\\\"]],[28,\\\"now\\\",null,null]],[[\\\"precision\\\"],[\\\"days\\\"]]],\\\"expired\\\"],null],\\\"\\\\n        \\\",[28,\\\"if\\\",[[23,1,[\\\"isNew\\\"]],\\\"unsaved\\\"],null]]]],[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[\\\"attachment-item-\\\",[23,1,[\\\"id\\\"]]],null]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,4,[]],[23,3,[]],[23,1,[]]],null]]],[8],[0,\\\"\\\\n\\\"],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"size-15\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[23,1,[\\\"attachments\\\"]],\\\"length\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.attachments_count\\\"],[[\\\"count\\\"],[[28,\\\"get\\\",[[23,1,[\\\"attachments\\\"]],\\\"length\\\"],null]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"vismaicon vismaicon-sm vismaicon-filled vismaicon-error\\\"],[8],[0,\\\"\\\\n                \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@tooltipClass\\\",\\\"@spacing\\\",\\\"@text\\\",\\\"@popperContainer\\\"],[\\\"workpermit-tooltip\\\",20,[28,\\\"t\\\",[\\\"workpermit.attachment.missing_attachments\\\"],null],\\\"body\\\"]]],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"size-35\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"workpermit\\\",[28,\\\"if\\\",[[23,1,[\\\"id_type\\\"]],\\\"id_type\\\",\\\"type\\\"],null],[28,\\\"or\\\",[[23,1,[\\\"id_type\\\"]],[23,1,[\\\"type\\\"]]],null]]]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"item-expire-info size-50\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"workpermit\\\",\\\"valid_until\\\",[23,1,[\\\"valid_until\\\"]]]]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-before\\\",[[23,1,[\\\"valid_until\\\"]],[28,\\\"now\\\",null,null]],[[\\\"precision\\\"],[\\\"days\\\"]]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"vismaicon vismaicon-sm vismaicon-filled vismaicon-error\\\"],[10,\\\"data-anchor\\\",\\\"expired-icon\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"                \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@tooltipClass\\\",\\\"@spacing\\\",\\\"@text\\\",\\\"@popperContainer\\\"],[\\\"workpermit-tooltip\\\",20,[28,\\\"t\\\",[\\\"workpermit.attachment.expired_attachment\\\"],null],\\\"body\\\"]]],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,5,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"remove glyphicon glyphicon-trash\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,2,[]],[23,1,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/work-permit-attachment/attachment-item/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Vou1b29D\",\"block\":\"{\\\"symbols\\\":[\\\"dropzone\\\",\\\"queue\\\",\\\"file\\\",\\\"@removeFile\\\",\\\"@downloadFile\\\",\\\"@viewOnly\\\",\\\"@fileList\\\",\\\"@queueName\\\",\\\"@upload\\\"],\\\"statements\\\":[[5,\\\"file-dropzone\\\",[],[[\\\"@accept\\\",\\\"@name\\\"],[\\\"image/*,application/pdf\\\",[23,8,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[0,\\\"    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"modal-attachments\\\\n            \\\",[28,\\\"unless\\\",[[28,\\\"or\\\",[[23,7,[]],[23,2,[\\\"files\\\",\\\"length\\\"]]],null],\\\"attachment-placeholder\\\"],null],\\\"\\\\n            \\\",[28,\\\"if\\\",[[23,1,[\\\"active\\\"]],\\\"dragging\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"files\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"attachment-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"upload-progress\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[11,\\\"aria-valuenow\\\",[29,[[23,2,[\\\"progress\\\"]]]]],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[11,\\\"style\\\",[28,\\\"concat\\\",[\\\"width: \\\",[23,2,[\\\"progress\\\"]],\\\"%;\\\"],null]],[8],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"p\\\",true],[8],[0,\\\" \\\"],[1,[23,2,[\\\"progress\\\"]],false],[0,\\\" %\\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,7,[]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,7,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"attachment-container\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"file-preview\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"img\\\",true],[11,\\\"src\\\",[23,3,[\\\"previewFile\\\"]]],[11,\\\"title\\\",[29,[[23,3,[\\\"name\\\"]]]]],[11,\\\"alt\\\",[29,[[23,3,[\\\"name\\\"]]]]],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"attachment-actions\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"download vismaicon vismaicon-download\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,5,[]],[23,3,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[23,6,[]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"remove glyphicon glyphicon-trash\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,4,[]],[23,3,[\\\"originalFile\\\"]]],null]]],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"or\\\",[[23,7,[]],[23,2,[\\\"files\\\",\\\"length\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"workpermit.attachment_modal.no_attachments\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[5,\\\"file-upload\\\",[],[[\\\"@name\\\",\\\"@accept\\\",\\\"@onfileadd\\\",\\\"@disabled\\\"],[[23,8,[]],\\\"image/*,application/pdf\\\",[23,9,[]],[23,6,[]]]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[23,1,[\\\"active\\\"]],[28,\\\"not\\\",[[23,6,[]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"drag-overlay\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"valid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"drag-message\\\"],[8],[1,[28,\\\"t\\\",[\\\"workpermit.attachment_modal.drop_to_upload\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"drag-message invalid\\\"],[8],[1,[28,\\\"t\\\",[\\\"workpermit.attachment_modal.invalid_file_type\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/work-permit-attachment/attachment-modal/attachments-section/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\nimport { blackListFiles } from 'tt4/ember-movenium/utils/file';\nimport config from 'tt4/config/environment';\nimport { tracked } from '@glimmer/tracking';\nimport podNames from 'ember-component-css/pod-names';\n\n\nexport default class CollectorFieldsWorkPermitAttachmentModalComponent extends Component {\n    @service gui;\n    @service capi;\n    @service ttapi;\n    @service notifications;\n    @service intl;\n    @service dialogs;\n    @service('collector-service') collector;\n\n    @tracked files = [];\n    @tracked isLoading = false;\n\n    constructor(owner, args) {\n        super(owner, args);\n        this.capiURL = config.APP.COLLECTOR_API_URL;\n        this.queueName = 'work-permit-queue';\n        this.form = 'workpermit';\n        this.files = this.args.record.attachments || [];\n        this.initAttachments();\n    }\n\n    get isDoneButtonDisabled() {\n        const record = this.args.record;\n        // Disable the Done button if the record is not new and has no changes\n        if ( !record.isNew && !record.hasDirtyAttributes ) return true;\n        // Disable the Done button unless an expiration date is set, as it is a required field\n        if ( !record.valid_until) return true;\n\n        return false;\n    }\n\n    get styleNamespace() {\n        return podNames['collector/fields/work-permit-attachment/attachment-modal'];\n    }\n\n    get isAndroid() {\n        return this.gui.isAndroid;\n    }\n\n    get permitType() {\n        return this.args.record.type;\n    }\n\n    get filePreviewCache() {\n        return this.args.filePreviewCache;\n    }\n\n    get fileList() {\n\n        if (!this.files) return [];\n\n        // map the file list to include the preview URL\n        const mappedFiles = this.files.toArray().map((file) => {\n            const fileObject = {\n                name: file.name,\n                type: file.type,\n                originalFile: file,\n                name_on_s3: file.name_on_s3,\n            };\n\n            fileObject.previewFile = this.filePreviewCache[file.name_on_s3];\n            return fileObject;\n        });\n\n        return mappedFiles;\n    }\n\n    get showFields() {\n        const formFields = this.collector.fieldArray(this.form);\n        const allowedFields = this.permitTypeFields(this.permitType);\n\n        return formFields\n            // Filter fields based on visibility and allowedFields array\n            .filter(field =>\n                !field.features?.hide &&\n                allowedFields.includes(field.name)\n            )\n            .map(field => {\n                // Handle viewOnly mode, if true, disable all fields\n                // Create a copy for viewOnly mode instead of mutating original\n                if (this.args.viewOnly) {\n                    return {\n                        ...field,\n                        features: {\n                            ...field.features,\n                            disabled: true\n                        }\n                    };\n                }\n                return field;\n            });\n    }\n\n    permitTypeFields(type) {\n        switch (type) {\n            case 'identification':\n                return ['valid_until', 'id_type', 'document_number'];\n            case 'residencepermit':\n                return ['valid_until', 'country', 'document_number'];\n            case 'a1certificate':\n                return ['valid_until', 'country'];\n            default:\n                return [];\n        }\n    }\n\n    @action\n    async upload(file) {\n\n        // check if file is too large\n        if (file.size > 20971520) {\n            return this.notifications.error(this.intl.t('field.fileupload.file_too_large'), {\n                autoClear: true,\n            });\n        }\n\n        // check if file is a valid type\n        const fileExt = file.name?.split('.')[1].toLowerCase();\n        if (blackListFiles().includes('.' + fileExt)) {\n            return this.notifications.error(this.intl.t('field.fileupload.blocked_filetype'), {\n                autoClear: true,\n            });\n        }\n\n        // upload the file\n        this.uploadFile(file);\n    }\n\n    @action\n    removeFile(file) {\n        // Filter out the file to be removed\n        this.files = this.files.filter((item) => item !== file);\n\n        // Update the record and trigger the change action\n        this.args.record.attachments = [...this.files];\n        this.args.change(this.files);\n    }\n\n    @action\n    async cancel() {\n        if (await this.shouldAbortCancel()) return;\n        this.args.onClose('cancel');\n    }\n\n    @action\n    async downloadFile(file) {\n        const downloadUrl = file.previewFile;\n        const fileName = file.name;\n\n        // fetch the file from S3\n        const response = await fetch(downloadUrl, {\n            cache: 'no-store' // Prevents Chrome-specific CORS issues with S3 presigned URLs by forcing fresh requests\n        });\n\n        const blob = await response.blob();\n        const url = window.URL.createObjectURL(blob);\n\n        // create a link element and trigger a download\n        const link = document.createElement('a');\n        link.href = url;\n        link.download = fileName;\n\n        // Append the link to the body, trigger a click, and remove it\n        document.body.appendChild(link);\n        link.click();\n        document.body.removeChild(link);\n\n        // revoke the object URL to free up memory\n        window.URL.revokeObjectURL(url);\n    }\n\n    @action\n    async addAndroidImage(source) {\n        try {\n            const file = await this.androidFile.captureImage(source);\n            await this.uploadImage(file);\n        } catch (error) {\n            // Don't show error if user cancelled\n            if (!error?.message?.toLowerCase().includes('cancel')) {\n                this.notifications.error(\n                    this.intl.t('field.fileupload.camera_error'),\n                    { autoClear: true }\n                );\n            }\n        }\n    }\n\n    async initAttachments() {\n        if(!this.files.length) return\n        this.isLoading = true;\n\n        // get list of file names that need to be fetched from S3\n        const fileS3Names = this.files\n            .filter((file) => file.name_on_s3 && !this.filePreviewCache[file.name_on_s3])\n            .map((file) => file.name_on_s3);\n\n        // if no files need to be fetched, return\n        if (!fileS3Names.length) {\n            this.isLoading = false;\n            return;\n        }\n\n        // get presigned s3 urls from capi\n        const presignedUrls = await this.ttapi.request(\"api/getPresignedUrl\", {\n            data: {\n                workpermitid: this.args.record.id,\n                reasoning: this.args.reason\n            },\n        });\n\n        // set the file preview urls in the cache\n        for (const fileName in presignedUrls) {\n            this.args.addFilePreviewToCache(fileName, presignedUrls[fileName]);\n        }\n\n        this.isLoading = false;\n    }\n\n    async uploadFile(file) {\n        let policyUrl = '/awsurl?filename=' + file.name + '&format=secure';\n\n        try {\n\n            // get s3 upload info from capi\n            const response = await this.capi.request(policyUrl);\n\n            // upload file to s3\n            const task = file.upload(response.url, {\n                data: response.inputs,\n            });\n\n            // create file preview url and add it to the cache\n            const base64Url = await file.readAsDataURL();\n            this.args.addFilePreviewToCache(response.s3file, base64Url);\n\n            await task;\n            file.task = task;\n            file.name_on_s3 = response.s3file;\n\n            // update file list and record\n            this.addFile(file);\n        } catch (e) {\n            alert('upload failed', e);\n        }\n    }\n\n    // adds file to the list of uploaded files and updates the record\n    addFile(file) {\n\n        const updatedValue = [\n            {\n                name: file.name,\n                name_on_s3: file.name_on_s3,\n                type: file.type,\n            },\n            ...this.files,\n        ];\n\n        // Update the tracked property\n        this.files = updatedValue;\n\n        // Update the record and trigger the change action\n        this.args.record.attachments = updatedValue;\n        this.args.change(updatedValue);\n\n    }\n\n    async shouldAbortCancel() {\n        // if the record is not new and has no changes, we can cancel without confirmation\n        if (!this.args.record.isNew && !this.args.record.hasDirtyAttributes) return false;\n\n        // If the record is new and doesn't have anything filled, we can cancel without confirmation\n        const fieldsToCheck = ['valid_until', 'country', 'id_type', 'document_number'];\n        const isEmpty = fieldsToCheck.every(field => !this.args.record[field]);\n\n        if (this.args.record.isNew && isEmpty && this.files.length === 0) return false;\n\n        // if the record has changes, we need to confirm with the user\n        return ! await this.dialogs.confirm(this.intl.t('general.confirm.cancel'));\n    }\n\n}\n","export default Ember.HTMLBars.template({\"id\":\"FCm2t2EU\",\"block\":\"{\\\"symbols\\\":[\\\"@queueName\\\",\\\"@upload\\\",\\\"@disabled\\\",\\\"@addAndroidImage\\\",\\\"@isAndroid\\\",\\\"@cancel\\\",\\\"@isDoneButtonDisabled\\\",\\\"@onClose\\\",\\\"@viewOnly\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,9,[]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-actions\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,8,[]]],null]]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"add-buttons-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,5,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link inline-block\\\"],[12,\\\"disabled\\\",[23,3,[]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,4,[]],\\\"gallery\\\"],null]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-picture\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"field.fileupload.add_from_gallery\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link inline-block\\\"],[12,\\\"disabled\\\",[23,3,[]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,4,[]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-camera\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"field.fileupload.add_from_camera\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"file-upload\\\",[],[[\\\"@name\\\",\\\"@accept\\\",\\\"@onfileadd\\\"],[[23,1,[]],\\\"image/*,application/pdf\\\",[23,2,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"btn btn-secondary \\\",[28,\\\"if\\\",[[23,3,[]],\\\"disabled\\\",\\\"\\\"],null]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"attach-icon vismaicon vismaicon-sm vismaicon-attach\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"add.file\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-actions\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,6,[]]]],[8],[1,[28,\\\"t\\\",[\\\"workpermit.attachment_modal.cancel\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"disabled\\\",[23,7,[]]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,8,[]],\\\"done\\\"],null]]],[8],[1,[28,\\\"t\\\",[\\\"workpermit.attachment_modal.done\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/work-permit-attachment/attachment-modal/modal-buttons/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"wU8HTCKp\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"fieldHash\\\",\\\"@viewOnly\\\",\\\"@change\\\",\\\"@record\\\",\\\"@disabled\\\",\\\"@onClose\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"modal-overlay \\\",[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-content\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"h2\\\",true],[10,\\\"data-anchor\\\",\\\"modal-title\\\"],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"workpermit.attachment_modal.title.\\\",[23,0,[\\\"permitType\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-fields\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"showFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-field\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"features\\\",\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk mandatory-icon\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"label\\\",true],[8],[1,[23,1,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"let\\\",[[28,\\\"hash\\\",null,[[\\\"features\\\",\\\"form\\\",\\\"name\\\",\\\"options\\\",\\\"translated_name\\\",\\\"type\\\",\\\"value\\\"],[[23,1,[\\\"features\\\"]],[23,1,[\\\"form\\\"]],[23,1,[\\\"name\\\"]],[23,1,[\\\"options\\\"]],[23,1,[\\\"translated_name\\\"]],[23,1,[\\\"type\\\"]],[28,\\\"get\\\",[[23,5,[]],[23,1,[\\\"name\\\"]]],null]]]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"collector/field-comp\\\",[],[[\\\"@field\\\",\\\"@change\\\",\\\"@model\\\",\\\"@_class\\\"],[[23,2,[]],[23,4,[]],[23,5,[]],\\\"work-permit-attachments-field form-control\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[5,\\\"collector/fields/work-permit-attachment/attachment-modal/attachments-section\\\",[],[[\\\"@queueName\\\",\\\"@fileList\\\",\\\"@downloadFile\\\",\\\"@removeFile\\\",\\\"@upload\\\",\\\"@viewOnly\\\"],[[23,0,[\\\"queueName\\\"]],[23,0,[\\\"fileList\\\"]],[23,0,[\\\"downloadFile\\\"]],[23,0,[\\\"removeFile\\\"]],[23,0,[\\\"upload\\\"]],[23,3,[]]]]],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"attachment-instructions\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[10,\\\"data-anchor\\\",\\\"attachment-instructions\\\"],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"workpermit.attachment_modal.instructions.\\\",[23,0,[\\\"permitType\\\"]]],null]],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"        \\\"],[5,\\\"collector/fields/work-permit-attachment/attachment-modal/modal-buttons\\\",[],[[\\\"@isAndroid\\\",\\\"@addAndroidImage\\\",\\\"@disabled\\\",\\\"@addButtonText\\\",\\\"@queueName\\\",\\\"@upload\\\",\\\"@cancel\\\",\\\"@isDoneButtonDisabled\\\",\\\"@onClose\\\",\\\"@viewOnly\\\"],[[23,0,[\\\"isAndroid\\\"]],[23,0,[\\\"addAndroidImage\\\"]],[23,6,[]],[23,0,[\\\"addButtonText\\\"]],[23,0,[\\\"queueName\\\"]],[23,0,[\\\"upload\\\"]],[23,0,[\\\"cancel\\\"]],[23,0,[\\\"isDoneButtonDisabled\\\"]],[23,7,[]],[23,3,[]]]]],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/work-permit-attachment/attachment-modal/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { next } from '@ember/runloop';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class CollectorFieldsWorkPermitAttachmentComponent extends Component {\n    @service('collector-service') Collector;\n    @service('ttapi') ttapi;\n    @service session;\n    @service store;\n    @service dialogs;\n    @service intl;\n\n    @tracked records = [];\n    @tracked isModalOpen = false;\n    @tracked workingCopy = null; // Working copy displayed in modal (either new or clone of existing)\n    @tracked editingOriginal = null; // Reference to original when editing existing record\n    @tracked isConfirmModalOpen = false;\n    @tracked reason = '';\n    @tracked filePreviewCache = {};\n    @tracked isLoadingRecords = false;\n    @tracked isLoading = false;\n    @tracked hasUnsavedChanges = false;\n    @tracked viewOnly = false;\n\n    constructor() {\n        super(...arguments);\n        this.permitTypes = ['identification', 'residencepermit', 'a1certificate'];\n        this.initRecords();\n    }\n\n    get styleNamespace() {\n        return podNames['collector/fields/work-permit-attachment'];\n    }\n\n    get form() {\n        return this.args.field.options.form;\n    }\n\n    get parentform() {\n        return this.args.field.form;\n    }\n\n    get fieldname() {\n        return this.args.field.name;\n    }\n\n    get noCertificateRequired() {\n        return this.args.model.no_certificate_required;\n    }\n\n    get employerId() {\n        const employer = this.args.model.employer || this.args.model.ori_employer;\n        return get(employer, 'id')\n    }\n\n    get user() {\n        return this.args.model.ori_user || this.args.model;\n    }\n\n    set noCertificateRequired(value) {\n        this.args.model.no_certificate_required = value;\n    }\n\n    get requiredAttachments() {\n        const workPermit = this.args.model.work_permit_type;\n        switch (workPermit) {\n            case 'identification':\n                return ['identification'];\n            case 'residencepermit':\n                return ['identification', 'residencepermit'];\n            case 'a1certificate':\n                return this.noCertificateRequired ? ['identification'] : ['identification', 'a1certificate'];\n            default:\n                return [];\n        }\n    }\n\n    get isPrivilegedUser() {\n        return parseInt(this.session.currentUser.userlevel) === 5 || parseInt(this.session.currentUser.userlevel) === 6;\n    }\n\n    async initRecords() {\n        this.isLoadingRecords = true;\n        this.records = this.args.model[this.fieldname];\n        await this.loadRecords();\n        this.isLoadingRecords = false;\n    }\n\n    async loadRecords() {\n        const ids = this.records.map(record => record.id).filter(Boolean);\n        if (ids && ids.length > 0) {\n            await this.store.query(this.form, {\n                id: ids.join(','),\n                include: true,\n            });\n        }\n    }\n\n    createNewRecord(type) {\n        const record = this.store.createRecord(this.form, { type });\n        const parentfields = this.Collector.fieldArray(this.parentform);\n        parentfields.forEach(field => {\n            record[field.name] = this.args.model[field.name];\n        });\n        record.workpermit_owner = this.user ?? null;\n        record.attachments = [];\n        return record;\n    }\n\n    /* ------------------------------ Working Copy Helpers ------------------------------ */\n   makeWorkingCopy(record) {\n        return this.Collector?.copyRecord?.(record);\n    }\n\n    applyWorkingCopyChanges() {\n        if (!this.editingOriginal || !this.workingCopy) return;\n        const source = this.workingCopy;\n        const target = this.editingOriginal;\n        const fields = ['attachments','country','valid_until','type','id_type','document_number','workpermit_owner', 'vastuuGroupId'];\n        fields.forEach(f => {\n            if (f === 'attachments') {\n                target.attachments = (source.attachments || []).map(a => ({ ...a }));\n            } else if (source[f] !== undefined) {\n                target[f] = source[f];\n            }\n        });\n    }\n\n    hasMeaningfulData(record) {\n        return !!(\n            (record?.attachments && record.attachments?.length)\n            || record?.valid_until\n            || record?.id_type\n            || record?.document_number\n            || record?.country\n        );\n    }\n\n    startEdit(type, record) {\n        if (record) {\n            // Existing record: DO NOT CLONE YET (we need its id for presigned URL fetch in modal)\n            this.editingOriginal = record;\n            this.workingCopy = null;\n            this.editingType = type;\n        } else {\n            // New record path unchanged\n            this.editingOriginal = null;\n            this.workingCopy = this.createNewRecord(type);\n            this.editingType = type;\n        }\n    }\n\n    cancelEdit() {\n        if (!this.workingCopy && this.editingOriginal) {\n            // Nothing to discard (we never cloned yet)\n        } else if (this.workingCopy) {\n            if (this.editingOriginal) {\n                this.workingCopy.unloadRecord?.();\n            } else if (this.workingCopy.isNew) {\n                this.workingCopy.deleteRecord();\n                if (this.workingCopy.isDeleted) {\n                    this.store.unloadRecord(this.workingCopy);\n                }\n            }\n        }\n        this.workingCopy = null;\n        this.editingOriginal = null;\n        this.editingType = null;\n    }\n\n    doneEdit() {\n        if (!this.workingCopy && this.editingOriginal) {\n            // User made no edits (never cloned); nothing to apply\n        } else if (this.workingCopy) {\n            if (this.editingOriginal) {\n                this.applyWorkingCopyChanges();\n                this.workingCopy.unloadRecord?.();\n            } else {\n                if (!this.records.includes(this.workingCopy)) this.records.pushObject(this.workingCopy);\n            }\n        }\n        this.workingCopy = null;\n        this.editingOriginal = null;\n        this.editingType = null;\n        this.change();\n        this.markAsModified();\n    }\n\n    // Method to call when attachments are modified\n    markAsModified() {\n        this.hasUnsavedChanges = true;\n    }\n\n    // Method to call when form is saved\n    resetModifiedState() {\n        this.hasUnsavedChanges = false;\n    }\n\n    // Method for checking if edit modal should displayed as view-only\n    shouldDisplayViewOnly(record) {\n        if (!record) return false;\n\n        // has vastuuGroupId value then view only\n        if (record.vastuuGroupId) return true;\n        return !this.isPrivilegedUser && !record.isNew;\n    }\n\n    @action\n    change() {\n        this.args.bubbleChange(\n            this.args.model[this.fieldname],\n            this.args.field,\n            false,\n        );\n    }\n\n    @action\n    async remove(record, e) {\n        e?.stopPropagation(); // Prevent open modal action from firing\n\n        // Wait for user confirm before removing\n        if (!(await this.dialogs.confirm(this.intl.t('general.confirm.remove_attachment')))) return;\n\n        if (!record) return;\n\n        if (record.isNew) {\n            // Unsaved yet: fully remove from array and store\n            this.records.removeObject(record);\n            record.deleteRecord();\n            this.store.unloadRecord(record);\n        } else {\n            // Mark as deleted but keep in array so parent form save can process deletion\n            record.deleteRecord();\n        }\n        this.change();\n        this.markAsModified();\n    }\n\n    /* Attachment Modal Actions */\n\n    @action\n    openModal(type, record) {\n        // Reset the viewOnly flag\n        this.viewOnly = false;\n\n        if (this.shouldDisplayViewOnly(record)) {\n            this.viewOnly = true;\n        }\n\n        this.startEdit(type, record);\n        if (record && !record.isNew) {\n            this.isConfirmModalOpen = true;\n            return;\n        }\n        // New record: open directly\n        this.isModalOpen = true;\n    }\n\n    @action\n    closeModal(action) {\n        this.isModalOpen = false;\n        if (action === 'cancel') this.cancelEdit();\n        if (action === 'done') this.doneEdit();\n        this.reason = '';\n    }\n\n    @action\n    addFilePreviewToCache(file, preview) {\n        this.filePreviewCache[file] = preview;\n    }\n\n    /* Confirm Modal Actions */\n\n    @action\n    closeConfirmModal() {\n        this.isConfirmModalOpen = false;\n        this.cancelEdit();\n        this.reason = \"\";\n    }\n\n    @action\n    confirm(reason) {\n        this.reason = reason;\n        this.isConfirmModalOpen = false;\n\n        // Open modal with ORIGINAL record first (so child component sees record.id)\n        this.isModalOpen = true;\n\n        // Lazily create working copy after render so presigned URL fetch already fired with original id\n        if (this.editingOriginal && !this.workingCopy) {\n            next(() => {\n                // If modal still open\n                if (!this.isModalOpen) return;\n                this.workingCopy = this.makeWorkingCopy(this.editingOriginal);\n                if (this.editingType) this.workingCopy.type = this.editingType;\n            });\n        }\n    }\n\n\n    @action\n    handleVgDocuments(documents = []) {\n        if (!Array.isArray(documents) || documents.length === 0) return;\n\n        documents.forEach((doc) => {\n            const rec = this.createNewRecord(doc.type);\n            if (rec) {\n                rec.attachments = [];\n                (doc.attachments || []).forEach((attachment) => {\n                    rec.attachments.pushObject({\n                        name: attachment.s3_object,\n                        name_on_s3: attachment.s3_object,\n                    });\n                    if (attachment.preview) {\n                        this.addFilePreviewToCache(attachment.s3_object, attachment.preview);\n                    }\n                });\n                rec.country = doc.country;\n                rec.valid_until = doc.valid_until;\n                if (doc.id_type) rec.id_type = doc.id_type;\n                if (doc.document_number) rec.document_number = doc.document_number;\n                if (doc.id) rec.vastuuGroupId = doc.id;\n                if (!this.records.includes(rec)) this.records.pushObject(rec);\n            }\n        });\n        this.markAsModified();\n    }\n\n    /* ------------------------------ Lifecycle Cleanup ------------------------------ */\n\n    @action\n    discardUnsavedAttachments() {\n        // Drop modal working copy if it's a new unattached record\n        if (this.workingCopy && this.workingCopy.isNew && !this.records.includes(this.workingCopy)) {\n            try { this.workingCopy.deleteRecord(); } catch(_) { /* ignore */ }\n            try { this.store.unloadRecord(this.workingCopy); } catch(_) { /* ignore */ }\n            this.workingCopy = null;\n        }\n        // Remove any new records not yet persisted\n        (this.records || []).slice().forEach(r => {\n            if (r?.isNew) {\n                try { r.deleteRecord(); } catch(_) { /* ignore */ }\n            }\n        });\n    }\n\n\n    willDestroy() {\n        // Ensure unsaved attachments don't linger in store when navigating away\n        this.discardUnsavedAttachments();\n        // Also unload working copy clone of an existing record if still around (editing existing)\n        if (this.workingCopy && !this.workingCopy.isNew) {\n            try { this.workingCopy.unloadRecord?.(); } catch(_) { /* ignore */ }\n        }\n\n        // Rollback any dirty attributes on existing records that has changes\n        (this.records || []).slice().forEach(r => {\n            if (r?.hasDirtyAttributes && !r.isDeleted) {\n                try { r.rollbackAttributes(); } catch(_) { /* ignore */ }\n            }\n        });\n\n        super.willDestroy?.();\n    }\n}\n","import Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport podNames from 'ember-component-css/pod-names';\n\n\nexport default class ConfirmModalComponent extends Component {\n    @service moment;\n\n    @tracked reason = '';\n\n    constructor(owner, args) {\n        super(owner, args);\n        this.getReasonFromLs();\n    }\n\n    get styleNamespace() {\n        return podNames['collector/fields/work-permit-attachment/confirm-modal'];\n    }\n\n    get isConfirmDisabled() {\n        return this.reason.trim() === '';\n    }\n\n    get charCount() {\n        return this.reason.length;\n    }\n\n    get maxCharCount() {\n        return 255;\n    }\n\n    @action\n    updateReason(event) {\n        this.reason = event.target.value;\n    }\n\n    @action\n    confirm() {\n        this.saveReasonToLs();\n        this.args.onConfirm(this.reason);\n    }\n\n    getReasonFromLs() {\n        const OldReason = localStorage.getItem(`reason-${this.args.recordID}`);\n        if (OldReason) {\n            const reasonObj = JSON.parse(OldReason);\n            const date = this.moment.moment(reasonObj.date);\n\n            // Check if the date is within the last 24 hours\n            // If so, use the reason from localStorage\n            if (date.isSameOrAfter(this.moment.moment().subtract(1, 'days'))) {\n                this.reason = reasonObj.reason;\n            }\n        }\n    }\n\n    saveReasonToLs() {\n        const reasonObj = {\n            reason: this.reason,\n            date:  this.moment.moment().toISOString(),\n        };\n        localStorage.setItem(`reason-${this.args.recordID}`, JSON.stringify(reasonObj));\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"UtS2ZMGC\",\"block\":\"{\\\"symbols\\\":[\\\"@onClose\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"modal-overlay \\\",[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-content\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-modal-header\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"workpermit.confirm_modal.title\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-body\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"workpermit.confirm_modal.info_text\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"reason-field-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"reason\\\"],[8],[1,[28,\\\"t\\\",[\\\"workpermit.confirm_modal.reason_field.label\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"textarea\\\",false],[12,\\\"id\\\",\\\"reason\\\"],[12,\\\"maxlength\\\",[23,0,[\\\"maxCharCount\\\"]]],[12,\\\"rows\\\",\\\"5\\\"],[12,\\\"placeholder\\\",[28,\\\"t\\\",[\\\"workpermit.confirm_modal.reason_field.placeholder\\\"],null]],[12,\\\"data-anchor\\\",\\\"reason\\\"],[3,\\\"on\\\",[\\\"input\\\",[23,0,[\\\"updateReason\\\"]]]],[8],[1,[23,0,[\\\"reason\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"char-counter\\\"],[8],[1,[23,0,[\\\"charCount\\\"]],false],[0,\\\" / \\\"],[1,[23,0,[\\\"maxCharCount\\\"]],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-footer\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"cancel-button btn btn-secondary\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,1,[]]]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"confirm-button btn btn-primary\\\"],[12,\\\"disabled\\\",[23,0,[\\\"isConfirmDisabled\\\"]]],[12,\\\"data-anchor\\\",\\\"confirm-button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"confirm\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"workpermit.confirm_modal.confirm_button\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/work-permit-attachment/confirm-modal/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"vy1+Qf3n\",\"block\":\"{\\\"symbols\\\":[\\\"type\\\",\\\"record\\\",\\\"@model\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isLoadingRecords\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"permit-loader\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5,6\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"collector/fields/work-permit-attachment/vg-button\\\",[],[[\\\"@model\\\",\\\"@user\\\",\\\"@existingRecords\\\",\\\"@onSuccess\\\"],[[23,3,[]],[23,0,[\\\"user\\\"]],[23,0,[\\\"records\\\"]],[23,0,[\\\"handleVgDocuments\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"hasUnsavedChanges\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning unsaved-changes-notification\\\"],[10,\\\"data-anchor\\\",\\\"unsaved-changes-notification\\\"],[8],[0,\\\"\\\\n                 \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"vismaicon vismaicon-sm vismaicon-filled vismaicon-error\\\"],[10,\\\"data-anchor\\\",\\\"unsaved-changes-icon\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"unsaved-changes-notification-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"workpermit.attachments.unsaved_changes\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"attachments-section\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"permitTypes\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"attachment-type-container\\\"],[8],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"attachment-type-header \\\",[28,\\\"if\\\",[[28,\\\"in-array\\\",[[23,1,[]],[23,0,[\\\"requiredAttachments\\\"]]],null],\\\"required\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[[23,1,[]],[23,0,[\\\"requiredAttachments\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"vismaicon vismaicon-sm vismaicon-filled vismaicon-error\\\"],[11,\\\"data-anchor\\\",[29,[\\\"required-icon-\\\",[23,1,[]]]]],[8],[0,\\\"\\\\n                                \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@tooltipClass\\\",\\\"@spacing\\\",\\\"@side\\\",\\\"@event\\\",\\\"@popperContainer\\\",\\\"@text\\\"],[\\\"workpermit-tooltip\\\",20,\\\"left\\\",\\\"hover\\\",\\\"body\\\",[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"workpermit.attachment.mandatory_attachments.\\\",[23,1,[]]],null]],null]]]],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"attachment-type-label\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"workpermit.attachment.\\\",[23,1,[]],\\\".label\\\"],null]],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"records\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[23,1,[]],[28,\\\"get\\\",[[23,2,[]],\\\"type\\\"],null]],null],[28,\\\"not\\\",[[23,2,[\\\"isDeleted\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"collector/fields/work-permit-attachment/attachment-item\\\",[],[[\\\"@record\\\",\\\"@type\\\",\\\"@openModal\\\",\\\"@remove\\\",\\\"@canRemove\\\"],[[23,2,[]],[23,1,[]],[23,0,[\\\"openModal\\\"]],[28,\\\"await\\\",[[23,0,[\\\"remove\\\"]]],null],[28,\\\"or\\\",[[23,0,[\\\"isPrivilegedUser\\\"]],[23,2,[\\\"isNew\\\"]]],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[]],\\\"a1certificate\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"no-certificate-required\\\"],[8],[0,\\\"\\\\n                            \\\"],[5,\\\"input\\\",[],[[\\\"@checked\\\",\\\"@type\\\",\\\"@class\\\"],[[23,0,[\\\"noCertificateRequired\\\"]],\\\"checkbox\\\",\\\"form-check-input\\\"]]],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"form-check-label\\\"],[10,\\\"for\\\",\\\"no_certificate_required\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"workpermit.noCertificateRequired.label\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary attachment-add-button\\\"],[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[\\\"add-attachment-for-\\\",[23,1,[]]],null]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"openModal\\\"]],[23,1,[]],null],null]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"attach-icon vismaicon vismaicon-sm vismaicon-attach\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"workpermit.add.file.button\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isModalOpen\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"collector/fields/work-permit-attachment/attachment-modal\\\",[],[[\\\"@record\\\",\\\"@onClose\\\",\\\"@change\\\",\\\"@addFilePreviewToCache\\\",\\\"@filePreviewCache\\\",\\\"@userId\\\",\\\"@reason\\\",\\\"@viewOnly\\\"],[[28,\\\"or\\\",[[23,0,[\\\"workingCopy\\\"]],[23,0,[\\\"editingOriginal\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"closeModal\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"change\\\"]],[24,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"addFilePreviewToCache\\\"]]],null],[23,0,[\\\"filePreviewCache\\\"]],[23,0,[\\\"user\\\",\\\"id\\\"]],[23,0,[\\\"reason\\\"]],[23,0,[\\\"viewOnly\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isConfirmModalOpen\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"collector/fields/work-permit-attachment/confirm-modal\\\",[],[[\\\"@onClose\\\",\\\"@onConfirm\\\",\\\"@recordID\\\"],[[28,\\\"fn\\\",[[23,0,[\\\"closeConfirmModal\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"confirm\\\"]]],null],[23,0,[\\\"editingOriginal\\\",\\\"id\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/work-permit-attachment/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action, get } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class VgButtonComponent extends Component {\n    @service store;\n    @service ttapi;\n    @service notifications;\n    @service intl;\n\n    @tracked isLoading = false;\n    @tracked employer = null;\n\n    constructor() {\n        super(...arguments);\n        this.loadEmployer();\n    }\n\n    get user() {\n        return this.args.user;\n    }\n\n    get employerId() {\n        const employer = this.args.model?.employer || this.args.model?.ori_employer;\n        if (!employer) return null;\n        // Use Ember's get to support proxies\n        try {\n            return get(employer, 'id');\n        } catch (e) {\n            return null;\n        }\n    }\n\n    async loadEmployer() {\n        //if (this.user?.userlevel == 1) return;\n        const id = this.employerId;\n        if (!id) return;\n        const employerData = await this.store.query('employer', { id });\n        this.employer = employerData.firstObject;\n    }\n\n    get disabledReasonKeys() {\n        const user = this.user;\n        const employer = this.employer;\n\n        const missing = [];\n        if (!user?.nationality) missing.push('workpermit.vg.button.disabled.reason.nationality');\n        if (!user?.taxnumber) missing.push('workpermit.vg.button.disabled.reason.taxnumber');\n        if (!user?.employer) missing.push('workpermit.vg.button.disabled.reason.employer');\n\n        if (!employer?.emp_id) missing.push('workpermit.vg.button.disabled.reason.employer.empid');\n        if (employer?.emp_id_type != 0 && !employer?.emp_homecountry) missing.push('workpermit.vg.button.disabled.reason.employer.country');\n\n        return missing;\n    }\n\n    get isDisabled() {\n        return this.disabledReasonKeys.length > 0;\n    }\n\n    @action\n    async fetch() {\n        this.isLoading = true;\n        try {\n            // Collect existing attachments with vastuuGroupId\n            const existingAttachments = this.args.existingRecords\n                ?.filter(record => record.vastuuGroupId && !record.isDeleted)\n                ?.map(record => ({\n                    vastuuGroupId: record.vastuuGroupId,\n                    type: record.type\n                })) || [];\n\n            const params = {\n                org_id: this.employer?.emp_id,\n                org_id_country: this.employer?.homecountry || 'FI',\n                person_id: this.user?.taxnumber,\n                person_id_type: 'tax_number',\n                person_id_country: this.user?.nationality,\n                existing_attachments: existingAttachments\n            };\n\n            const response = await this.ttapi.request('api/getDocumentsFromVastuuGroup', { data: params });\n\n            if (response?.success && response.documents?.length > 0) {\n                // New documents fetched successfully\n                const successMessage = `${response.documents.length} ${this.intl.t('workpermit.vgbutton.fetchdocuments.success')}`;\n                this.notifications.success(successMessage, { autoClear: true });\n                if (this.args.onSuccess) this.args.onSuccess(response.documents);\n            } else if (response?.success && response?.message) {\n                // Check which message we got from backend\n                const isNoDocuments = response.message.includes('No documents found');\n\n                if (isNoDocuments) {\n                    // No documents at all in VastuuGroup but successful response from their API\n                    const noDocumentsMessage = this.intl.t('workpermit.vgbutton.fetchdocuments.no_documents_found');\n                    this.notifications.warning(noDocumentsMessage, { autoClear: true });\n                } else {\n                    // All documents already exist\n                    const noNewDocumentsMessage = this.intl.t('workpermit.vgbutton.fetchdocuments.no_new_documents');\n                    this.notifications.info(noNewDocumentsMessage, { autoClear: true });\n                }\n            } else {\n                // API Error response\n                const errorMessage = this.intl.t('workpermit.vgbutton.fetchdocuments.error');\n                this.notifications.error(errorMessage, { autoClear: true });\n            }\n        } catch (e) {\n            if (e?.payload?.error?.includes('No active license')) {\n                const errorMessage = this.intl.t('workpermit.vgbutton.fetchdocuments.error.no_license');\n                this.notifications.error(errorMessage, { autoClear: true });\n            } else {\n                const errorMessage = this.intl.t('workpermit.vgbutton.fetchdocuments.error');\n                this.notifications.error(errorMessage, { autoClear: true });\n            }\n        } finally {\n            this.isLoading = false;\n        }\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"iwVbtpvl\",\"block\":\"{\\\"symbols\\\":[\\\"reason\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-button-wrapper\\\"],[8],[0,\\\"\\\\n  \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"disabled\\\",[28,\\\"or\\\",[[23,0,[\\\"isDisabled\\\"]],[23,0,[\\\"isLoading\\\"]]],null]],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"fetch\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"workpermit.vg.button\\\"],null],false],[0,\\\"\\\\n  \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"permit-loader permit-loader-inline\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"gt\\\",[[23,0,[\\\"disabledReasonKeys\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info vg-disabled-reason\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-info-sign\\\"],[10,\\\"data-anchor\\\",\\\"vg-disabled-icon\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"workpermit.vg.button.disabled.info\\\"],null],false],[0,\\\"\\\\n      \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n      \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"disabledReasonKeys\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"vg-disabled-reason-item\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"vg-disabled-reason-text\\\"],[8],[1,[28,\\\"t\\\",[[23,1,[]]],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"      \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/work-permit-attachment/vg-button/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/filters-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormFiltersComponent;\n\nimport Ember from 'ember';\n\nFormFiltersComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    sessionGlobals: Em.inject.service(),\n    // Name of the form to be used to get different filter options\n    form: null,\n    // all the fields wanted to be shown. format string ie. \"date,user\"\n    filters: null,\n    // parameter for values to be used outside of the component\n    // all values of the filter will be in ember object ie. {date: date, user: user}\n    values: null,\n    refreshValues: Ember.observer('_filters.@each.value', function () {\n        var filters, sessionFilters, values;\n        filters = this.get('_filters');\n        values = [];\n        sessionFilters = {};\n        filters.forEach((item) => {\n            // support for filters from different forms\n            if (item.get('form') && this.get('form') !== item.get('form')) {\n                values.push({\n                    name: item.get('form') + '.' + item.get('name'),\n                    value: item.get('value'),\n                });\n                return (sessionFilters[item.get('name')] = item.get('value'));\n            } else {\n                values.push({\n                    name: item.get('name'),\n                    value: item.get('value'),\n                });\n                return (sessionFilters[item.get('name')] = item.get('value'));\n            }\n        });\n        if (this.get('form')) {\n            this.get('sessionGlobals').set('filters_' + this.get('form'), sessionFilters);\n        }\n        // always save also as global filters so can be used on own reports\n        this.get('sessionGlobals').set('filters', sessionFilters);\n        return this.set('values', Em.A(values));\n    }),\n    _filters: Ember.computed('filters', function () {\n        var filters, types;\n        types = this.get('filters').split(',');\n        filters = Em.A([]);\n        $.each(types, (key, item) => {\n            var filter_field, itemArr;\n            if (item.indexOf('.') > -1) {\n                itemArr = item.split('.');\n                filter_field = this.getFilterObject(itemArr[1], itemArr[0]);\n            } else {\n                filter_field = this.getFilterObject(item);\n            }\n            if (filter_field) {\n                return filters.pushObject(filter_field);\n            }\n        });\n        return filters;\n    }),\n    getFilterObject: function (item, form = null) {\n        var c, defaultFilters, field, fieldType, intl, object, rangesPromise, store, translatedName;\n        form = form || this.get('form');\n        c = this.get('Collector');\n        store = this.get('store');\n        intl = this.get('intl');\n        field = c.fields(form)[item];\n        if (item === 'q') {\n            field = {\n                ext: 'q',\n                type: 'search',\n            };\n        }\n        if (item === 'groupBy') {\n            field = {\n                ext: 'groupBy',\n                type: 'groupByFilter',\n            };\n        }\n        if (field == null) {\n            return;\n        }\n        //skip filter if hide_filter feature found\n        if (field.features && field.features.hide_filter) {\n            return;\n        }\n        fieldType = field.type;\n        object = Ember.Object.create({\n            type: fieldType,\n            name: item,\n            value: null,\n        });\n        if (field.options) {\n            object.set('options', field.options);\n        }\n        switch (fieldType) {\n            case 'date':\n                object.title = field.name;\n                if (field.features.use_index) {\n                    object.start = moment().startOf('week').format('YYYY-MM-DD');\n                    object.end = moment().endOf('week').format('YYYY-MM-DD');\n                    object.value = object.start + '_' + object.end;\n                }\n                if (this.get('form') === 'worktime') {\n                    rangesPromise = $.Deferred();\n                    if (c.formExists('wage_period')) {\n                        this.get('store')\n                            .query('wage-period', {\n                                limit: 20,\n                                order: 'period_end_date-,period_start_date-',\n                            })\n                            .then(function (periods) {\n                                var ranges;\n                                ranges = {};\n                                periods.forEach(function (period) {\n                                    var name;\n                                    if (period.get('period_name')) {\n                                        name = period.get('period_name');\n                                    } else {\n                                        name =\n                                            moment(period.get('period_start_date')).format('L') +\n                                            ' - ' +\n                                            moment(period.get('period_end_date')).format('L');\n                                    }\n                                    return (ranges[name] = [\n                                        moment(period.get('period_start_date')),\n                                        moment(period.get('period_end_date')),\n                                    ]);\n                                });\n                                return rangesPromise.resolve(ranges);\n                            });\n                    } else {\n                        rangesPromise.resolve({});\n                    }\n                    object.ranges = rangesPromise;\n                }\n                translatedName = c.getTranslationForColumn(form, item);\n                object.prompt = intl.t('filter.select_date', {\n                    field:\n                        translatedName.string != null\n                            ? translatedName.string.toLowerCase()\n                            : translatedName.toLowerCase(),\n                });\n                break;\n            case 'database':\n            case 'multiselect':\n                object.name = item;\n                object.form = form;\n                break;\n            //                object.prompt = 'workday.select_' + item\n            case 'status':\n                object.field = item;\n                break;\n            case 'dropdown_values':\n                object.name = item;\n                object.form = form;\n        }\n        //                object.prompt = @get('intl').t('workday.select_' + item)+\"...\"\n        object.features = field.features;\n        if (this.get('form')) {\n            defaultFilters = this.get('sessionGlobals').get('filters_' + this.get('form'));\n        } else {\n            defaultFilters = this.get('sessionGlobals').get('filters');\n        }\n        if (defaultFilters && defaultFilters[item] != null) {\n            object.value = defaultFilters[item];\n        }\n        if (this.get('prompt')) {\n            object.prompt = this.get('prompt');\n        }\n        return object;\n    },\n    setDropdownFilterings: function (changeInField, value) {\n        var filtering, i, len, options, ref, results, setFilter;\n        ref = this.get('Collector').getDropdownDepency(changeInField);\n        results = [];\n        for (i = 0, len = ref.length; i < len; i++) {\n            filtering = ref[i];\n            setFilter = this.get('_filters').findBy('name', filtering.field);\n            if (!setFilter) {\n                continue;\n            }\n            options = {};\n            options[filtering.filter] = value ? value.get('id') : null;\n            results.push(setFilter.set('filterOptions', options));\n        }\n        return results;\n    },\n    actions: {\n        clearFilters: function () {\n            var filters, i, item, len, results;\n            filters = this.get('_filters');\n            results = [];\n            for (i = 0, len = filters.length; i < len; i++) {\n                item = filters[i];\n                if (item.type !== 'date') {\n                    results.push(Ember.set(item, 'value', ''));\n                } else {\n                    results.push(void 0);\n                }\n            }\n            return results;\n        },\n        valueChanged: function (value, fieldName) {\n            var filters, id;\n            this.setDropdownFilterings(fieldName, value);\n            filters = this.get('_filters');\n            if (value) {\n                if (typeof value.get === 'function') {\n                    if (Array.isArray(value)) {\n                        id = value.join();\n                    } else {\n                        id = value.get('id');\n                    }\n                } else {\n                    id = value;\n                }\n            } else {\n                id = null;\n            }\n            filters.findBy('name', fieldName).set('value', id);\n            return this.sendAction('change', value, fieldName);\n        },\n    },\n});\n\n//@set 'filter.value \"change\",a,b\nexport default FormFiltersComponent;\n","export default Ember.HTMLBars.template({\"id\":\"BiBlgwzb\",\"block\":\"{\\\"symbols\\\":[\\\"filter\\\",\\\"&default\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"_filters\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6 col-lg-4 filter-comp-component\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"date\\\",[23,1,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"date-range-picker\\\",null,[[\\\"clearBtn\\\",\\\"start\\\",\\\"end\\\",\\\"value\\\",\\\"title\\\",\\\"wagePeriods\\\"],[[28,\\\"not-eq\\\",[[23,1,[\\\"features\\\",\\\"use_index\\\"]],\\\"index1\\\"],null],[23,1,[\\\"start\\\"]],[23,1,[\\\"end\\\"]],[23,1,[\\\"value\\\"]],[23,1,[\\\"title\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"groupByFilter\\\",[23,1,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"group-by-filter\\\",null,[[\\\"value\\\",\\\"form\\\",\\\"change\\\"],[[23,1,[\\\"value\\\"]],[24,[\\\"form\\\"]],\\\"valueChanged\\\"]]],false],[0,\\\"  \\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,1,[]]],[[\\\"change\\\",\\\"useAsFilter\\\"],[\\\"valueChanged\\\",true]]],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6 col-lg-4\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clearFilters\\\"]],[8],[1,[28,\\\"t\\\",[\\\"filters.clear\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[14,2],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/filters-comp/template.hbs\"}});","import Component from '@ember/component';\nimport { computed } from '@ember/object';\n\nexport default Component.extend({\n    // computed is needed because button disabled needs to be null when off.. disabled=false still renders the disabled\n    isDisabled: computed('disabled', function () {\n        if (this.disabled) return true;\n        else return null;\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"hoU61BHN\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\",\\\"@disabled\\\",\\\"@name\\\",\\\"@form\\\"],[[22,\\\"saving\\\"],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"save\\\"]]],null],\\\"btn btn-m-link btn-block btn-lg save\\\",[22,\\\"isDisabled\\\"],\\\"save-button\\\",[22,\\\"form\\\"]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[12,\\\"name\\\",\\\"cancel-button\\\"],[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-cancel-button\\\"],null]],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"cancel\\\"]]]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/buttons/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isArray } from '@ember/array';\nimport validator from 'tt4/classes/validations';\n\nimport saveTheChildren from 'tt4/mixins/save-the-children';\n\n/**\n *\n * report for collector form\n *\n * usage:\n *  BASIC:\n *      {{collector/form-add form=form}}\n *\n *  ADVANCED:\n *      {{#collector/form-add form=form record=record close=(action (mut show) false) as |form|}}\n            {{#form.fields as |fields fieldcomp|}}\n                {{#each fields as |field|}}\n                    {{fieldcomp field=field}}\n                {{/each}}\n            {{/form.fields}}\n            {{form.buttons}}\n\n            {{form.saved}}\n        {{/collector/form-add}}\n *\n * parameters:\n *      form: collector form name\n *      record: record for the add form\n *      defaults: if record is not given directly (or record is new) you can also give object which is passed to createRecord method\n *      showSaved: if saved page should be shown\n *      only: list columns you want to show (ie \"date,user\")\n *      filters: object containing filters for fields. ie filters=(hash user=(userlevel=\"5\"))\n *\n * actions:\n *      rowAdded: called when new row is created and saved\n *      rowEdited: called when existing row is edited and saved\n *      close: called when cancel is clicked or saved page ok is clicked\n *      fieldChanged: when any field is edited on form action is triggered. Has parameters value and field\n */\n\nexport default Component.extend(saveTheChildren, {\n    collector: service('collector-service'),\n    store: service(),\n    evented: service(),\n    localstorage: service(),\n\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\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            } catch (reason) {\n                set(this, 'error', reason);\n                set(this, 'saving', false);\n                throw reason;\n            }\n        },\n\n        cancel() {\n            get(this, 'close')();\n        },\n\n        close() {\n            get(this, 'close')();\n        },\n    },\n\n    async setRecordDefaults() {\n        const defaults = await get(this, 'defaults');\n        const record = get(this, 'record');\n        // only apply defaults if record value is not set already\n        for (const def in defaults) {\n            if (!get(record, def)) set(record, def, defaults[def]);\n        }\n    },\n\n    async setLsDefaults() {\n        const fields = this.fields;\n        for (var field of fields) {\n            // make sure we don't overwrite any values\n            if (field.type == 'database' && !get(this, 'record.' + field.name)) {\n                let lastused = get(this, 'localstorage').getItem('lastused.' + field.options.form);\n                if (lastused) {\n                    let defValue = lastused[0];\n                    if (\n                        defValue &&\n                        get(this, 'record.isNew') &&\n                        !get(this, 'hide') &&\n                        !field.features.do_not_preselect\n                    ) {\n                        var promisevalue = await this.store.query(\n                            field.options.form,\n                            { id: defValue, form: field.form, field: field.name },\n                            { reload: true },\n                        );\n                        promisevalue = promisevalue?.firstObject;\n                        if (promisevalue && get(promisevalue, 'row_info.status') != 'removed') {\n                            set(field, 'value', promisevalue);\n                            set(this, 'record.' + field.name, await promisevalue);\n                        }\n                    }\n                }\n            }\n        }\n    },\n    setFilters(depends) {\n        const filterBy = this.getFilters(this.form);\n        const filters = {};\n        filterBy.forEach((item) => {\n            if (depends && item.with !== depends) return;\n            if (!filters[item.field]) filters[item.field] = {};\n            filters[item.field][item.filter] = get(this, 'record.' + item.with);\n        });\n\n        Object.keys(filters).forEach((key) => {\n            set(this, 'filters.' + key, filters[key]);\n        });\n    },\n\n    /**\n     * Hide or show fields if field.features.hide setting is conditional\n     * If called without field parameter then goes through all fields that have some kind of conditional setting\n     * else only for the given field name\n     * Sets true/false to fields \"private\" _hide variable that is used atleast in form-add/field component\n     * Examples:\n     * Name: hide, Value: [{\"alasveto\": \"eka\"}]\n     * Name: hide, Value: [{\"alasveto\": \"!(empty)\"}]\n     * Name: hide, Value: [{\"alasveto\": \"(empty)\"}]\n     * @param {string} field the external type of the field also known as \"name\"\n     */\n    setConditionalHides(field = false) {\n        get(this, 'conditionalHides').forEach((item) => {\n            get(item, 'features.hide').forEach((rule) => {\n                let ruleField = Object.keys(rule)[0].split('.')[0];\n                if ((field && ruleField.includes(field)) || !field) {\n                    set(\n                        item,\n                        '_hide',\n                        !validator._is_visible(get(this, 'record'), get(item, 'features.hide')),\n                    );\n                }\n            });\n        });\n    },\n\n    /**\n     * Example of one filter {field: \"task\", filter: \"project\", with: \"project\"}\n     * @param {*} form\n     */\n    getFilters(form) {\n        const filters = [];\n        const fields = this.collector.fieldArray(form);\n        for (const field of fields) {\n            let reload = field.features.reload;\n            if (reload) {\n                if (!isArray(reload)) reload = [reload];\n\n                for (const reloadfield of reload) {\n                    filters.push({\n                        field: reloadfield, // field name that needs to be reloaded\n                        filter: field.options.form, // filter name that is used to fetch objects. Normally the form where reloader field points to. ie tasks?project=1234 => project\n                        with: field.name, // name of the field to use as filter .. this needs to found from model\n                    });\n                }\n            }\n        }\n\n        return filters;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"VWQFWtrg\",\"block\":\"{\\\"symbols\\\":[\\\"@error\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n    \\\"],[5,\\\"error-message\\\",[],[[\\\"@error\\\"],[[23,1,[]]]]],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/error/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    collector: service('collector-service'),\n\n    classNameBindings: ['fieldNameClass'],\n\n    fieldNameClass: computed('field', function () {\n        return 'field-' + get(this, 'field.name');\n    }),\n\n    fieldForFieldContainer: computed('field', function () {\n        const field = get(this, 'field');\n        let value = get(this, 'record.' + get(field, 'name'));\n        if (value && typeof value === 'object' && get(value, 'id')) {\n            this.setFieldValue(get(value, 'id'));\n        } else {\n            this.setFieldValue(value);\n        }\n        return field;\n    }),\n\n    visible: computed('only', 'field._hide', function () {\n        if (get(this, 'field._hide')) return false;\n        if (!get(this, 'only')) return true;\n        return get(this, 'only').split(',').includes(get(this, 'field.name'));\n    }),\n\n    setFieldValue(value) {\n        set(this, 'field.value', value);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"HCOm4hIu\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"visible\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"component\\\",[\\\"collector/field-container\\\"],[[\\\"model\\\",\\\"usePowerDropdown\\\",\\\"filter\\\",\\\"field\\\",\\\"change\\\"],[[24,[\\\"record\\\"]],true,[28,\\\"get\\\",[[24,[\\\"filters\\\"]],[24,[\\\"field\\\",\\\"name\\\"]]],null],[24,[\\\"fieldForFieldContainer\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"fieldChanged\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/field/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n});\n","export default Ember.HTMLBars.template({\"id\":\"Qok4gv78\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"&default\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[14,2,[[24,[\\\"fields\\\"]],[28,\\\"component\\\",[\\\"collector/form-add/field\\\"],[[\\\"record\\\",\\\"filters\\\",\\\"fieldChanged\\\"],[[24,[\\\"record\\\"]],[24,[\\\"filters\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"fieldChanged\\\"]]],null]]]],[24,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"fieldChanged\\\"]]],null]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[\\\"collector/form-add/field\\\"],[[\\\"record\\\",\\\"field\\\",\\\"filters\\\",\\\"only\\\",\\\"fieldChanged\\\"],[[24,[\\\"record\\\"]],[23,1,[]],[24,[\\\"filters\\\"]],[24,[\\\"only\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"fieldChanged\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/fields/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { debounce, next } from '@ember/runloop';\n\nexport default Component.extend({\n    store: service(),\n    collector: service('collector-service'),\n    ttapi: service(),\n    flags: service(),\n    session: service(),\n\n    form: 'abcense',\n\n    fields: computed('formtype', function () {\n        const fields = this.collector.fieldArray(this.form).mapBy('name');\n        if (this.formtype === 'multi')\n            return fields\n                .filter((field) => !['starttime', 'endtime', 'absence_hours'].includes(field))\n                .join(',');\n        else\n            return fields\n                .filter((field) => !['dayamount', 'status', 'enddate'].includes(field))\n                .join(',');\n    }),\n\n    absencetypes: computed('formtype', function () {\n        if (this.formtype === 'multi') return 'both||days||(empty)';\n        else return 'both||hours||(empty)';\n    }),\n\n    didReceiveAttrs() {\n        if (!this.record) this.record = this.store.createRecord('abcense', this.defaults);\n        // set user always my self when adding new\n        if (this.record && this.record.isNew) {\n            if (!this.record.user) {\n                next(this, function () {\n                    if (this.record && !get(this.record, 'user')) {\n                        set(this.record, 'user', this.store.peekRecord('user', this.session.currentUser.id));\n                    }\n                });\n            }\n            set(this, 'formtype', 'multi'); // also when adding, always show multi-day absenceform first\n        } else {\n            if (get(this, 'record.dayamount')) set(this, 'formtype', 'multi');\n            else set(this, 'formtype', 'single');\n        }\n    },\n\n    actions: {\n        /**\n         * when formtype is changed we need to replace some values so they wouldn't save to db\n         */\n        changeType(type) {\n            set(this, 'formtype', type);\n            if (type === 'multi') {\n                set(this, 'record.starttime', null);\n                set(this, 'record.endtime', null);\n                // instead of setting dayamount to 1 we use fieldChanged to set enddate to startdate so it will fetch the days from ttapi\n                if (get(this, 'record.startdate')) {\n                    this.send('fieldChanged', 'enddate', get(this, 'record.startdate'));\n                }\n            } else {\n                set(this, 'record.enddate', get(this, 'record.startdate'));\n                set(this, 'record.dayamount', null);\n            }\n        },\n\n        fieldChanged(value, field) {\n            if (this.flags.test('ember-movenium-form-add-absence')) {\n                // addon form-add returns (field, value) so we have to swap them around\n                [value, field] = [field, value];\n                set(this.record, field, value);\n            }\n\n            // when single adding is on startdate and enddate must be the same all the time\n            if (field === 'startdate' && this.formtype === 'single')\n                set(this, 'record.enddate', value);\n\n            if (field === 'startdate') {\n                let endDate = get(this, 'record.enddate');\n\n                if (!endDate || new Date(value) > new Date(endDate)) {\n                    set(this, 'record.enddate', value);\n                }\n            }\n\n            if (\n                (field === 'startdate' || field === 'enddate' || field === 'abcensetype') &&\n                this.formtype === 'multi'\n            ) {\n                if (get(this, 'record.startdate') && get(this, 'record.enddate')) {\n                    set(this, 'disableForm', true);\n                    debounce(this, this.fetchAbsenceDays, 1000);\n                }\n            }\n        },\n    },\n\n    /**\n     * fetch absence days from ttapi and set value to record.dayamount\n     */\n    async fetchAbsenceDays() {\n        const country =\n            '&country=' + get(get(this, 'store').peekAll('company-info'), 'firstObject.country');\n\n        let url =\n            'absence/getDays?date=' +\n            get(this, 'record.startdate') +\n            '_' +\n            get(this, 'record.enddate') +\n            country;\n        url +=\n            '&userid=' +\n            (get(this, 'record.user')\n                ? get(this, 'record.user.id')\n                : get(this, 'session.currentUser.id'));\n        url += get(this, 'record.abcensetype.id')\n            ? '&absencetype=' + get(this, 'record.abcensetype.id')\n            : '';\n        const back = await this.ttapi.request(url);\n        set(this, 'record.dayamount', back.days);\n        set(this, 'disableForm', false);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"+cEJ7fr+\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@showSaved\\\",\\\"@rowAdded\\\",\\\"@rowEdited\\\",\\\"@close\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"formtype\\\"]],\\\"multi\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"changeType\\\",\\\"multi\\\"]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"menu.add_abcense_multiple\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"formtype\\\"]],\\\"single\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"changeType\\\",\\\"single\\\"]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"menu.add_abcense_single\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-absence\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@rowAdded\\\",\\\"@rowEdited\\\",\\\"@close\\\",\\\"@showSaved\\\",\\\"@disabled\\\",\\\"@filters\\\",\\\"@onFieldChange\\\",\\\"@only\\\"],[[23,0,[\\\"form\\\"]],[23,0,[\\\"record\\\"]],[23,6,[]],[23,7,[]],[23,8,[]],[23,5,[]],[23,0,[\\\"disableForm\\\"]],[28,\\\"hash\\\",null,[[\\\"abcensetype\\\"],[[28,\\\"hash\\\",null,[[\\\"type\\\"],[[23,0,[\\\"absencetypes\\\"]]]]]]]],[28,\\\"action\\\",[[23,0,[]],\\\"fieldChanged\\\"],null],[23,0,[\\\"fields\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\",\\\"@forceType\\\",\\\"@showSaved\\\",\\\"@placeholder\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]],[23,4,[\\\"forceType\\\"]],[23,5,[]],[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"name\\\"]],\\\"description\\\"],null],[28,\\\"t\\\",[\\\"gdpr.no_sensitive_data_message\\\"],null]],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"rowAdded\\\",\\\"rowEdited\\\",\\\"close\\\",\\\"showSaved\\\",\\\"defaults\\\",\\\"disabled\\\",\\\"filters\\\",\\\"fieldChanged\\\",\\\"only\\\"],[[24,[\\\"form\\\"]],[24,[\\\"record\\\"]],[24,[\\\"rowAdded\\\"]],[24,[\\\"rowEdited\\\"]],[24,[\\\"close\\\"]],[24,[\\\"showSaved\\\"]],[24,[\\\"defaults\\\"]],[24,[\\\"disableForm\\\"]],[28,\\\"hash\\\",null,[[\\\"abcensetype\\\"],[[28,\\\"hash\\\",null,[[\\\"type\\\"],[[23,0,[\\\"absencetypes\\\"]]]]]]]],[28,\\\"action\\\",[[23,0,[]],\\\"fieldChanged\\\"],null],[23,0,[\\\"fields\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/absence/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    router: service(),\n    tagName: '',\n\n    selectedComponent: computed('form', function () {\n        const customForms = {\n            worktime: 'collector/form-add/forms/worktime',\n            project: 'collector/form-add/forms/project',\n            employer: 'collector/form-add/forms/employer',\n            abcense: 'collector/form-add/forms/absence',\n            wage_period: 'collector/form-add/forms/wageperiod',\n            diary: 'collector/form-add/forms/diary',\n            worktask: 'collector/form-add/forms/worktask',\n            worksitediary: 'collector/form-add/forms/worksitediary',\n            presence: 'collector/form-add/forms/presence',\n            site_safety_observation: 'collector/form-add/forms/siteSafetyObservation',\n            tooltype: 'collector/form-add/forms/tooltype',\n        };\n\n        if (Object.keys(customForms).includes(get(this, 'form')))\n            return customForms[get(this, 'form')];\n        else return 'collector/form-add';\n    }),\n\n    preserveRecord: computed('form', function () {\n        return this.router.currentRouteName === 'dashboard' && this.form === 'worktime';\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"E9xOzAGk\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"component\\\",[[24,[\\\"selectedComponent\\\"]]],[[\\\"form\\\",\\\"record\\\",\\\"rowAdded\\\",\\\"rowEdited\\\",\\\"close\\\",\\\"showSaved\\\",\\\"defaults\\\",\\\"preserveRecordOnDestroy\\\"],[[24,[\\\"form\\\"]],[24,[\\\"record\\\"]],[24,[\\\"rowAdded\\\"]],[24,[\\\"rowEdited\\\"]],[24,[\\\"close\\\"]],[24,[\\\"showSaved\\\"]],[24,[\\\"defaults\\\"]],[24,[\\\"preserveRecord\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/auto/template.hbs\"}});","import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { A } from '@ember/array';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n\n    columns: computed(async function () {\n        let retBanks = A();\n\n        const banks = await this.store.findAll('bank');\n        banks.forEach((bank) => {\n            const { id, name } = bank;\n            retBanks.pushObject({ id, name });\n        });\n\n        return retBanks;\n    }),\n\n    didReceiveAttrs() {\n        if (this.checkedRows) {\n            this.record.user = this.checkedRows[0];\n        }\n    },\n\n    actions: {\n        fieldChanged(value) {\n            const bank = this.store.peekRecord('bank', value);\n            let column = bank.column;\n\n            if (column === null || column === '') {\n                column = 'bank_' + bank.id;\n            }\n            this.record.column = column;\n            // this.record.hours = 4\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"6pSl8QPU\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,1,[\\\"name\\\"]],\\\"column\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[23,1,[\\\"name\\\"]],\\\"user\\\"],null],[24,[\\\"checkedRows\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"bankdeducter.add.users_selected\\\"],null],false],[0,\\\":\\\"],[7,\\\"b\\\",true],[8],[0,\\\" \\\"],[1,[24,[\\\"checkedRows\\\",\\\"length\\\"]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,0,[\\\"fieldcomp\\\"]],\\\"expected `this.fieldcomp` to be a contextual component but found a string. Did you mean `(component this.fieldcomp)`? ('tt4/pods/collector/form-add/forms/bankdeducter/template.hbs' @ L7:C14) \\\"],null]],[[\\\"class\\\",\\\"field\\\"],[[28,\\\"concat\\\",[\\\"dropdown_\\\",[23,1,[\\\"name\\\"]]],null],[23,1,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main \\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.bank_name\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[4,\\\"if\\\",[[23,1,[\\\"features\\\",\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-control add-fields\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"name\\\",\\\"options\\\",\\\"classes\\\",\\\"bubbleChange\\\"],[\\\"column\\\",[28,\\\"await\\\",[[24,[\\\"columns\\\"]]],null],\\\"form-control add-fields\\\",\\\"fieldChanged\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/bankdeducter/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action, get, setProperties } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\nimport { Promise } from 'rsvp';\nimport { isPresent } from '@ember/utils';\n\nexport default class CollectorFormAddFormsDiaryComponent extends Component {\n    @service flags;\n    @service store;\n    @service session;\n    @service('collector-service') Collector;\n\n    @tracked record;\n    @tracked saving;\n    @tracked date;\n    @tracked project;\n\n    constructor() {\n        super(...arguments);\n        if (!this.args.record && this.flags.test('ember-movenium-form-add-diary')) {\n            this.record = this.store.createRecord('diary', { date: moment().format('YYYY-MM-DD') });\n        } else this.record = this.args.record;\n        this.date = this.record.date;\n        this.project = this.record.project;\n    }\n\n    @action\n    async onFieldChange(field, value) {\n        if (field === 'date') this.date = value;\n        if (field === 'project') this.project = value;\n        if (field === 'project' || field === 'date') await this.setWorkdayStrength();\n        this.record[field] = value;\n    }\n\n    @action\n    async save() {\n        this.saving = true;\n        this.record['weather'] = JSON.stringify(this.record['weather']);\n        await this.record.save();\n        this.saving = false;\n        this.args.close();\n    }\n\n    @action\n    setValue(val) {\n        this.record['event'] = val;\n    }\n\n    async setWorkdayStrength() {\n        const rowsForDate = await this.store.query('diary', {\n            date: this.date,\n            project: this.project.id,\n            sideload: true,\n            order: 'date-',\n        });\n        if (rowsForDate.length > 0) {\n            this.record = rowsForDate.firstObject;\n        } else {\n            const data = {};\n            const strength = await this.getWorkdayStrength(this.date, this.project);\n            setProperties(data, {\n                date: this.date,\n                project: this.project,\n                workforce_foremen: strength.workforce_foremen ? strength.workforce_foremen : 0,\n                workforce_subcontractor: strength.workforce_subcontractor\n                    ? strength.workforce_subcontractor\n                    : 0,\n                workforce_workers: strength.workforce_workers ? strength.workforce_workers : 0,\n            });\n            this.record = this.store.createRecord('diary', data);\n        }\n    }\n\n    async getWorkdayStrength(date, project) {\n        let worktimes = A([]);\n        let presences = A([]);\n\n        if (this.Collector.formExists('worktime')) {\n            worktimes = this.store.query('worktime', {\n                date: date,\n                project: project.id,\n                limit: 'all',\n                sideload: ['user.employer', 'user.userlevel', 'employer.name'],\n            });\n        }\n        if (this.Collector.formExists('presence')) {\n            presences = this.store.query('presence', {\n                date: date,\n                project: project.id,\n                limit: 'all',\n                sideload: ['user.employer', 'user.userlevel', 'employer.name'],\n            });\n        }\n        const data = await Promise.all([worktimes, presences]);\n        const rows = data[0].toArray().concat(data[1].toArray()).uniqBy('user');\n        const employer = get(this.session.currentUser.employer, 'id');\n        let own = null;\n\n        if (isPresent(employer)) {\n            if (this.Collector.testNeeds(['project.maincontractor'])) {\n                const maincontractorId = project.maincontractor\n                    ? get(project.maincontractor, 'id')\n                    : null;\n                own = rows.filterBy('employer.id', maincontractorId);\n            } else own = rows.filterBy('employer.id', employer);\n        } else {\n            own = rows;\n        }\n        const foremen = own.filter((item) => [3, 5, 6].includes(parseInt(item.user.userlevel)));\n\n        const subStrength = rows.length - own.length;\n        const foremenStrength = foremen.length;\n        const workerStrength = own.length - foremenStrength;\n\n        return {\n            workforce_workers: workerStrength,\n            workforce_foremen: foremenStrength,\n            workforce_subcontractor: subStrength,\n        };\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"iyux0U6Z\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@close\\\"],\\\"statements\\\":[[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@error\\\",\\\"@mandatory\\\"],[[28,\\\"t\\\",[\\\"diary.date\\\"],null],null,true]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[5,\\\"addon/fields/date\\\",[],[[\\\"@value\\\",\\\"@onChange\\\"],[[23,0,[\\\"record\\\",\\\"date\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"date\\\"],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@error\\\",\\\"@mandatory\\\"],[[28,\\\"t\\\",[\\\"diary.project\\\"],null],null,true]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[5,\\\"addon/fields/database\\\",[],[[\\\"@form\\\",\\\"@name\\\",\\\"@options\\\",\\\"@value\\\",\\\"@onChange\\\"],[\\\"diary\\\",\\\"project\\\",[28,\\\"hash\\\",null,[[\\\"form\\\",\\\"fields\\\"],[\\\"project\\\",[28,\\\"array\\\",[\\\"number\\\",\\\"name\\\"],null]]]],[23,0,[\\\"record\\\",\\\"project\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"project\\\"],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"record\\\",\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"diary\\\",[23,0,[\\\"record\\\"]],[23,0,[\\\"onFieldChange\\\"]],[23,5,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"eq\\\",[[23,4,[\\\"name\\\"]],\\\"date\\\"],null],[28,\\\"eq\\\",[[23,4,[\\\"name\\\"]],\\\"project\\\"],null]],null]],null,{\\\"statements\\\":[],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,4,[\\\"name\\\"]],\\\"weather\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@error\\\",\\\"@mandatory\\\"],[[28,\\\"t\\\",[\\\"diary.weather\\\"],null],null,false]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[5,\\\"addon/fields/weather\\\",[],[[\\\"@value\\\",\\\"@onChange\\\"],[[23,0,[\\\"record\\\",\\\"weather\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"weather\\\"]]],null]],null]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,4,[\\\"type\\\"]],\\\"databasearray\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                     \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@error\\\",\\\"@mandatory\\\"],[[28,\\\"t\\\",[\\\"diary.event\\\"],null],null,false]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"diary/database-array\\\",null,[[\\\"field\\\",\\\"change\\\",\\\"model\\\"],[[23,4,[]],[28,\\\"fn\\\",[[23,0,[\\\"setValue\\\"]]],null],[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n                     \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[4]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Buttons\\\"]],[],[[\\\"@saving\\\",\\\"@save\\\",\\\"@cancel\\\"],[[23,0,[\\\"saving\\\"]],[23,0,[\\\"save\\\"]],[23,5,[]]]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/diary/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action, setProperties } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\nimport { htmlSafe } from '@ember/string';\nimport podNames from 'ember-component-css/pod-names';\nimport { validateBusinessId, hetuvalidation } from 'tt4/utils/businessid_validation';\n\nexport default class CollectorFormAddFormsEmployerComponent extends Component {\n    @service flags;\n    @service store;\n    @service intl;\n    @service cc;\n    @service notifications;\n    @service session;\n    @service ttapi;\n    @service('collector-service') Collector;\n    @service('vastuu-group') vastuuGroup;\n\n    @tracked record;\n    @tracked loading;\n    @tracked showInviteButton;\n    @tracked message;\n    @tracked messageClass;\n    @tracked TvReport;\n    @tracked showTvModal;\n    @tracked businessIDError;\n    @tracked loadingTvReport\n\n    constructor() {\n        super(...arguments);\n        if (!this.args.record) {\n            this.createEmployerRecord();\n        } else {\n            this.record = this.args.record;\n        }\n    }\n    get styleNamespace() {\n        return podNames['collector/form-add/forms/employer'];\n    }\n    @action\n    onFieldChange(field, value) {\n        this.record[field] = value;\n        this.businessIDError = '';\n        if (\n            field === 'emp_id' &&\n            (!this.record['emp_id_type'] || parseInt(this.record['emp_id_type']) === 0)\n        ) {\n            if (!validateBusinessId(value) && !hetuvalidation(value)) {\n                this.businessIDError = 'employer.emp_id.wrong_format';\n            }\n        }\n    }\n\n    @action\n    addNew() {\n        this.createEmployerRecord();\n    }\n\n    @action\n    addSame() {\n        this.record = this.Collector.copyRecord(this.record);\n    }\n\n    createEmployerRecord() {\n        this.record = this.store.createRecord('employer');\n    }\n\n    get showVgButton() {\n        return this.Collector.testNeeds(['!products.vg_reliable_partner_disabled']);\n    }\n\n    @action\n    async getInfoFromTV() {\n        if (!this.Collector.testNeeds(['!products.vg_reliable_partner_disabled'])) {\n            return;\n        }\n        this.loading = true;\n        let message = '';\n        const empId = this.record.emp_id;\n        if (isEmpty(empId)) {\n            this.loading = false;\n            return;\n        }\n\n        try {\n            let data = await this.vastuuGroup.getReliablePartnerStatus(empId);\n            if (!data.error) data = data.firstObject;\n            message =\n                data && data.status && !data.error\n                    ? this.getFoundStatusMessage(data, empId)\n                    : this.getNotFoundStatusMessage();\n        } catch (e) {\n            message = this.getFailedMessage();\n        } finally {\n            this.loading = false;\n            this.message = message;\n        }\n    }\n\n    @action\n    async sendInviteTilaajavastuuEmail() {\n        this.notifications.success(this.intl.t('general.email_sent'), {\n            autoClear: true,\n        });\n        this.tvText = this.intl.t('employer.invite_tilaajavastuu_email', {\n            company: this.session.currentUser.company,\n        });\n        const addition = this.intl.t('employer.tilaajavastuu_invite_footer_text');\n        await this.ttapi.request('/sendEmail', {\n            method: 'post',\n            data: {\n                email: this.record['emp_email'],\n                content: this.tvText + '<br><br>' + addition,\n                title: this.intl.t('employer.invite_tilaajavastuu_title'),\n            },\n        });\n        this.showInviteModal = false;\n    }\n\n    getFoundStatusMessage(data, empId) {\n        this.showTvModal = true;\n        setProperties(this.record, {\n            name: data.company,\n            emp_country: data.country.toLowerCase(),\n            tv_status: data.status.toLowerCase(),\n        });\n        switch (data.status) {\n            case 'Ok':\n                this.messageClass = 'alert-success';\n                break;\n            case 'Seis':\n                this.messageClass = 'alert-danger';\n                break;\n            default:\n                this.messageClass = 'alert-warning';\n        }\n        this.showTvReport(empId);\n\n        const statusDescription = this.intl.t(`employer.vg_status.description.${data.status.toLowerCase()}`);\n\n        return htmlSafe(\n            '<div> \\\n                                <h3>' +\n                this.intl.t('employer.add.status') +\n                ': <b>' +\n                data.status +\n                '</b></h3> \\\n                                <h4>&nbsp;&nbsp;&nbsp;' +\n                statusDescription +\n                '</h4> \\\n                            </div>',\n        );\n    }\n\n    getNotFoundStatusMessage() {\n        this.record['tv_status'] = 'ei_loydy';\n        this.record['archive_code'] = '';\n        this.messageClass = 'alert-danger';\n        this.showInviteButton = true;\n        return htmlSafe(\n            '<div> \\\n                                <h3><b>' +\n                this.intl.t('employer.add.status.notfound') +\n                '</b></h3>' +\n                this.intl.t('employer.add.status.marketing') +\n                '\\\n                            </div>',\n        );\n    }\n\n    getFailedMessage() {\n        this.record['tv_status'] = 'ei_loydy';\n        this.record['archive_code'] = '';\n        this.messageClass = 'alert-danger';\n        return htmlSafe(\n            '<div> \\\n                                <h3><b>' +\n                this.intl.t('employer.add.status.failed') +\n                '</b></h3> \\\n                            </div>',\n        );\n    }\n\n    async showTvReport(empId) {\n        this.loadingTvReport = true;\n        try {\n            this.TvReport = await this.vastuuGroup.getReliablePartnerHtmlreport(empId);\n        } catch (e) {\n            this.notifications.warning(e, { autoClear: true });\n        }\n        this.loadingTvReport = false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"fkYXGhFc\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"M\\\",\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@close\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"message\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"alert \\\",[23,0,[\\\"messageClass\\\"]],\\\" text-center\\\"]]],[8],[0,\\\"\\\\n            \\\"],[1,[23,0,[\\\"message\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showInviteButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"showInviteModal\\\"]]],null],true],null]],[8],[1,[28,\\\"t\\\",[\\\"employer.tilaajavastuu_invite_button\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\",\\\"@addNew\\\",\\\"@addSame\\\"],[\\\"employer\\\",[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"onFieldChange\\\"],null],[28,\\\"action\\\",[[23,0,[]],[23,7,[]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"addSame\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,4,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,6,[\\\"name\\\"]],\\\"emp_id\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"emp-id-field\\\"],[8],[0,\\\"\\\\n                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@error\\\",\\\"@mandatory\\\",\\\"@class\\\",\\\"@label\\\"],[[28,\\\"t\\\",[\\\"employer.emp_id\\\"],null],[22,\\\"businessIDError\\\"],true,[28,\\\"concat\\\",[\\\"ember-movenium-field-\\\",[23,6,[\\\"name\\\"]]],null],[28,\\\"t\\\",[\\\"employer.emp_id\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[5,\\\"input\\\",[[3,\\\"on\\\",[\\\"change\\\",[28,\\\"fn\\\",[[23,3,[\\\"OnChange\\\"]],[23,6,[\\\"name\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,6,[\\\"name\\\"]]],null]],null]]]],[[\\\"@type\\\",\\\"@value\\\"],[\\\"text\\\",[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,6,[\\\"name\\\"]]],null]]]],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                        \\\"],[5,\\\"addon/loading-button\\\",[[12,\\\"title\\\",[28,\\\"unless\\\",[[23,0,[\\\"showVgButton\\\"]],[28,\\\"t\\\",[\\\"employer.actions.vg_disabled_tooltip\\\"],null]],null]]],[[\\\"@classes\\\",\\\"@loading\\\",\\\"@onClick\\\",\\\"@disabled\\\"],[\\\"fetch-tv-button\\\",[23,0,[\\\"loading\\\"]],[23,0,[\\\"getInfoFromTV\\\"]],[28,\\\"not\\\",[[23,0,[\\\"showVgButton\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"employer.get_tilaajavastuu_info\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,5,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,6,[\\\"name\\\"]],[23,6,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,6,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,3,[\\\"OnChange\\\"]],[23,6,[\\\"name\\\"]]],null],[23,6,[\\\"mandatory\\\"]],[23,6,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[6]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[4,5]}],[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showTvModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@outsideClose\\\"],[[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showTvModal\\\"]]],null],false],null],true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"loadingTvReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,0,[\\\"TvReport\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary pull-right mb-5\\\"],[11,\\\"disabled\\\",[23,0,[\\\"loadingTvReport\\\"]]],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"showTvModal\\\"]]],null],false],null]],[8],[1,[28,\\\"t\\\",[\\\"employer.add.tv_report.read\\\"],null],false],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showInviteModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@outsideClose\\\"],[[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showInviteModal\\\"]]],null],false],null],true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mb-5 pr-5 pl-5\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"employer.tilaajavastuu_email_recipent\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control add-fields inline-edit\\\",[23,0,[\\\"record\\\",\\\"emp_email\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mb-5 pr-5 pl-5\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"employer.tilaajavastuu_email_text\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"class\\\",\\\"value\\\"],[\\\"3\\\",\\\"form-control add-fields inline-edit\\\",[23,0,[\\\"tilaajavastuuText\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"Footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-default pull-right mb-5\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"showInviteModal\\\"]]],null],false],null]],[8],[1,[28,\\\"t\\\",[\\\"modal.clear\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary pull-right mb-5\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"sendInviteTilaajavastuuEmail\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"modal.ok\\\"],null],false],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/employer/template.hbs\"}});","import Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { action } from \"@ember/object\";\nimport { inject as service } from \"@ember/service\";\n\nexport default class CollectorFormAddFormsOrientationComponent extends Component {\n    @service store;\n    @service(\"collector-service\") Collector;\n    @tracked record;\n\n    get showFields() {\n        const fields = [\"parent\", \"workpermit\"];\n\n        if (this.Collector.testNeeds([\"products.orientations_allow_employer_edit\"])) {\n            fields.push(\"ori_employer\");\n        }\n\n        return fields;\n    }\n\n    constructor() {\n        super(...arguments);\n        this.record = this.args.record;\n    }\n    @action\n    onFieldChange(field, value) {\n        this.record[field] = value;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"I/5LnGEs\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@close\\\"],\\\"statements\\\":[[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"orientation\\\",[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"onFieldChange\\\"],null],[28,\\\"action\\\",[[23,0,[]],[23,5,[]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"in-array\\\",[[23,4,[\\\"name\\\"]],[23,0,[\\\"showFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/orientation/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class CollectorFormAddFormsPresenceComponent extends Component {\n    @service store;\n    @service('collector-service') Collector;\n\n    @tracked record;\n\n    constructor() {\n        super(...arguments);\n        this.record = this.args.record\n            ? this.args.record\n            : this.store.createRecord('presence', { date: moment().format('YYYY-MM-DD') });\n        this.filters = {\n            project: { presence_project: 'on' },\n        };\n    }\n\n    @action\n    onFieldChange(field, value) {\n        this.record[field] = value;\n    }\n\n    @action\n    getField(field) {\n        if (\n            field.name === 'description' &&\n            this.Collector.testNeedsOne('products.personalliggareandid06')\n        ) {\n            set(field, 'features.mandatory', true);\n        }\n        return field;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"msnWvGBS\",\"block\":\"{\\\"symbols\\\":[\\\"form\\\",\\\"fields\\\",\\\"fieldcomp\\\",\\\"field\\\",\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@close\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-presence\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"presence\\\",[23,0,[\\\"record\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]]],null],[23,9,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,5,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"map\\\",[[28,\\\"fn\\\",[[23,0,[\\\"getField\\\"]]],null],[23,6,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,7,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@forceType\\\",\\\"@disabled\\\",\\\"@filters\\\"],[[23,8,[\\\"name\\\"]],[23,8,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,8,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,5,[\\\"OnChange\\\"]],[23,8,[\\\"name\\\"]]],null],[23,8,[\\\"features\\\",\\\"mandatory\\\"]],[23,8,[\\\"forceType\\\"]],[23,8,[\\\"features\\\",\\\"disabled\\\"]],[23,0,[\\\"filters\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[6,7]}],[0,\\\"\\\\n        \\\"],[6,[23,5,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,5,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"close\\\",\\\"showSaved\\\"],[\\\"presence\\\",[23,0,[\\\"record\\\"]],[23,9,[]],true]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"fields\\\"]],\\\"expected `form.fields` to be a contextual component but found a string. Did you mean `(component form.fields)`? ('tt4/pods/collector/form-add/forms/presence/template.hbs' @ L34:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[28,\\\"map\\\",[[28,\\\"fn\\\",[[23,0,[\\\"getField\\\"]]],null],[23,2,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[]],\\\"expected `fieldcomp` to be a contextual component but found a string. Did you mean `(component fieldcomp)`? ('tt4/pods/collector/form-add/forms/presence/template.hbs' @ L36:C18) \\\"],null]],[[\\\"field\\\",\\\"model\\\",\\\"filters\\\"],[[23,4,[]],[24,[\\\"record\\\"]],[23,0,[\\\"filters\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[2,3]},null],[0,\\\"\\\\n        \\\"],[1,[23,1,[\\\"buttons\\\"]],false],[0,\\\"\\\\n        \\\"],[1,[23,1,[\\\"saved\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/presence/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { max } from '@ember/object/computed';\n\nexport default class CollectorFormAddFormsProjectComponent extends Component {\n    @service flags;\n    @service store;\n    @service('collector-service') Collector;\n\n    @tracked record;\n    @tracked projectNumbers;\n\n    @max('projectNumbers') maxNumber;\n\n    constructor() {\n        super(...arguments);\n        this.allProjects = this.getAllProjects();\n        if (!this.args.record && this.flags.test('ember-movenium-form-add-projects')) {\n            this.createProjectRecord();\n        }\n    }\n\n    get defaults() {\n        return this.getDefaults();\n    }\n\n    @action\n    onFieldChange(field, value) {\n        this.record[field] = value;\n    }\n\n    @action\n    addNew() {\n        this.createProjectRecord();\n    }\n\n    @action\n    addSame() {\n        this.record = this.Collector.copyRecord(this.record);\n    }\n\n    async getDefaults() {\n        let _defaults = {};\n        const projects = await this.allProjects;\n        this.projectNumbers = projects\n            .mapBy('number')\n            .map((num) => parseInt(num, 10))\n            .filter((filtered) => !isNaN(filtered));\n\n        const biggestNumber = this.projectNumbers.length !== 0 ? this.maxNumber : 0;\n        _defaults.number = biggestNumber + 1;\n        return _defaults;\n    }\n\n    async getAllProjects() {\n        return await this.store.findAll('project');\n    }\n\n    async createProjectRecord() {\n        const _defaults = await this.defaults;\n        this.record = this.store.createRecord('project', _defaults);\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"KeW/Hr0C\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@close\\\"],\\\"statements\\\":[[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\",\\\"@addNew\\\",\\\"@addSame\\\"],[\\\"project\\\",[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"onFieldChange\\\"],null],[28,\\\"action\\\",[[23,0,[]],[23,5,[]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"addSame\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/project/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class CollectorFormAddFormsSiteSafetyObservationComponent extends Component {\n    @service store;\n    @service flags;\n\n    @tracked record;\n\n    constructor() {\n        super(...arguments);\n        this.record = this.store.createRecord('site_safety_observation');\n    }\n\n    @action\n    onFieldChange(field, value) {\n        this.record[field] = value;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"nYuv79NJ\",\"block\":\"{\\\"symbols\\\":[\\\"@close\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-siteSafetyObservation\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"site_safety_observation\\\",[23,0,[\\\"record\\\"]],[23,0,[\\\"onFieldChange\\\"]],[23,1,[]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"collector/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\",\\\"@showSaved\\\"],[\\\"site_safety_observation\\\",[23,0,[\\\"record\\\"]],[23,1,[]],true]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/siteSafetyObservation/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class CollectorFormAddTooltypeComponent extends Component {\n    @service store;\n    @service flags;\n\n    @tracked record;\n\n    constructor() {\n        super(...arguments);\n        this.record = this.store.createRecord('tooltype');\n    }\n\n    @action\n    onFieldChange(field, value) {\n        this.record[field] = value;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"BqsCOZvp\",\"block\":\"{\\\"symbols\\\":[\\\"@close\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-tooltype\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"tooltype\\\",[23,0,[\\\"record\\\"]],[23,0,[\\\"onFieldChange\\\"]],[23,1,[]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"collector/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\",\\\"@showSaved\\\"],[\\\"tooltype\\\",[23,0,[\\\"record\\\"]],[23,1,[]],true]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/tooltype/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { htmlSafe } from '@ember/string';\nimport workPermitUtils from 'tt4/utils/work-permit';\n\nexport default Component.extend({\n    store: service(),\n    intl: service(),\n    gui: service(),\n    form: 'user',\n\n    userlevelInfo: computed(function () {\n        if (this.intl.primaryLocale !== 'fi') return null;\n\n        const linkToCommunityMovenium =\n            'https://ohjeet.visma.fi/articles/#!visma-movenium/k-ytt-j-roolit';\n        const linkToCommunityOtta = get(this, 'intl').t('click.help_link.to.community_otta');\n\n        let linkToCommunity;\n        const brand = get(this, 'gui').getBrand();\n\n        // eslint-disable-next-line no-irregular-whitespace\n        if (brand === 'otta') {\n            linkToCommunity = linkToCommunityOtta;\n        } else {\n            linkToCommunity = linkToCommunityMovenium;\n        }\n\n        return htmlSafe(\n            this.intl.t('user.userlevel.info', {\n                link:\n                    \"<a href='\" +\n                    linkToCommunity +\n                    \"'>\" +\n                    this.intl.t('user.userlevel.info.link') +\n                    '<span class=\"move move-external-link\"></span></a>',\n            }),\n        );\n    }),\n\n    init() {\n        this._super();\n        set(this, 'changeFieldTypeToDate', ['ea1card', 'ea2card', 'firecard', 'safetycard']);\n    },\n\n    didReceiveAttrs() {\n        if (!this.record) set(this, 'userBuilder', true);\n        if (\n            this.Collector.fieldExists('user', 'taxnumber') &&\n            !this.record.taxnumber &&\n            this.record.isNew\n        ) {\n            set(this, 'userBuilder', true);\n        } else {\n            set(this, 'userBuilder', false);\n        }\n        // if record is new we want to generate new random password\n        if (this.record.isNew) {\n            set(this, 'record.password', this.generatePassword());\n        }\n    },\n\n\n    actions: {\n        async onFieldChange(field, value) {\n\n            set(await this.record, field, value);\n\n\n            // set default work permit type, when nationality is changed to something else than fi\n            if (field === 'nationality' && value != 'fi') {\n                set(this, 'record.work_permit_type', workPermitUtils.getDefaultWorkPermitType(value));\n            }\n            // trigger fieldChanged action on every field change so that username can be generated on the fly\n            this.send('fieldChanged', value, field);\n\n        },\n\n        addUser(userInfo) {\n            set(this, 'defaults', this.addDefaults(userInfo));\n            if (userInfo && get(userInfo, 'id')) set(this, 'record', userInfo);\n            this.addUser();\n            set(this, 'userBuilder', false);\n        },\n\n        async fieldChanged(value, field) {\n            if (!field) return;\n            if (field === 'firstname' || field === 'lastname' || field === 'employer') {\n                if (!this.record.isNew) return;\n                set(this, 'record.username', await this.generateUsername(this.record));\n            }\n        },\n    },\n    async getEmployerSuffix(employer) {\n        if (get(employer, 'domain')) return get(employer, 'domain');\n\n        const employerData = await this.store.findRecord('employer', get(employer, 'id'), {\n            reload: true,\n        });\n        if (get(employerData, 'domain')) return get(employerData, 'domain');\n        return get(employer, 'name');\n    },\n\n    async addDefaults(record) {\n        return {\n            userlevel: '1',\n            emp_relation: '1',\n            password: this.generatePassword(),\n            username: await this.generateUsername(record),\n            firstname: record.firstname,\n            lastname: record.lastname,\n            taxnumber: record.taxnumber,\n            employer: record.employer,\n            birthdate: record.birthdate,\n        };\n    },\n\n    generatePassword() {\n        const chars = '23456789abcdefghkmnpqrstuvwxyz';\n        const string_length = 6;\n        let generated_password = '';\n        let i = 0;\n        while (i < string_length) {\n            let rnum = Math.floor(Math.random() * chars.length);\n            generated_password += chars.substring(rnum, rnum + 1);\n            i++;\n        }\n        return generated_password;\n    },\n\n    async generateUsername(record) {\n        let generatedName = '';\n\n        if (record.firstname && record.lastname && record.employer && get(record.employer, 'id')) {\n            let employerSuffix = await this.getEmployerSuffix(record.employer);\n            generatedName = record.firstname + '.' + record.lastname + '@' + employerSuffix;\n        } else if (record.firstname && record.lastname) {\n            generatedName = record.firstname + '.' + record.lastname;\n        } else {\n            generatedName = record.firstname;\n        }\n\n        if (generatedName) {\n            generatedName = generatedName.replace(/\\s+/g, '');\n            generatedName = generatedName.replace(/[&]+/g, '');\n            return generatedName.toLowerCase();\n        } else {\n            return undefined;\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"Ovc9pgUt\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@rowAdded\\\",\\\"@rowEdited\\\",\\\"@close\\\",\\\"@showSaved\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"userBuilder\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/form-add/forms/user/user-builder\\\",null,[[\\\"model\\\",\\\"afterSave\\\",\\\"addUser\\\"],[[24,[\\\"record\\\"]],[24,[\\\"afterSave\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addUser\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@rowAdded\\\",\\\"@rowEdited\\\",\\\"@close\\\",\\\"@showSaved\\\"],[[23,0,[\\\"form\\\"]],[23,0,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"onFieldChange\\\"],null],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"includes\\\",[[23,4,[\\\"name\\\"]],[23,0,[\\\"changeFieldTypeToDate\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\",\\\"@forceType\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]],\\\"date\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,4,[\\\"name\\\"]],\\\"userlevel\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\",\\\"@forceType\\\",\\\"@info\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]],[23,4,[\\\"forceType\\\"]],[23,0,[\\\"userlevelInfo\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\",\\\"@forceType\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]],[23,4,[\\\"forceType\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[4]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/user/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\nimport { set } from '@ember/object';\nimport { htmlSafe } from '@ember/string';\nimport { isEmpty } from '@ember/utils';\n\nexport default Component.extend({\n    session: service(),\n    Collector: service('collector-service'),\n    capi: service(),\n    ttapi: service(),\n    intl: service(),\n    router: service(),\n    store: service(),\n    vastuuGroup: service('vastuu-group'),\n\n    init() {\n        this._super(...arguments);\n        this.found_employers = [];\n        this.not_found_employers = [];\n        this.needs = ['employers/add'];\n        this.empArr = A([]);\n        this.no_employers = false;\n        this.userAlreadyExists = false;\n        this.messageStatus = null;\n        this.message = null;\n        this.create = false;\n        this.users = null;\n        this.noEmployer = false;\n        this.activeUser = null;\n    },\n\n    actions: {\n        async fetchTax() {\n            set(this, 'empArr', A([]));\n            if (!this.taxnumber || this.taxnumber.length !== 12) {\n                set(this, 'message', null);\n                set(this, 'messageStatus', null);\n                return;\n            }\n            set(this, 'loading', true);\n            let user = await this.store.query('user', { taxnumber: this.taxnumber });\n            if (user.length === 0) {\n                let userExists = await this.checkIfUserExists(this.taxnumber);\n                if (userExists) {\n                    set(this, 'loading', false);\n                    set(this, 'userAlreadyExists', true);\n                } else {\n                    set(this, 'userAlreadyExists', false);\n                    try {\n                        set(this, 'loading', true);\n                        let request = await this.vastuuGroup.request('tvpersonapi',\n                            {\n                                country: 'fi',\n                                'id-country': 'fi',\n                                'id-type': 'tax_number',\n                                'id-value': this.taxnumber,\n                            }\n                        );\n                        this.handleRequestMessage(request);\n                    } catch (Exception) {\n                        set(this, 'loading', false);\n                        set(this, 'messageStatus', 'alert-danger');\n                        let message = htmlSafe(\n                            '<div>' +\n                                '<h3><b>' +\n                                this.intl.t('user.add.status.failed') +\n                                '</b></h3></div>',\n                        );\n                        set(this, 'message', message);\n                    }\n                }\n            } else {\n                set(this, 'loading', false);\n                set(this, 'messageStatus', 'alert-danger');\n                let message = htmlSafe(\n                    '<div>' + '<h3><b>' + this.intl.t('user.add.exists') + '</b></h3></div>',\n                );\n                set(this, 'message', message);\n            }\n        },\n\n        async createUser(user, employer) {\n            if (\n                user.homecountry !== 'fi' &&\n                employer.employment_periods[0].address_in_home_country\n            ) {\n                user.address = employer.employment_periods[0].address_in_home_country.address[0];\n                user.zip = employer.employment_periods[0].address_in_home_country.post_code;\n                user.city = employer.employment_periods[0].address_in_home_country.post_area;\n                user.contract_type = employer.employment_periods[0].contract_type;\n                user.workpass = employer.employment_periods[0].documentation_of_sent_employee;\n            }\n            set(this, 'activeUser', user);\n            set(this, 'users', null);\n            set(this, 'message', null);\n\n            if (this.Collector.testNeeds(['employer@access'])) {\n                let employers = await this.store.query('employer', {\n                    emp_id: employer.gov_org_ids[0].gov_org_id,\n                });\n                if (employers.length > 0) {\n                    user.employer = employers.firstObject;\n                    this.setModel(user, ['status', 'vatin']);\n                    set(this, 'message', null);\n                    set(this, 'users', null);\n                    this.addUser(user);\n                } else {\n                    set(this, 'messageStatus', 'alert-warning');\n                    set(this, 'noEmployer', true);\n                    let message = htmlSafe(\n                        '<div>' +\n                            '<h3><b>' +\n                            this.intl.t('user.add.status.employer.notfound') +\n                            '</b></h3><h4>' +\n                            user.employer +\n                            ', ' +\n                            user.vatin +\n                            '</h4></div>',\n                    );\n\n                    set(this, 'message', message);\n                }\n            } else {\n                user.employer = this.session.currentUser.employer;\n                this.setModel(user, ['status', 'vatin']);\n                set(this, 'message', null);\n                set(this, 'users', null);\n                this.addUser(user);\n            }\n        },\n\n        async addEmployer(employer, id) {\n            let emp_obj = {\n                emp_id: id.gov_org_id,\n                name: employer.name,\n                emp_firstname: employer.employers_contact_person.contact_first_name,\n                emp_lastname: employer.employers_contact_person.contact_last_name,\n                emp_phone: employer.employers_contact_person.contact_phone,\n                emp_email: employer.employers_contact_person.contact_email,\n            };\n\n            if (employer.country !== 'FI') {\n                emp_obj.emp_id_type = id.gov_org_id === 'vat_number' ? '1' : '2';\n                emp_obj.emp_homecountry = employer.country.toLowerCase();\n\n                if (employer.address) {\n                    emp_obj.emp_address = employer.address.address.toString();\n                    emp_obj.emp_zip = employer.address.post_code;\n                    emp_obj.emp_city = employer.address.post_area;\n                    emp_obj.emp_country = employer.address.country.toLowerCase();\n                }\n            }\n\n            let emp = this.store.createRecord('employer', emp_obj);\n\n            set(this.user, 'employer', emp);\n\n            this.store.createRecord('user', this.user);\n            let newRoute = await this.router.transitionTo('employers.add');\n            set(newRoute.controller, 'afterSave', this.afterSave);\n        },\n\n        async addUserToGroup(taxnumber) {\n            set(this, 'loading', true);\n            let data = await this.ttapi._post('addusertogroup', { taxnumber: taxnumber });\n            set(this, 'loading', false);\n            let user = await this.store.findRecord('user', data.user.id);\n            this.addUser(user);\n        },\n\n        setUserTaxnumber(taxnumber) {\n            let user = {\n                taxnumber: taxnumber,\n            };\n            this.setModel(user, ['status', 'vatin']);\n            this.addUser(user);\n        },\n    },\n    setModel(data, skip) {\n        for (let k in data) {\n            if (skip.includes(k)) continue;\n            set(this.model, k, data[k]);\n        }\n    },\n\n    setUserData(data) {\n        let user_record = {\n            firstname: data.names[0].given_names[0],\n            lastname: data.names[0].surnames.join(' '),\n            birthdate: data.date_of_birth,\n            taxnumber: data.gov_ids[0].gov_id,\n            homecountry: data.residences ? data.residences[0].toLowerCase() : 'fi',\n        };\n\n        set(this, 'user', user_record);\n    },\n\n    async checkIfUserExists(taxnumber) {\n        try {\n            await this.capi.request('/users?validation_only=taxnumber', {\n                method: 'POST',\n                data: { user: { taxnumber: taxnumber } },\n            });\n            return false;\n        } catch (reason) {\n            if (\n                reason.payload.error_msg ==\n                'user with this ' + taxnumber + ' taxnumber already exists!'\n            ) {\n                return true;\n            } else {\n                return false;\n            }\n        } finally {\n            set(this, 'loading', false);\n        }\n    },\n    async getImage() {\n        let data = await this.vastuuGroup.request('tvcardimage',\n            { taxnumber: this.model.taxnumber, emp_id: this.model.employer.emp_id }\n        );\n        if (data && !data.error) {\n            set(this, 'model.image', [\n                {\n                    file: 'data:image/png;base64,' + data,\n                    name: 'profile.png',\n                },\n            ]);\n            set(this, 'fetchedImage', 'data:image/png;base64,' + data);\n        }\n    },\n\n    handleRequestMessage(data) {\n        let message = '';\n        set(this, 'message', message);\n        if (data.message) {\n            set(this, 'loading', false);\n            set(this, 'messageStatus', 'alert-danger');\n            message = htmlSafe(\n                '<div>' + '<h3><b>' + this.intl.t('user.add.status.notfound') + '</b></h3></div>',\n            );\n            set(this, 'message', message);\n        } else if (!data.error) {\n            if (isEmpty(data.employers)) {\n                set(this, 'loading', false);\n                set(this, 'messageStatus', 'alert-danger');\n                message = htmlSafe(\n                    '<div>' + '<h3><b>' + this.intl.t('user.add.no_employers') + '</b></h3></div>',\n                );\n                set(this, 'message', message);\n            }\n            this.setUserData(data);\n            let accessError = false;\n\n            data.employers.forEach((emp) => {\n                let found = [];\n                let not_found = [];\n\n                let emp_id = emp.gov_org_ids[0].gov_org_id;\n                if (emp.country !== 'FI' && emp.gov_org_ids[1]) {\n                    emp_id = emp.gov_org_ids[1].gov_org_id;\n                }\n                if (this.Collector.testNeeds(['employer@access'])) {\n                    emp.gov_org_ids.forEach(async (gov_ids) => {\n                        let employers = await this.store.query('employer', {\n                            emp_id: gov_ids.gov_org_id,\n                        });\n                        if (employers.length > 0) {\n                            found.pushObject(gov_ids);\n                        } else {\n                            not_found.pushObject(gov_ids);\n                        }\n                    });\n\n                    this.empArr.pushObject({ employer: emp, found: found, not_found: not_found });\n                } else if (this.session.currentUser.employer.emp_id === emp_id) {\n                    emp.gov_org_id = emp_id;\n                    this.empArr.pushObject({\n                        employer: emp,\n                        found: this.session.currentUser.employer,\n                        not_found: [],\n                    });\n                } else {\n                    accessError = true;\n                }\n            });\n            if (accessError && this.found_employers.length === 0) {\n                set(this, 'messageStatus', 'alert-danger');\n                message = htmlSafe(\n                    '<div>' +\n                        '<h3><b>' +\n                        this.intl.t('user.add.no_employer_access') +\n                        '</b></h3></div>',\n                );\n                set(this, 'message', message);\n            }\n        } else {\n            this.setUserInfo(data, false);\n            set(this, 'loading', false);\n        }\n        set(this, 'loading', false);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"+j2qEhbn\",\"block\":\"{\\\"symbols\\\":[\\\"empObj\\\",\\\"not_found_employer\\\",\\\"found_employer\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-offset-3 col-md-12 col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"user.add.by_tax\\\"],null],false],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"input\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"taxnumber\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"fetchTax\\\"],null],\\\"form-control\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[1,[22,\\\"loader-icon\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"message\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"alert \\\",[22,\\\"messageStatus\\\"],\\\" text-center\\\"]]],[8],[0,\\\"\\\\n                \\\"],[1,[22,\\\"message\\\"],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"empArr\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h2\\\",true],[8],[1,[23,1,[\\\"employer\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"found\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder.create\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"list-group-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"createUser\\\",[24,[\\\"user\\\"]],[23,1,[\\\"employer\\\"]]]],[8],[1,[24,[\\\"user\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"user\\\",\\\"lastname\\\"]],false],[0,\\\",\\\\n                            \\\"],[1,[23,1,[\\\"employer\\\",\\\"name\\\"]],false],[0,\\\",\\\\n                            \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"employer.identifier_type.\\\",[23,3,[\\\"org_id_type\\\"]]],null]],null],false],[0,\\\": \\\"],[1,[23,3,[\\\"gov_org_id\\\"]],false],[0,\\\",\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"employer.country\\\"],null],false],[0,\\\": \\\"],[1,[23,3,[\\\"country\\\"]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"not_found\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.status.employer.notfound\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"list-group-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addEmployer\\\",[23,1,[\\\"employer\\\"]],[23,2,[]]]],[8],[1,[24,[\\\"user\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"user\\\",\\\"lastname\\\"]],false],[0,\\\",\\\\n                        \\\"],[1,[23,1,[\\\"employer\\\",\\\"name\\\"]],false],[0,\\\",\\\\n                        \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"employer.identifier_type.\\\",[23,2,[\\\"org_id_type\\\"]]],null]],null],false],[0,\\\": \\\"],[1,[23,2,[\\\"gov_org_id\\\"]],false],[0,\\\",\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"employer.country\\\"],null],false],[0,\\\": \\\"],[1,[23,2,[\\\"country\\\"]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[4,\\\"if\\\",[[28,\\\"await\\\",[[24,[\\\"userAlreadyExists\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addUserToGroup\\\",[24,[\\\"taxnumber\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"user.add.user_to_group\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"create\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"users.add.index\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"user.add.builder.create\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[12,\\\"name\\\",\\\"addUserManually\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setUserTaxnumber\\\",[24,[\\\"taxnumber\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder.manually\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/user/user-builder/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/form-add/forms/wageperiod/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SalaryPeriodAdderComponent;\n\nimport Ember from 'ember';\n\nSalaryPeriodAdderComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    multi: false,\n    amount: 2,\n    period: 'month',\n    from: moment().startOf('month').format('YYYY-MM-DD'),\n    amount_options: Ember.computed(function () {\n        return [\n            {\n                id: 2,\n                name: this.get('intl').t('salary_period.adder.amount.2'),\n            },\n            {\n                id: 4,\n                name: this.get('intl').t('salary_period.adder.amount.4'),\n            },\n            {\n                id: 6,\n                name: this.get('intl').t('salary_period.adder.amount.6'),\n            },\n            {\n                id: 8,\n                name: this.get('intl').t('salary_period.adder.amount.8'),\n            },\n            {\n                id: 12,\n                name: this.get('intl').t('salary_period.adder.amount.12'),\n            },\n        ];\n    }),\n    period_options: Ember.computed(function () {\n        return [\n            {\n                id: 'month',\n                name: this.get('intl').t('salary_period.adder.period.month'),\n            },\n            {\n                id: 'week2',\n                name: this.get('intl').t('salary_period.adder.period.week2'),\n            },\n            {\n                id: 'week4',\n                name: this.get('intl').t('salary_period.adder.period.week4'),\n            },\n        ];\n    }),\n    actions: {\n        changeWorktimeGroup: function (group) {\n            return this.set('record.worktimegroup', group);\n        },\n        create: function () {\n            var amount, end, from, i, period, promises, records, ref, store;\n            this.set('saving', true);\n            this.set('disabled', true);\n            store = this.get('store');\n            amount = this.get('amount');\n            period = this.get('period');\n            from = this.get('from');\n            records = [];\n            for (i = 1, ref = amount; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n                end = (function () {\n                    switch (period) {\n                        case 'month':\n                            return moment(from)\n                                .add(1, 'month')\n                                .subtract(1, 'day')\n                                .format('YYYY-MM-DD');\n                        case 'week2':\n                            return moment(from)\n                                .add(2, 'week')\n                                .subtract(1, 'day')\n                                .format('YYYY-MM-DD');\n                        case 'week4':\n                            return moment(from)\n                                .add(4, 'week')\n                                .subtract(1, 'day')\n                                .format('YYYY-MM-DD');\n                    }\n                })();\n                records.push(\n                    store.createRecord('wage-period', {\n                        period_name: moment(from).format('L') + ' - ' + moment(end).format('L'),\n                        period_start_date: from,\n                        period_end_date: end,\n                        worktimegroup: this.get('record.worktimegroup'),\n                    }),\n                );\n                from = (function () {\n                    switch (period) {\n                        case 'month':\n                            return moment(from).add(1, 'month').format('YYYY-MM-DD');\n                        case 'week2':\n                            return moment(from).add(2, 'week').format('YYYY-MM-DD');\n                        case 'week4':\n                            return moment(from).add(4, 'week').format('YYYY-MM-DD');\n                    }\n                })();\n            }\n            promises = records.invoke('save');\n            return Ember.RSVP.Promise.all(promises).then((saved_records) => {\n                if (this.get('rowAdded')) {\n                    this.rowAdded(saved_records);\n                }\n                this.get('close')();\n                this.set('saving', false);\n                return this.set('disabled', false);\n            });\n        },\n        setmulti: function (multi) {\n            return this.set('multi', multi);\n        },\n        closeEditor: function () {\n            return this.get('close')();\n        },\n        rowAdded: function (records) {\n            this.get('rowAdded')(records);\n            return this.get('close')();\n        },\n    },\n});\n\nexport default SalaryPeriodAdderComponent;\n","export default Ember.HTMLBars.template({\"id\":\"K1q+DrI/\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"record\\\",\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"unless\\\",[[24,[\\\"multi\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"setmulti\\\",false]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"salary_period.adder.single\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"if\\\",[[24,[\\\"multi\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"setmulti\\\",true]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"salary_period.adder.multi\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"not\\\",[[24,[\\\"multi\\\"]]],null],\\\"hidden\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"hasErrors\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"salary_period.adder.amount\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"field\\\",\\\"features\\\",\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"firstError\\\",\\\"message\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\"],[[24,[\\\"amount_options\\\"]],\\\"form-control add-fields\\\",[24,[\\\"amount\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"hasErrors\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"salary_period.adder.from\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"field\\\",\\\"features\\\",\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"firstError\\\",\\\"message\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"value\\\",\\\"class\\\"],[[24,[\\\"from\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"hasErrors\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"salary_period.adder.period\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"field\\\",\\\"features\\\",\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"firstError\\\",\\\"message\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\"],[[24,[\\\"period_options\\\"]],\\\"form-control add-fields\\\",[24,[\\\"period\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.worktimegroup\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/field-container\\\",null,[[\\\"field\\\",\\\"change\\\",\\\"model\\\"],[\\\"wage_period.worktimegroup\\\",\\\"changeWorktimeGroup\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"create\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[28,\\\"t\\\",[\\\"salary_period.adder.create\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeEditor\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"multi\\\"]],\\\"hidden\\\"],null]]]],[8],[0,\\\"\\\\n \\\"],[1,[28,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"rowAdded\\\",\\\"rowEdited\\\",\\\"close\\\",\\\"showSaved\\\",\\\"defaults\\\",\\\"disabled\\\",\\\"sortFields\\\",\\\"preserveRecordOnDestroy\\\",\\\"fieldChanged\\\",\\\"only\\\"],[[24,[\\\"form\\\"]],[24,[\\\"record\\\"]],[24,[\\\"rowAdded\\\"]],[24,[\\\"rowEdited\\\"]],[24,[\\\"close\\\"]],[24,[\\\"showSaved\\\"]],[24,[\\\"_defaults\\\"]],[24,[\\\"disableForm\\\"]],[24,[\\\"sortFields\\\"]],[24,[\\\"preserveRecordOnDestroy\\\"]],[24,[\\\"fieldChanged\\\"]],[24,[\\\"only\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/wageperiod/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class CollectorFormAddFormsWorksitediaryComponent extends Component {\n    @service store;\n    @service notifications;\n    @service('collector-service') Collector;\n\n    @tracked record;\n    @tracked saving;\n    @tracked savedView;\n\n    constructor() {\n        super(...arguments);\n        this.record = this.store.createRecord('worksitediary');\n        this.fields = this.Collector.fieldArray('worksitediary');\n    }\n\n    @action\n    onFieldChange(field, value) {\n        this.record[field] = value;\n    }\n\n    @action\n    async save() {\n        this.saving = true;\n        await this.record.validate();\n        if (!this.record.isValid) {\n            return (this.saving = false);\n        }\n\n        this.record['weather'] = JSON.stringify(this.record['weather']);\n        await this.record.save();\n        this.saving = false;\n        this.savedView = true;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"sTj6XUC3\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@close\\\",\\\"@addSame\\\",\\\"@addNew\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"savedView\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add/saved\\\",[],[[\\\"@record\\\",\\\"@fields\\\",\\\"@close\\\",\\\"@edit\\\",\\\"@addSame\\\",\\\"@addNew\\\",\\\"@closeSaved\\\"],[[23,0,[\\\"record\\\"]],[23,0,[\\\"fields\\\"]],[23,5,[]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"savedView\\\"]]],null],false],null],[23,6,[]],[23,7,[]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"savedView\\\"]]],null],false],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"worksitediary\\\",[23,0,[\\\"record\\\"]],[23,0,[\\\"onFieldChange\\\"]],[23,5,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,4,[\\\"name\\\"]],\\\"weather\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@error\\\",\\\"@mandatory\\\"],[[28,\\\"t\\\",[\\\"diary.weather\\\"],null],null,false]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[5,\\\"addon/fields/weather\\\",[],[[\\\"@value\\\",\\\"@onChange\\\"],[[23,0,[\\\"record\\\",\\\"weather\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"weather\\\"],null]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@forceType\\\",\\\"@disabled\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"forceType\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[4]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Buttons\\\"]],[],[[\\\"@saving\\\",\\\"@save\\\",\\\"@cancel\\\"],[[23,0,[\\\"saving\\\"]],[23,0,[\\\"save\\\"]],[23,5,[]]]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/worksitediary/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class CollectorFormAddFormsWorktaskComponent extends Component {\n    @service store;\n    @service flags;\n    @service intl;\n\n    @tracked record;\n    @tracked messageBox;\n\n    constructor() {\n        super(...arguments);\n        // Addon form-add gets defaults from form\n        const defaults = !this.flags.test('ember-movenium-form-add-worktasks')\n            ? { date: moment().format('YYYY-MM-DD') }\n            : {};\n        this.record = this.args.record\n            ? this.args.record\n            : this.store.createRecord('worktask', defaults);\n        this.currentValues = { date: null, userid: null };\n    }\n\n    @action\n    async onFieldChange(field, value) {\n        this.record[field] = value;\n        this.messageBox = await this.updateMessage();\n    }\n\n    /*\n    check if worktasks are found for selected user for selected date\n    */\n    async updateMessage() {\n        if (!this.record.user || !this.record.date) return null;\n        if (\n            this.currentValues.date === this.record.date &&\n            this.currentValues.userid === this.record.user.id\n        )\n            return this.messageBox;\n\n        this.currentValues = {\n            date: this.record.date,\n            userid: this.record.user.id,\n        };\n\n        const params = { user: this.record.user.id, date: this.record.date };\n        if (this.record.id) params.id = '!' + this.record.id;\n        let tasks = await this.store.query('worktask', params);\n\n        const filtered_tasks = tasks.filter((task) => task.id !== this.record_id);\n\n        let hours = 0;\n        filtered_tasks.forEach((task) => (hours += task.est_hours));\n        const minutes = Math.round((hours - Math.floor(hours)) * 60);\n        const formatted_hours = Math.floor(hours) + ':' + (minutes < 10 ? '0' : '') + minutes + 'h';\n\n        let message = null;\n        if (filtered_tasks.length > 0) {\n            message = this.intl.t('worktask.worktasks_found', {\n                count: filtered_tasks.length,\n                hours: formatted_hours,\n            });\n        }\n\n        return message;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"0qIB4Tjd\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@close\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-worktasks\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[4,\\\"if\\\",[[24,[\\\"messageBox\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning modal-message-box\\\"],[8],[1,[23,0,[\\\"messageBox\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"worktask\\\",[23,0,[\\\"record\\\"]],[23,0,[\\\"onFieldChange\\\"]],[23,5,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,4,[\\\"name\\\"]],\\\"involved\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@error\\\",\\\"@mandatory\\\"],[[28,\\\"t\\\",[\\\"worktask.involved\\\"],null],null,false]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[5,\\\"collector/fields/databasearray-field\\\",[],[[\\\"@field\\\",\\\"@model\\\"],[[23,4,[]],[23,0,[\\\"record\\\"]]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[4]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"collector/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\",\\\"@showSaved\\\"],[\\\"worktask\\\",[23,0,[\\\"record\\\"]],[23,5,[]],true]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/worktask/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment';\nimport { isEmpty } from '@ember/utils';\nimport { debounce } from '@ember/runloop';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    collector: service('collector-service'),\n    ttapi: service(),\n    intl: service(),\n    dialogs: service(),\n    router: service(),\n    needs: service(),\n    flags: service(),\n\n    layoutName: 'collector/form-add',\n    form: 'worktime',\n\n    _defaults: computed('defaults', async function () {\n        const defaults = {};\n\n        defaults.date = moment().format('YYYY-MM-DD');\n        defaults.user = get(this, 'session.currentUser');\n\n        const hoursAdding = this.collector.testNeedsOne('products.timetracker_hours');\n\n        if (!hoursAdding) defaults.starttime = await this.getStarttime();\n        if (!hoursAdding) defaults.endtime = moment().format('HH:mm');\n        defaults.affects_overtime = 'off';\n\n        const pauseField = this.collector\n            .fieldArray('worktime')\n            .find((item) => item.name === 'pause');\n        // support for worktime-groups\n        if (pauseField) {\n            if (typeof get(pauseField, 'features.default_value') == 'object')\n                defaults.pause = get(pauseField, 'features.default_value.value');\n            else defaults.pause = get(pauseField, 'features.default_value');\n        }\n\n        if (this.session.currentUser.currentMySite)\n            defaults.project = this.session.currentUser.currentMySite;\n\n        return Object.assign(defaults, await get(this, 'defaults'));\n    }),\n\n    endtimeField: computed('form', function () {\n        return get(this, 'collector').field('worktime', 'endtime');\n    }),\n\n    didReceiveAttrs() {\n        if (!this.record) {\n            !this.flags.test('ember-movenium-form-add-worktime')\n                ? this.createRecord()\n                : (this.record = new Promise((resolve) => {\n                      resolve(this.createRecord());\n                  }));\n        } else if (this.record && this.record.isNew && !this.preserveRecordOnDestroy) {\n            this.setRecordDefaults();\n        }\n    },\n\n    actions: {\n        rowAdded(record) {\n            this.sendWorktimeAdded(record);\n            this.alertMissingOrientation(record);\n            // If we still have trailing new records, rollback them... form-add adds sometimes three of them :D\n            // Addon form-add does this correctly and don't create records on its own and only assumes a record to be given\n            // The real fix should be that form-add shoudn't create any record at all but it's a bit too risky to change now\n            const newRecords = this.store.peekAll('worktime')?.filterBy('isNew', true);\n            newRecords?.forEach((rec) => rec.rollbackAttributes());\n            if (get(this, 'rowAdded')) get(this, 'rowAdded')(record);\n        },\n\n        async onFieldChange(field, value) {\n            set(await this.record, field, value);\n        },\n\n        addNew() {\n            this.createRecord();\n        },\n\n        async addSame() {\n            set(this, 'record', this.collector.copyRecord(this.record));\n        },\n\n        touchMove() {\n            // If the user touches this field and starts scrolling, we actually want to scroll and not snap to this field and open options\n            debounce(this, this.touchMove, 50);\n        },\n\n        touchEnd() {\n            // We have ended fiddling with this field,\n            // if we were moving then blur to not snap scroll back to this field because of mobile shenanigans\n            if (this.touchMoving) {\n                set(this, 'touchMoving', false);\n                this.element.querySelector('textarea').blur();\n            }\n        },\n\n        descriptionSpecialValidation(value) {\n            if (value.length > 256) {\n                this.record.errors.add(\n                    'description',\n                    [this.intl.t('validation.too_long_error')]\n                );\n            }\n        },\n    },\n\n    touchMove() {\n        set(this, 'touchMoving', true);\n    },\n\n    async setRecordDefaults() {\n        const defaults = await this._defaults;\n        const record = this.record;\n        // only apply defaults if record value is not set already\n        for (const def in defaults) {\n            if (!record[def]) record[def] = defaults[def];\n        }\n    },\n\n    async createRecord() {\n        const defaults = await this._defaults;\n        set(this, 'record', this.store.createRecord('worktime', defaults));\n    },\n\n    async getStarttime() {\n        let worktimes = this.store.peekAll('worktime');\n        // Try to query worktimes again with todays date if store is just empty\n        if (!worktimes.length)\n            worktimes = await this.store.query('worktime', { date: moment().format('YYYY-MM-DD') });\n        const filtered = worktimes\n            .filter((worktime) => moment(worktime.date).isSame(moment(), 'day'))\n            .sortBy('endtime');\n        const storeEndtime = !isEmpty(filtered) ? filtered.lastObject.endtime : null;\n        if (storeEndtime) return storeEndtime;\n\n        const starttime = await get(this, 'ttapi').request('get_starttime', { dataType: 'text' });\n        if (starttime) return starttime;\n        return '07:00';\n    },\n\n    sendWorktimeAdded(row) {\n        get(this, 'ttapi').request('/worktimeAdded', {\n            method: 'post',\n            data: {\n                username: get(row, 'user.username'),\n                userid: get(row, 'user.id'),\n                starttime: get(row, 'starttime'),\n                date: get(row, 'date'),\n            },\n        });\n    },\n\n    async alertMissingOrientation(row) {\n        // Alert for missing orientation or outdated pass\n        if (\n            this.collector.testNeedsOne('modules.orientations') &&\n            get(this, 'session.currentUser.userlevel') == '1' &&\n            !get(this, 'session.currentUser.no_orientation')\n        ) {\n            const project = get(row, 'project.id');\n            if (this.collector.testNeedsOne('products.rakentajanpaketti')) {\n                if (get(row, 'project.proj_type') === '2' || get(row, 'project.proj_type') === null)\n                    return;\n            }\n\n            const user = get(row, 'user.id');\n            const data = await get(this, 'store').query('orientation', {\n                ori_site: project,\n                ori_user: user,\n                limit: 1,\n            });\n\n            if (\n                this.collector.testNeedsOne('products.orientations_self') &&\n                get(data, 'meta.count') == 0\n            ) {\n                await get(this, 'dialogs').alert(\n                    get(this, 'intl').t('worktime.after_save.orientation.self_orientation'),\n                );\n                get(this, 'router').transitionTo(\n                    'orientations.own-orientation',\n                    get(row, 'project.id'),\n                );\n            } else if (get(data, 'meta.count') == 0) {\n                if (this.flags.test('disable-worktime-orientations-missing-warning')) {\n                    return;\n                }\n                \n                get(this, 'dialogs').alert(\n                    get(this, 'intl').t('worktime.after_save.orientation.not_found'),\n                );\n            } else if (\n                get(data, 'firstObject.pass_end') &&\n                moment().isAfter(moment(get(data, 'firstObject.pass_end')))\n            ) {\n                get(this, 'dialogs').alert(\n                    get(this, 'intl').t('worktime.after_save.orientation.outdated'),\n                );\n            }\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"GwGiE2ek\",\"block\":\"{\\\"symbols\\\":[\\\"form\\\",\\\"fields\\\",\\\"fieldcomp\\\",\\\"field\\\",\\\"form\\\",\\\"fields\\\",\\\"fieldcomp\\\",\\\"field\\\",\\\"form\\\",\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"Form\\\",\\\"&default\\\",\\\"@rowEdited\\\",\\\"@close\\\",\\\"@showSaved\\\",\\\"@sortFields\\\",\\\"@only\\\",\\\"@preserveRecordOnDestroy\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-worktime\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,15]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@rowAdded\\\",\\\"@rowEdited\\\",\\\"@close\\\",\\\"@addNew\\\",\\\"@addSame\\\",\\\"@showSaved\\\",\\\"@sortFields\\\",\\\"@only\\\",\\\"@preserveRecordOnDestroy\\\"],[[23,0,[\\\"form\\\"]],[23,0,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"onFieldChange\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null],[23,16,[]],[23,17,[]],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"addSame\\\"],null],[23,18,[]],[23,19,[]],[23,20,[]],[23,21,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[14,15,[[23,14,[]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[14]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@rowAdded\\\",\\\"@rowEdited\\\",\\\"@close\\\",\\\"@addNew\\\",\\\"@addSame\\\",\\\"@showSaved\\\",\\\"@sortFields\\\",\\\"@only\\\",\\\"@preserveRecordOnDestroy\\\"],[[23,0,[\\\"form\\\"]],[23,0,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"onFieldChange\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null],[23,16,[]],[23,17,[]],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"addSame\\\"],null],[23,18,[]],[23,19,[]],[23,20,[]],[23,21,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,10,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,11,[]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,13,[\\\"name\\\"]],\\\"starttime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-times\\\"],[8],[0,\\\"\\\\n                            \\\"],[6,[23,12,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,13,[\\\"name\\\"]],[23,13,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,13,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,10,[\\\"OnChange\\\"]],[23,13,[\\\"name\\\"]]],null],[23,13,[\\\"mandatory\\\"]],[23,13,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n                            \\\"],[6,[23,12,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[\\\"endtime\\\",[23,13,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],\\\"endtime\\\"],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,10,[\\\"OnChange\\\"]],\\\"endtime\\\"],null],[23,13,[\\\"mandatory\\\"]],[23,13,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,13,[\\\"name\\\"]],\\\"endtime\\\"],null]],null,{\\\"statements\\\":[],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,13,[\\\"name\\\"]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,12,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\",\\\"@forceType\\\"],[[23,13,[\\\"name\\\"]],[23,13,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,13,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"descriptionSpecialValidation\\\"],null],[23,13,[\\\"mandatory\\\"]],[23,13,[\\\"features\\\",\\\"disabled\\\"]],\\\"Textarea\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[23,13,[\\\"name\\\"]],\\\"km\\\"],null],[28,\\\"needs\\\",[\\\"products.timetracker_km_automatic\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"worktime.km\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[5,\\\"collector/fields/gps-auto-km\\\",[],[[\\\"@field\\\",\\\"@model\\\"],[[23,13,[]],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null]]]],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,12,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\",\\\"@forceType\\\"],[[23,13,[\\\"name\\\"]],[23,13,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,13,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,10,[\\\"OnChange\\\"]],[23,13,[\\\"name\\\"]]],null],[23,13,[\\\"mandatory\\\"]],[23,13,[\\\"features\\\",\\\"disabled\\\"]],[23,13,[\\\"forceType\\\"]]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,13,[\\\"name\\\"]],\\\"project\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"project-help\\\",[],[[\\\"@projectid\\\"],[[23,0,[\\\"record\\\",\\\"project\\\",\\\"id\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[13]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[11,12]}],[0,\\\"\\\\n            \\\"],[6,[23,10,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,10,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[10]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[25,15]],null,{\\\"statements\\\":[[4,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"rowAdded\\\",\\\"rowEdited\\\",\\\"close\\\",\\\"showSaved\\\",\\\"defaults\\\",\\\"disabled\\\",\\\"sortFields\\\",\\\"preserveRecordOnDestroy\\\",\\\"fieldChanged\\\",\\\"only\\\"],[[24,[\\\"form\\\"]],[24,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null],[24,[\\\"rowEdited\\\"]],[24,[\\\"close\\\"]],[24,[\\\"showSaved\\\"]],[24,[\\\"_defaults\\\"]],[24,[\\\"disableForm\\\"]],[24,[\\\"sortFields\\\"]],[24,[\\\"preserveRecordOnDestroy\\\"]],[24,[\\\"fieldChanged\\\"]],[24,[\\\"only\\\"]]]],{\\\"statements\\\":[[0,\\\"            \\\"],[14,15,[[23,9,[]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[9]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"worktime-form-time-fields\\\"],null]],null,{\\\"statements\\\":[[4,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"rowAdded\\\",\\\"rowEdited\\\",\\\"close\\\",\\\"showSaved\\\",\\\"defaults\\\",\\\"disabled\\\",\\\"sortFields\\\",\\\"preserveRecordOnDestroy\\\",\\\"fieldChanged\\\",\\\"only\\\"],[[24,[\\\"form\\\"]],[24,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null],[24,[\\\"rowEdited\\\"]],[24,[\\\"close\\\"]],[24,[\\\"showSaved\\\"]],[24,[\\\"_defaults\\\"]],[24,[\\\"disableForm\\\"]],[24,[\\\"sortFields\\\"]],[24,[\\\"preserveRecordOnDestroy\\\"]],[24,[\\\"fieldChanged\\\"]],[24,[\\\"only\\\"]]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"fields\\\"]],\\\"expected `form.fields` to be a contextual component but found a string. Did you mean `(component form.fields)`? ('tt4/pods/collector/form-add/forms/worktime/template.hbs' @ L133:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,6,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,8,[\\\"name\\\"]],\\\"starttime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-times\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[]],\\\"expected `fieldcomp` to be a contextual component but found a string. Did you mean `(component fieldcomp)`? ('tt4/pods/collector/form-add/forms/worktime/template.hbs' @ L137:C31) \\\"],null]],[[\\\"field\\\",\\\"model\\\"],[[23,8,[]],[24,[\\\"record\\\"]]]]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[]],\\\"expected `fieldcomp` to be a contextual component but found a string. Did you mean `(component fieldcomp)`? ('tt4/pods/collector/form-add/forms/worktime/template.hbs' @ L138:C31) \\\"],null]],[[\\\"field\\\",\\\"model\\\"],[[24,[\\\"endtimeField\\\"]],[24,[\\\"record\\\"]]]]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,8,[\\\"name\\\"]],\\\"endtime\\\"],null]],null,{\\\"statements\\\":[],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,8,[\\\"name\\\"]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"bootstrap-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\",\\\"@name\\\"],[[23,8,[\\\"translated_name\\\"]],[23,8,[\\\"features\\\",\\\"mandatory\\\"]],[23,0,[\\\"tooLongError\\\"]],[23,8,[\\\"name\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[5,\\\"textarea\\\",[],[[\\\"@class\\\",\\\"@value\\\",\\\"@touchMove\\\",\\\"@touchEnd\\\",\\\"@rows\\\",\\\"@input\\\"],[\\\"form-control add-fields\\\",[28,\\\"get\\\",[[24,[\\\"record\\\"]],[23,8,[\\\"name\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"touchMove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"touchEnd\\\"],null],\\\"3\\\",[28,\\\"action\\\",[[23,0,[]],\\\"textareaAction\\\"],null]]]],[0,\\\"                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[]],\\\"expected `fieldcomp` to be a contextual component but found a string. Did you mean `(component fieldcomp)`? ('tt4/pods/collector/form-add/forms/worktime/template.hbs' @ L154:C22) \\\"],null]],[[\\\"field\\\",\\\"model\\\"],[[23,8,[]],[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,8,[\\\"name\\\"]],\\\"project\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"project-help\\\",[],[[\\\"@projectid\\\"],[[24,[\\\"record\\\",\\\"project\\\",\\\"id\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null]],\\\"parameters\\\":[6,7]},null],[0,\\\"\\\\n            \\\"],[1,[23,5,[\\\"buttons\\\"]],false],[0,\\\"\\\\n            \\\"],[1,[23,5,[\\\"saved\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"rowAdded\\\",\\\"rowEdited\\\",\\\"close\\\",\\\"showSaved\\\",\\\"defaults\\\",\\\"disabled\\\",\\\"sortFields\\\",\\\"preserveRecordOnDestroy\\\",\\\"fieldChanged\\\",\\\"only\\\"],[[24,[\\\"form\\\"]],[24,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null],[24,[\\\"rowEdited\\\"]],[24,[\\\"close\\\"]],[24,[\\\"showSaved\\\"]],[24,[\\\"_defaults\\\"]],[24,[\\\"disableForm\\\"]],[24,[\\\"sortFields\\\"]],[24,[\\\"preserveRecordOnDestroy\\\"]],[24,[\\\"fieldChanged\\\"]],[24,[\\\"only\\\"]]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"fields\\\"]],\\\"expected `form.fields` to be a contextual component but found a string. Did you mean `(component form.fields)`? ('tt4/pods/collector/form-add/forms/worktime/template.hbs' @ L182:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"name\\\"]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"bootstrap-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\",\\\"@name\\\"],[[23,4,[\\\"translated_name\\\"]],[23,4,[\\\"features\\\",\\\"mandatory\\\"]],[23,0,[\\\"tooLongError\\\"]],[23,4,[\\\"name\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[5,\\\"textarea\\\",[],[[\\\"@class\\\",\\\"@value\\\",\\\"@touchMove\\\",\\\"@touchEnd\\\",\\\"@rows\\\",\\\"@input\\\"],[\\\"form-control add-fields\\\",[28,\\\"get\\\",[[24,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"touchMove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"touchEnd\\\"],null],\\\"3\\\",[28,\\\"action\\\",[[23,0,[]],\\\"descriptionSpecialValidation\\\"],null]]]],[0,\\\"                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[]],\\\"expected `fieldcomp` to be a contextual component but found a string. Did you mean `(component fieldcomp)`? ('tt4/pods/collector/form-add/forms/worktime/template.hbs' @ L196:C26) \\\"],null]],[[\\\"field\\\",\\\"model\\\"],[[23,4,[]],[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"name\\\"]],\\\"project\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"project-help\\\",[],[[\\\"@projectid\\\"],[[24,[\\\"record\\\",\\\"project\\\",\\\"id\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[2,3]},null],[0,\\\"            \\\"],[1,[23,1,[\\\"buttons\\\"]],false],[0,\\\"\\\\n            \\\"],[1,[23,1,[\\\"saved\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/worktime/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class CollectorFormAddFormsWorktimegroupChangeComponent extends Component {\n    @service flags;\n    @service store;\n    @service('collector-service') Collector;\n    @service intl;\n    @tracked currentPage = 1;\n    @tracked canEdit = true;\n\n    constructor() {\n        super(...arguments);\n        if (!this.args.record) {\n            this.args.record = this.store.createRecord('worktimegroupchange');\n        }\n        this.submenus = [\n            'worktimegroup-change-help',\n            'worktimegroup-change-add',\n            'worktimegroup-change-mapping',\n        ];\n        this.canEdit = this.checkIfCanEdit();\n    }\n\n    get styleNamespace() {\n        return podNames['collector/form-add/forms/worktimegroupchange'];\n    }\n\n    @action\n    onFieldChange(field, value) {\n        this.args.record[field] = value;\n    }\n\n    get currentPageComponent() {\n        return 'collector/form-add/forms/worktimegroupchange/pages/page' + this.currentPage;\n    }\n\n    // record can be edited only if the following conditions are met:\n    // - its enddate is today or in the future or it doesn't have an enddate\n    // - its startdate is today or in the future\n    checkIfCanEdit() {\n        if (this.args.record.enddate) {\n            if (moment(this.args.record.enddate).isSameOrBefore(moment().format('YYYY-MM-DD'))) {\n                return false;\n            }\n        }\n        if (moment(this.args.record.startdate).isSameOrBefore(moment().format('YYYY-MM-DD'))) {\n            return false;\n        }\n        return true;\n    }\n\n    // validate current page and return validation errors\n    // invalid if:\n    // - current page is 2 and:\n    //   - startdate is not set\n    //   - user is not set\n    //   - destination is not set\n    //   - startdate is after enddate (if enddate is set)\n    //   - enddate is before today (if enddate is set)\n    get validationErrors() {\n        let errors = [];\n        if (this.currentPage == 2) {\n            if (!this.args.record.startdate) {\n                errors.push(this.intl.t('validation.error.startdate_required'));\n            }\n            if (!this.args.record.user) {\n                errors.push(this.intl.t('validation.error.user_required'));\n            }\n            if (!this.args.record.destination) {\n                errors.push(this.intl.t('validation.error.destination_required'));\n            }\n            if (this.args.record.startdate && this.args.record.enddate) {\n                if (moment(this.args.record.startdate).isAfter(moment(this.args.record.enddate))) {\n                    errors.push(this.intl.t('validation.error.startdate_before_enddate'));\n                }\n                if (moment(this.args.record.enddate).isBefore(moment().format('YYYY-MM-DD'))) {\n                    errors.push(this.intl.t('validation.error.enddate_in_past'));\n                }\n            }\n        }\n        return errors;\n    }\n\n    // next button should be disabled if there are validation errors\n    get nextButtonDisabled() {\n        return this.validationErrors.length > 0;\n    }\n}\n","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { htmlSafe } from '@ember/string';\n\nexport default class CollectorFormAddFormsWorktimegroupChangeHelpComponent extends Component {\n    @service('collector-service') Collector;\n    @service ajax;\n\n    @tracked help;\n    @tracked loading = false;\n\n    constructor() {\n        super(...arguments);\n        this.help = this.getHelp();\n        Notification.requestPermission();\n    }\n\n    async getHelp() {\n        this.loading = true;\n        let helpText = '';\n        const key = 'help-worktimegroup-changes-' + moment.locale();\n        const fileUrl = `https://cloud-writer-prod.s3.amazonaws.com/${key}.html`;\n        try {\n            helpText = htmlSafe(await this.ajax.request(fileUrl, { dataType: 'text' }));\n        } catch (e) {\n            if (this.Collector.testNeeds(['development'])) {\n                helpText = `cannot find help for ${key}`;\n            }\n        }\n        this.loading = false;\n        return helpText;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"4jYJ2Fii\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[1,[28,\\\"await\\\",[[23,0,[\\\"help\\\"]]],null],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/worktimegroupchange/pages/page1/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"3A9QuayR\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],\\\"statements\\\":[[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\",\\\"@preserveRecordOnDestroy\\\"],[\\\"worktimegroupchange\\\",[23,5,[]],[28,\\\"action\\\",[[23,0,[]],[23,6,[]]],null],[28,\\\"action\\\",[[23,0,[]],[23,7,[]]],null],true]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,5,[]],[23,4,[\\\"name\\\"]]],null],[23,5,[]],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/worktimegroupchange/pages/page2/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default class CollectorFormAddFormsWorktimegroupChangePage3Component extends Component {\n    @service store;\n\n    @tracked record;\n    @tracked loading = false;\n    @tracked shouldShowMappings = false;\n    @tracked value = null;\n    @tracked destinationWorktype;\n    @tracked selectedValue;\n\n    constructor() {\n        super(...arguments);\n        // if user is defined, we get worktypes from the user's worktimegroup, otherwise we get worktypes from the worktimegroup\n        this.worktypes = this.getWorktimegroupWorktypes();\n        this.destinationWorktypes = this.getDestinationWorktypes();\n        this.shouldShowMappings = this.getShouldShowMappings();\n    }\n\n    async getDestinationWorktypes() {\n        let worktypes = await this.store.query('worktypev2', {\n            worktimegroup: this.args.record.destination.id,\n        });\n        // map the worktypes to an array of objects with id and name\n        let mappedWorktypes = worktypes.map((worktype) => {\n            return { id: worktype.id, name: worktype.name };\n        });\n        return mappedWorktypes;\n    }\n\n    async getWorktimegroupWorktypes() {\n        this.loading = true;\n        let ret = null;\n        if (this.args.record.user) {\n            // first we need to get the user's worktimegroup\n            const user = await this.store.query('user', {\n                id: this.args.record.user.id,\n                sideload: true,\n            });\n            ret = await this.store.query('worktypev2', {\n                worktimegroup: get(user.firstObject, 'worktimegroup.id'),\n            });\n        } else {\n            ret = await this.store.query('worktypev2', {\n                worktimegroup: this.args.record.worktimegroup.id,\n            });\n        }\n        this.loading = false;\n        return ret;\n    }\n\n    // returns true if args.record.startdate is in the past\n    // returns false if args.record.user is null\n    // default returns true\n    getShouldShowMappings() {\n        if (\n            (this.args.record.startdate <= moment().format('YYYY-MM-DD') &&\n                !this.args.record.user) ||\n            (this.args.record.startdate <= moment().format('YYYY-MM-DD') && this.args.record.user)\n        ) {\n            return true;\n        }\n        return false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"yq2laYe3\",\"block\":\"{\\\"symbols\\\":[\\\"wtype\\\",\\\"opt\\\",\\\"@setDestinationWorktype\\\",\\\"@worktypeMappings\\\",\\\"@worktypeMatchError\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mapping-box-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"not\\\",[[23,0,[\\\"shouldShowMappings\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mapping-box-overlay\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mapping-box-overlay-textbox\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktimegroupchange.mapping_no_mappings_needed\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mapping-box-header pt-1 pb-1\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"worktimegroupchange.mapping_help_text\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[28,\\\"await\\\",[[23,0,[\\\"worktypes\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mapping-box-content pb-2\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mapping-box-name\\\"],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mapping-box-arrow\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"svg\\\",true],[10,\\\"width\\\",\\\"16\\\"],[10,\\\"height\\\",\\\"10\\\"],[10,\\\"viewBox\\\",\\\"0 0 16 10\\\"],[10,\\\"fill\\\",\\\"none\\\"],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M11 1L15 5M15 5L11 9M15 5H1\\\"],[10,\\\"stroke\\\",\\\"#0087E0\\\"],[10,\\\"stroke-width\\\",\\\"2\\\"],[10,\\\"stroke-linecap\\\",\\\"round\\\"],[10,\\\"stroke-linejoin\\\",\\\"round\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mapping-box-dropdown\\\"],[8],[0,\\\"\\\\n                \\\"],[5,\\\"power-select\\\",[],[[\\\"@options\\\",\\\"@onChange\\\",\\\"@searchEnabled\\\",\\\"@selected\\\"],[[23,0,[\\\"destinationWorktypes\\\"]],[28,\\\"action\\\",[[23,0,[]],[23,3,[]],[23,1,[]]],null],true,[28,\\\"get\\\",[[23,4,[]],[23,1,[\\\"id\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[23,2,[\\\"name\\\"]],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,5,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"validation.worktype_match_error_header\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"validation.worktype_match_error_text\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/worktimegroupchange/pages/page3/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"utr6fmod\",\"block\":\"{\\\"symbols\\\":[\\\"W\\\",\\\"error\\\",\\\"@close\\\",\\\"@worktypeMappings\\\",\\\"@setDestinationWorktype\\\",\\\"@record\\\",\\\"@saveMappingsAndForm\\\",\\\"@saving\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"canEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/wizard\\\",[],[[\\\"@pages\\\",\\\"@close\\\",\\\"@currentPage\\\",\\\"@pageChange\\\",\\\"@skipCloseOnDone\\\"],[3,[28,\\\"fn\\\",[[23,3,[]]],null],[23,0,[\\\"currentPage\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"currentPage\\\"]]],null]],null],true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"worktimegroupchange.header\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Steps\\\"]],[],[[\\\"@useSubmenus\\\",\\\"@pageNames\\\",\\\"@infoText\\\",\\\"@isDisabled\\\"],[true,[23,0,[\\\"submenus\\\"]],[23,0,[\\\"infoText\\\"]],[23,0,[\\\"isDisabled\\\"]]]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Content\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[23,0,[\\\"currentPageComponent\\\"]]],[[\\\"close\\\",\\\"record\\\",\\\"onFieldChange\\\",\\\"worktypeMatchError\\\",\\\"setDestinationWorktype\\\",\\\"worktypeMappings\\\"],[[23,3,[]],[23,6,[]],[23,0,[\\\"onFieldChange\\\"]],[23,0,[\\\"worktypeMatchError\\\"]],[23,5,[]],[23,4,[]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[23,0,[\\\"currentPage\\\"]],2],null],[23,0,[\\\"validationErrors\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"validation.error.check_values\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"validationErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"li\\\",true],[8],[1,[23,2,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Buttons\\\"]],[],[[\\\"@done\\\",\\\"@isDisabled\\\",\\\"@loading\\\"],[[28,\\\"fn\\\",[[23,7,[]]],null],[23,0,[\\\"nextButtonDisabled\\\"]],[23,8,[]]]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"validation.cannot_edit_worktimegroup_changes_title\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"validation.cannot_edit_worktimegroup_changes_text\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/worktimegroupchange/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"ESxliPuS\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saved.title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,2,[[24,[\\\"fields\\\"]],[24,[\\\"record\\\"]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"translate-column\\\",null,[[\\\"form\\\",\\\"field\\\"],[[23,1,[\\\"form\\\"]],[23,1,[\\\"name\\\"]]]]],false],[0,\\\": \\\"],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[23,1,[\\\"form\\\"]],[23,1,[\\\"name\\\"]],[28,\\\"get\\\",[[24,[\\\"record\\\"]],[23,1,[\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-lg btn-block\\\"],[12,\\\"data-anchor\\\",\\\"saved-button-ok\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"close\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saved.what_next\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"saved-next-actions\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"saved-next-button\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"saved.add_new\\\"],null]],[12,\\\"data-anchor\\\",\\\"saved-button-addnew\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"addNew\\\"]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"saved-next-button\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"saved.add_same\\\"],null]],[12,\\\"data-anchor\\\",\\\"saved-button-addsame\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"addSame\\\"]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CopyRow\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"saved-next-button\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"saved.edit_new\\\"],null]],[12,\\\"data-anchor\\\",\\\"saved-button-edit\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"edit\\\"]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/saved/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"wLkkemO9\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"savedView\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,1]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"saved\\\"],[[28,\\\"component\\\",[\\\"collector/form-add/saved\\\"],[[\\\"record\\\",\\\"fields\\\",\\\"close\\\",\\\"edit\\\",\\\"addSame\\\",\\\"addNew\\\"],[[24,[\\\"record\\\"]],[24,[\\\"fields\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"savedView\\\"]]],null],false],null],[28,\\\"action\\\",[[23,0,[]],\\\"addSame\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"],null]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[\\\"collector/form-add/saved\\\"],[[\\\"record\\\",\\\"fields\\\",\\\"close\\\",\\\"edit\\\",\\\"addSame\\\",\\\"addNew\\\"],[[24,[\\\"record\\\"]],[24,[\\\"fields\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"savedView\\\"]]],null],false],null],[28,\\\"action\\\",[[23,0,[]],\\\"addSame\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"record\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[5,\\\"dump-dev\\\",[],[[\\\"@text\\\"],[\\\"form-add\\\"]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[25,1]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"fields\\\",\\\"template\\\"],[[28,\\\"component\\\",[\\\"collector/form-add/fields\\\"],[[\\\"record\\\",\\\"fields\\\",\\\"filters\\\",\\\"fieldChanged\\\"],[[24,[\\\"record\\\"]],[24,[\\\"fields\\\"]],[24,[\\\"filters\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"fieldChanged\\\"],null]]]],[28,\\\"component\\\",[\\\"collector/form-add/template\\\"],[[\\\"record\\\",\\\"fields\\\",\\\"filters\\\",\\\"fieldChanged\\\"],[[24,[\\\"record\\\"]],[24,[\\\"fields\\\"]],[24,[\\\"filters\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"fieldChanged\\\"],null]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[\\\"collector/form-add/fields\\\"],[[\\\"record\\\",\\\"fields\\\",\\\"filters\\\",\\\"fieldChanged\\\"],[[24,[\\\"record\\\"]],[24,[\\\"fields\\\"]],[24,[\\\"filters\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"fieldChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[\\\"collector/form-add/error\\\"],[[\\\"error\\\"],[[24,[\\\"error\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[25,1]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"buttons\\\"],[[28,\\\"component\\\",[\\\"collector/form-add/buttons\\\"],[[\\\"form\\\",\\\"disabled\\\",\\\"save\\\",\\\"cancel\\\",\\\"saving\\\"],[[24,[\\\"form\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"],null],[24,[\\\"saving\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[\\\"collector/form-add/buttons\\\"],[[\\\"form\\\",\\\"disabled\\\",\\\"save\\\",\\\"cancel\\\",\\\"saving\\\"],[[24,[\\\"form\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"],null],[24,[\\\"saving\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    fieldsByName: computed('fields', function () {\n        const fieldsByName = {};\n        get(this, 'fields').forEach((field) => (fieldsByName[get(field, 'name')] = field));\n        return fieldsByName;\n    }),\n\n    template: computed('record.user', function () {\n        if (get(this, 'record.user.worktimegroup.id') === '238996')\n            return [\n                {\n                    col1: {\n                        header: 'Perusjutut',\n                        fields: ['date', 'user', 'project'],\n                    },\n                    col2: {\n                        header: 'Työaika',\n                        fields: ['starttime', 'endtime'],\n                    },\n                },\n            ];\n        else\n            return [\n                {\n                    col1: {\n                        header: 'Perusjutut',\n                        help: 'paljon kaikkee leipä tekstiä. paljon kaikkee leipä tekstiä. paljon kaikkee leipä tekstiä.',\n                        fields: ['date', 'user', 'project'],\n                    },\n                    col2: {\n                        header: 'Työaika',\n                        fields: ['starttime', 'endtime'],\n                    },\n                },\n                {\n                    col1: {\n                        header: 'Korvaukset',\n                        closed: true,\n                        fields: ['task'],\n                    },\n                    col2: {\n                        header: 'Lisätiedot',\n                        closed: true,\n                        fields: ['multitask', 'description'],\n                    },\n                },\n            ];\n    }),\n});\n","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\n\nexport default Component.extend({\n    show: true,\n    showHelp: false,\n\n    didReceiveAttrs() {\n        if (get(this, 'col.closed')) set(this, 'show', false);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"Z0kDB/8d\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"col\\\",\\\"closed\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"subheader\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"show\\\"]]],null],[28,\\\"not\\\",[[24,[\\\"show\\\"]]],null]]],[8],[1,[24,[\\\"col\\\",\\\"header\\\"]],false],[0,\\\" \\\\n        \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"glyphicon \\\",[28,\\\"if\\\",[[24,[\\\"show\\\"]],\\\"glyphicon-chevron-up\\\",\\\"glyphicon-chevron-down\\\"],null]]]],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\" \\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"subheader\\\"],[8],[1,[24,[\\\"col\\\",\\\"header\\\"]],false],[9],[0,\\\" \\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"col\\\",\\\"help\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Info subheader pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showHelp\\\"]]],null],[28,\\\"not\\\",[[24,[\\\"showHelp\\\"]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showHelp\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"blockquote\\\",true],[10,\\\"class\\\",\\\"help\\\"],[8],[1,[24,[\\\"col\\\",\\\"help\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"fields\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"col\\\",\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"component\\\",[\\\"collector/field-container\\\"],[[\\\"model\\\",\\\"field\\\",\\\"change\\\"],[[24,[\\\"record\\\"]],[28,\\\"get\\\",[[24,[\\\"fieldsByName\\\"]],[23,1,[]]],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"fieldChanged\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"  \\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/template/subform/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"JDoQqlRf\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"template\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"col1\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/form-add/template/subform\\\",null,[[\\\"col\\\",\\\"fieldsByName\\\",\\\"record\\\",\\\"fieldChanged\\\"],[[23,1,[\\\"col1\\\"]],[24,[\\\"fieldsByName\\\"]],[24,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"fieldChanged\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/form-add/template/subform\\\",null,[[\\\"col\\\",\\\"fieldsByName\\\",\\\"record\\\",\\\"fieldChanged\\\"],[[23,1,[\\\"col2\\\"]],[24,[\\\"fieldsByName\\\"]],[24,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"fieldChanged\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/form-add/template/subform\\\",null,[[\\\"col\\\",\\\"fieldsByName\\\",\\\"record\\\",\\\"fieldChanged\\\"],[[23,1,[]],[24,[\\\"fieldsByName\\\"]],[24,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"fieldChanged\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/template/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    dialogs: service(),\n    intl: service(),\n    evented: service(),\n\n    showActionList: computed('record', 'showHistory', function () {\n        if (get(this, 'showHistory')) return false;\n        if (get(this, 'record') && !get(this, 'record.isNew')) return true;\n        return false;\n    }),\n\n    actions: {\n        async remove() {\n            if (!(await this.dialogs.confirm(this.intl.t('general.remove_row')))) return;\n            set(this, 'loading', true);\n            set(this, 'error', null);\n            try {\n                await this.record.destroyRecord();\n            } catch (reason) {\n                set(this, 'loading', false);\n                set(this, 'error', reason);\n                return;\n            }\n            this.evented.storeEvent('delete', this.form, this.record);\n\n            if (this.rowEdited) this.rowEdited();\n            if (this.close) this.close();\n        },\n\n        closeClicked() {\n            if (this.showHistory) set(this, 'showHistory', false);\n            else if (this.close) this.close();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"dOEpCRbT\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\",\\\"@actionList\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeClicked\\\"],null],[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"menu.add_\\\",[24,[\\\"form\\\"]]],null]],null],[28,\\\"if\\\",[[23,0,[\\\"showActionList\\\"]],[28,\\\"array\\\",[[28,\\\"hash\\\",null,[[\\\"name\\\",\\\"action\\\"],[[28,\\\"t\\\",[\\\"rowhistory.title\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showHistory\\\"]]],null],true],null]]]],[28,\\\"hash\\\",null,[[\\\"name\\\",\\\"action\\\"],[[28,\\\"t\\\",[\\\"general.delete\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"remove\\\"],null]]]]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showHistory\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\",\\\"hideTitle\\\"],[[28,\\\"readonly\\\",[[24,[\\\"record\\\",\\\"id\\\"]]],null],[24,[\\\"form\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[22,\\\"error\\\"],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/form-add/forms/auto\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"defaults\\\",\\\"showSaved\\\",\\\"rowAdded\\\",\\\"rowEdited\\\",\\\"close\\\"],[[24,[\\\"form\\\"]],[24,[\\\"record\\\"]],[24,[\\\"defaults\\\"]],[24,[\\\"showSaved\\\"]],[24,[\\\"rowAdded\\\"]],[24,[\\\"rowEdited\\\"]],[24,[\\\"close\\\"]]]]],false],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-modal/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\n/**\n *\n *\n * parameters:\n *      rowActions: what actions to show separated by comma. default: edit,remove\n *\n */\nexport default Component.extend({\n    collector: service('collector-service'),\n\n    showActions: 'edit,history,remove',\n\n    showEdit: computed('showActions', function () {\n        if (!get(this, 'collector').testNeeds([get(this, 'form') + '@edit'])) return false;\n        if (!get(this, 'showActions')) return false;\n        if (!this.row.isEditable) return false;\n        return get(this, 'showActions').split(',').includes('edit');\n    }),\n\n    showHistory: computed('showActions', function () {\n        if (!get(this, 'showActions')) return false;\n        return get(this, 'showActions').split(',').includes('history');\n    }),\n\n    showRemove: computed('showActions', function () {\n        if (!get(this, 'collector').testNeeds([get(this, 'form') + '@remove'])) return false;\n        if (!get(this, 'showActions')) return false;\n        if (!this.row.isEditable) return false;\n        return get(this, 'showActions').split(',').includes('remove');\n    }),\n\n    showCopy: computed('showActions', function () {\n        if (\n            !this.collector.testNeeds([\n                '!' + get(this, 'form') + '@errors',\n                get(this, 'form') + '@add',\n            ])\n        )\n            return false;\n        return true;\n    }),\n\n    showLock: computed('row', function () {\n        if (get(this.row, 'row_info.privilege_openlock') === false) return false;\n        return get(this.row, 'row_info.status') === 'locked';\n    }),\n\n    rowIsRemoved: computed('row', function () {\n        return get(this.row, 'row_info.status') === 'removed';\n    }),\n\n    showRestore: computed('form', function () {\n        return get(this, 'collector').testNeeds([get(this, 'form') + '@remove']);\n    }),\n\n    actions: {\n        clicked(action) {\n            get(this, 'actionClicked')(action, get(this, 'row'));\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"tZameMl0\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"inlineEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[4,\\\"if\\\",[[24,[\\\"showCopy\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-CopyRow\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clicked\\\",\\\"copy\\\"]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showLock\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[4,\\\"if\\\",[[24,[\\\"showHistory\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Search\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.customer.history\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"clicked\\\",\\\"history\\\"]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Lock\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.unlock_selected_rows\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"clicked\\\",\\\"unlock\\\"]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"rowIsRemoved\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[4,\\\"if\\\",[[24,[\\\"showRestore\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-ReuseFilled\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.restore_rows\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"clicked\\\",\\\"restore\\\"]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[4,\\\"if\\\",[[24,[\\\"showHistory\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Search\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.customer.history\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"clicked\\\",\\\"history\\\"]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[4,\\\"if\\\",[[24,[\\\"showEdit\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"general.edit\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"clicked\\\",\\\"edit\\\"]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[4,\\\"if\\\",[[24,[\\\"showHistory\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Search\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.customer.history\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"clicked\\\",\\\"history\\\"]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[4,\\\"if\\\",[[24,[\\\"showRemove\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Delete\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.delete_rows\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"clicked\\\",\\\"remove\\\"]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[14,1,[[24,[\\\"row\\\"]]]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/action-bar/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n    actions: {\n        changeStatus(status) {\n            this.changeStatus(status);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"poo111tX\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more push-left\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-report-action\\\"],null]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.approve_rows\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\",\\\"approved\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.approve_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/approve/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed, set } from '@ember/object';\n\nexport default Component.extend({\n    localstorage: service(),\n    analytics: service(),\n\n    tagName: '',\n\n    hiddenColumns: computed('columns', 'columns.[]', function () {\n        return this.allColumns.filter((column) => !this.columns.includes(column));\n    }),\n\n    actions: {\n        columnDropped(target, dropped) {\n            if (target == dropped) return;\n            this.moveElementInArray(this.columns, this.columns[dropped], target - dropped);\n            this.columnsChanged(this.columns);\n            this.saveToLS(this.columns);\n        },\n\n        moveCol(col, dir) {\n            this.moveElementInArray(this.columns, col, dir);\n            this.columnsChanged(this.columns);\n            this.saveToLS(this.columns);\n        },\n        hideColumn(col) {\n            this.analytics.trackEvent({\n                category: this.form + ' report hide column',\n                action: col,\n                label: 'Form-report',\n            });\n            this.columns.removeObject(col);\n            this.columnsChanged(this.columns);\n            this.saveToLS(this.columns);\n        },\n        showColumn(col) {\n            this.analytics.trackEvent({\n                category: this.form + ' report show column',\n                action: col,\n                label: 'Form-report',\n            });\n            this.columns.pushObject(col);\n            this.columnsChanged(this.columns);\n            this.saveToLS(this.columns);\n        },\n\n        setRowsPerPage(RowsPerPage) {\n            this.setRowsPerPage(RowsPerPage);\n        },\n\n        deactivateTemplate() {\n            const visibleList = this.localstorage.getItem(this.form + '_defaultColumns');\n            const columns = this.allColumns.filter(\n                (column) => !visibleList || visibleList.includes(column.external_type),\n            );\n            this.columnsChanged(columns);\n            set(this, 'currentTemplate', null);\n        },\n\n        activateTemplate(template) {\n            const columns = template.columns.split(',').reduce((accumulator, column) => {\n                let columnObject = this.allColumns.find(\n                    (object) => object.external_type === column,\n                );\n                if (columnObject) accumulator.push(columnObject);\n                return accumulator;\n            }, []);\n\n            this.columnsChanged(columns);\n        },\n    },\n\n    moveElementInArray(obj, col, offset) {\n        let index = obj.indexOf(col);\n        obj.removeObject(col);\n        let newIndex = index + offset;\n        newIndex = newIndex > obj.length ? 0 : newIndex < 0 ? obj.length : newIndex;\n        obj.insertAt(newIndex, col);\n    },\n\n    saveToLS(columns) {\n        this.localstorage.setItem(\n            this.form + '_defaultColumns',\n            columns.map((column) => column.external_type).filter((item) => item),\n        );\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"2LXd4yqJ\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"col\\\",\\\"index\\\",\\\"col\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more display-menu\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-report-action\\\"],null]],[8],[0,\\\"\\\\n    \\\"],[5,\\\"basic-dropdown\\\",[],[[\\\"@verticalPosition\\\",\\\"@horizontalPosition\\\"],[\\\"below\\\",\\\"right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Trigger\\\"]],[[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.columnSort\\\"],null]]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-DragReorder\\\"],[8],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Content\\\"]],[[12,\\\"class\\\",\\\"column-selector-box\\\"]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"column-selector-dropdown side-by-side\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.limit\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-group\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"rowsPerPage\\\"]],25],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",25]],[8],[1,25,false],[9],[0,\\\"|\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"rowsPerPage\\\"]],50],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",50]],[8],[1,50,false],[9],[0,\\\"|\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"rowsPerPage\\\"]],100],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",100]],[8],[1,100,false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"report-template-selector\\\",null,[[\\\"form\\\",\\\"columns\\\",\\\"settings\\\",\\\"currentTemplate\\\",\\\"deactivateTemplate\\\",\\\"activateTemplate\\\"],[[24,[\\\"form\\\"]],[24,[\\\"columns\\\"]],[28,\\\"hash\\\",null,[[\\\"limit\\\",\\\"sortByColumn\\\"],[[24,[\\\"rowsPerPage\\\"]],[24,[\\\"sort\\\"]]]]],[24,[\\\"currentTemplate\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"deactivateTemplate\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"activateTemplate\\\"],null]]]],false],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"column-selector-dropdown side-by-side\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.hidden\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"hiddenColumns\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[12,\\\"draggable\\\",\\\"false\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.columns.click_to_show\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"showColumn\\\",[23,4,[]]]],[8],[1,[23,4,[\\\"translated_name\\\"]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"column-selector-dropdown side-by-side\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.shown\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[\\\"translated_name\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\",\\\"tagName\\\",\\\"data-field\\\",\\\"class\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"columnDropped\\\",[23,3,[]]],null],\\\"li\\\",[23,2,[]],\\\"column-selector-dropzone\\\"]],{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[28,\\\"concat\\\",[\\\"\\\",[23,3,[]]],null],\\\"column-selector-draggable-item\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"a\\\",false],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.columns.click_to_hide\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"hideColumn\\\",[23,2,[]]]],[8],[1,[23,2,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"sort-link pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moveCol\\\",[23,2,[]],-1]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Up2Filled\\\"],[8],[9],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"sort-link pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moveCol\\\",[23,2,[]],1]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Down2Filled\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2,3]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/column-selector/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport collector from 'tt4/classes/collector';\n\nexport default Component.extend({\n    disabledClass: computed('selected', function () {\n        if (!get(this, 'selected')) return 'disabled';\n        return get(this, 'selected').length > 0 ? '' : 'disabled';\n    }),\n\n    canChangeStatus: computed('form', function () {\n        let field = collector.getFormObject(this.form + '.status');\n\n        if (field && !field.features.readonly) {\n            return true;\n        }\n\n        return false;\n    }),\n\n    actions: {\n        toggleInlineEdit() {\n            this.toggleInlineEdit();\n        },\n\n        exportPdf() {\n            this.exportPdf();\n        },\n\n        exportCsv() {\n            this.exportCsv();\n        },\n\n        openExportModal(type) {\n            this.openExportModal(type);\n        },\n\n        saveRows() {\n            this.saveRows();\n        },\n\n        showOrHideRemoved() {\n            this.showOrHideRemoved();\n        },\n\n        setRowsPerPage(RowsPerPage) {\n            this.setRowsPerPage(RowsPerPage);\n        },\n\n        deactivateTemplate() {\n            this.deactivateTemplate();\n        },\n\n        activateTemplate(template) {\n            this.activateTemplate(template);\n        },\n\n        refreshReport() {\n            this.refreshReport();\n        },\n\n        changeStatus(status) {\n            this.changeStatus(status);\n        },\n\n        handleLock(action) {\n            this.handleLock(action);\n        },\n\n        handleRemove(action) {\n            this.handleRemove(action);\n        },\n    },\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({\n    classNames: ['btn-group', 'report-more'],\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'li',\n});\n","export default Ember.HTMLBars.template({\"id\":\"F8uuhyT5\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"exportCsv\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_csv\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/export-more/csv/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'li',\n});\n","export default Ember.HTMLBars.template({\"id\":\"IvjupRyk\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]],\\\"email\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.send_email\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/export-more/email-approval/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'li',\n});\n","export default Ember.HTMLBars.template({\"id\":\"sfe5ENAV\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]],\\\"export_excel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_excel\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/export-more/excel/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'li',\n});\n","export default Ember.HTMLBars.template({\"id\":\"2/Rd/srw\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]],\\\"export_pdf_full\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf_full\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/export-more/pdf-full/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'li',\n});\n","export default Ember.HTMLBars.template({\"id\":\"+WsSxDzs\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]],\\\"export_pdf\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/export-more/pdf/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'li',\n    actions: {\n        action() {\n            this.action();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"+gWwvUoR\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[12,\\\"disabled\\\",[22,\\\"disabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"action\\\"]],[8],[14,1],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/export-more/row/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n});\n","export default Ember.HTMLBars.template({\"id\":\"haoiz0tV\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showRemoved\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"showOrHideRemoved\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.show_normal\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"showOrHideRemoved\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.show_removed\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/export-more/show-removed/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"q74DeT4W\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[5,\\\"bs-dropdown\\\",[[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-report-action\\\"],null]]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"pdf\\\",\\\"pdfFull\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/export-more/pdf\\\"],[[\\\"openExportModal\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]]],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/export-more/pdf-full\\\"],[[\\\"openExportModal\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]]],null]]]]]]]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"isMobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"csv\\\",\\\"excel\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/export-more/csv\\\"],[[\\\"exportCsv\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"exportCsv\\\"]]],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/export-more/excel\\\"],[[\\\"openExportModal\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]]],null]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"removedStatus\\\",\\\"emailApproval\\\",\\\"row\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/export-more/show-removed\\\"],[[\\\"showOrHideRemoved\\\",\\\"showRemoved\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"showOrHideRemoved\\\"]]],null],[24,[\\\"showRemoved\\\"]]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/export-more/email-approval\\\"],[[\\\"openExportModal\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]]],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/export-more/row\\\"],null]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/form-report/actions/export-more/pdf\\\",null,[[\\\"openExportModal\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]]],null]]]],false],[0,\\\"\\\\n\\\\n            \\\"],[1,[28,\\\"collector/form-report/actions/export-more/pdf-full\\\",null,[[\\\"openExportModal\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"isMobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/form-report/actions/export-more/csv\\\",null,[[\\\"exportCsv\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"exportCsv\\\"]]],null]]]],false],[0,\\\"\\\\n\\\\n                \\\"],[1,[28,\\\"collector/form-report/actions/export-more/excel\\\",null,[[\\\"openExportModal\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"collector/form-report/actions/export-more/show-removed\\\",null,[[\\\"showOrHideRemoved\\\",\\\"showRemoved\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"showOrHideRemoved\\\"]]],null],[24,[\\\"showRemoved\\\"]]]]],false],[0,\\\"\\\\n\\\\n            \\\"],[1,[28,\\\"collector/form-report/actions/export-more/email-approval\\\",null,[[\\\"openExportModal\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/export-more/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n});\n","export default Ember.HTMLBars.template({\"id\":\"R106e1XB\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-report-action\\\"],null]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null]],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"exportPdf\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PDF-2Filled\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/export-pdf/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n});\n","export default Ember.HTMLBars.template({\"id\":\"wux/QS3D\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-report-action\\\"],null]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.gps\\\"],null]],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"openGpsMap\\\"]]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Globe\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/gps-location-map/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n    actions: {\n        toggleInlineEdit() {\n            this.toggleInlineEdit();\n        },\n\n        saveRows() {\n            this.saveRows();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"8dLZlZjm\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"inlineEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more push-left\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-report-action\\\"],null]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveRows\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general_report.inline_edit.save\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more hidden-xs hidden-sm\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-report-action\\\"],null]],[8],[0,\\\"\\\\n    \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@theme\\\",\\\"@onLabel\\\",\\\"@offLabel\\\",\\\"@showLabels\\\",\\\"@value\\\",\\\"@onToggle\\\"],[\\\"light\\\",\\\"\\\",[28,\\\"t\\\",[\\\"general_report.inline_edit.toggle\\\"],null],true,[22,\\\"inlineEdit\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"toggleInlineEdit\\\"],null]]]],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/inline-edit/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    actions: {\n        changeStatus(status) {\n            this.changeStatus(status);\n        },\n\n        handleLock(action) {\n            this.handleLock(action);\n        },\n\n        handleRemove(action) {\n            this.handleRemove(action);\n        },\n    },\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n    actions: {\n        handleLock(action) {\n            this.handleLock(action);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"FqUtVYDY\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[22,\\\"disabledClass\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\",\\\"unlock\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.unlock_selected_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[22,\\\"disabledClass\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\",\\\"lock\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.lock_selected_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/more/lock/template.hbs\"}});","import Component from '@ember/component';\nimport { isEmpty } from '@ember/utils';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    router: service(),\n    tagName: '',\n    actions: {\n        transitionToMassedit() {\n            if (isEmpty(this.selected)) return;\n            let mappedIds = this.selected.map((row) => row.id);\n            this.router.transitionTo('massedit', this.form, mappedIds.join(','));\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"HVQDnKG2\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[22,\\\"disabledClass\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"openMassedit\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.massedit\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/more/massedit/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n});\n","export default Ember.HTMLBars.template({\"id\":\"vrCxD+Vj\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"qr-code-generator\\\",null,[[\\\"style\\\",\\\"disabledClass\\\",\\\"rows\\\",\\\"form\\\"],[\\\"li\\\",[23,0,[\\\"disabledClass\\\"]],[23,0,[\\\"selected\\\"]],[23,0,[\\\"form\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/more/qr-code/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n    actions: {\n        handleRemove(action) {\n            this.handleRemove(action);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"XeNnhaKM\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRemoved\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[22,\\\"disabledClass\\\"]]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\",\\\"restore\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.restore_rows\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[22,\\\"disabledClass\\\"]]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\",\\\"remove\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.delete_rows\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/more/remove/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n    actions: {\n        action() {\n            this.action();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"uoK+lOmt\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[22,\\\"disabledClass\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[12,\\\"disabled\\\",[22,\\\"disabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"action\\\"]],[8],[14,1],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/more/row/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n    actions: {\n        changeStatus(status) {\n            this.changeStatus(status);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"5L9a1wgt\",\"block\":\"{\\\"symbols\\\":[\\\"type\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"statusTypes\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[22,\\\"disabledClass\\\"]]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\",[23,1,[\\\"id\\\"]]]],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"li\\\",true],[10,\\\"role\\\",\\\"presentation\\\"],[10,\\\"class\\\",\\\"divider\\\"],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/more/status/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"QMqodB6W\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"&default\\\"],\\\"statements\\\":[[5,\\\"bs-dropdown\\\",[[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-report-action\\\"],null]]],[[\\\"@class\\\"],[\\\"report-more push-left\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"  \\\"],[1,[28,\\\"t\\\",[\\\"report.more_button\\\"],null],false],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabledClass\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"report-notchecked\\\"],[8],[7,\\\"a\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.nothing_checked\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"canChangeStatus\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"status\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/more/status\\\"],[[\\\"statusTypes\\\",\\\"changeStatus\\\",\\\"disabledClass\\\"],[[24,[\\\"statusTypes\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\"],null],[24,[\\\"disabledClass\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/form-report/actions/more/status\\\",null,[[\\\"statusTypes\\\",\\\"changeStatus\\\",\\\"disabledClass\\\"],[[24,[\\\"statusTypes\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\"],null],[24,[\\\"disabledClass\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"lock\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/more/lock\\\"],[[\\\"handleLock\\\",\\\"disabledClass\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\"],null],[24,[\\\"disabledClass\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/form-report/actions/more/lock\\\",null,[[\\\"handleLock\\\",\\\"disabledClass\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\"],null],[24,[\\\"disabledClass\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=3,4,5,6\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"massedit\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/more/massedit\\\"],[[\\\"selected\\\",\\\"form\\\",\\\"disabledClass\\\",\\\"openMassedit\\\"],[[23,0,[\\\"selected\\\"]],[23,0,[\\\"form\\\"]],[24,[\\\"disabledClass\\\"]],[24,[\\\"openMassedit\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/form-report/actions/more/massedit\\\",null,[[\\\"selected\\\",\\\"form\\\",\\\"disabledClass\\\",\\\"openMassedit\\\"],[[23,0,[\\\"selected\\\"]],[23,0,[\\\"form\\\"]],[24,[\\\"disabledClass\\\"]],[24,[\\\"openMassedit\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"@remove\\\"],null]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"remove\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/more/remove\\\"],[[\\\"handleRemove\\\",\\\"showRemoved\\\",\\\"disabledClass\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\"],null],[24,[\\\"showRemoved\\\"]],[24,[\\\"disabledClass\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"collector/form-report/actions/more/remove\\\",null,[[\\\"handleRemove\\\",\\\"showRemoved\\\",\\\"disabledClass\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\"],null],[24,[\\\"showRemoved\\\"]],[24,[\\\"disabledClass\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"qrCode\\\",\\\"row\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/more/qr-code\\\"],[[\\\"disabledClass\\\",\\\"selected\\\",\\\"form\\\"],[[24,[\\\"disabledClass\\\"]],[23,0,[\\\"selected\\\"]],[23,0,[\\\"form\\\"]]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/more/row\\\"],[[\\\"disabledClass\\\"],[[24,[\\\"disabledClass\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/form-report/actions/more/qr-code\\\",null,[[\\\"disabledClass\\\",\\\"selected\\\",\\\"form\\\"],[[24,[\\\"disabledClass\\\"]],[23,0,[\\\"selected\\\"]],[23,0,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/more/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n    actions: {\n        refreshReport() {\n            this.refreshReport();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"jix+JG/X\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-report-action\\\"],null]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.refreshReport\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"refreshReport\\\"]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-refresh\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/refresh/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"cTLoDTOo\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"selected\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more push-left\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"strong\\\",true],[8],[1,[23,0,[\\\"selected\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.items_checked\\\"],null],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[25,1]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"selected\\\",\\\"length\\\"]],[24,[\\\"canChangeStatus\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"approve\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/approve\\\"],[[\\\"changeStatus\\\",\\\"name\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\"],null],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-approve\\\"],null]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"more\\\",\\\"inlineEdit\\\",\\\"columnSelector\\\",\\\"pdfExport\\\",\\\"exportMore\\\",\\\"refresh\\\",\\\"gps\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/more\\\"],[[\\\"disabledClass\\\",\\\"changeStatus\\\",\\\"handleLock\\\",\\\"handleRemove\\\",\\\"showRemoved\\\",\\\"statusTypes\\\",\\\"canChangeStatus\\\",\\\"form\\\",\\\"selected\\\",\\\"openMassedit\\\",\\\"name\\\"],[[24,[\\\"disabledClass\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\"],null],[24,[\\\"showRemoved\\\"]],[24,[\\\"statusTypes\\\"]],[24,[\\\"canChangeStatus\\\"]],[24,[\\\"form\\\"]],[23,0,[\\\"selected\\\"]],[24,[\\\"openMassedit\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-more\\\"],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/inline-edit\\\"],[[\\\"inlineEdit\\\",\\\"toggleInlineEdit\\\",\\\"saveRows\\\",\\\"name\\\"],[[24,[\\\"inlineEdit\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleInlineEdit\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"saveRows\\\"],null],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-inline-edit\\\"],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/column-selector\\\"],[[\\\"form\\\",\\\"columns\\\",\\\"allColumns\\\",\\\"rowsPerPage\\\",\\\"columnsChanged\\\",\\\"setRowsPerPage\\\",\\\"name\\\"],[[24,[\\\"form\\\"]],[24,[\\\"columns\\\"]],[24,[\\\"allColumns\\\"]],[24,[\\\"rowsPerPage\\\"]],[24,[\\\"columnsChanged\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\"],null],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-column-selector\\\"],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/export-pdf\\\"],[[\\\"exportPdf\\\",\\\"showLoader\\\",\\\"name\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"exportPdf\\\"],null],[24,[\\\"showLoader\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-export-pdf\\\"],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/export-more\\\"],[[\\\"exportCsv\\\",\\\"openExportModal\\\",\\\"showOrHideRemoved\\\",\\\"showRemoved\\\",\\\"showLoader\\\",\\\"name\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"exportCsv\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openExportModal\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showOrHideRemoved\\\"],null],[24,[\\\"showRemoved\\\"]],[24,[\\\"showLoader\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-export-more\\\"],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/refresh\\\"],[[\\\"refreshReport\\\",\\\"name\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"refreshReport\\\"],null],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-refresh\\\"],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/gps-location-map\\\"],[[\\\"openGpsMap\\\",\\\"name\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openGpsMap\\\"]]],null],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-gps\\\"],null]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"selected\\\",\\\"length\\\"]],[24,[\\\"canChangeStatus\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/form-report/actions/approve\\\",null,[[\\\"changeStatus\\\",\\\"name\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\"],null],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-approve\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/form-report/actions/more\\\",null,[[\\\"disabledClass\\\",\\\"changeStatus\\\",\\\"handleLock\\\",\\\"handleRemove\\\",\\\"showRemoved\\\",\\\"statusTypes\\\",\\\"canChangeStatus\\\",\\\"form\\\",\\\"selected\\\",\\\"openMassedit\\\",\\\"name\\\"],[[24,[\\\"disabledClass\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\"],null],[24,[\\\"showRemoved\\\"]],[24,[\\\"statusTypes\\\"]],[24,[\\\"canChangeStatus\\\"]],[24,[\\\"form\\\"]],[23,0,[\\\"selected\\\"]],[24,[\\\"openMassedit\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-more\\\"],null]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"collector/form-report/actions/inline-edit\\\",null,[[\\\"inlineEdit\\\",\\\"toggleInlineEdit\\\",\\\"saveRows\\\",\\\"name\\\"],[[24,[\\\"inlineEdit\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleInlineEdit\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"saveRows\\\"],null],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-inline-edit\\\"],null]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"collector/form-report/actions/column-selector\\\",null,[[\\\"form\\\",\\\"columns\\\",\\\"allColumns\\\",\\\"rowsPerPage\\\",\\\"columnsChanged\\\",\\\"setRowsPerPage\\\",\\\"name\\\"],[[24,[\\\"form\\\"]],[24,[\\\"columns\\\"]],[24,[\\\"allColumns\\\"]],[24,[\\\"rowsPerPage\\\"]],[24,[\\\"columnsChanged\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\"],null],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-column-selector\\\"],null]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"collector/form-report/actions/export-pdf\\\",null,[[\\\"exportPdf\\\",\\\"showLoader\\\",\\\"name\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"exportPdf\\\"],null],[24,[\\\"showLoader\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-export-pdf\\\"],null]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"collector/form-report/actions/export-more\\\",null,[[\\\"exportCsv\\\",\\\"showOrHideRemoved\\\",\\\"openExportModal\\\",\\\"showRemoved\\\",\\\"showLoader\\\",\\\"name\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"exportCsv\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showOrHideRemoved\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openExportModal\\\"],null],[24,[\\\"showRemoved\\\"]],[24,[\\\"showLoader\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-export-more\\\"],null]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"collector/form-report/actions/refresh\\\",null,[[\\\"refreshReport\\\",\\\"name\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"refreshReport\\\"],null],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-refresh\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"Z8lhZbt0\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"add-plus-button pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"onClick\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"xmlns:xlink\\\",\\\"http://www.w3.org/1999/xlink\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"viewBox\\\",\\\"6 6 63 63\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"defs\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"filter\\\",true],[10,\\\"id\\\",\\\"Ellipse_27\\\"],[10,\\\"x\\\",\\\"0\\\"],[10,\\\"y\\\",\\\"0\\\"],[10,\\\"width\\\",\\\"75\\\"],[10,\\\"height\\\",\\\"75\\\"],[10,\\\"filterUnits\\\",\\\"userSpaceOnUse\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"feOffset\\\",true],[10,\\\"input\\\",\\\"SourceAlpha\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"feGaussianBlur\\\",true],[10,\\\"stdDeviation\\\",\\\"4\\\"],[10,\\\"result\\\",\\\"blur\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"feFlood\\\",true],[10,\\\"flood-opacity\\\",\\\"0.369\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"feComposite\\\",true],[10,\\\"operator\\\",\\\"in\\\"],[10,\\\"in2\\\",\\\"blur\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"feComposite\\\",true],[10,\\\"in\\\",\\\"SourceGraphic\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"g\\\",true],[10,\\\"id\\\",\\\"PlusSGV\\\"],[10,\\\"transform\\\",\\\"translate(-330 -508)\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"g\\\",true],[10,\\\"transform\\\",\\\"matrix(1, 0, 0, 1, 330, 508)\\\"],[10,\\\"filter\\\",\\\"url(#Ellipse_27)\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"circle\\\",true],[10,\\\"id\\\",\\\"Ellipse_27-2\\\"],[10,\\\"data-name\\\",\\\"Ellipse 27\\\"],[10,\\\"cx\\\",\\\"25.5\\\"],[10,\\\"cy\\\",\\\"25.5\\\"],[10,\\\"r\\\",\\\"25.5\\\"],[10,\\\"transform\\\",\\\"translate(12 12)\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"rect\\\",true],[10,\\\"id\\\",\\\"Rectangle_588\\\"],[10,\\\"data-name\\\",\\\"Rectangle 588\\\"],[10,\\\"width\\\",\\\"27\\\"],[10,\\\"height\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(354 544)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"rect\\\",true],[10,\\\"id\\\",\\\"Rectangle_589\\\"],[10,\\\"data-name\\\",\\\"Rectangle 589\\\"],[10,\\\"width\\\",\\\"27\\\"],[10,\\\"height\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(369 532) rotate(90)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/add/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"aHJ+9SUl\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[25,1]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[14,1,[[24,[\\\"field\\\"]],[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[24,[\\\"form\\\"]],[24,[\\\"field\\\"]],[24,[\\\"value\\\"]]]]],[24,[\\\"value\\\"]],[24,[\\\"row\\\"]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[24,[\\\"form\\\"]],[24,[\\\"field\\\"]],[24,[\\\"value\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/cell/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set, setProperties } from '@ember/object';\nimport { next } from '@ember/runloop';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { isEmpty, typeOf } from '@ember/utils';\nimport { A } from '@ember/array';\nimport filtermodel from 'tt4/mixins/filter-model';\nimport pdfExport from 'tt4/mixins/pdf-export';\nimport saveTheChildren from 'tt4/mixins/save-the-children';\nimport { defer } from 'rsvp';\nimport { pluralize } from 'ember-inflector';\nimport { dasherize, camelize } from '@ember/string';\n\n/**\n *\n * report for collector form\n *\n *  {{#collector/form-report form=\"worktime\" as |report|}}\n        {{report.filters}}\n        {{report.table}}\n    {{/collector/form-report}}\n *\n * parameters:\n *      form: name of the form (mandatory), snake cased eg. export_salary\n *      filter: object containing list of filters that are added to every query.\n *              When used also created records will automatically have these set\n *      showColumns: List of columns to show on report. Also adding and editing form is affected by this.\n *      filterByValues: object containing default-values for filters\n *\n * objects:\n *      filters: filter bar for report.\n *          parameters:\n *              showColumns: list of columns to be shown\n *      add: if used plus button is added above the table\n *      table: the table it self\n *          parameters:\n *              rowActions: list of actions to show for rows separated with comma. default: edit\n *\n */\n\nexport default Component.extend(filtermodel, saveTheChildren, pdfExport, {\n    store: service(),\n    dialogs: service(),\n    intl: service(),\n    collector: service('collector-service'),\n    notifications: service(),\n    error: service(),\n    analytics: service(),\n    capi: service(),\n    router: service(),\n    localStorageWrapper: service(),\n    localstorage: service(),\n    cordova: service('own-cordova-service'),\n    fileExports: service('file-exports'),\n    evented: service(),\n\n    filterByValues: null,\n\n    rowsPerPage: 25,\n    currentPage: 1,\n    rowActions: 'edit,history,remove',\n\n    metaRowCount: alias('data.content.meta.count'),\n\n    pageCount: computed('metaRowCount', function () {\n        if (!this.metaRowCount && !this.cachedRowCount) return 0;\n        const count = this.metaRowCount ? this.metaRowCount : this.cachedRowCount;\n        return Math.ceil(count / get(this, 'rowsPerPage'));\n    }),\n\n    queryParams: computed(\n        'currentPage',\n        'filterByValues',\n        'filter',\n        'sorts',\n        'showRemoved',\n        'jsonapi',\n        'rowsPerPage',\n        function () {\n            let params = {};\n            this.mergeFilters(params, get(this, 'filterByValues'));\n            this.mergeFilters(params, get(this, 'filter'));\n            if (this.jsonapi) {\n                params = this.setJsonapiParams(params);\n            }\n            const sortKey = this.jsonapi ? 'sort' : 'order';\n            if (this.sorts && this.sorts.length)\n                params[sortKey] = this.createSortString(this.sorts, this.jsonapi);\n            params.limit = get(this, 'rowsPerPage');\n            params.offset = get(this, 'rowsPerPage') * (get(this, 'currentPage') - 1);\n            params.sideload = true;\n            if (this.showRemoved) {\n                params.row_info_status = 'removed';\n            }\n            return params;\n        },\n    ),\n\n    allColumns: computed('form', function () {\n        const canEdit = this.collector.testNeeds([\n            '!' + this.form + '@errors',\n            this.form + '@edit',\n        ]);\n        let columns = this.collector.fieldArray(this.form).map((item) => {\n            item['canEdit'] = canEdit;\n            item['valuePath'] = item.name;\n            item['external_type'] = item.name;\n            return item;\n        });\n\n        if (this.showColumns)\n            columns = columns.filter((column) =>\n                this.showColumns.split(',').includes(column.external_type),\n            );\n        columns = columns.filter((column) => column.features && !column.features.hide_column);\n\n        if (!this.hideCreatedColumn)\n            columns.push({\n                name: 'row_info.created',\n                external_type: 'row_info.created',\n                valuePath: 'row_info.created',\n                translated_name: this.intl.t('general.row_info.created'),\n            });\n\n        return columns;\n    }),\n\n    statusTypes: computed('form', function () {\n        let form = camelize(this.form);\n        if (!this.form) return [];\n        if (!this.Collector.fieldExists(form, 'status')) return [];\n\n        let field = this.Collector.field(form, 'status');\n        let fieldOptions = [];\n\n        if (field.features.only_options) {\n            fieldOptions = field.features.only_options.split(',');\n        } else {\n            fieldOptions = field.options;\n        }\n        let options = fieldOptions.map((option) => {\n            if (this.intl.exists('status.' + option)) {\n                return { id: option, name: this.intl.t('report.' + option + '_rows') };\n            } else {\n                return { id: option, name: this.intl.t('report.change_status') + option };\n            }\n        });\n\n        return options;\n    }),\n\n    showApprovalLink: computed('statusTypes', 'selectedExportRows', function () {\n        return this.statusTypes.mapBy('id').includes('approved') && this.selectedExportRows;\n    }),\n\n    init() {\n        this._super();\n        this.updateReport();\n    },\n\n    didReceiveAttrs() {\n        this.selected = [];\n        this.setDefaultLimit();\n        this.setDefaultOrder();\n        this.setVisibleColumns();\n\n        if (!this.filterByValues) {\n            set(this, 'filterByValues', {});\n        }\n\n        // updateReport is called only if this.updateOnDidReceiveAttrs is true .. it might be okay to call by default but let's do this\n        // for now to prevent unwanted behaviour\n        // this.updateReport needs to be called when form is changed .. otherwise we get weird errors when wrong fields are tried to be formatted\n        // with the new form name\n        if (this.updateOnDidReceiveAttrs) this.updateReport();\n    },\n\n    actions: {\n        openGpsMap(selected) {\n            if (this.showLocationMap) {\n                set(this, 'showLocationMap', false);\n                set(this, 'locationMarkers', []);\n                set(this, 'startEndMarkers', []);\n                return;\n            }\n            let rows = selected.length > 0 ? selected : this.data.toArray();\n\n            if (!rows) return;\n\n            let d = defer();\n            let locs = [];\n            let i = 0;\n            let totalLength = rows.length;\n            rows.forEach(async (row) => {\n                if (!row.location && !row.end_location && !row.location_map) {\n                    totalLength--;\n                    return;\n                }\n\n                let locationMapInfo = await this.getLocationMapInfo(row);\n                let loc = {};\n\n                if (locationMapInfo) {\n                    if (typeOf(locationMapInfo) === 'object') {\n                        loc.project = JSON.parse(locationMapInfo.location_map);\n                        loc.project.label = get(locationMapInfo, 'name');\n                    } else {\n                        loc.project = JSON.parse(locationMapInfo);\n                        loc.project.label = row.name ? row.name : null;\n                    }\n                }\n                if (row.location) loc.wStartLoc = JSON.parse(row.location);\n                if (row.end_location) loc.wEndLoc = JSON.parse(row.end_location);\n                loc.wLabel = row.user\n                    ? get(row.user, 'lastname') + ' ' + get(row.user, 'firstname')\n                    : null;\n\n                locs.push(loc);\n\n                if (++i === totalLength) {\n                    if (row.end_location) {\n                        set(this, 'startEndMarkers', locs);\n                    } else {\n                        set(this, 'locationMarkers', locs);\n                    }\n\n                    d.resolve();\n                }\n            });\n            set(this, 'showLocationMap', true);\n            return d;\n        },\n\n        updateSorts(sorts) {\n            this.analytics.trackEvent({\n                category: this.form + ' report sort by column',\n                action: get(sorts, 'firstObject').valuePath,\n                label: 'Form-report',\n            });\n            this.updateReport();\n        },\n\n        columnsChanged(columns) {\n            set(this, 'columns', columns);\n\n            // ugly hax to force ember-table rerender without loading data again\n            const cacheData = get(this, 'data');\n            set(this, 'data', null);\n            next(this, () => set(this, 'data', cacheData));\n        },\n\n        filterChange(value, field) {\n            if (field) {\n                set(this, 'currentPage', 1);\n                set(this, 'filterByValues.' + field, value);\n                this.notifyPropertyChange('queryParams');\n                next(this, () => this.updateReport()); // this needs to be inside next .. if not update is sometimes made before queryParams have changed\n            }\n        },\n        clearFilters() {\n            set(this, 'currentPage', 1);\n            set(this, 'filterByValues', this.filterDefaultValues ? this.filterDefaultValues : {});\n            this.notifyPropertyChange('queryParams');\n            this.updateReport();\n        },\n\n        async actionClicked(action, row) {\n            this.analytics.trackEvent({\n                category: this.form + ' report row actions',\n                action: action,\n                label: 'Form-report',\n            });\n            set(this, 'needsUpdate', true);\n            if (action == 'edit') set(this, 'showForm', row);\n            if (action === 'history') set(this, 'showHistory', row);\n            if (action == 'remove') this.removeRow(row);\n            if (action === 'restore') {\n                await this.restoreRow(row);\n                this.updateReport();\n            }\n            if (action === 'copy') this.copyRow(row);\n            if (action === 'unlock') this.lockOrUnlock(row, 'unlock');\n        },\n\n        add() {\n            const convertFilterToDefaultValues = (values) => {\n                const fields = this.Collector.fieldArray(get(this, 'form'));\n                for (let field in values) {\n                    const fieldObj = fields.findBy('name', field);\n                    if (!fieldObj) continue;\n                    if (fieldObj.type === 'multiselect') values[field] = [values[field]];\n                }\n                return { ...values };\n            };\n\n            const values = Object.assign({}, get(this, 'filter'));\n            const defaultValues = convertFilterToDefaultValues(values);\n\n            set(\n                this,\n                'showForm',\n                get(this, 'store').createRecord(get(this, 'form'), defaultValues),\n            );\n        },\n\n        reload() {\n            this.analytics.trackEvent({\n                category: this.form + ' report actions',\n                action: 'Refresh report',\n                label: 'Form-report',\n            });\n            this.updateReport();\n        },\n\n        pageChange(page) {\n            set(this, 'currentPage', page);\n            this.updateReport();\n        },\n\n        async exportPdf(selected, params = {}) {\n            set(this, 'showLoader', true);\n            this.analytics.trackEvent({\n                category: this.form + ' report actions',\n                action: 'Pdf export',\n                label: 'Form-report',\n            });\n            try {\n                if (params.layoutOption === 'sideHeaders') {\n                    await this.fileExports.createPdfFull(\n                        this.form,\n                        this.selectedExportRows,\n                        this.filterByValues,\n                        this.columns.mapBy('external_type').join(','),\n                        params,\n                        null,\n                    );\n                } else {\n                    await this.createPdf(selected, params, 'download');\n                }\n            } catch (error) {\n                this.error.notify(error);\n            } finally {\n                set(this, 'showLoader', false);\n            }\n        },\n\n        async exportPdfFull(params) {\n            set(this, 'showLoader', true);\n            this.analytics.trackEvent({\n                category: this.form + ' report actions',\n                action: 'Pdf big pictures export',\n                label: 'Form-report',\n            });\n            try {\n                await this.fileExports.createPdfFull(\n                    this.form,\n                    this.selectedExportRows,\n                    this.filterByValues,\n                    this.columns.mapBy('external_type').join(','),\n                    params,\n                    null,\n                );\n            } catch (error) {\n                this.error.notify(error);\n            } finally {\n                set(this, 'showLoader', false);\n            }\n        },\n\n        async exportCsv(selected) {\n            set(this, 'showLoader', true);\n            this.analytics.trackEvent({\n                category: this.form + ' report actions',\n                action: 'Csv export',\n                label: 'Form-report',\n            });\n            try {\n                let data = !isEmpty(selected) ? selected : await this.getExportData();\n                let columns = this.columns.map((col) => {\n                    return { name: col.translated_name, ext: col.name, obj: col };\n                });\n                await this.fileExports.createCsv(this.form, data, columns);\n            } catch (error) {\n                this.error.notify(error);\n            } finally {\n                set(this, 'showLoader', false);\n            }\n        },\n\n        async exportExcel(params) {\n            await this.createExcel(params);\n        },\n\n        handleExportActions(params) {\n            switch (params.type) {\n                case 'export_pdf':\n                    this.send('exportPdf', this.selectedExportRows, params);\n                    break;\n                case 'export_pdf_full':\n                    this.send('exportPdfFull', params);\n                    break;\n                case 'export_excel':\n                    this.send('exportExcel', params);\n                    break;\n            }\n        },\n\n        saveRows() {\n            this.saveDirtyRecords();\n        },\n\n        async toggleInlineEdit() {\n            if (get(this, 'inlineEdit')) {\n                this.analytics.trackEvent({\n                    category: this.form + ' report inline edit',\n                    action: 'disable',\n                    label: 'Form-report',\n                });\n                //if we are closing inline edit, check for dirty/new/invalid records and prompt user if closing is okay\n                let dirtyRecords = [];\n                let reloadPromises = [];\n\n                await get(this, 'data').forEach((record) => {\n                    if (\n                        get(record, 'hasDirtyAttributes') ||\n                        get(record, 'isNew') ||\n                        !get(record, 'isValid')\n                    ) {\n                        dirtyRecords.push(record);\n                    }\n                });\n\n                //if we have dirty records we want to rollback to their previous state\n                if (!isEmpty(dirtyRecords)) {\n                    let confirm = await this.dialogs.confirm(this.intl.t('report.confirm_unsaved'));\n\n                    if (!confirm) return;\n\n                    dirtyRecords.forEach((record) => {\n                        record.rollbackAttributes();\n                        if (!get(record, 'isDeleted')) reloadPromises.push(record.reload());\n                    });\n                }\n\n                await Promise.all(reloadPromises);\n\n                //filter out removed records from data\n                let newData = await get(this, 'data').filter((record) => {\n                    if (get(record, 'isDeleted')) {\n                        this.decrementProperty('cachedRowCount');\n                        return false;\n                    } else return true;\n                });\n\n                set(this, 'data', newData);\n\n                this.toggleProperty('inlineEdit');\n            } else {\n                this.analytics.trackEvent({\n                    category: this.form + ' report inline edit',\n                    action: 'enable',\n                    label: 'Form-report',\n                });\n                if (this.metaRowCount && !this.cachedRowCount)\n                    set(this, 'cachedRowCount', this.metaRowCount);\n                this.toggleProperty('inlineEdit');\n            }\n        },\n\n        changeStatus(selected, status) {\n            if (isEmpty(selected)) return;\n\n            this.analytics.trackEvent({\n                category: this.form + ' report more actions',\n                action: 'Change status',\n                label: 'Form-report',\n            });\n\n            if (this.metaRowCount > selected.length && selected.length === this.data.length) {\n                this.setParamsForStatusChangeAllPages(selected, status, null);\n            }\n\n            selected.forEach(async (row) => {\n                set(row, 'status', status);\n                try {\n                    await row.save();\n                    row.reload();\n                } catch (error) {\n                    this.error.notify(error);\n                    row.rollbackAttributes();\n                }\n            });\n        },\n        openExportModal(selected, type) {\n            set(this, 'showExportModal', true);\n            set(this, 'exportInitType', type);\n            set(this, 'selectedExportRows', selected);\n            set(this, 'showApprovalLinkSelection', this.showApprovalLink);\n            set(this, 'emailSendingCount', selected.length);\n        },\n\n        handleLock(selected, action) {\n            if (isEmpty(selected)) return;\n            if (!this.Collector.testNeeds(['userlevel=5'])) return;\n\n            this.analytics.trackEvent({\n                category: this.form + ' report more actions',\n                action: action + ' rows',\n                label: 'Form-report',\n            });\n\n            if (this.metaRowCount > selected.length && selected.length === this.data.length) {\n                this.setParamsForStatusChangeAllPages(selected, null, action);\n            }\n\n            selected.forEach((row) => {\n                this.lockOrUnlock(row, action);\n            });\n        },\n\n        closeShowChangeStatusForAllPages() {\n            set(this, 'showChangeStatusForAllPages', false);\n        },\n\n        showOrHideRemoved() {\n            if (this.showRemoved) {\n                set(this, 'showRemoved', false);\n            } else {\n                set(this, 'showRemoved', true);\n            }\n            this.updateReport();\n        },\n\n        async handleRemove(selected, action) {\n            if (isEmpty(selected)) return;\n            if (action === 'remove') {\n                let con = await this.dialogs.confirm(this.intl.t('report.confirm_delete'));\n                if (con) {\n                    for (let row of selected) {\n                        await row.destroyRecord();\n                        await row.unloadRecord();\n                    }\n                    this.updateReport();\n                }\n            } else {\n                let con = await this.dialogs.confirm(this.intl.t('report.confirm_restore_rows'));\n                if (con) {\n                    let form_plural = pluralize(this.form).camelize();\n                    selected.forEach(async (row) => {\n                        await this.capi.request(\n                            '/' + form_plural + '/' + row.id + '?validation=off',\n                            {\n                                dataType: 'json',\n                                type: 'PUT',\n                                data:\n                                    '{\"' + this.form.camelize() + '\":{\"row_info.status\":\"normal\"}}',\n                            },\n                        );\n                        await row.unloadRecord();\n                        await this.updateReport();\n                    });\n                }\n            }\n        },\n        async sendEmail(to, title, content, params) {\n            set(this, 'showLoader', true);\n            let rowids = this.selectedExportRows\n                ? this.selectedExportRows.map((item) => get(item, 'id'))\n                : [];\n            try {\n                let base64string = await this.getPdfAttachmentForEmail(params);\n                await this.Collector.ttapi({\n                    url: 'sendReportAsEmail',\n                    data: {\n                        to_address: to,\n                        email: base64string,\n                        content: content,\n                        lang: this.intl.primaryLocale,\n                        includeApproval: get(params, 'approvalLink'),\n                        form_name: this.form,\n                        rowids: rowids,\n                        header: title,\n                        type: get(params, 'type'),\n                    },\n                    method: 'post',\n                });\n                set(this, 'emailSent', true);\n            } catch (err) {\n                set(this, 'emailError', true);\n            } finally {\n                set(this, 'showLoader', false);\n            }\n        },\n\n        setRowsPerPage(RowsPerPage) {\n            this.analytics.trackEvent({\n                category: this.form + ' report rows per page',\n                action: RowsPerPage,\n                label: 'Form-report',\n            });\n            set(this, 'currentPage', 1);\n            set(this, 'rowsPerPage', RowsPerPage);\n            this.localStorageWrapper.setUserSetting(this.defaultLimitKey, RowsPerPage);\n            this.updateReport();\n        },\n    },\n\n    async createExcel(params, base64 = false) {\n        set(this, 'showLoader', true);\n        this.analytics.trackEvent({ category: 'Form-report actions', action: 'Excel export' });\n        try {\n            let filters = this.addFiltersToPdf();\n            let data = !isEmpty(this.selectedExportRows)\n                ? this.selectedExportRows\n                : await this.getExportData();\n            let columns = this.columns.map((col) => {\n                return { name: col.translated_name, ext: col.name, obj: col };\n            });\n            let excelJSON = this.fileExports.createExcelJSONFromForm(\n                this.form,\n                data,\n                columns,\n                filters,\n                params.sumRow,\n            );\n            if (base64) return await this.fileExports.createBase64ExcelFromJSON(excelJSON);\n            await this.fileExports.createExcelFromJSON(excelJSON);\n        } catch (error) {\n            this.error.notify(error);\n        } finally {\n            set(this, 'showLoader', false);\n        }\n    },\n\n    async getProjectInfo(project) {\n        let projects = await this.store.query('project', { id: project.id });\n        return get(projects, 'firstObject');\n    },\n\n    getLocationMapInfo(row) {\n        if (row.location_map) {\n            return row.location_map;\n        } else if (row.project) {\n            return this.getProjectInfo(row.project);\n        } else {\n            return null;\n        }\n    },\n\n    setParamsForStatusChangeAllPages(selected, status = null, action = null) {\n        let visibleRowIds = selected.map((row) => get(row, 'id'));\n        setProperties(this.filterByValues, { limit: 'all', sideload: true });\n        setProperties(this.changeStatusForAllPagesParams, {\n            visibleRowIds: visibleRowIds,\n            requestParams: this.filterByValues,\n            form: this.form,\n            status: status,\n            action: action,\n            rowCount: this.metaRowCount,\n        });\n        set(this, 'showChangeStatusForAllPages', true);\n    },\n\n    async createPdf(selected, params, mode = 'download') {\n        const columnsOnReport = this.columns.map((col) => col.external_type).join(',');\n        let showColumns = params.template\n            ? get(params, 'template.columns')\n            : columnsOnReport\n              ? columnsOnReport\n              : null;\n        let settings = { form: this.form, show_columns: showColumns };\n        let element = await this.fileExports.createPdfElement(\n            this.getExportData(),\n            selected,\n            settings,\n            this.columns,\n            params,\n        );\n        let elements = [element];\n        let filters_body = this.addFiltersToPdf();\n        if (filters_body.length > 0) {\n            elements.unshift({\n                table: { body: filters_body },\n                layout: 'noBorders',\n            });\n        }\n        let file = await this.createPdfFromElements(elements, mode, '', 8, params);\n        if (window.cordova) {\n            this.cordova.openFile(file, 'application/pdf');\n        }\n        return file;\n    },\n\n    addFiltersToPdf() {\n        let filterKeys = Object.keys(this.filterByValues);\n        if (!filterKeys) return [];\n        let pdf_filters_body = filterKeys.map((key) => {\n            let filterValues = this.filterByValues[key];\n            if (!filterValues || !this.Collector.fieldExists(this.form, key)) return;\n            let field = this.Collector.field(this.form, key);\n\n            let filterNameInPdf = this.setFilterNameInPdf(key);\n            let filterValueInPdf = '';\n\n            // if filterValues is object, we just take its id as a filtervalue\n            if (typeof filterValues == 'object') {\n                filterValues = filterValues.id;\n            }\n\n            if (filterValues.includes(',')) {\n                filterValues.split(',').forEach((value) => {\n                    filterValueInPdf +=\n                        this.Collector._format_(\n                            field.type === 'database' ? parseInt(value) : value,\n                            this.form,\n                            key,\n                            'pdf',\n                            this.data,\n                        ) + ', ';\n                });\n                filterValueInPdf = filterValueInPdf.slice(0, -2);\n            } else {\n                filterValues =\n                    field.type === 'database' || field.type === 'multiselect'\n                        ? parseInt(filterValues)\n                        : filterValues;\n                if (key.includes(':')) {\n                    filterValueInPdf += this.Collector._format_(\n                        filterValues,\n                        this.form,\n                        key.split(':')[0],\n                        'pdf',\n                        this.data,\n                    );\n                } else {\n                    filterValueInPdf += this.Collector._format_(\n                        filterValues,\n                        this.form,\n                        key,\n                        'pdf',\n                        this.data,\n                    );\n                }\n            }\n            return [filterNameInPdf + ': ' + filterValueInPdf];\n        });\n\n        return pdf_filters_body.filter((item) => item);\n    },\n\n    setFilterNameInPdf(key) {\n        let field = this.Collector.fieldArray(this.form).findBy('name', key);\n\n        if (this.intl.exists(this.form + '.' + key)) {\n            return this.intl.t(this.form + '.' + key);\n        } else if (field && field.translated_name) {\n            return field.translated_name;\n        } else if (key.includes(':')) {\n            return (\n                this.intl.t(this.form + '.' + key.split(':')[0]) +\n                ' - ' +\n                this.intl.t(this.form + '.' + key.split(':')[1])\n            );\n        } else {\n            return key;\n        }\n    },\n\n    async getPdfAttachmentForEmail(params) {\n        switch (params.type) {\n            case 'export_pdf':\n                return await this.createPdf(this.selectedExportRows, params, 'base64');\n            case 'export_pdf_full':\n                return await this.fileExports.createPdfFull(\n                    this.form,\n                    this.selectedExportRows,\n                    this.filterByValues,\n                    this.showColumns,\n                    params,\n                    'base64',\n                );\n            case 'export_excel':\n                return await this.createExcel(params, true);\n        }\n    },\n\n    setJsonapiParams(params) {\n        if (!params) return {};\n        let filters = {};\n        Object.entries(params).forEach((param) => {\n            if (!param[1]) return; //if value is empty, continue\n            let field = this.Collector.field(this.form, param[0]);\n            if (field.type === 'database') {\n                filters['filter[relationships.' + param[0] + '.data.id]'] = param[1];\n            } else {\n                filters['filter[attributes.' + param[0] + ']'] = param[1];\n            }\n        });\n        return filters;\n    },\n\n    setVisibleColumns() {\n        const visibleList = this.localstorage.getItem(this.form + '_defaultColumns');\n        let columns = [...this.allColumns];\n        if (visibleList) {\n            columns = visibleList.reduce((acc, column) => {\n                let columnObject = this.allColumns.find(\n                    (object) => object.external_type === column,\n                );\n                if (columnObject) acc.push(columnObject);\n                return acc;\n            }, []);\n        }\n        set(this, 'columns', columns);\n    },\n\n    setDefaultLimit() {\n        let key = this.localStorageKey\n            ? this.localStorageKey + '_defaultLimit'\n            : this.form + '_defaultLimit';\n        if (key) set(this, 'defaultLimitKey', key);\n        let limitfromLS = this.localStorageWrapper.getUserSetting(key);\n        set(this, 'rowsPerPage', limitfromLS.length != 0 ? limitfromLS : this.rowsPerPage);\n    },\n\n    setDefaultOrder() {\n        if (this.defaultSort) {\n            set(this, 'sorts', this.createSortArray(this.defaultSort));\n        }\n        // TODO: Sort by first column on default\n    },\n\n    mergeFilters(filters, merge) {\n        if (!merge) return;\n        for (const key in merge) {\n            const value = this.getIdifRecord(merge[key]);\n            if (value) filters[key] = value;\n        }\n    },\n\n    getIdifRecord(value) {\n        return value && typeof value === 'object' ? get(value, 'id') : value;\n    },\n\n    removeRow(row) {\n        get(this, 'dialogs')\n            .confirm(get(this, 'intl').t('report.confirm_delete'))\n            .then(this.removeOrNot.bind(this, row));\n    },\n\n    async restoreRow(row) {\n        const form_plural = pluralize(this.form).camelize();\n\n        await this.capi.request('/' + form_plural + '/' + row.id + '?validation=off', {\n            dataType: 'json',\n            type: 'PUT',\n            data: '{\"' + this.form.camelize() + '\":{\"row_info.status\":\"normal\"}}',\n        });\n        if (!row.isDestroyed) {\n            row.unloadRecord();\n        }\n        this.evented.storeEvent('restore', get(this, 'form'), null);\n    },\n\n    async copyRow(row) {\n        let newRecord = this.Collector.copyRecord(row);\n        set(newRecord, 'row_info', { privilege_edit: true, privilege_remove: true }); //fake some privileges to enable editing and removing of new row\n        let data = await get(this, 'data').toArray(); //toArray, because the result of a server query is immutable\n        data.unshiftObject(newRecord);\n        this.incrementProperty('cachedRowCount');\n        set(this, 'data', data);\n    },\n\n    async removeOrNot(row, answer) {\n        if (!answer) return;\n        await row.destroyRecord();\n        this.updateReport();\n        this.evented.storeEvent('delete', get(this, 'form'), null);\n    },\n\n    async lockOrUnlock(row, action) {\n        let form_plural = pluralize(this.form).camelize();\n        let data = {};\n        data[this.form] = action === 'lock' ? { locked: true } : { locked: false };\n        try {\n            await this.capi.request('/' + form_plural + '/' + get(row, 'id') + '?validation=off', {\n                dataType: 'json',\n                type: 'PUT',\n                data: JSON.stringify(data),\n            });\n            row.reload();\n        } catch (error) {\n            this.error.notify(error);\n            row.rollbackAttributes();\n        } finally {\n            this.updateReport();\n        }\n    },\n\n    updateReport() {\n        // this is needed to force queryParams to update\n        this.notifyPropertyChange('queryParams');\n        set(\n            this,\n            'data',\n            get(this, 'store').query(dasherize(get(this, 'form')), get(this, 'queryParams')),\n        );\n    },\n\n    createSortString(sorts, jsonapi = false) {\n        if (jsonapi)\n            return sorts\n                .map((item) => (item.isAscending ? '-' : '') + 'attributes.' + item.valuePath)\n                .join(',');\n        return sorts\n            .map(\n                (item) =>\n                    (item.valuePath == 'row_info.created' ? 'id' : item.valuePath) +\n                    (item.isAscending ? '-' : ''),\n            )\n            .join(',');\n    },\n\n    createSortArray(sorts) {\n        if (!sorts) return;\n        return sorts.split(',').map((item) => {\n            return item.slice(-1) == '-'\n                ? { valuePath: item.slice(0, -1), isAscending: true }\n                : { valuePath: item, isAscending: false };\n        });\n    },\n\n    async saveDirtyRecords() {\n        const data = await get(this, 'data');\n\n        let savePromises = A([]);\n        let errors = A([]);\n        set(this, 'errors', errors);\n\n        //push all rows that have dirty attributes into a promise array\n        savePromises = data.map(async (record, index) => {\n            if (get(record, 'hasDirtyAttributes')) {\n                await record.validate(); //validate record. Do not send save request if it is invalid (in save function)\n                return this.saveRecordAndCatchErrors(record, errors, index);\n            }\n        });\n\n        //if promise array is empty display notification and return straight outta here, we don't need to do anyhting\n        if (isEmpty(savePromises)) {\n            this.notifications.warning(this.intl.t('general.no_saved_rows'), {\n                autoClear: true,\n            });\n            return;\n        }\n\n        await Promise.all(savePromises);\n\n        if (isEmpty(errors)) {\n            this.notifications.success(this.intl.t('general.saved'), {\n                autoClear: true,\n            });\n        } else {\n            set(this, 'errors', errors);\n            this.notifications.error(this.intl.t('general.no_saved_rows'), {\n                autoClear: true,\n            });\n        }\n    },\n\n    getExportData() {\n        let params = get(this, 'queryParams');\n        params.limit = 'all';\n        // params must be cloned because appliactions.js stupidly modifies the object\n        return get(this, 'store').query(get(this, 'form'), { ...params });\n    },\n\n    async saveRecordAndCatchErrors(record, errors, index) {\n        //do not send save request is record is invalid\n        try {\n            if (get(record, 'isValid')) {\n                //save via save-the-children mixin\n                return await this.save_record(record);\n            } else {\n                errors.pushObject({\n                    index: index + 1,\n                    message: get(record, 'errors.messages.firstObject'),\n                });\n            }\n        } catch (saveError) {\n            const err = this.error.toError(saveError);\n            err['index'] = index + 1; //arrays start at 0 (╯°□°)╯︵ ┻━┻\n            errors.pushObject(err);\n            return err;\n        }\n    },\n});\n","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\nimport { getSums } from 'tt4/utils/sumrow-util';\n\nexport default Component.extend({\n    gui: service(),\n\n    selected: null,\n\n    allSelected: computed('data.length', 'selected.length', function () {\n        return get(this, 'data.length') === get(this, 'selected.length');\n    }),\n\n    _columns: computed('columns', 'columns.{@each.hide,[]}', function () {\n        const actions = {\n            name: '',\n            valuePath: '@actions',\n            isFixed: 'right',\n            maxwidth: 45,\n            isSortable: false,\n        };\n        return this.columns.concat([actions]);\n    }),\n\n    tableWidthConstraint: computed('_columns', function () {\n        if (this.gui.isMobile()) return 'gte-container';\n        return get(this, 'columns.length') > 13 ? 'gte-container' : 'eq-container';\n    }),\n\n    idsStr: computed('selected.[]', function () {\n        return this.selected.mapBy('id').join(',');\n    }),\n\n    sumRow: computed('data', 'columns', 'selected.[]', function () {\n        let data = !isEmpty(this.selected) ? this.selected : this.data;\n\n        if (!this.columns || !data) return;\n\n        return getSums(data, this.columns, this.form, this.Collector);\n    }),\n\n    didReceiveAttrs() {\n        set(this, 'selected', []);\n    },\n\n    actions: {\n        updateSorts(sorts) {\n            set(this, 'sorts', sorts);\n            if (this.updateSorts) this.updateSorts(sorts);\n        },\n\n        toggleSelectAll() {\n            if (get(this, 'allSelected')) {\n                set(this, 'selected', []);\n            } else {\n                set(this, 'selected', get(this, 'data').toArray());\n            }\n        },\n\n        toggleInlineEdit() {\n            //if inlineEdit is true, the action will be to disable inline editing and vice versa\n            this.toggleInlineEdit();\n        },\n\n        setRowsPerPage(RowsPerPage) {\n            this.setRowsPerPage(RowsPerPage);\n        },\n\n        deselectAll() {\n            set(this, 'selected', []);\n        },\n\n        exportCsv(selected) {\n            this.exportCsv(selected);\n        },\n\n        saveRows() {\n            this.saveRows();\n        },\n\n        refreshReport() {\n            this.refreshReport();\n        },\n\n        changeStatus(selected, status) {\n            this.changeStatus(selected, status);\n        },\n\n        handleLock(selected, action) {\n            this.handleLock(selected, action);\n        },\n\n        handleRemove(selected, action) {\n            this.handleRemove(selected, action);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"ksCboRhq\",\"block\":\"{\\\"symbols\\\":[\\\"table\\\",\\\"b\\\",\\\"r\\\",\\\"value\\\",\\\"cell\\\",\\\"formatted\\\",\\\"head\\\",\\\"r\\\",\\\"columnValue\\\",\\\"columnMeta\\\",\\\"error\\\",\\\"&default\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[25,12]],null,{\\\"statements\\\":[[14,12,[[28,\\\"hash\\\",null,[[\\\"actions\\\",\\\"selected\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions\\\"],[[\\\"form\\\",\\\"inlineEdit\\\",\\\"columns\\\",\\\"allColumns\\\",\\\"rowsPerPage\\\",\\\"currentTemplate\\\",\\\"templatesSettings\\\",\\\"toggleInlineEdit\\\",\\\"saveRows\\\",\\\"columnsChanged\\\",\\\"setRowsPerPage\\\",\\\"exportPdf\\\",\\\"exportCsv\\\",\\\"showOrHideRemoved\\\",\\\"openExportModal\\\",\\\"showLoader\\\",\\\"showRemoved\\\",\\\"refreshReport\\\",\\\"statusTypes\\\",\\\"changeStatus\\\",\\\"handleLock\\\",\\\"handleRemove\\\",\\\"selected\\\",\\\"openMassedit\\\",\\\"openGpsMap\\\"],[[24,[\\\"form\\\"]],[24,[\\\"inlineEdit\\\"]],[24,[\\\"columns\\\"]],[24,[\\\"allColumns\\\"]],[24,[\\\"rowsPerPage\\\"]],[24,[\\\"currentTemplate\\\"]],[24,[\\\"templatesSettings\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleInlineEdit\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"saveRows\\\"],null],[24,[\\\"columnsChanged\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\"],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"exportPdf\\\"]],[24,[\\\"selected\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"exportCsv\\\"]],[24,[\\\"selected\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"showOrHideRemoved\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]],[24,[\\\"selected\\\"]]],null],[24,[\\\"showLoader\\\"]],[24,[\\\"showRemoved\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"refreshReport\\\"],null],[24,[\\\"statusTypes\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\",[24,[\\\"selected\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\",[24,[\\\"selected\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\",[24,[\\\"selected\\\"]]],null],[24,[\\\"selected\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showMassedit\\\"]]],null],true],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openGpsMap\\\"]],[24,[\\\"selected\\\"]]],null]]]],[24,[\\\"selected\\\"]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"component\\\",[\\\"collector/form-report/actions\\\"],[[\\\"form\\\",\\\"inlineEdit\\\",\\\"toggleInlineEdit\\\",\\\"saveRows\\\",\\\"statusTypes\\\",\\\"changeStatus\\\",\\\"handleLock\\\",\\\"handleRemove\\\",\\\"showOrHideRemoved\\\",\\\"openExportModal\\\",\\\"showRemoved\\\",\\\"selected\\\",\\\"columns\\\",\\\"allColumns\\\",\\\"rowsPerPage\\\",\\\"currentTemplate\\\",\\\"templatesSettings\\\",\\\"columnsChanged\\\",\\\"setRowsPerPage\\\",\\\"exportPdf\\\",\\\"exportCsv\\\",\\\"refreshReport\\\",\\\"openMassedit\\\"],[[24,[\\\"form\\\"]],[24,[\\\"inlineEdit\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleInlineEdit\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"saveRows\\\"],null],[24,[\\\"statusTypes\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\",[24,[\\\"selected\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\",[24,[\\\"selected\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\",[24,[\\\"selected\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"showOrHideRemoved\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]],[24,[\\\"selected\\\"]]],null],[24,[\\\"showRemoved\\\"]],[24,[\\\"selected\\\"]],[24,[\\\"columns\\\"]],[24,[\\\"allColumns\\\"]],[24,[\\\"rowsPerPage\\\"]],[24,[\\\"currentTemplate\\\"]],[24,[\\\"templatesSettings\\\"]],[24,[\\\"columnsChanged\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\"],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"exportPdf\\\"]],[24,[\\\"selected\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"exportCsv\\\"]],[24,[\\\"selected\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"refreshReport\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showMassedit\\\"]]],null],true],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"inlineEdit\\\"]],[24,[\\\"errors\\\",\\\"length\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger alert-dismissable\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"#\\\"],[10,\\\"class\\\",\\\"close\\\"],[10,\\\"data-dismiss\\\",\\\"alert\\\"],[11,\\\"aria-label\\\",[28,\\\"t\\\",[\\\"report.close_rows\\\"],null]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general_report.inline_edit.error.title\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,11,[\\\"message\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general_report.inline_edit.error.row\\\"],[[\\\"row\\\",\\\"error\\\"],[[23,11,[\\\"index\\\"]],[23,11,[\\\"message\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[11]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showRemoved\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.report.removed_view\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showLocationMap\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"gps-location-map\\\",null,[[\\\"zoomLevel\\\",\\\"wtmarkers\\\",\\\"projectmarkers\\\"],[15,[24,[\\\"startEndMarkers\\\"]],[24,[\\\"locationMarkers\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[5,\\\"ember-table\\\",[[12,\\\"class\\\",[29,[\\\"movenium-table \\\",[28,\\\"if\\\",[[24,[\\\"showRemoved\\\"]],\\\"removed-rows\\\"],null]]]]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"head\\\"]],[],[[\\\"@enableReorder\\\",\\\"@sortFunction\\\",\\\"@widthConstraint\\\",\\\"@resizeMode\\\",\\\"@columns\\\",\\\"@sorts\\\",\\\"@onUpdateSorts\\\"],[false,null,[23,0,[\\\"tableWidthConstraint\\\"]],\\\"fluid\\\",[23,0,[\\\"_columns\\\"]],[23,0,[\\\"sorts\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateSorts\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,7,[\\\"row\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,8,[\\\"cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"et-cell-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"not\\\",[[24,[\\\"inlineEdit\\\"]]],null],[24,[\\\"selectable\\\"]],[28,\\\"is-equal\\\",[[23,10,[\\\"index\\\"]],0],null]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"et-toggle-select\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"change\\\"],[\\\"checkbox\\\",[23,0,[\\\"allSelected\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleSelectAll\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"th-text-wrapper\\\"],[8],[1,[23,9,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[\\\"ember-th/sort-indicator\\\"],[[\\\"columnMeta\\\"],[[23,10,[]]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[\\\"ember-th/resize-handle\\\"],[[\\\"columnMeta\\\"],[[23,10,[]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[9,10]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-pending\\\",[[24,[\\\"data\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,[23,1,[\\\"body\\\"]],[],[[\\\"@rows\\\",\\\"@onSelect\\\",\\\"@selection\\\"],[[28,\\\"to-array\\\",[[28,\\\"await\\\",[[24,[\\\"data\\\"]]],null]],null],[28,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"not\\\",[[24,[\\\"inlineEdit\\\"]]],null],[24,[\\\"selectable\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"selected\\\"]]],null]],null]],null],[22,\\\"selected\\\"]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"row\\\"]],[],[[\\\"@class\\\"],[[29,[\\\"\\\\n                    \\\",[28,\\\"if\\\",[[28,\\\"or\\\",[[23,2,[\\\"rowValue\\\",\\\"isNew\\\"]],[23,2,[\\\"rowValue\\\",\\\"hasDirtyAttributes\\\"]]],null],\\\"unsaved-record\\\"],null],\\\"\\\\n                    \\\",[28,\\\"if\\\",[[28,\\\"or\\\",[[23,2,[\\\"rowValue\\\",\\\"isSaving\\\"]],[23,2,[\\\"rowValue\\\",\\\"isReloading\\\"]]],null],\\\"inflight-record\\\"],null],\\\"\\\\n                \\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"cell\\\"]],[],[[\\\"@class\\\"],[[29,[[28,\\\"if\\\",[[24,[\\\"inlineEdit\\\"]],\\\"inline-edit\\\"],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[\\\"rowValue\\\",\\\"row_info\\\",\\\"status\\\"]],\\\"locked\\\"],null],\\\"locked-row\\\"],null]]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"valuePath\\\"]],\\\"@actions\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row-actions\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,12]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[14,12,[[28,\\\"hash\\\",null,[[\\\"rowActions\\\"],[[28,\\\"component\\\",[[24,[\\\"actionBar\\\"]]],[[\\\"showActions\\\",\\\"row\\\",\\\"form\\\",\\\"inlineEdit\\\"],[[24,[\\\"rowActions\\\"]],[23,3,[\\\"rowValue\\\"]],[24,[\\\"form\\\"]],[24,[\\\"inlineEdit\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"component\\\",[[24,[\\\"actionBar\\\"]]],[[\\\"showActions\\\",\\\"row\\\",\\\"form\\\",\\\"inlineEdit\\\"],[[24,[\\\"rowActions\\\"]],[23,3,[\\\"rowValue\\\"]],[24,[\\\"form\\\"]],[24,[\\\"inlineEdit\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"inlineEdit\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[23,5,[]],\\\"external_type\\\"],null],\\\"row_info.created\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"inline-edit-row/cell\\\",[[23,3,[\\\"rowValue\\\"]],[23,5,[]],[28,\\\"and\\\",[[23,5,[\\\"canEdit\\\"]],[28,\\\"not\\\",[[23,5,[\\\"features\\\",\\\"hide\\\"]]],null],[28,\\\"or\\\",[[23,3,[\\\"rowValue\\\",\\\"isNew\\\"]],[23,3,[\\\"rowValue\\\",\\\"isEditable\\\"]]],null]],null],[23,3,[\\\"rowValue\\\",\\\"errors\\\",\\\"messages\\\",\\\"firstObject\\\",\\\"message\\\"]]],[[\\\"usePowerDropdown\\\",\\\"tagName\\\"],[true,\\\"div\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"uneditable-field\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[24,[\\\"form\\\"]],[23,5,[\\\"external_type\\\"]],[23,4,[]]]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"formatCells\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[14,12,[[28,\\\"hash\\\",null,[[\\\"cell\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/cell\\\"],[[\\\"form\\\",\\\"field\\\",\\\"value\\\",\\\"row\\\"],[[24,[\\\"form\\\"]],[23,5,[\\\"external_type\\\"]],[23,4,[]],[23,3,[\\\"rowValue\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"type\\\"]],\\\"multiselect\\\"],null],[28,\\\"is-equal\\\",[[23,5,[\\\"type\\\"]],\\\"databasearray\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"query\\\"],[\\\"clickable\\\",[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[28,\\\"concat\\\",[\\\"modalrows,\\\",[24,[\\\"form\\\"]],\\\".\\\",[23,5,[\\\"external_type\\\"]],\\\",\\\",[23,3,[\\\"rowValue\\\",\\\"id\\\"]]],null]]]]]],{\\\"statements\\\":[[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[24,[\\\"form\\\"]],[23,5,[\\\"external_type\\\"]],[23,4,[]]]]],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"let\\\",[[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\",\\\"isImageModal\\\"],[[24,[\\\"form\\\"]],[23,5,[\\\"external_type\\\"]],[23,4,[]],true]]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[23,6,[\\\"isImage\\\"]],[23,6,[\\\"src\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[[23,6,[\\\"classes\\\"]],\\\" clickable\\\"]]],[12,\\\"style\\\",[29,[\\\"background-image: url(\\\",[23,6,[\\\"src\\\"]],\\\")\\\"]]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"previewFile\\\"]]],null],[28,\\\"or\\\",[[23,6,[\\\"fullSrc\\\"]],[23,6,[\\\"src\\\"]]],null]],null]]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showImageModal\\\"]]],null]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[23,6,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[6]},null],[0,\\\"                            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                \\\"]],\\\"parameters\\\":[4,5]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"hideSumRow\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,[23,1,[\\\"foot\\\"]],[],[[\\\"@rows\\\"],[[23,0,[\\\"sumRow\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"data\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-rejected\\\",[[24,[\\\"data\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"get\\\",[[28,\\\"promise-rejected-reason\\\",[[24,[\\\"data\\\"]]],null],\\\"message\\\"],null],false],[0,\\\".\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"data\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,12]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,12,[[28,\\\"hash\\\",null,[[\\\"no-content\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/no-content\\\"],null]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[\\\"collector/form-report/no-content\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showMassedit\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"massedit.header\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showMassedit\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"mass-edit\\\",null,[[\\\"form\\\",\\\"idsStr\\\",\\\"inModal\\\",\\\"close\\\"],[[24,[\\\"form\\\"]],[24,[\\\"idsStr\\\"]],true,[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showMassedit\\\"]]],null],false],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showImageModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@outsideClose\\\",\\\"@classes\\\"],[[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showImageModal\\\"]]],null],false],null],true,\\\"\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"popup-image-size-limiter\\\"],[11,\\\"src\\\",[23,0,[\\\"previewFile\\\"]]],[8],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/ember-table/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\n\nexport default Component.extend({\n    collector: service('collector-service'),\n    intl: service(),\n    analytics: service(),\n\n    useMultiFilter: true,\n    filters: computed('form', function () {\n        const allowFilters = [\n            'date',\n            'database',\n            'dropdown_values',\n            'status',\n            'multiselect',\n            'dropdown_userlevel',\n        ];\n\n        let fieldArray = get(this, 'collector')\n            .fieldArray(get(this, 'form'))\n            .filter((field) => {\n                if (!allowFilters.includes(field.type)) return false;\n                if (field.features.hide_filter) return false; // hide_filter feature hides filter\n\n                return true;\n            });\n\n        fieldArray.forEach((item, index) => {\n            if (get(this, 'values.' + item.name))\n                fieldArray[index].value = get(this, 'values.' + item.name);\n            fieldArray[index].label = this.collector.getTranslationForColumn(this.form, item.name);\n            fieldArray[index].prompt = this.intl.t('general.choose');\n            fieldArray[index].data_name = item.form + '-' + item.name;\n        });\n\n        const additionalFilters = this.additional ? this.getAdditionalFilters(this.additional) : [];\n\n        let search = {\n            type: 'searchbox',\n            name: 'q',\n            label: this.intl.t('general.search'),\n            value: get(this, 'values.q') ? get(this, 'values.q') : null,\n            data_name: 'search',\n        };\n\n        if (get(this, 'showColumns')) {\n            fieldArray = fieldArray.filter((item) =>\n                get(this, 'showColumns').split(',').includes(item.name),\n            );\n\n            // if showColumns is in use show fresearch only if given\n            if (!get(this, 'showColumns').split(',').includes('q')) search = null;\n        }\n\n        return fieldArray.concat(additionalFilters, search ? [search] : []);\n    }),\n\n    actions: {\n        /**\n         * custom_field is used with additional filters\n         * @param {*} custom_field\n         * @param {*} value\n         * @param {*} field\n         */\n        change(custom_field, value, field) {\n            if (!field) return;\n            if (custom_field) field = custom_field;\n            this.analytics.trackEvent({\n                category: this.form + ' report filters',\n                action: field,\n                label: 'Form-report',\n            });\n            get(this, 'change')(value, field);\n            if (this.filterChangeAction) {\n                this.filterChangeAction(value, field);\n            }\n        },\n        async clearFilters() {\n            this.analytics.trackEvent({\n                category: this.form + ' report filters',\n                action: 'clear filters',\n                label: 'Form-report',\n            });\n            await this.clearFilters();\n            this.notifyPropertyChange('filters');\n            if (this.filterChangeAction) {\n                this.filters.forEach((filter) => {\n                    let value = filter.value ? filter.value : '';\n                    this.filterChangeAction(value, filter.name);\n                });\n            }\n        },\n    },\n\n    /**\n     * additional filters are given ie. \"project.owner,user.lastname\"\n     * @param string add\n     */\n    getAdditionalFilters(add) {\n        const ret = [];\n        for (const field of add.split(',')) {\n            const fieldArr = field.split('.');\n\n            let fields = this.collector.fieldArray(fieldArr[0]).filter((field) => {\n                return field.name === fieldArr[1];\n            });\n            if (isEmpty(fields)) continue;\n            fields[0].label = fields[0].translated_name;\n            fields[0].customfield = fieldArr[0] + '[' + fieldArr[1] + ']';\n            fields[0].prompt = this.intl.t('general.choose');\n            fields[0].data_name = fields[0].form + '-' + fields[0].name;\n\n            ret.push(fields[0]);\n        }\n\n        return ret;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"aaaRz9c4\",\"block\":\"{\\\"symbols\\\":[\\\"filter\\\",\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column filter-comp-component\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"filters\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,1,[\\\"data_name\\\"]],\\\"-filter\\\"],null]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"filter-label\\\"],[8],[1,[23,1,[\\\"label\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"date\\\",[23,1,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"date-range-picker\\\",null,[[\\\"clearBtn\\\",\\\"start\\\",\\\"fieldName\\\",\\\"end\\\",\\\"value\\\",\\\"title\\\",\\\"wagePeriods\\\",\\\"dateChange\\\"],[[28,\\\"not-eq\\\",[[23,1,[\\\"features\\\",\\\"use_index\\\"]],\\\"index1\\\"],null],[23,1,[\\\"start\\\"]],[23,1,[\\\"name\\\"]],[23,1,[\\\"end\\\"]],[23,1,[\\\"value\\\"]],[23,1,[\\\"title\\\"]],true,[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",[23,1,[\\\"customfield\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[\\\"database\\\",[23,1,[\\\"type\\\"]]],null],[24,[\\\"useMultiFilter\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"database-multiple-filter\\\",null,[[\\\"filter\\\",\\\"value\\\",\\\"allFilters\\\",\\\"change\\\"],[[23,1,[]],[23,1,[\\\"value\\\"]],[24,[\\\"filters\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",[23,1,[\\\"customfield\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"searchbox\\\",[23,1,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                 \\\"],[1,[28,\\\"search-box\\\",null,[[\\\"value\\\",\\\"change\\\"],[[23,1,[\\\"value\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",[23,1,[\\\"customfield\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,1,[]]],[[\\\"change\\\",\\\"useAsFilter\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",[23,1,[\\\"customfield\\\"]]],null],true]]],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,2,[[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",null],null]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter clear-btn\\\"],[10,\\\"data-anchor\\\",\\\"clear-filters\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clearFilters\\\"]],[8],[1,[28,\\\"t\\\",[\\\"filters.clear\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/filters/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"QBSQGvx8\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"no-content\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,1]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,1],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"icon move move-Search\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.no-content\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/no-content/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"2eQxcoFo\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"filters\\\",\\\"add\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/filters\\\"],[[\\\"form\\\",\\\"change\\\",\\\"values\\\",\\\"clearFilters\\\"],[[24,[\\\"form\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChange\\\"],null],[24,[\\\"filterByValues\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"clearFilters\\\"],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/add\\\"],[[\\\"onClick\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"add\\\"],null]]]]]]]]],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"dump-dev\\\",[],[[\\\"@text\\\"],[\\\"form-report\\\"]]],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"movenium-table-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,1]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"table\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/ember-table\\\"],[[\\\"data\\\",\\\"errors\\\",\\\"form\\\",\\\"sorts\\\",\\\"updateSorts\\\",\\\"columns\\\",\\\"allColumns\\\",\\\"selectable\\\",\\\"inlineEdit\\\",\\\"rowActions\\\",\\\"statusTypes\\\",\\\"rowsPerPage\\\",\\\"actionBar\\\",\\\"showLoader\\\",\\\"showRemoved\\\",\\\"saveRows\\\",\\\"toggleInlineEdit\\\",\\\"setRowsPerPage\\\",\\\"exportPdf\\\",\\\"exportCsv\\\",\\\"showOrHideRemoved\\\",\\\"openExportModal\\\",\\\"refreshReport\\\",\\\"changeStatus\\\",\\\"handleLock\\\",\\\"handleRemove\\\",\\\"columnsChanged\\\",\\\"openGpsMap\\\",\\\"showLocationMap\\\",\\\"locationMarkers\\\",\\\"startEndMarkers\\\",\\\"hideSumRow\\\"],[[24,[\\\"data\\\"]],[24,[\\\"errors\\\"]],[24,[\\\"form\\\"]],[24,[\\\"sorts\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateSorts\\\"],null],[24,[\\\"columns\\\"]],[24,[\\\"allColumns\\\"]],[24,[\\\"selectable\\\"]],[24,[\\\"inlineEdit\\\"]],[24,[\\\"rowActions\\\"]],[24,[\\\"statusTypes\\\"]],[24,[\\\"rowsPerPage\\\"]],[28,\\\"component\\\",[\\\"collector/form-report/action-bar\\\"],[[\\\"actionClicked\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"actionClicked\\\"],null]]]],[24,[\\\"showLoader\\\"]],[24,[\\\"showRemoved\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveRows\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleInlineEdit\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"exportPdf\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"exportCsv\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showOrHideRemoved\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openExportModal\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"reload\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"columnsChanged\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openGpsMap\\\"],null],[24,[\\\"showLocationMap\\\"]],[24,[\\\"locationMarkers\\\"]],[24,[\\\"startEndMarkers\\\"]],[24,[\\\"hideSumRow\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[\\\"collector/form-report/ember-table\\\"],[[\\\"data\\\",\\\"form\\\",\\\"sorts\\\",\\\"updateSorts\\\",\\\"columns\\\",\\\"allColumns\\\",\\\"selectable\\\",\\\"inlineEdit\\\",\\\"rowActions\\\",\\\"statusTypes\\\",\\\"rowsPerPage\\\",\\\"actionBar\\\",\\\"showLoader\\\",\\\"showRemoved\\\",\\\"hideSumRow\\\",\\\"toggleInlineEdit\\\",\\\"saveRows\\\",\\\"setRowsPerPage\\\",\\\"exportPdf\\\",\\\"openExportModal\\\",\\\"exportCsv\\\",\\\"showOrHideRemoved\\\",\\\"refreshReport\\\",\\\"changeStatus\\\",\\\"handleLock\\\",\\\"handleRemove\\\",\\\"columnsChanged\\\"],[[24,[\\\"data\\\"]],[24,[\\\"form\\\"]],[24,[\\\"sorts\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateSorts\\\"],null],[24,[\\\"columns\\\"]],[24,[\\\"allColumns\\\"]],[24,[\\\"selectable\\\"]],[24,[\\\"inlineEdit\\\"]],[24,[\\\"rowActions\\\"]],[24,[\\\"statusTypes\\\"]],[24,[\\\"rowsPerPage\\\"]],[28,\\\"component\\\",[\\\"collector/form-report/action-bar\\\"],[[\\\"actionClicked\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"actionClicked\\\"],null]]]],[24,[\\\"showLoader\\\"]],[24,[\\\"showRemoved\\\"]],[24,[\\\"hideSumRow\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleInlineEdit\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"saveRows\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"exportPdf\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openExportModal\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"exportCsv\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showOrHideRemoved\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"reload\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"columnsChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"total-rows\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"b\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.total_rows\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge\\\"],[8],[1,[28,\\\"if\\\",[[23,0,[\\\"metaRowCount\\\"]],[23,0,[\\\"metaRowCount\\\"]],[23,0,[\\\"cachedRowCount\\\"]]],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\",\\\"pageChange\\\"],[[24,[\\\"rowsPerPage\\\"]],[24,[\\\"currentPage\\\"]],[24,[\\\"pageCount\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"pageChange\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showForm\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"collector-form-name\\\",[[24,[\\\"form\\\"]],true],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showForm\\\"]]],null],null],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/form-add/forms/auto\\\",null,[[\\\"only\\\",\\\"form\\\",\\\"rowAdded\\\",\\\"record\\\",\\\"close\\\"],[[24,[\\\"showColumns\\\"]],[24,[\\\"form\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"reload\\\"],null],[24,[\\\"showForm\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showForm\\\"]]],null],null],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showHistory\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"rowhistory.title\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showHistory\\\"]]],null],null],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-history-content\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\",\\\"hideTitle\\\"],[[24,[\\\"showHistory\\\",\\\"id\\\"]],[24,[\\\"form\\\"]],true]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showChangeStatusForAllPages\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"change-status\\\",null,[[\\\"close\\\",\\\"params\\\"],[\\\"closeShowChangeStatusForAllPages\\\",[24,[\\\"changeStatusForAllPagesParams\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showExportModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"export-modal\\\",null,[[\\\"initType\\\",\\\"sendEmailAction\\\",\\\"exportActions\\\",\\\"showExportModal\\\",\\\"includeApprovalLink\\\",\\\"statusFieldIsVisible\\\",\\\"form\\\",\\\"showApprovalLinkSelection\\\",\\\"count\\\",\\\"emailSent\\\",\\\"loading\\\",\\\"emailError\\\",\\\"removeModal\\\"],[[24,[\\\"exportInitType\\\"]],\\\"sendEmail\\\",\\\"handleExportActions\\\",[24,[\\\"showExportModal\\\"]],[24,[\\\"includeApprovalLink\\\"]],[24,[\\\"statusFieldIsVisible\\\"]],[24,[\\\"form\\\"]],[24,[\\\"showApprovalLinkSelection\\\"]],[24,[\\\"emailSendingCount\\\"]],[24,[\\\"emailSent\\\"]],[24,[\\\"showLoader\\\"]],[24,[\\\"emailError\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showExportModal\\\"]]],null],false],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/history-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorHistoryCompComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nimport { sanitize } from 'dom-purify';\n\nimport { pluralize } from 'ember-inflector';\n\nimport { isArray } from '@ember/array';\n\nCollectorHistoryCompComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    capi: Ember.inject.service(),\n    intl: Ember.inject.service(),\n\n    // Component properties\n\n    // Rows that contain the history data\n    // format: [{\n    //   \"user\": \"Tauno Tulimies\",\n    //   \"date\": \"2015-11-27 11:20:47\",\n    //   \"columns\": [\n    //       {\n    //        \"column\": \"status\",\n    //        \"old\": null,\n    //        \"new\": \"approved\",\n    //        \"action\": \"edited\",\n    //        \"schemaid\": \"1953491\"\n    //       }\n    //   ]\n    // }, { ... }]\n    rows: null,\n    // Collector form external type that we are working with\n    form: null,\n    // Collector row id\n    row: null,\n\n    // Component methods\n\n    translations: {\n        famoco: 'Famoco',\n        timeclean: 'Timeclean',\n    },\n    // If no given rows we fetch them by ourselves because we are cool!\n    getRows: Em.on('init', function () {\n        var form, id, url;\n        this.set('changesArr', Em.A([]));\n        if (this.get('rows')) {\n            return;\n        }\n        form = this.get('form');\n        id = this.get('row');\n        Em.assert('If no rows are given you need to pass row id to history component', id);\n        Em.assert('Must always pass form external type to history component', form);\n        url = '/' + pluralize(form) + '/' + id + '/history';\n        this.set('loading', true);\n        return this.get('capi')\n            .request(url)\n            .then((data) => {\n                if (!data) {\n                    this.set('error', true);\n                } else {\n                    if (data['meta']) delete data['meta'];\n                    if (!isArray(data)) data = Object.values(data);\n\n                    this.set('rows', data);\n                }\n                return this.set('loading', false);\n            })\n            .catch((err) => {\n                this.set('error', err);\n                return this.set('loading', false);\n            });\n    }),\n    // Format given rows to be pretty\n    formatted_data: Em.computed('rows', function () {\n        var c,\n            crow,\n            field,\n            form,\n            formatted_rows,\n            i,\n            j,\n            k,\n            len,\n            len1,\n            parser,\n            ref,\n            row,\n            rows,\n            user_agent,\n            user_agent_obj;\n        parser = new UAParser(); // used for parsing user-agent data\n        rows = this.get('rows');\n        c = this.get('Collector');\n        form = this.get('form');\n        if (!rows) {\n            return;\n        }\n        Em.assert('Must always pass form external type to history component', form);\n        formatted_rows = [];\n        for (i = 0, len = rows.length; i < len; i++) {\n            row = rows[i];\n            user_agent_obj = parser.setUA(row.user_agent).getResult();\n            // parsing user-agent (may work or may not)\n            user_agent = [];\n            if (user_agent_obj.browser.name) {\n                user_agent['browser'] =\n                    sanitize(user_agent_obj.browser.name) +\n                    ' ' +\n                    sanitize(user_agent_obj.browser.version);\n                user_agent['engine'] =\n                    sanitize(user_agent_obj.engine.name) +\n                    ' ' +\n                    sanitize(user_agent_obj.engine.version);\n                user_agent['os'] =\n                    sanitize(user_agent_obj.os.name) + ' ' + sanitize(user_agent_obj.os.version);\n                if (user_agent_obj.device.model != null) {\n                    user_agent['device'] =\n                        sanitize(user_agent_obj.device.model) +\n                        ' ' +\n                        sanitize(user_agent_obj.device.vendor);\n                }\n                user_agent['raw'] = row.user_agent;\n            }\n            //else\n            // lets assume that if browser is undefined, it is nfc-device\n            //    user_agent['browser'] = @get('intl').t('rowhistory.nfc_device')\n            //    user_agent['raw'] = \"NFC\"\n            row.user_agent = user_agent;\n            if (row.columns) {\n                row.columns.forEach((column) => {\n                    var splittedMessage;\n                    if (column.message && column.message.substring(0, 7) === 'creator') {\n                        splittedMessage = column.message.split(':');\n                        return (row.user = splittedMessage[1]);\n                    }\n                });\n                ref = row.columns;\n                for (k = j = 0, len1 = ref.length; j < len1; k = ++j) {\n                    crow = ref[k];\n                    if (crow.action) {\n                        row.action = crow.action;\n                    }\n                    if (crow.message) {\n                        row.message = crow.message;\n                    }\n                    if (crow.source) {\n                        row.source = crow.source;\n                    }\n                    if (!crow.column) {\n                        continue;\n                    }\n                    field = c.field(form, crow.column);\n                    field.ext = field.name;\n                    row.columns[k].translated_name = field.translated_name;\n                    row.columns[k].old = crow.old\n                        ? c.format(crow.old, field, null, null, null, this.get('form'))\n                        : crow.old;\n                    row.columns[k].new = crow.new\n                        ? c.format(crow.new, field, null, null, null, this.get('form'))\n                        : crow.new;\n                }\n            }\n            if (!row.action && row.changes) {\n                row.action = 'edited';\n            }\n            formatted_rows.push(row);\n        }\n        return formatted_rows;\n    }),\n    actions: {\n        toggleChanges: function (index) {\n            var arr;\n            arr = this.get('changesArr');\n            if (arr.indexOf(index) === -1) {\n                arr.pushObject(index);\n            } else {\n                arr.removeObject(index);\n            }\n            return this.notifyPropertyChange('changesArr');\n        },\n    },\n});\n\nexport default CollectorHistoryCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"lHR5972e\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"index\\\",\\\"column\\\",\\\"changes\\\",\\\"fieldName\\\",\\\"removed\\\",\\\"added\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"hideTitle\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"rowhistory.title\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-fluid \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"development\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"webhook-log\\\",null,[[\\\"rowid\\\"],[[24,[\\\"row\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"formatted_data\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-offset-0 col-sm-12\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-user\\\"],[8],[9],[0,\\\" \\\"],[4,\\\"if\\\",[[23,1,[\\\"userid\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"user\\\",[[23,1,[\\\"userid\\\"]]],null],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[23,1,[\\\"user\\\"]],false]],\\\"parameters\\\":[]}],[0,\\\" - \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"date\\\"]],\\\"llll\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"action\\\"]],\\\"created\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"source\\\"]],\\\"famoco\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                - \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-NFCCheckpoint\\\"],[11,\\\"title\\\",[24,[\\\"translations\\\",\\\"famoco\\\"]]],[8],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,1,[\\\"source\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"source\\\"]],\\\"timeclean\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                - \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Timeclean\\\"],[11,\\\"title\\\",[24,[\\\"translations\\\",\\\"timeclean\\\"]]],[8],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,1,[\\\"source\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"changes\\\",\\\"client_id\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"changes\\\",\\\"client_id\\\"]],\\\"famoco\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                - \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-NFCCheckpoint\\\"],[8],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,1,[\\\"changes\\\",\\\"client_id\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"changes\\\",\\\"client_id\\\"]],\\\"timeclean\\\"],null],[28,\\\"is-equal\\\",[[23,1,[\\\"changes\\\",\\\"client_id\\\"]],\\\"timecleanapi\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                                - \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Timeclean\\\"],[8],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,1,[\\\"changes\\\",\\\"client_id\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                - \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-MultipleDevices\\\"],[8],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,1,[\\\"changes\\\",\\\"client_id\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"user_agent\\\",\\\"browser\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-offset-0 col-sm-12\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-MultipleDevices\\\"],[8],[1,[28,\\\"ember-popover\\\",null,[[\\\"side\\\",\\\"text\\\"],[\\\"right\\\",[23,1,[\\\"user_agent\\\",\\\"raw\\\"]]]]],false],[9],[0,\\\"   \\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"user_agent\\\",\\\"browser\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[23,1,[\\\"user_agent\\\",\\\"browser\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"user_agent\\\",\\\"engine\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            / \\\"],[1,[23,1,[\\\"user_agent\\\",\\\"engine\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"user_agent\\\",\\\"os\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            / \\\"],[1,[23,1,[\\\"user_agent\\\",\\\"os\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"user_agent\\\",\\\"device\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            / \\\"],[1,[23,1,[\\\"user_agent\\\",\\\"device\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-offset-1 col-sm-11\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"action\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"action\\\"]],\\\"message\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[23,1,[\\\"message\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"history.action.\\\",[23,1,[\\\"action\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"                \\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"changes\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[23,1,[\\\"changes\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,5,[]],\\\"client_id\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-offset-1 col-sm-11\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"code\\\",true],[8],[1,[28,\\\"translate-column\\\",null,[[\\\"form\\\",\\\"field\\\"],[[24,[\\\"form\\\"]],[23,5,[]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"history.action.added\\\"],null],false],[0,\\\" \\\"],[1,[23,4,[\\\"added\\\",\\\"length\\\"]],false],[0,\\\", \\\"],[1,[28,\\\"t\\\",[\\\"history.action.removed\\\"],null],false],[0,\\\": \\\"],[1,[23,4,[\\\"removed\\\",\\\"length\\\"]],false],[0,\\\" \\\\n                            \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleChanges\\\",[28,\\\"add\\\",[[23,2,[]],1],null]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[[28,\\\"add\\\",[[23,2,[]],1],null],[24,[\\\"changesArr\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                    (\\\"],[1,[28,\\\"t\\\",[\\\"history.action.hide_data\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    (\\\"],[1,[28,\\\"t\\\",[\\\"history.action.show_data\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                                \\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n \\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[[28,\\\"add\\\",[[23,2,[]],1],null],[24,[\\\"changesArr\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-offset-1 col-sm-11\\\"],[8],[0,\\\"                            \\\\n                            \\\"],[7,\\\"span\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"toggleChanges\\\",[28,\\\"add\\\",[[23,2,[]],1],null]]],[8],[9],[0,\\\"\\\\n                            \\\\n\\\"],[4,\\\"if\\\",[[23,4,[\\\"added\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"history-block\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"t\\\",[\\\"history.action.added\\\"],null],false],[0,\\\":\\\\n\\\"],[4,\\\"each\\\",[[23,4,[\\\"added\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"history-item\\\"],[8],[0,\\\"\\\\n                                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,5,[]],[24,[\\\"form\\\"]],[23,7,[]]]]],false],[0,\\\"\\\\n                                            \\\\n                                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\\n                            \\\\n\\\"],[4,\\\"if\\\",[[23,4,[\\\"removed\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"history-block\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"t\\\",[\\\"history.action.removed\\\"],null],false],[0,\\\":\\\\n\\\"],[4,\\\"each\\\",[[23,4,[\\\"removed\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"history-item\\\"],[8],[0,\\\"\\\\n                                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,5,[]],[24,[\\\"form\\\"]],[23,6,[]]]]],false],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\\n                            \\\\n                        \\\"],[9],[0,\\\"  \\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[],\\\"parameters\\\":[]}]],\\\"parameters\\\":[4,5]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[23,1,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-offset-1 col-sm-11\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"column\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"code\\\",true],[8],[1,[23,3,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"action\\\"]],\\\"message\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[\\\"new\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                : \\\"],[1,[23,3,[\\\"old\\\"]],false],[0,\\\" -> \\\"],[1,[23,3,[\\\"new\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                : \\\"],[1,[23,3,[\\\"old\\\"]],false],[0,\\\" ->\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                \\\\n\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1,2]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"rowhistory.no_history\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/history-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/history-modal/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorHistoryModalComponent;\n\nimport Ember from 'ember';\n\nCollectorHistoryModalComponent = Ember.Component.extend({\n    actions: {\n        removeModal: function () {\n            return this.sendAction('removeModal');\n        },\n    },\n});\n\nexport default CollectorHistoryModalComponent;\n","export default Ember.HTMLBars.template({\"id\":\"coQbbSJ5\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\"],[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"rowhistory.title\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\",\\\"hideTitle\\\"],[[24,[\\\"rowid\\\"]],[24,[\\\"form\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/history-modal/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/image-modal/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorImageModalComponent;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nCollectorImageModalComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    _modal: Ember.computed('modal', function () {\n        return this.get('modal').split(',');\n    }),\n    url: Em.computed('_modal', function () {\n        var splittedUrl, whiteListUrls;\n        if (this.get('_modal')[1].substr(0, 10) === 'data:image') {\n            return this.get('_modal')[1] + ',' + this.get('_modal')[2];\n        }\n        // File urls for dev, next and production\n        whiteListUrls = [\n            'https://movdev-bucket',\n            'https://next-customer-files',\n            'https://production-customer-files',\n        ];\n        if (this.get('_modal')[1].startsWith('http')) {\n            splittedUrl = this.get('_modal')[1].split('.');\n            if (whiteListUrls.includes(splittedUrl[0])) {\n                return this.get('_modal')[1];\n            }\n        } else {\n            return config.APP.COLLECTOR_API_URL + '/' + this.get('_modal')[1];\n        }\n    }),\n    actions: {\n        removeModal: function () {\n            window.history.back();\n            return this.set('modal', []);\n        },\n    },\n});\n\nexport default CollectorImageModalComponent;\n","export default Ember.HTMLBars.template({\"id\":\"GhcnrcW+\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"modal-container\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup modal-image-popup\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"img\\\",true],[11,\\\"src\\\",[29,[[22,\\\"url\\\"]]]],[10,\\\"class\\\",\\\"modal-image\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-overlay\\\"],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/image-modal/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/linker-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorLinkerCompComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nCollectorLinkerCompComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    capi: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    link: null,\n    model: null,\n    fields: null,\n    didInsertElement: function () {\n        return this.set('link_records', Em.A([]));\n    },\n    didReceiveAttrs: function () {\n        Ember.assert(\"Link must be given to linker-comp, ex 'task'\", this.get('link'));\n        Ember.assert('Model must be given to linker-comp, ex project record', this.get('model'));\n        Ember.assert(\n            'Model must be an ember-data record, could not find modelName',\n            this.get('model.constructor.modelName'),\n        );\n        Ember.assert('Model must have an id for linker-comp to work', this.get('model.id'));\n        Ember.assert(\n            \"Fields to show in list must be given to linker-comp property show_fields, ex 'name,number' or ['name','number']\",\n            this.get('show_fields'),\n        );\n        return this.getLinker().then(() => {\n            if (this.get('showLinks')) {\n                this.set('records', this.get('store').findAll(this.get('link')));\n                return this.getLinks();\n            }\n        });\n    },\n    target: Em.computed('model', function () {\n        return this.get('model.constructor.modelName');\n    }),\n    linkIds: Ember.computed.mapBy('link_records', 'id'),\n    link_records: Em.A([]),\n    projField: Em.computed(function () {\n        return this.get('Collector').field('worktime', 'project');\n    }),\n    getLinks: function () {\n        var c, link, promise;\n        c = this.get('Collector');\n        link = this.get('link');\n        promise = c.getLinks(this.get('model.id'), this.get('model.constructor.modelName'), link);\n        return promise.then((records) => {\n            var data, store_records;\n            data = records[c.pluralize(link)];\n            store_records = Em.A([]);\n            if (data) {\n                delete records.count;\n                this.get('store').pushPayload(records);\n                data.forEach((item) => {\n                    var record;\n                    record = this.get('store').peekRecord(link, item.id);\n                    if (link === 'user' && parseInt(this.get('model.id')) === item.id) {\n                        return;\n                    }\n                    if (\n                        link === 'employer' &&\n                        parseInt(this.get('model.employer.id')) === item.id\n                    ) {\n                        record.set('forced', true);\n                        this.set('records', this.get('store').findAll(this.get('link')));\n                    }\n                    return store_records.push(record);\n                });\n            }\n            this.set('original_links', store_records.mapBy('id'));\n            return this.set('link_records', store_records);\n        });\n    },\n    getLinker: function () {\n        var promise;\n        promise = this.Collector.ttapi({\n            url: 'get_linker',\n            data: {\n                rowid: this.get('model.id'),\n                form: this.get('link'),\n                linkto: this.get('linkTo'),\n            },\n            method: 'get',\n        });\n        return promise.then((data) => {\n            if (data['linker']) {\n                return this.set('showLinks', true);\n            } else {\n                return this.set('showLinks', false);\n            }\n        });\n    },\n    showButtons: Ember.computed('original_links.[]', 'link_records.[]', function () {\n        var orig, ret;\n        if (this.get('link_records.length') === this.get('original_links.length')) {\n            orig = this.get('original_links');\n            ret = false;\n            this.get('link_records').forEach(function (item) {\n                var ref;\n                if (((ref = item.get('id')), indexOf.call(orig, ref) < 0)) {\n                    return (ret = true);\n                }\n            });\n            return ret;\n        }\n        return true;\n    }),\n    //showButtons: true\n    removeAllLinks: function () {\n        var c, data, form, id, link_form, params;\n        this.set('link_records', Em.A([]));\n        this.set('records', this.get('store').findAll(this.get('link')));\n        c = this.get('Collector');\n        id = this.get('model.id');\n        form = this.get('model.constructor.modelName');\n        link_form = this.get('link');\n        data = {};\n        data[form] = {};\n        data[form]['link.' + c.pluralize(link_form)] = 'clear';\n        params = {\n            url: c.pluralize(form) + '/' + id + '?validation=off',\n            data: JSON.stringify(data),\n            type: 'PUT',\n        };\n        return this.get('capi').request('/' + params.url, {\n            data: params.data,\n            type: params.type,\n        });\n    },\n    search: function () {\n        return this.get('store')\n            .query(this.get('link'), {\n                q: this.get('searchvalue'),\n            })\n            .then((recs) => {\n                return this.set('records', recs);\n            });\n    },\n    //@getLinks()\n    actions: {\n        toggle: function (value) {\n            if (value) {\n                this.set('showLinks', true);\n                this.get('store')\n                    .findAll(this.get('link'))\n                    .then((data) => {\n                        var emp_id;\n                        //put users own employer to \"selected\" slot\n                        if (this.get('link') === 'employer') {\n                            emp_id = this.get('model.employer.id');\n                            data.forEach((row) => {\n                                if (emp_id === row.id) {\n                                    row.forced = true;\n                                    return this.get('link_records').unshiftObject(row);\n                                }\n                            });\n                        }\n                        this.set('records', data);\n                        return this.send('save');\n                    });\n            } else {\n                this.set('showLinks', false);\n                this.removeAllLinks();\n                this.set('searchvalue', null);\n            }\n            return false;\n        },\n        addLink: function (record) {\n            return this.get('link_records').unshiftObject(record);\n        },\n        removeLink: function (record) {\n            if (record.forced) {\n                return;\n            }\n            return this.get('link_records').removeObject(record);\n        },\n        save: function () {\n            var c, id;\n            id = this.get('model.id');\n            c = this.get('Collector');\n            this.set('saving', true);\n            return c\n                .saveLinks(\n                    id,\n                    this.get('model.constructor.modelName'),\n                    this.get('link'),\n                    this.get('linkIds'),\n                )\n                .then(\n                    (links) => {\n                        this.getLinks();\n                        this.set('saving', false);\n                        return this.set('showLinks', true);\n                    },\n                    (error) => {\n                        this.set('saving', false);\n                        this.set('error', error);\n                        return Em.run.later(\n                            this,\n                            function () {\n                                if (this.get('isDestroyed')) {\n                                    return;\n                                }\n                                return this.set('error', false);\n                            },\n                            5000,\n                        );\n                    },\n                );\n        },\n        cancel: function () {\n            return this.getLinks();\n        },\n        searchChanged: function (term) {\n            if (!term) {\n                this.set('searchvalue', null);\n            }\n            return this.search();\n        },\n        projectChanged: function (project) {\n            var c, link_ids;\n            if (Em.isEmpty(project)) {\n                return;\n            }\n            c = this.get('Collector');\n            this.set('saving', true);\n            //first remove all links\n            this.removeAllLinks();\n            link_ids = [];\n            //get project tasks\n            return c.getLinks(project.id, this.get('target'), this.get('link')).then((links) => {\n                var i, len, link, ref;\n                ref = links.tasks;\n                for (i = 0, len = ref.length; i < len; i++) {\n                    link = ref[i];\n                    link_ids.push(link.id);\n                }\n                return c\n                    .saveLinks(this.get('model.id'), this.get('target'), this.get('link'), link_ids)\n                    .then(\n                        (saved_links) => {\n                            this.getLinks();\n                            this.set('saving', false);\n                            return this.set('showLinks', true);\n                        },\n                        (error) => {\n                            this.set('saving', false);\n                            this.set('error', error);\n                            return Em.run.later(\n                                this,\n                                function () {\n                                    if (this.get('isDestroyed')) {\n                                        return;\n                                    }\n                                    return this.set('error', false);\n                                },\n                                5000,\n                            );\n                        },\n                    );\n            });\n        },\n    },\n});\n\nexport default CollectorLinkerCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"JDhKwa4Y\",\"block\":\"{\\\"symbols\\\":[\\\"record\\\",\\\"record\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.limited\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[24,[\\\"showLinks\\\"]],\\\"btn-default\\\",\\\"btn-primary\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",false]],[8],[1,[28,\\\"t\\\",[\\\"general.no\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"unless\\\",[[24,[\\\"showLinks\\\"]],\\\"btn-default\\\",\\\"btn-primary\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"general.yes\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLinks\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"link-component-container\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"target\\\"]],\\\"project\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"projects.edit.tasks.from_project\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"projField\\\"]]],[[\\\"change\\\",\\\"classes\\\"],[\\\"projectChanged\\\",\\\"form-control add-field\\\"]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[24,[\\\"error\\\",\\\"message\\\"]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showButtons\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-block btn-m-link \\\",[28,\\\"if\\\",[[24,[\\\"saving\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9]],\\\"parameters\\\":[]},null],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-block btn-m-default \\\",[28,\\\"if\\\",[[24,[\\\"saving\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.unselected\\\"],null],false],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"search-box\\\",null,[[\\\"value\\\",\\\"change\\\",\\\"classes\\\"],[[24,[\\\"searchvalue\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"searchChanged\\\"],null],\\\"form-control add-field\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group link-component-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"records\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"id\\\"]],[24,[\\\"model\\\",\\\"id\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,2,[\\\"id\\\"]],[24,[\\\"linkIds\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"list-group-item link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addLink\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"link-component-name\\\"],[11,\\\"title\\\",[29,[[28,\\\"format-option\\\",[[23,2,[]],[24,[\\\"show_fields\\\"]]],null]]]],[8],[1,[28,\\\"format-option\\\",[[23,2,[]],[24,[\\\"show_fields\\\"]]],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.selected\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group link-component-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"link_records\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"list-group-item link \\\",[28,\\\"if\\\",[[23,1,[\\\"forced\\\"]],\\\"forced\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"removeLink\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge link-comp-badge\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"link-component-name\\\"],[11,\\\"title\\\",[29,[[28,\\\"format-option\\\",[[23,1,[]],[24,[\\\"show_fields\\\"]]],null]]]],[8],[1,[28,\\\"format-option\\\",[[23,1,[]],[24,[\\\"show_fields\\\"]]],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/linker-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/nfc-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar NfcCompComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nNfcCompComponent = Ember.Component.extend({\n    Collector: Em.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    schema_map_to_type: [],\n    schema_map_to_exttype: [],\n    nfcIsOn: Ember.computed(function () {\n        var product;\n        product = Em.A(['products.rfid']);\n        return this.get('Collector').testNeeds(product);\n    }),\n    projects: Ember.computed(function () {\n        return this.get('store').query('project', {\n            rfid_device_id: '!(empty)',\n        });\n    }),\n    didReceiveAttrs: function () {\n        var self, types;\n        if (!this.get('nfcIsOn')) {\n            return;\n        }\n        self = this;\n        this._super();\n        types = [];\n        return this.get('store')\n            .findAll('form')\n            .then((raw_forms) => {\n                var hide_these_types,\n                    raw_fields,\n                    raw_form,\n                    schema_map_to_exttype,\n                    schema_map_to_type,\n                    skip_externals,\n                    tmp_types;\n                raw_form = raw_forms.filterBy('external_type', 'worktime');\n                raw_fields = raw_form.get('firstObject.fields');\n                this.set('raw_form', raw_form.get('firstObject'));\n                tmp_types = Em.A([]);\n                // these are not supported by nfc at all\n                skip_externals = [\n                    'date',\n                    'status',\n                    'group',\n                    'user',\n                    'starttime',\n                    'endtime',\n                    'work_hours',\n                    'customer',\n                    'employer',\n                ];\n                // these are not yet supported by collector/collector-field -component\n                hide_these_types = ['checkbox'];\n                schema_map_to_type = this.get('schema_map_to_type');\n                schema_map_to_exttype = this.get('schema_map_to_exttype');\n                raw_fields.forEach(function (field) {\n                    var name;\n                    if (\n                        skip_externals.indexOf(field.get('external_type')) < 0 &&\n                        hide_these_types.indexOf(field.get('type')) < 0\n                    ) {\n                        schema_map_to_type[field.get('schemaid')] = field.get('type');\n                        schema_map_to_exttype[field.get('schemaid')] = field.get('external_type');\n                        if (field.get('name').indexOf('lang') > 0) {\n                            name = self\n                                .get('intl')\n                                .t('worktime' + '.' + field.get('external_type'));\n                        } else {\n                            name = field.get('name');\n                        }\n                        return tmp_types.pushObject(\n                            Em.Object.create({\n                                id: field.get('schemaid'),\n                                name: name,\n                                type: field.get('type'),\n                            }),\n                        );\n                    }\n                });\n                return this.set('types', tmp_types);\n            });\n    },\n    buttonTypeChanged: function (value, button) {\n        var buttonRow, field, i, len, object, raw_form_fields;\n        // first get row\n        i = 0;\n        buttonRow = null;\n        len = this.get('buttonRows').length;\n        while (i < len) {\n            if (this.get('buttonRows')[i]['name'] === button) {\n                buttonRow = this.get('buttonRows')[i];\n                break;\n            }\n            i++;\n        }\n        Ember.set(buttonRow, 'value', null);\n        if (value === 'null') {\n            Ember.set(buttonRow, 'field', null);\n            return;\n        }\n        object = null;\n        raw_form_fields = this.get('raw_form.fields');\n        raw_form_fields.forEach(function (raw_field) {\n            if (value === raw_field.get('schemaid')) {\n                return (object = raw_field);\n            }\n        });\n        Ember.set(buttonRow, 'schemaid', object.get('schemaid'));\n        field = {\n            form: 'worktime',\n            name: this.get('schema_map_to_exttype')[object.get('schemaid')],\n            type: this.get('schema_map_to_type')[object.get('schemaid')],\n            options:\n                collector.forms.worktime.objects[\n                    this.get('schema_map_to_exttype')[object.get('schemaid')]\n                ].options,\n        };\n        Ember.set(buttonRow, 'field', field);\n        Ember.set(buttonRow, 'type', object.get('type'));\n        Ember.set(buttonRow, 'ext_type', object.get('external_type'));\n        return this.updateModel();\n    },\n    buttonValueChanged: function (value, button) {\n        var buttonRow, i, len;\n        if (Ember.typeOf(value) === 'instance') {\n            value = value.get('id');\n        }\n        buttonRow = null;\n        len = this.get('buttonRows').length;\n        i = 0;\n        while (i < len) {\n            if (this.get('buttonRows')[i]['name'] === button) {\n                buttonRow = this.get('buttonRows')[i];\n                break;\n            }\n            i++;\n        }\n        Ember.set(buttonRow, 'value', value);\n        return this.updateModel();\n    },\n    updateModel: function () {\n        var row_setting, tmp;\n        tmp = {};\n        tmp['tce_formid'] = this.get('raw_form.id');\n        this.get('buttonRows').forEach(function (row) {\n            if (row['value']) {\n                tmp[row['name'] + '_select'] = row['schemaid'];\n                return (tmp[row['name'] + '_' + row['schemaid']] = row['value']);\n            }\n        });\n        if (this.get('settings')) {\n            row_setting = this.get('settings');\n            row_setting.send('becomeDirty');\n            return row_setting.set('value', JSON.stringify(tmp));\n        }\n    },\n    actions: {\n        save: function () {\n            var row_setting, tmp;\n            tmp = {};\n            tmp['tce_formid'] = this.get('raw_form.id');\n            this.get('buttonRows').forEach(function (row) {\n                if (row['value']) {\n                    tmp[row['name'] + '_select'] = row['schemaid'];\n                    return (tmp[row['name'] + '_' + row['schemaid']] = row['value']);\n                }\n            });\n            if (this.get('settings')) {\n                row_setting = this.get('settings');\n                row_setting.set('value', JSON.stringify(tmp));\n                return row_setting.save();\n            }\n        },\n        actionBubblerA: function (value) {\n            return this.buttonTypeChanged(value, 'A');\n        },\n        actionBubblerB: function (value) {\n            return this.buttonTypeChanged(value, 'B');\n        },\n        actionBubblerC: function (value) {\n            return this.buttonTypeChanged(value, 'C');\n        },\n        actionBubblerD: function (value) {\n            return this.buttonTypeChanged(value, 'D');\n        },\n        actionBubblerE: function (value) {\n            return this.buttonTypeChanged(value, 'E');\n        },\n        actionBubblerF: function (value) {\n            return this.buttonTypeChanged(value, 'F');\n        },\n        changeButtonValueA: function (value) {\n            return this.buttonValueChanged(value, 'A');\n        },\n        changeButtonValueB: function (value) {\n            return this.buttonValueChanged(value, 'B');\n        },\n        changeButtonValueC: function (value) {\n            return this.buttonValueChanged(value, 'C');\n        },\n        changeButtonValueD: function (value) {\n            return this.buttonValueChanged(value, 'D');\n        },\n        changeButtonValueE: function (value) {\n            return this.buttonValueChanged(value, 'E');\n        },\n        changeButtonValueF: function (value) {\n            return this.buttonValueChanged(value, 'F');\n        },\n        projectSelected: function (projectid) {\n            var buttons;\n            // every time project is changed, init buttons so that old values are removed\n            buttons = [\n                {\n                    name: 'A',\n                    type: null,\n                    value: null,\n                    schemaid: null,\n                },\n                {\n                    name: 'B',\n                    type: null,\n                    value: null,\n                    schemaid: null,\n                },\n                {\n                    name: 'C',\n                    type: null,\n                    value: null,\n                    schemaid: null,\n                },\n                {\n                    name: 'D',\n                    type: null,\n                    value: null,\n                    schemaid: null,\n                },\n                {\n                    name: 'E',\n                    type: null,\n                    value: null,\n                    schemaid: null,\n                },\n                {\n                    name: 'F',\n                    type: null,\n                    value: null,\n                    schemaid: null,\n                },\n            ];\n            return this.get('store')\n                .query('row-setting', {\n                    toid: projectid,\n                })\n                .then((data) => {\n                    var buttonRow,\n                        field,\n                        key,\n                        letter,\n                        schema_map_to_exttype,\n                        schema_map_to_type,\n                        value,\n                        values;\n                    this.set('buttonRows', buttons);\n                    if (data.get('firstObject')) {\n                        schema_map_to_type = this.get('schema_map_to_type');\n                        schema_map_to_exttype = this.get('schema_map_to_exttype');\n                        values = JSON.parse(data.get('firstObject.value'));\n                        for (key in values) {\n                            value = values[key];\n                            // get schemaid\n                            if (key.indexOf('_select') > 0) {\n                                letter = key.substr(0, 1);\n                                buttonRow = buttons.findBy('name', letter);\n                                Ember.set(buttonRow, 'schemaid', value);\n                                Ember.set(buttonRow, 'type', schema_map_to_type[value]);\n                                field = {\n                                    form: 'worktime',\n                                    name: schema_map_to_exttype[value],\n                                    type: schema_map_to_type[value],\n                                    options:\n                                        collector.forms.worktime.objects[\n                                            schema_map_to_exttype[value]\n                                        ].options,\n                                };\n                                Ember.set(buttonRow, 'field', field);\n                            }\n                            // get value\n                            if (parseInt(key.substr(2))) {\n                                letter = key.substr(0, 1);\n                                buttonRow = buttons.findBy('name', letter);\n                                Ember.set(buttonRow, 'value', value);\n                                field = buttonRow['field'];\n                                field['value'] = value;\n                                Ember.set(buttonRow, 'field', field);\n                            }\n                        }\n                        return this.set('settings', data.get('firstObject'));\n                    } else {\n                        return this.set(\n                            'settings',\n                            this.get('store').createRecord('row-setting', {\n                                name: 'timeclean_button',\n                                toid: this.get('project_id'),\n                                value: null,\n                            }),\n                        );\n                    }\n                });\n        },\n    },\n});\n\nexport default NfcCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"asccB87u\",\"block\":\"{\\\"symbols\\\":[\\\"button\\\",\\\"index\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"nfcIsOn\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\"],[[24,[\\\"projects\\\"]],\\\"form-control\\\",[24,[\\\"project_id\\\"]],\\\"projectSelected\\\",[28,\\\"t\\\",[\\\"workday.select_project\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project_id\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well nfc-settings\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"buttonRows\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6 col-sm-6 nfc-button-row\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-5\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"circle\\\"],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-7 dropdowns\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\"],[[24,[\\\"types\\\"]],\\\"form-control\\\",[23,1,[\\\"schemaid\\\"]],[28,\\\"concat\\\",[\\\"actionBubbler\\\",[23,1,[\\\"name\\\"]]],null],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"field\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,1,[\\\"field\\\"]]],[[\\\"change\\\"],[[28,\\\"concat\\\",[\\\"changeButtonValue\\\",[23,1,[\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"compare-helper\\\",[2,[23,2,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix visible-sm-block\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"settings\\\",\\\"hasDirtyAttributes\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/nfc-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/record-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorRecordCompComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport saveTheChildren from '../../../mixins/save-the-children';\n\nimport validator from 'tt4/classes/validations';\n\nimport { isArray } from '@ember/array';\n\nimport { copy } from 'ember-copy';\n\nimport $ from 'jquery';\n\nCollectorRecordCompComponent = Ember.Component.extend(saveTheChildren, {\n    // Properties\n\n    saveTheChildrenRawErrors: true,\n    // Store so we can fetch record\n    store: Em.inject.service(),\n    modalScroller: Ember.inject.service(),\n    evented: Ember.inject.service(),\n    // Collector service\n    Collector: Em.inject.service('collector-service'),\n    // Form of the record\n    form: null,\n    // ID of the record\n    record_id: null,\n    // Record we are working with\n    record: null,\n    // Fields on this form\n    fields: Em.computed('record', {\n        set: function (key, value) {\n            return (this._value = value);\n        },\n        get: function () {\n            var c, fields, form, mandatory, record, skip;\n            if (this._value) {\n                return this._value;\n            }\n            // Collector service\n            c = this.get('Collector');\n            // Collector form\n            form = this.get('form');\n            // Record\n            record = this.get('record');\n            // if needed, you can skip fields or add mandatory-settings to them (used in separating one-day and multi-day absences)\n            skip = this.get('settings.skip');\n            mandatory = this.get('settings.mandatory');\n            if (!record) {\n                return;\n            }\n            Em.assert('You need to provide the FORM for record comp', form);\n            // Fetch form fields with collector service\n            fields = this._mapFields(c.fieldArray(form));\n            return fields.filter((item) => {\n                var ref, ref1, ref2, ref3;\n                if (item.features.stashed) {\n                    return false;\n                }\n                if (\n                    (ref = item.type) === 'fileupload' ||\n                    ref === 'row_linker' ||\n                    ref === 'rowlink' ||\n                    ref === 'device' ||\n                    ref === 'dropdown_language'\n                ) {\n                    return false;\n                }\n                if (\n                    form === 'user' &&\n                    ((ref1 = item.name) === 'fingerprint' || ref1 === 'setting_wap_font_size')\n                ) {\n                    return false;\n                }\n                if (skip && ((ref2 = item.name), indexOf.call(skip, ref2) >= 0)) {\n                    return false;\n                }\n                if (mandatory && ((ref3 = item.name), indexOf.call(mandatory, ref3) >= 0)) {\n                    item.features = copy(item.features);\n                    Em.set(item, 'features.mandatory', true);\n                }\n                return true;\n            });\n        },\n    }),\n    _mapFields: function (fields) {\n        var record;\n        // Fetch form fields with collector service\n        record = this.get('record');\n        return fields.map((field) => {\n            var value;\n            if (field.name === 'location' || field.name === 'end_location') {\n                field.type = 'gpslocation';\n            }\n            if (field.type === 'database' && record.get(field.name)) {\n                field.value = record.get(field.name + '.id');\n            } else if (field.type !== 'databasearray') {\n                field.value = record.get(field.name);\n            }\n            if (\n                this.get('record.isNew') &&\n                field.features.default_value &&\n                Em.isEmpty(record.get(field.name))\n            ) {\n                value = this.getDefaultValue(field);\n                field.value = value;\n                this.send('setValue', value, field.name);\n            }\n            return this.returnField(field);\n        });\n    },\n    // Public way to do whatever you like with the field by extending\n    returnField: function (field) {\n        return field;\n    },\n    getDefaultValue: function (field) {\n        if (field.type === 'date') {\n            if (field.features.default_value === 'today') {\n                return moment().format('YYYY-MM-DD');\n            } else if (field.features.default_value === 'yesterday') {\n                return moment().subtract(1, 'day').format('YYYY-MM-DD');\n            }\n        }\n        return field.features.default_value;\n    },\n    addNeededObservers: Em.on(\n        'init',\n        Em.observer('fields', function () {\n            if (!this.get('fields')) {\n                return;\n            }\n            return this.get('fields').forEach((field) => {\n                var observe_fields;\n                // hide array means there are fields that are visible is some conditions\n                if (Em.isArray(field.features.hide)) {\n                    observe_fields = this.getFieldsToObserve(field.features.hide);\n                    return observe_fields.forEach((observe_field) => {\n                        this.addObserver(\n                            'record.' + observe_field,\n                            {\n                                conditions: field.features.hide,\n                                field: field.name,\n                            },\n                            this.setFieldVisibility,\n                        );\n                        return this.get('record').notifyPropertyChange(observe_field);\n                    });\n                }\n            });\n        }),\n    ),\n    getFieldsToObserve: function (condition_array) {\n        var condition, field, i, len, temp, value;\n        temp = [];\n        for (i = 0, len = condition_array.length; i < len; i++) {\n            condition = condition_array[i];\n            for (field in condition) {\n                value = condition[field];\n                temp.push(field);\n            }\n        }\n        return temp;\n    },\n    setFieldVisibility: function (sender, key) {\n        var features, field;\n        // set field visibility according to are conditions met or not\n        field = sender.get('fields').findBy('name', this.field);\n        features = copy(field.features);\n        Ember.set(features, 'hide', !sender.areTheseMet(this.conditions));\n        Ember.set(field, 'features', features);\n        return sender.notifyPropertyChange('showFields');\n    },\n    areTheseMet: function (condition_array) {\n        if (condition_array && !isArray(condition_array)) {\n            return true;\n        } else if (isArray(condition_array) && this.get('record')) {\n            return validator._is_visible(this.get('record'), condition_array);\n        }\n        return false;\n    },\n    showFields: Em.computed('fields', 'record', function () {\n        if (!this.get('fields')) {\n            return;\n        }\n        return this.get('fields').reject((field) => {\n            var model;\n            if (typeof field.features.hide === 'object') {\n                model = this.get('record');\n                if (\n                    field.features.hide.condition === \"'!$editing'\" ||\n                    field.features.hide.condition === '!$editing'\n                ) {\n                    // hide if adding\n                    if (model.get('isNew')) {\n                        // adding\n                        return true; // hide\n                    } else {\n                        return false; // do not hide\n                    }\n                }\n                if (\n                    field.features.hide.condition === \"'$editing'\" ||\n                    field.features.hide.condition === '$editing'\n                ) {\n                    // hide if editing\n                    if (!model.get('isNew')) {\n                        // editing\n                        return true; // hide\n                    } else {\n                        return false; // do not hide\n                    }\n                }\n                return true;\n            } else {\n                return field.features.hide;\n            }\n        });\n    }),\n\n    //   Methods\n\n    recordSetter: Em.on(\n        'init',\n        Em.observer('form', 'record_id', function () {\n            var form, found, id, self, store, values;\n            self = this;\n            // Collector form external type\n            form = this.get('form');\n            // Record ID\n            id = this.get('record_id');\n            // Store\n            store = this.get('store');\n            Em.assert('You need to provide the FORM for record comp', form);\n            // If we don't have a record ID we create a new record\n            if (!id) {\n                values = {};\n                if (this.get('settings.defaultValues')) {\n                    values = this.get('settings.defaultValues');\n                }\n                Ember.run.next(this, function () {\n                    return this.set('record', store.createRecord(form.dasherize(), values));\n                });\n                return;\n            }\n            // Get record from store\n            if (id === 'new') {\n                found = store.peekAll(form.dasherize()).find((record) => {\n                    return record.get('hasDirtyAttributes');\n                });\n                Ember.assert(\n                    found,\n                    \"When using record-comp with id 'new' you must add dirty record to store before calling this\",\n                );\n                return Ember.run.next(this, function () {\n                    return this.set('record', found);\n                });\n            } else {\n                return store\n                    .findRecord(form.dasherize(), id, {\n                        include: true,\n                    })\n                    .then(function (rec) {\n                        return Ember.run.next(this, function () {\n                            return self.set('record', rec);\n                        });\n                    });\n            }\n        }),\n    ),\n    refreshSettings: Ember.on(\n        'init',\n        Ember.observer('settings.form', 'settings.id', function () {\n            var getSettings, self, settings;\n            getSettings = ['form', 'id'];\n            settings = this.get('settings');\n            if (!settings) {\n                return;\n            }\n            self = this;\n            return $.each(getSettings, function (key, item) {\n                var new_value, old_value;\n                if ((!item) in settings) {\n                    return;\n                }\n                old_value = self.get(item);\n                new_value = settings[item];\n                if (old_value !== new_value) {\n                    return self.set(item, new_value);\n                }\n            });\n        }),\n    ),\n    willClearRender: function () {\n        if (!this.get('fields')) {\n            return;\n        }\n        return this.get('fields').forEach((field) => {\n            var observe_fields;\n            if (Em.isArray(field.features.hide)) {\n                observe_fields = this.getFieldsToObserve(field.features.hide);\n                return observe_fields.forEach((observe_field) => {\n                    return this.removeObserver(\n                        'record.' + observe_field,\n                        {\n                            conditions: field.features.hide,\n                            field: field.name,\n                        },\n                        this.setFieldVisibility,\n                    );\n                });\n            }\n        });\n    },\n    stashed_fields: Em.computed('record', function () {\n        var c, fields, form, record;\n        // Collector service\n        c = this.get('Collector');\n        // Collector form\n        form = this.get('form');\n        // Record\n        record = this.get('record');\n        if (!record) {\n            return;\n        }\n        Em.assert('You need to provide the FORM for record comp', form);\n        // Fetch form fields with collector service\n        fields = this._mapFields(c.fieldArray(form));\n        return fields.filterBy('features.stashed');\n    }),\n    scrollIfErrors: function () {\n        return Em.run.next(this, function () {\n            if ($('.has-error').length > 0) {\n                return this.get('modalScroller').scrollVertical($('.has-error')[0]);\n            }\n        });\n    },\n    actions: {\n        setValue: function (value, field, set = true) {\n            var record;\n            record = this.get('record');\n            if (set) {\n                if (Ember.typeOf(field) === 'object' && field.type === 'databasearray') {\n                    return record.set(field.form, value);\n                } else {\n                    return record.set(field, value);\n                }\n            }\n        },\n        save: function () {\n            var record;\n            this.scrollIfErrors();\n            record = this.get('record');\n            this.set('saving', true);\n            return record.validate().then(() => {\n                if (record.get('isValid')) {\n                    return this.save_record(record).then(\n                        () => {\n                            this.set('saving', false);\n                            this.send('afterSave', this.get('settings'), this.get('record'));\n                            this.get('evented').storeEvent(\n                                'insert',\n                                this.get('form'),\n                                this.get('record'),\n                            );\n                            return this.sendAction(\n                                'recordSaved',\n                                this.get('settings'),\n                                this.get('record'),\n                            );\n                        },\n                        (e) => {\n                            this.set('saving', false);\n                            return this.set('validationMessage', e);\n                        },\n                    );\n                } else {\n                    return this.set('saving', false);\n                }\n            });\n        },\n        afterSave: function (settings, record) {},\n        cancel: function () {\n            if (this.get('record')) {\n                if (this.get('record.isNew')) {\n                    this.get('record').deleteRecord();\n                } else {\n                    this.get('record').rollbackAttributes();\n                }\n            }\n            return this.sendAction('cancelClicked', this.get('settings'), true);\n        },\n        show_stashed_fields: function () {\n            this.toggleProperty('stashed_visible');\n            return false;\n        },\n    },\n});\n\nexport default CollectorRecordCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"XJHGnjKG\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"record-comp-content\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"messageBox\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning modal-message-box\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[22,\\\"messageBox\\\"],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"showFields\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/field-container\\\",[[23,2,[]]],[[\\\"change\\\",\\\"model\\\"],[\\\"setValue\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"stashed_fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"stashed-fields\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"show-stashed-link\\\"],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_stashed_fields\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.add.hide_stashed\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.add.show_stashed\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"glyphicon \\\",[28,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]],\\\"glyphicon-chevron-up\\\",\\\"glyphicon-chevron-down\\\"],null],\\\" \\\"]]],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"panel panel-default \\\",[28,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]],\\\"show-stashed-div\\\",\\\"hide-stashed-div\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"stashed_fields\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"collector/field-container\\\",[[23,1,[]]],[[\\\"change\\\",\\\"model\\\"],[\\\"setValue\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"validationMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"error-message\\\",null,[[\\\"error\\\"],[[24,[\\\"validationMessage\\\"]]]]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row record-comp-buttons\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\",\\\"name\\\",\\\"form\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]],\\\"save-button\\\",[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[12,\\\"name\\\",\\\"cancel-button\\\"],[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-cancel-button\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"compact\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/record-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/record-custom-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorRecordCustomCompComponent;\n\nimport Ember from 'ember';\n\nimport recordComp from '../record-comp/component';\n\nCollectorRecordCustomCompComponent = recordComp.extend({\n    recordSetter: Em.on(\n        'init',\n        Em.observer('form', 'record_id', function () {\n            if (this.get('record')) {\n                return;\n            }\n            return this._super();\n        }),\n    ),\n    actions: {\n        setValue: function (value, field) {\n            if (!field) {\n                return;\n            }\n            this._super(value, field);\n            return this.sendAction('bubbleChange', value, field);\n        },\n    },\n});\n\nexport default CollectorRecordCustomCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"dt5SqXD0\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"field\\\",\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"showFields\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[25,3]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[14,3,[[23,0,[]],[23,2,[]],[24,[\\\"record\\\"]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-container\\\",[[23,2,[]]],[[\\\"change\\\",\\\"model\\\"],[\\\"setValue\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[2]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"stashed_fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"stashed-fields\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"show-stashed-link\\\"],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_stashed_fields\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.add.hide_stashed\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.add.show_stashed\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"glyphicon \\\",[28,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]],\\\"glyphicon-chevron-up\\\",\\\"glyphicon-chevron-down\\\"],null],\\\" \\\"]]],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"panel panel-default \\\",[28,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]],\\\"show-stashed-div\\\",\\\"hide-stashed-div\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"stashed_fields\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"collector/field-container\\\",[[23,1,[]]],[[\\\"change\\\",\\\"model\\\"],[\\\"setValue\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"validationMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"error-message\\\",null,[[\\\"error\\\"],[[24,[\\\"validationMessage\\\"]]]]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/record-custom-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/record-view-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ColletorRecordViewCompComponent;\n\nimport Ember from 'ember';\n\nColletorRecordViewCompComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    _fields: Ember.computed('fields', function () {\n        var c, fields, model;\n        fields = this.get('fields');\n        model = this.get('model');\n        if (!fields) {\n            return;\n        }\n        if (!model) {\n            return;\n        }\n        c = this.get('Collector');\n        fields.forEach(function (field) {\n            return (field.value = c.format(\n                model.get(field.name),\n                field,\n                null,\n                model,\n                false,\n                model.get('constructor.modelName'),\n            ));\n        });\n        return fields;\n    }),\n});\n\nexport default ColletorRecordViewCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"mD8fGJHs\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"dd\\\",\\\"ddm\\\",\\\"export\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"exports\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more pull-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"exports\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export\\\",[23,4,[]]]],[8],[1,[28,\\\"t\\\",[\\\"general.export\\\"],[[\\\"type\\\"],[[23,4,[]]]]],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"translated_name\\\"]],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[23,1,[\\\"value\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/record-view-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/report-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormReportComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport pdfExport from '../../../mixins/pdf-export';\n\nimport collector from '../../../classes/collector';\n\nimport config from '../../../config/environment';\n\nimport statusUtil from 'tt4/utils/status';\n\nimport $ from 'jquery';\n\nimport { pluralize } from 'ember-inflector';\n\nFormReportComponent = Ember.Component.extend(pdfExport, {\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    sessionGlobals: Em.inject.service(),\n    dialogs: Ember.inject.service(),\n    capi: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    checked_rows: null,\n    //# Set the form which data will be fetched\n    form: null,\n    //# Query parameters for fetching data from api. format [{name: \"param1\", value: \"value1\"},...]\n    query: null,\n    //# List of columns to be hidden. Format is string \"column1,column2\"\n    hide_columns: null,\n    //# List of columns to be shown. Format is string \"column1,column2\".\n    // This overcomes hide_columns setting if used\n    show_columns: null,\n    //# Data can be grouped by columns. Format is string \"column1,column2\"\n    groupBy: null,\n    //# Data can be ordered by columns. Format is string \"column1(-),column2(-)\"\n    order: null,\n    //# Header over the table\n    header: null,\n    imagePromises: [],\n    //# Row action buttons like edit and remove\n    rowActions: [\n        {\n            action: 'editRow',\n            icon: 'move move-Pencil',\n        },\n        {\n            action: 'removeRow',\n            icon: 'move move-Delete',\n        },\n    ],\n    //# PRIVATE PARAMETERS\n\n    //# Rows per page\n    rowsPerPage: Em.computed('settings.rowsPerPage', function () {\n        return this.get('settings.rowsPerPage') || 25;\n    }),\n    currentPage: 1,\n    //# summable field type list\n    summableTypes: ['hours', 'number', 'price', 'big_price', 'checkbox'],\n    groupableColumnList: [\n        'date',\n        'hours',\n        'number',\n        'price',\n        'big_price',\n        'dropdown_values',\n        'dropdown_options',\n    ],\n    /*\n\n  METHODS FOR INITIALIZING SETTINGS AND OBSERVING settings PROPERTY\n\n  */\n    refreshSettings: Ember.on(\n        'init',\n        Ember.observer(\n            'settings.form',\n            'settings.group',\n            'settings.query',\n            'settings.order',\n            'settings.row_info_status',\n            function () {\n                var getSettings, self, settings;\n                getSettings = [\n                    'form',\n                    'group',\n                    'query',\n                    'header',\n                    'hide_columns',\n                    'show_columns',\n                    'order',\n                    'row_info_status',\n                ];\n                settings = this.get('settings');\n                if (!settings) {\n                    return;\n                }\n                self = this;\n                return $.each(getSettings, function (key, item) {\n                    var new_value, old_value;\n                    if ((!item) in settings) {\n                        return;\n                    }\n                    old_value = self.get(item);\n                    new_value = settings[item];\n                    if (old_value !== new_value) {\n                        return self.set(item, new_value);\n                    }\n                });\n            },\n        ),\n    ),\n    /*\n\n  PROPERTIES AND METHODS FOR DATA\n\n  */\n    didInsertElement: function () {\n        return this.set('checked_rows', Em.A([]));\n    },\n    // querying form server is done here\n    data: Ember.computed(\n        'form',\n        'group',\n        'query',\n        'currentPage',\n        'order',\n        'statusChanged',\n        'row_info_status',\n        'rowsPerPage',\n        'status',\n        'settings.refreshRows',\n        function () {\n            var c,\n                data,\n                datefieldname,\n                end,\n                field,\n                form,\n                group,\n                order,\n                param,\n                params,\n                query,\n                settings,\n                start,\n                status,\n                use_default_even_without_index;\n            ({ form, query, group, order, status } = this.getProperties(\n                'form',\n                'query',\n                'group',\n                'order',\n                'status',\n            ));\n            if (!form) {\n                return null;\n            }\n            if (!this.get('checked_rows')) {\n                this.set('checked_rows', Em.A([]));\n            }\n            params = {};\n            settings = this.get('settings');\n            if (this.get('settings.calendar') === true) {\n                this.set('rowsPerPage', 100);\n            }\n            if (query) {\n                query.forEach((item) => {\n                    if (item.name === 'date') {\n                        Ember.run.next(this, function () {\n                            return this.set('dateRange', item.value);\n                        });\n                    }\n                    if (item.value !== 'null') {\n                        return (params[item.name] = item.value);\n                    }\n                });\n            } else {\n                // this is not the correct way to do this but only way I figured out :|\n                // form-filters should be able to update these automatically - Veikko\n                if (form) {\n                    params = this.get('sessionGlobals').get('filters_' + form) || null;\n                }\n                // try also fetching from global filters if form specifics not found\n                if (params === null) {\n                    params = this.get('sessionGlobals').get('filters') || {};\n                }\n                c = this.get('Collector');\n                use_default_even_without_index = false;\n                if (c.fieldExists(form, 'date')) {\n                    datefieldname = 'date';\n                } else if (c.fieldExists(form, 'startdate') && form === 'abcense') {\n                    use_default_even_without_index = true;\n                    datefieldname = 'startdate';\n                } else {\n                    datefieldname = null;\n                }\n                if (params[datefieldname] == null && datefieldname) {\n                    field = c.field(form, datefieldname);\n                    if (field) {\n                        if (use_default_even_without_index || 'use_index' in field.features) {\n                            start = params.date\n                                ? params.date.split('_')[0]\n                                : moment().startOf('week').format('YYYY-MM-DD');\n                            end = params.date\n                                ? params.date.split('_')[1]\n                                : moment().endOf('week').format('YYYY-MM-DD');\n                            params[datefieldname] = start + '_' + end;\n                        }\n                    }\n                }\n            }\n            for (param in params) {\n                if (param.includes(':')) {\n                    continue;\n                }\n                if (param === 'q') {\n                    continue;\n                }\n                if (params[param] === null) {\n                    delete params[param];\n                }\n                if (param === 'groupBy') {\n                    continue;\n                }\n                if (!this.testFieldExistance(form, param)) {\n                    delete params[param];\n                }\n            }\n            params = this.transformQuery(params);\n            params = this.special_queryParams(params, form);\n            params.sideload = this.getSideload();\n            if (this.get('settings.row_info_status')) {\n                params.row_info_status = this.get('settings.row_info_status');\n            }\n            if (group) {\n                params.groupBy = group;\n            }\n            if (order) {\n                params.order = order;\n            }\n            if (status) {\n                params.status = status;\n            }\n            params = this.add_limits(params);\n            data = this.get('store').query(form, params);\n            data.then((data) => {\n                if (data.get('meta.count') > 100 && this.get('settings.calendar') === true) {\n                    return this.get('dialogs').alert(this.get('intl').t('report.too_many'));\n                }\n            });\n            return data;\n        },\n    ),\n    transformQuery: function (params) {\n        var pArr, param, value;\n        for (param in params) {\n            value = params[param];\n            if (param.indexOf('.') > -1) {\n                pArr = param.split('.');\n                delete params[param];\n                params[pArr[0] + '[' + pArr[1] + ']'] = value;\n            }\n        }\n        return params;\n    },\n    special_queryParams: function(params, form) {\n        \n        if (!this.get('useSpecialQueryParams')) return params;\n        \n        // absense form has startdate and enddate fields, but we want to use them as one field so all absences are returned\n        if (form === 'abcense' && Object.keys(params).includes('startdate')) {\n            const newParams = {startdate_enddate: params.startdate, ...params}\n            delete newParams.startdate\n            return newParams\n        }\n        return params\n    },\n    getSideload: function () {\n        var column, columns, i, len, ret, subfields, subform;\n        columns = this.get('columns');\n        ret = [];\n        for (i = 0, len = columns.length; i < len; i++) {\n            column = columns[i];\n            [subform, subfields] = this.parseColumn(column);\n            if (subfields) {\n                ret.push(subform + '.' + subfields[0]);\n            }\n        }\n        if (ret.length > 0) {\n            return ret;\n        } else {\n            return true;\n        }\n    },\n    // all data is formatted here before rendering\n    formatted_data: Ember.computed('data.[]', function () {\n        return this.formatData('html');\n    }),\n    pdf_formatted_data: Ember.computed('data.[]', 'checked_rows.[]', function () {\n        return this.formatData('pdf');\n    }),\n    csv_formatted_data: Ember.computed('data.[]', function () {\n        return this.formatData('csv');\n    }),\n    xls_formatted_data: Ember.computed('data.[]', function () {\n        return this.formatData('excel');\n    }),\n    calendar_formatted_data: Ember.computed('data.[]', function () {\n        return this.formatData('calendar');\n    }),\n    asCsvArray: Ember.computed(function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise, rows;\n            promise = this.get('data');\n            rows = [];\n            return promise.then(() => {\n                var column, columns, csv_data, i, j, len, len1, newrow, row;\n                rows.push(\n                    this.get('translated_columns').map(function (item) {\n                        if (Ember.String.isHTMLSafe(item)) {\n                            return item.string;\n                        }\n                        return item;\n                    }),\n                );\n                csv_data = this.get('csv_formatted_data');\n                columns = this.get('columnList');\n                for (i = 0, len = csv_data.length; i < len; i++) {\n                    row = csv_data[i];\n                    newrow = [];\n                    for (j = 0, len1 = columns.length; j < len1; j++) {\n                        column = columns[j];\n                        newrow.push(row[column]);\n                    }\n                    rows.push(newrow);\n                }\n                return resolve(rows);\n            });\n        });\n    }),\n    //        header: @get 'settings.header'\n    asXlsArray: Ember.computed(function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise, rows;\n            promise = this.get('data');\n            rows = [];\n            return promise.then(() => {\n                var column, columns, csv_data, i, j, len, len1, newrow, row;\n                rows.push(\n                    this.get('translated_columns').map(function (item) {\n                        if (Ember.String.isHTMLSafe(item)) {\n                            return item.string;\n                        }\n                        return item;\n                    }),\n                );\n                csv_data = this.get('xls_formatted_data');\n                columns = this.get('columnList');\n                for (i = 0, len = csv_data.length; i < len; i++) {\n                    row = csv_data[i];\n                    newrow = [];\n                    for (j = 0, len1 = columns.length; j < len1; j++) {\n                        column = columns[j];\n                        newrow.push(row[column]);\n                    }\n                    rows.push(newrow);\n                }\n                return resolve(rows);\n            });\n        });\n    }),\n    asPdfElement: Ember.computed('checked_rows.[]', function () {\n        var pdf_data_with_column_names;\n        pdf_data_with_column_names = [];\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise;\n            promise = this.get('data');\n            return promise.then(() => {\n                var promises;\n                promises = Em.RSVP.Promise.all(\n                    this.get('pdf_formatted_data').map(function (innerPromiseArray) {\n                        return Em.RSVP.Promise.all(innerPromiseArray);\n                    }),\n                );\n                return promises.then((resolved_pdf_arr) => {\n                    var field, i, ind, j, len, len1, pdfRow, row;\n                    for (i = 0, len = resolved_pdf_arr.length; i < len; i++) {\n                        row = resolved_pdf_arr[i];\n                        pdfRow = Ember.Object.create();\n                        for (ind = j = 0, len1 = row.length; j < len1; ind = ++j) {\n                            field = row[ind];\n                            pdfRow[this.get('columnList')[ind]] = field;\n                        }\n                        pdf_data_with_column_names.push(pdfRow);\n                    }\n                    // wait for all images to be loaded before resolving\n                    return Em.RSVP.Promise.all(this.imagePromises).then(() => {\n                        this.imagePromises = [];\n                        return resolve(\n                            this.createPdfTableElement(\n                                this.get('columnList'),\n                                pdf_data_with_column_names,\n                                this.get('translated_columns'),\n                                this.get('pdf_formatted_sumRow'),\n                                this.get('pdfSettings'),\n                            ),\n                        );\n                    });\n                });\n            });\n        });\n    }),\n    asPdfElementFull: Ember.computed(function () {\n        var pdf_data_with_column_names;\n        pdf_data_with_column_names = [];\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise;\n            promise = this.get('data');\n            return promise.then(() => {\n                var promises;\n                promises = Em.RSVP.Promise.all(\n                    this.get('pdf_formatted_data').map(function (innerPromiseArray) {\n                        return Em.RSVP.Promise.all(innerPromiseArray);\n                    }),\n                );\n                return promises.then((resolved_pdf_arr) => {\n                    var field, i, ind, j, len, len1, pdfRow, row;\n                    for (i = 0, len = resolved_pdf_arr.length; i < len; i++) {\n                        row = resolved_pdf_arr[i];\n                        pdfRow = Ember.Object.create();\n                        for (ind = j = 0, len1 = row.length; j < len1; ind = ++j) {\n                            field = row[ind];\n                            pdfRow[this.get('columnList')[ind]] = field;\n                        }\n                        pdf_data_with_column_names.push(pdfRow);\n                    }\n                    // wait for all images to be loaded before resolving\n                    return Em.RSVP.Promise.all(this.imagePromises).then(() => {\n                        this.imagePromises = [];\n                        return resolve(\n                            this.createPdfTableElementRows(\n                                this.get('columnList'),\n                                pdf_data_with_column_names,\n                                this.get('translated_columns'),\n                                this.get('pdf_formatted_sumRow'),\n                            ),\n                        );\n                    });\n                });\n            });\n        });\n    }),\n    formatData: function (format) {\n        var c, calendar_formatted_data, columns, data, form, formatted_data, pdfRows;\n        data = this.get('data');\n        if (!data) {\n            return null;\n        }\n        if (!data.isFulfilled) {\n            return null;\n        }\n        columns = this.get('columns');\n        c = this.get('Collector');\n        form = this.get('form');\n        //        fields = c.fields form\n        formatted_data = Em.A([]);\n        calendar_formatted_data = [];\n        pdfRows = [];\n        data.forEach((unformatted_row) => {\n            var date_is_set, pdfRow, row;\n            row = Ember.Object.create();\n            date_is_set = false;\n            pdfRow = [];\n            //do some magic if there are rows checked\n            if (this.get('checked_rows').length > 0) {\n                //put row as checked (if you go to another route and come back)\n                if (this.get('checked_rows').indexOf(unformatted_row.id) !== -1) {\n                    row.checkedClass = 'checked';\n                }\n                //skip row this is not, only in exports\n                if (format === 'pdf' || format === 'csv' || format === 'excel') {\n                    if (this.get('checked_rows').indexOf(unformatted_row.id) === -1) {\n                        return;\n                    }\n                }\n            }\n            if (unformatted_row.id) {\n                row.id = unformatted_row.id;\n            }\n            $.each(columns, (key, column) => {\n                var cell,\n                    field_obj,\n                    formObj,\n                    formattedImages,\n                    formatted_cell,\n                    i,\n                    img,\n                    len,\n                    ref,\n                    subfields,\n                    subform;\n                [subform, subfields] = this.parseColumn(column);\n                cell = unformatted_row.get(subform);\n                formObj = c.formField(form, subform);\n                if (this.get('formReport') || this.get('settings.useRowInfo')) {\n                    row.row_info = unformatted_row.get('row_info');\n                }\n                if (Ember.isPresent(unformatted_row.get('isEditable'))) {\n                    row.isEditable = unformatted_row.get('isEditable');\n                }\n                if (column === 'id') {\n                    formatted_cell = cell;\n                } else if (subfields) {\n                    formatted_cell = c.database_value(cell, subform, subfields);\n                } else {\n                    // 1. we check that if field type is signature or hdfile and we are generating pdf..\n                    if (\n                        formObj &&\n                        ((ref = formObj['type']) === 'signature' || ref === 'hdfile') &&\n                        format === 'pdf' &&\n                        cell[0] &&\n                        cell[0].type\n                    ) {\n                        formattedImages = [];\n                        // 2. then we go through all files..\n                        for (i = 0, len = cell.length; i < len; i++) {\n                            img = cell[i];\n                            // 3. and check that current file is image and skip if not!\n                            if (img.type.indexOf('image') === -1) {\n                                continue;\n                            }\n                            // add images to promise array so that we can wait for them to be loaded when creating pdf\n                            const imgPromise = this.formatImageToPdf(\n                                img,\n                                'row',\n                                false,\n                                false,\n                                this.get('pdfSettings.imgLocation'),\n                            ).then((img) => {\n                                formattedImages.push(img);\n                            });\n                            if (format === 'pdf') {\n                                this.imagePromises.push(imgPromise);\n                            }\n                        }\n                        formatted_cell = formattedImages;\n                    } else {\n                        formatted_cell = c._format_(cell, form, subform, format);\n                    }\n                }\n                if (column === 'row_info.created' && row.row_info) {\n                    Ember.set(row, 'row_info.created', formatted_cell);\n                } else if (column === 'status_last_changed') {\n                    formatted_cell = this.getStatusChangedInfo(unformatted_row.id);\n                } else {\n                    if (format === 'excel' && Ember.String.isHTMLSafe(formatted_cell)) {\n                        formatted_cell = formatted_cell.string;\n                    }\n                    row[this.columnKey(column)] = formatted_cell;\n                }\n                pdfRow.push(formatted_cell);\n                // if calendar-format, add unformatted date so it can be used in calendar\n                if (format === 'calendar' && c.fieldExists(form, subform)) {\n                    field_obj = c.formField(form, subform);\n                    if (field_obj['type'] === 'date' && !date_is_set) {\n                        date_is_set = true;\n                        row['cal_date_value'] = cell;\n                        return this.set('cal_date_field', column);\n                    }\n                }\n            });\n            formatted_data.pushObject(row);\n            return pdfRows.push(pdfRow);\n        });\n        // if formatting is pdf, return data in different format so it can be resolved\n        if (format === 'pdf') {\n            //    console.log pdfRows\n            //    console.log formatted_data\n            //    return\n            return pdfRows;\n        }\n        //else\n        return formatted_data;\n    },\n    sumRow: Ember.computed('data.[]', function () {\n        var c, columns, data, fields, form, sumRow, summableTypes;\n        data = this.get('data');\n        if (!data) {\n            return null;\n        }\n        if (!data.isFulfilled) {\n            return null;\n        }\n        columns = this.get('columns');\n        summableTypes = this.get('summableTypes');\n        c = this.get('Collector');\n        form = this.get('form');\n        fields = c.fields(form);\n        sumRow = Ember.Object.create();\n        $.each(columns, (key, column) => {\n            var sum, type;\n            if (!(column in fields)) {\n                return;\n            }\n            type = fields[column].type;\n            if (!(indexOf.call(summableTypes, type) >= 0)) {\n                return;\n            }\n            sum = 0;\n            data.forEach((unformatted_row) => {\n                if (this.get('checked_rows').length > 0) {\n                    if (this.get('checked_rows').indexOf(unformatted_row.id) === -1) {\n                        return;\n                    }\n                }\n                if (fields[column].type === 'checkbox') {\n                    if (!sumRow[column]) {\n                        sumRow[column] = [0, 0];\n                    }\n                    if (unformatted_row.get(column)) {\n                        return sumRow[column][0]++;\n                    } else {\n                        return sumRow[column][1]++;\n                    }\n                } else {\n                    sum += unformatted_row.get(column);\n                    return (sumRow[column] = sum);\n                }\n            });\n            if (fields[column].type !== 'checkbox') {\n                return (sumRow[column] = Math.round(sumRow[column] * 100) / 100);\n            }\n        });\n        return sumRow;\n    }),\n    // all data is formatted here before rendering\n    formatted_sumRow: Ember.computed('sumRow', function () {\n        return this.formatSumRow();\n    }),\n    pdf_formatted_sumRow: Ember.computed('sumRow', function () {\n        return this.formatSumRow('pdf');\n    }),\n    formatSumRow: function (format) {\n        var c, columns, fields, form, formatted_sumRow, sumRow;\n        sumRow = this.get('sumRow');\n        if (!sumRow) {\n            return null;\n        }\n        columns = this.get('columns');\n        c = this.get('Collector');\n        form = this.get('form');\n        fields = c.fields(form);\n        formatted_sumRow = Ember.Object.create();\n        $.each(columns, function (key, column) {\n            var cell;\n            cell = sumRow.get(column);\n            if (column === 'id') {\n                return (formatted_sumRow[column] = cell);\n            } else if (fields[column] && fields[column].type === 'checkbox') {\n                if (Ember.isArray(cell)) {\n                    return (formatted_sumRow[column] =\n                        c._format_(true, form, column, format) +\n                        ': ' +\n                        cell[0] +\n                        ' / ' +\n                        c._format_(false, form, column, format) +\n                        ': ' +\n                        cell[1]);\n                }\n            } else {\n                return (formatted_sumRow[column] = c._format_(cell, form, column, format));\n            }\n        });\n        return formatted_sumRow;\n    },\n    /*\n\n  PROPERTIES AND METHODS FOR COLUMNS\n\n  */\n    // list all columns from collector form\n    columns: Ember.computed('form', 'hide_columns', 'show_columns', 'group', function () {\n        var c,\n            column,\n            field_arr,\n            fields,\n            form,\n            hide_columns,\n            hide_columns_arr,\n            i,\n            len,\n            show_columns,\n            show_columns_arr;\n        c = this.get('Collector');\n        form = this.get('form');\n        if (!form || !c.formExists(form)) {\n            return [];\n        }\n        fields = c.fields(form);\n        hide_columns = this.get('hide_columns');\n        hide_columns_arr = hide_columns ? hide_columns.split(',') : [];\n        show_columns = this.get('show_columns');\n        show_columns_arr = show_columns ? show_columns.split(',') : null;\n        field_arr = [];\n        if (show_columns === 'empty') {\n            field_arr = [];\n        } else if (show_columns) {\n            for (i = 0, len = show_columns_arr.length; i < len; i++) {\n                column = show_columns_arr[i];\n                if (\n                    column === 'id' ||\n                    column === 'row_info.created' ||\n                    column === 'row_info.modified' ||\n                    this.testFieldExistance(form, column)\n                ) {\n                    field_arr.push(column);\n                }\n                if (column === 'status' && this.pdfSettings?.statusInfo) {\n                    field_arr.push('status_last_changed');\n                }\n            }\n        } else {\n            // show fields that aren't hidden\n            $.each(fields, (key, item) => {\n                if (indexOf.call(hide_columns_arr, key) >= 0) {\n                    return;\n                }\n                if (this.testFieldExistance(form, key)) {\n                    return field_arr.push(key);\n                }\n            });\n        }\n        if (this.get('group')) {\n            return this.groupableColumns(field_arr, fields);\n        } else {\n            return field_arr;\n        }\n    }),\n    testFieldExistance: function (form, column) {\n        var c;\n        c = this.get('Collector');\n        if (column.indexOf('.') !== -1) {\n            [form, column] = column.split('.');\n        }\n        return c.fieldExists(form, column);\n    },\n    columnList: Ember.computed('columns', function () {\n        return this.get('columns').map((item) => {\n            return this.columnKey(item);\n        });\n    }),\n    // skip all the other columns but those that are shown on grouped reports\n    groupableColumns: function (columns, fields) {\n        var group, groupableColumnsList, ret_arr;\n        groupableColumnsList = this.get('groupableColumnList');\n        group = this.get('group');\n        ret_arr = group.split(',');\n        ret_arr = ret_arr.reject(function (item) {\n            return item === 'all';\n        });\n        $.each(columns, function (key, item) {\n            var type;\n            if (fields[item]) {\n                type = fields[item].type;\n                if (\n                    indexOf.call(groupableColumnsList, type) >= 0 &&\n                    !(indexOf.call(group.split(','), item) >= 0)\n                ) {\n                    return ret_arr.push(item);\n                }\n            }\n        });\n        return ret_arr;\n    },\n    // get translation for every column\n    translated_columns: Ember.computed('columns', function () {\n        var c, columns, form, translated_columns;\n        c = this.get('Collector');\n        ({ columns, form } = this.getProperties('columns', 'form'));\n        form = this.get('form');\n        translated_columns = [];\n        $.each(columns, (key, item) => {\n            var subform, subitem;\n            if (item.indexOf('.') !== -1 && item.substring(0, 9) !== 'row_info.') {\n                [subform, subitem] = item.split('.');\n                if (subitem !== 'name') {\n                    item = subitem;\n                } else {\n                    item = subform;\n                    subform = form;\n                }\n            } else {\n                subform = form;\n            }\n            if (item === 'status_last_changed') {\n                return translated_columns.push(this.get('intl').t('export.pdf.status_last_change'));\n            }\n            return translated_columns.push(c.getTranslationForColumn(subform, item));\n        });\n        return translated_columns;\n    }),\n    columnKey: function (column) {\n        var subfields, subform;\n        [subform, subfields] = this.parseColumn(column);\n        return subform + (subfields ? subfields[0] : '');\n    },\n    parseColumn: function (column) {\n        var subfields, subform;\n        if (column.indexOf('.') !== -1 && column.substring(0, 9) !== 'row_info.') {\n            [subform, subfields] = column.split('.');\n            subfields = [subfields];\n        } else {\n            subform = column;\n            subfields = null;\n        }\n        return [subform, subfields];\n    },\n    formatSubfield: function (subform, subfields) {\n        return subform + '.' + subfields[0];\n    },\n    pageCount: Ember.computed('data.content.meta.count', 'rowsPerPage', function () {\n        if (this.get('rowsPerPage') === 'all') {\n            return 1;\n        } else {\n            return Math.ceil(this.get('data.content.meta.count') / this.get('rowsPerPage'));\n        }\n    }),\n    //# query limits by pagination\n    add_limits: function (params) {\n        var currentPage, rowsPerPage;\n        rowsPerPage = this.get('rowsPerPage');\n        currentPage = this.get('currentPage');\n        if (rowsPerPage === 'all') {\n            params.limit = 'all';\n        } else {\n            params.limit = rowsPerPage;\n            params.offset = rowsPerPage * (currentPage - 1);\n        }\n        return params;\n    },\n    //array for checked rows\n    //checked_rows: Em.A([])\n\n    // default date-range for calendar\n    dateRange: Em.computed(function () {\n        return (\n            moment().startOf('week').format('YYYY-MM-DD') +\n            '_' +\n            moment().endOf('week').format('YYYY-MM-DD')\n        );\n    }),\n\n    getStatusChangedInfo: function (rowId) {\n        const statusrow = this.statusInfoRows[rowId];\n        return statusrow\n            ? moment(statusrow.datetime).format('L') +\n                  ' ' +\n                  moment(statusrow.datetime).format('LT') +\n                  '\\n' +\n                  statusrow.user\n            : '';\n    },\n\n    actions: {\n        catchActions: function (action, params) {\n            if (\n                action === 'columnClicked' ||\n                action === 'removeRow' ||\n                action === 'changeStatus' ||\n                action === 'checkRow' ||\n                action === 'rowHistory' ||\n                action === 'lockRows' ||\n                action === 'deleteChecked' ||\n                action === 'restoreChecked' ||\n                action === 'columnClickedMulti'\n            ) {\n                return this.send(action, params);\n            } else {\n                return this.sendAction(action, params, this.get('settings'));\n            }\n        },\n        deleteChecked: function () {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    if (con) {\n                        return this.checked_rows.forEach((row) => {\n                            row = this.get('store').peekRecord(this.get('form'), row);\n                            if (row.get('row_info.privilege_remove') === false) {\n                                this.get('dialogs').alert(\n                                    this.get('intl').t('general_report.mass_delete.not_allowed'),\n                                );\n                                return;\n                            }\n                            return row.destroyRecord();\n                        });\n                    }\n                });\n        },\n        restoreChecked: function () {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_restore_rows'))\n                .then((con) => {\n                    var form, form_plural;\n                    if (con) {\n                        form = this.get('form');\n                        form_plural = pluralize(form).camelize();\n                        return this.checked_rows.forEach((row) => {\n                            row = this.get('store').peekRecord(this.get('form'), row);\n                            return this.get('capi')\n                                .request('/' + form_plural + '/' + row.id + '?validation=off', {\n                                    dataType: 'json',\n                                    type: 'PUT',\n                                    data:\n                                        '{\"' + form.camelize() + '\":{\"row_info.status\":\"normal\"}}',\n                                })\n                                .then(() => {\n                                    return row.unloadRecord();\n                                });\n                        });\n                    }\n                });\n        },\n        lockRows: function ({ act, rows }) {\n            var form, form_plural, store;\n            if (!this.get('Collector').testNeeds(['userlevel=5'])) {\n                return;\n            }\n            form = this.get('form');\n            form_plural = pluralize(this.get('form')).camelize();\n            store = this.get('store');\n            return rows.forEach((row) => {\n                var data;\n                data = {};\n                if (act === 'lock') {\n                    data[form] = {\n                        locked: true,\n                    };\n                }\n                if (act === 'unlock') {\n                    data[form] = {\n                        locked: false,\n                    };\n                }\n                return this.get('capi')\n                    .request('/' + form_plural + '/' + row.get('id') + '?validation=off', {\n                        dataType: 'json',\n                        type: 'PUT',\n                        data: JSON.stringify(data),\n                    })\n                    .then((data) => {\n                        var record;\n                        // don't need to save row again, just reload it and it will be updated\n                        record = store.peekRecord(form, row.id);\n                        // if form has export_salary field empty it when opening lock\n                        if (this.get('Collector').testNeeds([form + '.export_salary'])) {\n                            record.set('export_salary', '');\n                            return record.save().then(() => {\n                                return this.notifyPropertyChange('data');\n                            });\n                        } else {\n                            return record.reload();\n                        }\n                    });\n            });\n        },\n        export_pdf: function () {\n            return this.get('asPdfElement').then((element) => {\n                return this.createPdfFromElements([element]).then((file) => {\n                    if (typeof cordova !== 'undefined' && cordova !== null) {\n                        return this.get('cordova').openFile(file, 'application/pdf');\n                    }\n                });\n            });\n        },\n        export_pdf_full: function () {\n            return this.get('asPdfElementFull').then((element) => {\n                return this.createPdfFromElements([element]).then((file) => {\n                    if (typeof cordova !== 'undefined' && cordova !== null) {\n                        return this.get('cordova').openFile(file, 'application/pdf');\n                    }\n                });\n            });\n        },\n        // This action sets the sort order of the report\n        columnClicked: function (order) {\n            var currentOrder;\n            currentOrder = this.get('order');\n            if (currentOrder === order || currentOrder === null) {\n                currentOrder = order + '-';\n            } else {\n                currentOrder = order;\n            }\n            //console.log currentOrder\n            this.set('order', currentOrder);\n            if (this.get('settings')) {\n                return this.set('settings.order', currentOrder);\n            }\n        },\n        columnClickedMulti: function (obj) {\n            var col, colArr, sortCol;\n            col = obj.name;\n            //return if obj? and obj.type == \"row_info\"\n            if (obj.ext === 'row_info.created') {\n                col = 'id';\n            }\n            sortCol = this.get('settings.order');\n            if (sortCol === this.get('settings.defaultOrder') && !this.get('manuallyOrdered')) {\n                this.set('settings.order', col);\n                this.set('manuallyOrdered', true);\n                this.set('order', col);\n                return;\n            }\n            if (sortCol.includes(col + '-')) {\n                sortCol = sortCol.replace(col + '-', col);\n            } else if (sortCol.includes(col) && (sortCol = sortCol.replace(col, col + '-'))) {\n            } else if (Ember.isEmpty(sortCol)) {\n                sortCol = col;\n            } else {\n                sortCol += ',' + col;\n            }\n            colArr = sortCol.split(',');\n            if (colArr.length > 4) {\n                // Only use the 4 last options in the sortcol array\n                sortCol = colArr.splice(-4).join(',');\n            }\n            this.set('manuallyOrdered', true);\n            this.set('order', sortCol);\n            return this.set('settings.order', sortCol);\n        },\n        removeFieldFromOrder: function (field) {\n            var cols;\n            cols = this.get('settings.order').split(',');\n            if (cols.length === 1) {\n                this.set('settings.order', this.get('settings.defaultOrder'));\n                this.set('manuallyOrdered', false);\n                this.set('order', this.get('settings.defaultOrder'));\n                return;\n            }\n            if (cols.includes(field + '-')) {\n                field = field + '-';\n            }\n            cols.splice(cols.indexOf(field), 1);\n            if (cols.length > 0) {\n                this.set('manuallyOrdered', true);\n                this.set('order', cols.join(','));\n                return this.set('settings.order', cols.join(','));\n            }\n        },\n        removeRow: function (row) {\n            var form, store;\n            store = this.get('store');\n            form = this.get('form');\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    var record;\n                    if (con) {\n                        // first try to peek record from store .. if just findRecord is used error occurs if record is in store..\n                        // this is because DELETE request is called before GET is ready\n                        record = store.peekRecord(form, row.id);\n                        if (record) {\n                            return record.destroyRecord();\n                        } else {\n                            return store.findRecord(form, row.id).then(function (record) {\n                                return record.destroyRecord();\n                            });\n                        }\n                    }\n                });\n        },\n        rowHistory: function (row) {\n            return this.set('showHistoryForRow', row.get('id'));\n        },\n        removeHistoryModal: function () {\n            return this.set('showHistoryForRow', null);\n        },\n        changeStatus: function (params) {\n            var form, intl, promises, rows, statusField, statusUtilRes, store;\n            this.set('statusUtil', statusUtil.create());\n            store = this.get('store');\n            form = this.get('form');\n            rows = params.rows;\n            intl = this.get('intl');\n            promises = [];\n            statusField = this.get('Collector').field(form, 'status');\n            statusUtilRes = this.get('statusUtil').canChangeStatus(\n                rows,\n                params.status,\n                statusField,\n            );\n            statusUtilRes.accepted.forEach((row) => {\n                var record;\n                return promises.push(\n                    (record = store.peekRecord(form, row.id)),\n                    record\n                        ? (record.set('status', params.status), record.save())\n                        : store.findRecord(form, row.id).then(function (record) {\n                              record.set('status', params.status);\n                              return record.save();\n                          }),\n                );\n            });\n            Promise.all(promises).then(() => {\n                if (statusUtilRes.accepted.length > 0) {\n                    return this.get('notifications').success(\n                        intl.t('general.status_change__success', {\n                            amount: statusUtilRes.accepted.length,\n                        }),\n                        {\n                            autoClear: true,\n                        },\n                    );\n                }\n            });\n            if (statusUtilRes.rejected.length > 0) {\n                this.get('notifications').error(\n                    intl.t('general.status_change_error', {\n                        amount: statusUtilRes.rejected.length,\n                    }),\n                    {\n                        autoClear: true,\n                    },\n                );\n            }\n            return this.toggleProperty('statusChanged');\n        },\n        checkRow: function (params) {\n            if (params.action === 'add') {\n                if (this.get('checked_rows').indexOf(params.id) === -1) {\n                    this.get('checked_rows').pushObject(params.id);\n                }\n            } else {\n                if (this.get('checked_rows').indexOf(params.id) !== -1) {\n                    this.get('checked_rows').removeObject(params.id);\n                }\n            }\n            return this.sendAction('checkedRowsChanged', this.get('checked_rows'));\n        },\n    },\n});\n\nexport default FormReportComponent;\n","export default Ember.HTMLBars.template({\"id\":\"BxK7PLLT\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\",\\\"index\\\",\\\"specialDay\\\",\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"export_pdf\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-right\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more text-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[1,[28,\\\"report-order\\\",null,[[\\\"order\\\",\\\"defaultOrder\\\",\\\"showDefaultOrder\\\",\\\"onRemove\\\",\\\"form\\\"],[[24,[\\\"settings\\\",\\\"order\\\"]],[24,[\\\"settings\\\",\\\"defaultOrder\\\"]],[24,[\\\"manuallyOrdered\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"removeFieldFromOrder\\\"],null],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clear-div\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"settings\\\",\\\"calendar\\\"]]],null,{\\\"statements\\\":[[4,\\\"calendar-report\\\",null,[[\\\"hideDateRangePicker\\\",\\\"date\\\"],[true,[24,[\\\"dateRange\\\"]]]],{\\\"statements\\\":[[4,\\\"calendar-report-day\\\",null,[[\\\"day\\\",\\\"specialDay\\\"],[[23,1,[]],[23,3,[]]]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"calendar-card\\\",null,[[\\\"formatted_data\\\",\\\"day\\\",\\\"columns\\\",\\\"form\\\",\\\"date_field\\\"],[[24,[\\\"calendar_formatted_data\\\"]],[23,1,[]],[24,[\\\"columnList\\\"]],[24,[\\\"form\\\"]],[24,[\\\"cal_date_field\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2,3]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"sumRow\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"form\\\",\\\"checkable\\\",\\\"rowInfoStatus\\\",\\\"hideCheckedActions\\\",\\\"multiSort\\\",\\\"order\\\",\\\"hideSumRow\\\"],[[24,[\\\"columnList\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"formatted_data\\\"]],[24,[\\\"formatted_sumRow\\\"]],[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",[24,[\\\"form\\\"]],[24,[\\\"checkable\\\"]],[24,[\\\"settings\\\",\\\"row_info_status\\\"]],[24,[\\\"hideCheckedActions\\\"]],true,[24,[\\\"order\\\"]],[24,[\\\"hideSumRow\\\"]]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"rowsPerPage\\\"]],[24,[\\\"currentPage\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showHistoryForRow\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/history-modal\\\",null,[[\\\"form\\\",\\\"rowid\\\",\\\"removeModal\\\"],[[24,[\\\"form\\\"]],[24,[\\\"showHistoryForRow\\\"]],\\\"removeHistoryModal\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/report-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/rows-modal/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorAddModalComponent;\n\nimport Ember from 'ember';\nimport { set } from '@ember/object';\n\nCollectorAddModalComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    //rows: Ember.computed 'form', 'rowids.[]', ->\n    //    @get('store').query @get('form'), {id: this.get('rowids').join(\",\")}\n    async didReceiveAttrs() {\n        set(this, 'loading', true);\n        let parent_row_found = this.store.peekRecord(this.parent_form, this.parent_rowid);\n        if (!parent_row_found) await this.store.query(this.parent_form, { id: this.parent_rowid });\n        set(this, 'loading', false);\n    },\n    form: Ember.computed('field', function () {\n        return this.get('field').options.form;\n    }),\n    parent_form: Ember.computed('modal', function () {\n        var formfield;\n        formfield = this.get('modal').split(',')[1];\n        return formfield.split('.')[0];\n    }),\n    parent_field: Ember.computed('modal', function () {\n        var formfield;\n        formfield = this.get('modal').split(',')[1];\n        return formfield.split('.')[1];\n    }),\n    field: Ember.computed('modal', function () {\n        return this.get('Collector').formField(this.get('parent_form'), this.get('parent_field'));\n    }),\n    rows: Ember.computed('form', 'field', 'parent_rowid', function () {\n        var child, parent_row;\n        parent_row = this.get('store').peekRecord(\n            this.get('parent_form'),\n            this.get('parent_rowid'),\n        );\n        child = parent_row.get(this.get('parent_field'));\n        if (this.get('field.type') === 'multiselect') {\n            return this.get('store').query(this.get('form'), {\n                id: child.join(','),\n            });\n        } else {\n            if (this.get('field.type') === 'databasearray') {\n                // for now we reload all databasearrayfields instead of material only\n                this.reloadChilds(child);\n            }\n            return child;\n        }\n    }),\n    reloadChilds: function (child) {\n        var ids;\n        ids = [];\n        child.forEach((record) => {\n            return ids.push(record.get('id'));\n        });\n        return this.get('store').query(this.get('form'), {\n            id: ids.join(','),\n        });\n    },\n    modalHeader: Ember.computed('parent_form', 'parent_field', function () {\n        if (this.get('parent_form').substring(0, 18) === 'measurement_custom') {\n            return this.get('intl').t('site_safety.notices');\n        }\n        return this.get('intl').t(\n            'report.' + this.get('parent_form') + '.' + this.get('parent_field'),\n        );\n    }),\n    main_columns: Ember.computed('field', function () {\n        return this.get('field').options.fields;\n    }),\n    all_columns: Ember.computed('field', function () {\n        var key, temp;\n        temp = [];\n        for (key in this.get('Collector').fields(this.get('form'))) {\n            temp.push(key);\n        }\n        return temp;\n    }),\n    parent_rowid: Ember.computed('modal', function () {\n        return this.get('modal').split(',').slice(2).join();\n    }),\n    actions: {\n        modalRecordSaved: function (settings, record) {},\n        toggle: function (row) {\n            return row.set('show', !row.get('show'));\n        },\n        removeModal: function () {\n            return this.set('modal', []);\n        },\n    },\n});\n\nexport default CollectorAddModalComponent;\n","export default Ember.HTMLBars.template({\"id\":\"8pF7bE/n\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"column\\\",\\\"column\\\"],\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"modalHeader\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"rows\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"panel-heading\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[7,\\\"b\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"type\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[\\\"type\\\",[24,[\\\"main_columns\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[24,[\\\"form\\\"]],\\\"type\\\",[23,1,[\\\"type\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"main_columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[24,[\\\"form\\\"]],[23,3,[]],[28,\\\"get\\\",[[23,1,[]],[23,3,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                \\\"],[9],[0,\\\" \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"icon-big pull-right text-report-muted \\\",[28,\\\"if\\\",[[23,1,[\\\"show\\\"]],\\\"move move-SortUp\\\",\\\"move move-SortDown\\\"],null]]]],[8],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"show\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"all_columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"translate-column\\\",null,[[\\\"form\\\",\\\"field\\\"],[[24,[\\\"form\\\"]],[23,2,[]]]]],false],[0,\\\": \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,2,[]],[24,[\\\"form\\\"]],[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/rows-modal/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/setting-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorSettingCompComponent;\n\nimport Ember from 'ember';\n\nCollectorSettingCompComponent = Ember.Component.extend();\n\nexport default CollectorSettingCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"FKsekfvN\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[24,[\\\"setting\\\",\\\"translatedName\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"setting\\\",\\\"type\\\"]],\\\"boolean\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"name\\\",\\\"checked\\\"],[\\\"form-control\\\",\\\"checkbox\\\",\\\"setting\\\",[24,[\\\"setting\\\",\\\"value\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"name\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"text\\\",\\\"setting\\\",[24,[\\\"setting\\\",\\\"value\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/setting-comp/template.hbs\"}});","import { computed, get } from '@ember/object';\nimport { equal } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport Component from '@ember/component';\n\nexport default Component.extend({\n    Collector: service('collector-service'),\n    tagName: 'span',\n\n    typeIsArray: equal('fieldObj.type', 'databasearray'),\n\n    preformatted: computed('field', function () {\n        if (get(this, 'field') === 'row_info.created') {\n            return moment(get(this, 'value')).format('LLL');\n        } else {\n            return null;\n        }\n    }),\n\n    fieldObj: computed('form', 'field', function () {\n        return get(this, 'Collector').field(get(this, 'form'), get(this, 'field'));\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"rPTUXMzs\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"f\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"preformatted\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"preformatted\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"typeIsArray\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"value\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"databasearray_row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fieldObj\\\",\\\"options\\\",\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,2,[]],[24,[\\\"fieldObj\\\",\\\"options\\\",\\\"form\\\"]],[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[24,[\\\"fieldObj\\\",\\\"name\\\"]],[24,[\\\"fieldObj\\\",\\\"form\\\"]],[24,[\\\"value\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/value-format/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { isNone } from '@ember/utils';\n\nexport default Component.extend({\n    addOptions: computed(function () {\n        let options = [];\n        const c = get(this, 'Collector');\n        if (\n            c.testNeeds([\n                'worktime',\n                '!products.gps_force',\n                '!worktime.starttime@disabled',\n                '!worktime@errors',\n            ])\n        ) {\n            options.push('worktime');\n        }\n        if (c.testNeeds(['abcense', '!abcense@errors'])) {\n            options.push('abcense');\n        }\n\n        return options;\n    }),\n\n    summableAbsenceFields: computed(function () {\n        const abFields = get(this, 'Collector').fieldArray('abcense');\n        const summableTypes = get(this, 'summableFieldTypes');\n        return abFields.filter((field) => {\n            return summableTypes.includes(get(field, 'type'));\n        });\n    }),\n\n    absencesByType: computed('absences.[]', function () {\n        if (isNone(get(this, 'absences'))) {\n            return 0;\n        }\n        let ret = [];\n        let types = get(this, 'absenceTypes');\n        types.forEach((type) => {\n            let absences = get(this, 'absences').filterBy('abcensetype', type.id);\n            ret.push({\n                typeId: type.id,\n                daySum: get(absences.mapBy('date').uniq(), 'length'),\n                rows: absences,\n            });\n        });\n        return ret;\n    }),\n\n    init() {\n        this._super();\n        // Do not show fields with \"hide_column\" field setting in worktime sums section\n        const hideColumnFields = this.Collector.fieldArray('worktime')\n            .filter((field) => field.features?.hide_column)\n            .mapBy('name');\n        this.skipSumFields = hideColumnFields.concat(['id', 'user']);\n        this.summableFieldTypes = [\n            'number',\n            'hours',\n            'dropdown_options',\n            'dropdown_values',\n            'checkbox',\n        ];\n    },\n\n    actions: {\n        sendFilterChange(value, field) {\n            this.filterChanged(value, field);\n        },\n    },\n});\n","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    worktimeColumns: computed(function () {\n        return get(this, 'collector').fieldArray('worktime').rejectBy('features', 'hide_column');\n    }),\n    absenceColumns: computed(function () {\n        return get(this, 'collector').fieldArray('abcense').rejectBy('features', 'hide_column');\n    }),\n\n    actions: {\n        setRowsPerPage(form, limit) {\n            this.setRowsPerPage(form, limit);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"62qVycSy\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"customFullScreen\\\"]],\\\"report-main-zoomed\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timetracker.aggregated.rows.worktimes\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"page\\\",\\\"limit\\\",\\\"localStorageKey\\\",\\\"settings\\\",\\\"status\\\",\\\"fullscreenmode\\\",\\\"bubbleSetRowsPerPage\\\"],[\\\"bubbleTransition\\\",\\\"worktime\\\",[24,[\\\"model\\\",\\\"worktimeRows\\\"]],[24,[\\\"worktime_page\\\"]],[24,[\\\"worktime_limit\\\"]],\\\"aggregated.worktime\\\",[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]],\\\"custom\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"setRowsPerPage\\\"]],\\\"worktime\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timetracker.aggregated.rows.absences\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"page\\\",\\\"limit\\\",\\\"localStorageKey\\\",\\\"settings\\\",\\\"status\\\",\\\"fullscreenmode\\\",\\\"bubbleSetRowsPerPage\\\"],[\\\"bubbleTransition\\\",\\\"abcense\\\",[24,[\\\"model\\\",\\\"absenceRows\\\"]],[24,[\\\"absence_page\\\"]],[24,[\\\"absence_limit\\\"]],\\\"aggregated.absences\\\",[24,[\\\"absence_settings\\\"]],[24,[\\\"status\\\"]],\\\"custom\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"setRowsPerPage\\\"]],\\\"absence\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/aggre-gated/rows/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"1JItrjTA\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\",\\\"index\\\",\\\"specialDay\\\",\\\"abSum\\\",\\\"wSum\\\",\\\"type\\\",\\\"field\\\",\\\"absence\\\",\\\"wsum\\\",\\\"v\\\",\\\"k\\\",\\\"filter\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column aggregated-report\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-20 padding-small\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"aggregated-filters\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"filters\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"aggregated-filter\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"date\\\",[23,12,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"date-range-picker\\\",null,[[\\\"value\\\",\\\"wagePeriods\\\",\\\"dateChange\\\"],[[23,12,[\\\"value\\\"]],true,\\\"sendFilterChange\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,12,[]]],[[\\\"change\\\",\\\"useAsFilter\\\"],[\\\"sendFilterChange\\\",true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[12]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column worktime-highlight sum-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timetracker.aggregated.worktime_sums\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"worktimeSums\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[10,\\\"class\\\",\\\"worktime-sub-header user\\\"],[8],[1,[23,9,[\\\"user\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[23,9,[]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,11,[]],[24,[\\\"skipSumFields\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[[28,\\\"concat\\\",[\\\"worktime.\\\",[23,11,[]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 sum-item\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"form\\\",\\\"field\\\"],[\\\"worktime\\\",[23,11,[]]]]],false],[9],[0,\\\":\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 sum-item\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"worktime\\\",[23,11,[]],[23,10,[]]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[10,11]},null]],\\\"parameters\\\":[9]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column absence-highlight sum-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timetracker.aggregated.absence_sums\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"absenceTypes\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[10,\\\"class\\\",\\\"absence-sub-header\\\"],[8],[1,[23,6,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"summableAbsenceFields\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"absencesByType\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,8,[\\\"typeId\\\"]],[23,6,[\\\"id\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 absence-sum-item\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"form\\\",\\\"field\\\"],[\\\"abcense\\\",[23,7,[\\\"name\\\"]]]]],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 absence-sum-item\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,7,[\\\"name\\\"]],\\\"dayamount\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",[23,7,[\\\"name\\\"]],[23,8,[\\\"daySum\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,7,[\\\"name\\\"]],\\\"absence_hours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",[23,7,[\\\"name\\\"]],[28,\\\"sum-field\\\",null,[[\\\"field\\\",\\\"rows\\\"],[[28,\\\"hash\\\",null,[[\\\"type\\\",\\\"name\\\"],[\\\"hours\\\",\\\"hours\\\"]]],[23,8,[\\\"rows\\\"]]]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",[23,7,[\\\"name\\\"]],[28,\\\"sum-field\\\",null,[[\\\"field\\\",\\\"rows\\\"],[[23,7,[]],[23,8,[\\\"rows\\\"]]]]]]]],false],[0,\\\"\\\\n                                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[8]},null]],\\\"parameters\\\":[7]},null]],\\\"parameters\\\":[6]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-80 padding-small\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link no-print\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"print\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.print\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link no-print\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"printAll\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.print_all\\\"],null],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right rows-toggle\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"theme\\\",\\\"onToggle\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[[24,[\\\"showAllRows\\\"]],\\\"light\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"toggleAllRows\\\"]]],null],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"timetracker.aggregated.show_rows\\\"],null],\\\"\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showWarning\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.too_many_rows\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"calendar-report\\\",null,[[\\\"hideDateRangePicker\\\",\\\"date\\\",\\\"user\\\",\\\"hideWeekend\\\",\\\"classNames\\\"],[true,[24,[\\\"date\\\"]],[24,[\\\"user\\\"]],[24,[\\\"hideWeekend\\\"]],\\\"no-bottom-padding\\\"]],{\\\"statements\\\":[[4,\\\"calendar-report-day\\\",null,[[\\\"day\\\",\\\"specialDay\\\"],[[23,1,[]],[23,3,[]]]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"calendar-report-add-options\\\",null,[[\\\"options\\\",\\\"date\\\",\\\"add\\\"],[[24,[\\\"addOptions\\\"]],[23,1,[]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"addNew\\\"]],[23,1,[]]],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",false],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"timetracker.aggregated.show_rows_date\\\"],null]],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"showRows\\\"]],[23,1,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"calendar-card-sum\\\",null,[[\\\"model\\\",\\\"date\\\",\\\"fields\\\",\\\"classNames\\\"],[[24,[\\\"dailyWorktimeSums\\\"]],[23,1,[]],[28,\\\"hash\\\",null,[[\\\"hours\\\",\\\"date\\\"],[\\\"work_hours\\\",\\\"date\\\"]]],\\\"calendar-card worktime-calendar-card\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"not-eq\\\",[[23,5,[]],null],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"h2\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"format-hours\\\",[[23,5,[]],\\\"0:00h\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[5]},null],[4,\\\"calendar-card-sum\\\",null,[[\\\"model\\\",\\\"date\\\",\\\"fields\\\",\\\"classNames\\\",\\\"title\\\"],[[24,[\\\"absences\\\"]],[23,1,[]],[28,\\\"hash\\\",null,[[\\\"hours\\\",\\\"date\\\"],[\\\"hours\\\",\\\"date\\\"]]],\\\"calendar-card absence-calendar-card\\\",[28,\\\"t\\\",[\\\"timetracker.aggregated.show_rows_date\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"not-eq\\\",[[23,4,[]],null],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"h2\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cup\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"format-hours\\\",[[23,4,[]],\\\"0:00h\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2,3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100 padding-small\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/aggre-gated/template.hbs\"}});","import { Promise as EmberPromise } from 'rsvp';\nimport PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\nimport ObjectProxy from '@ember/object/proxy';\nimport { computed, set, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport Component from '@ember/component';\n\nexport default Component.extend({\n    ttapi: service(),\n    Collector: service('collector-service'),\n    intl: service(),\n    notifications: service(),\n    sendto: '',\n    days: '',\n    nameField: '',\n    projectField: '',\n    error_negative: false,\n    showCustomField: false,\n\n    showNameField: computed(function () {\n        return get(this, 'form') == 'user' || get(this, 'form') == 'card' ? false : true;\n    }),\n\n    formFields: computed(function () {\n        return get(this, 'Collector').fieldArray(get(this, 'form'));\n    }),\n\n    sendto_options: computed(function () {\n        const intl = get(this, 'intl');\n        let roles = [\n            { id: '3', translated_name: intl.t('user.userlevel.3'), name: 'userlevel=3' },\n            { id: '6', translated_name: intl.t('user.userlevel.6'), name: 'userlevel=6' },\n            { id: '5', translated_name: intl.t('user.userlevel.5'), name: 'userlevel=5' },\n        ];\n\n        if (get(this, 'Collector').testNeeds(['products.project_owner'])) {\n            roles = this._getProjectOwnerRole(roles);\n        }\n        return roles;\n    }),\n    alarmValue: computed(function () {\n        const key = 'expires@' + get(this, 'form') + '.' + get(this, 'field');\n\n        return ObjectProxy.extend(PromiseProxyMixin).create({\n            promise: new EmberPromise((resolve) => {\n                get(this, 'ttapi')\n                    ._get('alarm', { key: key })\n                    .then((back) => this._setAlarms(back, resolve));\n            }),\n        });\n    }),\n\n    showSaveButton: computed('nameField', 'days', 'sendto', function () {\n        let name = get(get(this, 'alarmValue'), 'name');\n        let days = get(get(this, 'alarmValue'), 'before');\n        let sendto = get(get(this, 'alarmValue'), 'sendto');\n\n        if (this.error_negative || !get(this, 'days')) return false;\n\n        if (\n            name != get(this, 'nameField') ||\n            days != get(this, 'days') ||\n            sendto != get(this, 'sendto')\n        ) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n\n    init() {\n        this._super(...arguments);\n        this.alarmOptions = ['0', '5', '7', '10', '14', '21', '28'];\n    },\n\n    async didReceiveAttrs() {\n        let alarm = await get(this, 'alarmValue');\n        if (alarm) set(this, 'showCustomField', !this.alarmOptions.includes(alarm.before));\n    },\n\n    actions: {\n        saveAlarm: function () {\n            const key = 'expires@' + get(this, 'form') + '.' + get(this, 'field');\n            const fieldTranslation = get(this, 'Collector').getTranslationForColumn(\n                get(this, 'form'),\n                get(this, 'field'),\n            );\n            const days = get(this, 'days');\n\n            get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n                autoClear: true,\n            });\n\n            if (!isNaN(days)) {\n                get(this, 'ttapi')._post('alarms', {\n                    type: 'expires',\n                    extra: {\n                        form: get(this, 'form'),\n                        field: get(this, 'field'),\n                        before: days,\n                        fieldTranslation: fieldTranslation.string\n                            ? fieldTranslation.string\n                            : fieldTranslation,\n                        locale: moment.locale(),\n                        send_to: get(this, 'sendto'),\n                        nameField: get(this, 'nameField'),\n                        projectField: get(this, 'projectField'),\n                    },\n                    key: key,\n                });\n            } else {\n                get(this, 'ttapi')._delete('alarms/' + key);\n            }\n        },\n\n        setDays(value) {\n            set(this, 'error_negative', false);\n\n            if (value === 'custom') {\n                set(this, 'showCustomField', true);\n            } else {\n                set(this, 'days', value);\n                set(this, 'showCustomField', false);\n            }\n        },\n\n        validateAndSetCustomDays(days) {\n            if (days < 0) {\n                set(this, 'error_negative', true);\n                return;\n            }\n            set(this, 'error_negative', false);\n            set(this, 'days', days);\n        },\n    },\n\n    _setAlarms(back, resolve) {\n        if (back.length > 0) {\n            let sendTo = JSON.parse(get(back, 'firstObject.extra')).send_to;\n            if (sendTo) {\n                set(this, 'sendto', sendTo);\n            }\n            let nameField = JSON.parse(get(back, 'firstObject.extra')).nameField;\n            if (nameField) {\n                set(this, 'nameField', nameField);\n            }\n            let before = JSON.parse(get(back, 'firstObject.extra')).before;\n            if (before) {\n                set(this, 'days', before);\n            }\n            resolve({ before: before, name: nameField, sendto: sendTo });\n        } else {\n            resolve();\n        }\n    },\n    _getProjectOwnerRole(roles) {\n        const intl = get(this, 'intl');\n        let projectFieldName = '';\n        get(this, 'formFields').forEach(function (field) {\n            if (field.type == 'database' && field.options.form == 'project') {\n                projectFieldName = field.name;\n                roles.push({\n                    translated_name: intl.t('alarm.project_owner'),\n                    name: 'project_owner',\n                });\n            }\n        });\n        set(this, 'projectField', projectFieldName);\n        return roles;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"hKqbHEQ8\",\"block\":\"{\\\"symbols\\\":[\\\"opt\\\",\\\"field\\\",\\\"&default\\\"],\\\"statements\\\":[[14,3],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"alarmValue\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"alarms.turn_on_expires\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[10,\\\"name\\\",\\\"days\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setDays\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.not_in_use\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"0\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"0\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.0_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"5\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"5\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.5_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"7\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"7\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.7_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"10\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"10\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.10_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"14\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"14\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.14_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"21\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"21\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.21_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"28\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"28\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.28_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"custom\\\"],[11,\\\"selected\\\",[28,\\\"await\\\",[[23,0,[\\\"showCustomField\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.custom_days\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[23,0,[\\\"showCustomField\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"min\\\",\\\"value\\\",\\\"input\\\",\\\"class\\\"],[\\\"number\\\",\\\"0\\\",[24,[\\\"days\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validateAndSetCustomDays\\\",[24,[\\\"days\\\"]]],null],\\\"form-control\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"error_negative\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"field.error.negative\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showNameField\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"alarms.select_name_field\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 \\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[10,\\\"name\\\",\\\"name\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"nameField\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"option\\\",true],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.default\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"formFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,2,[\\\"name\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,2,[\\\"name\\\"]],[24,[\\\"alarmValue\\\",\\\"name\\\"]]],null]],[8],[1,[23,2,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"alarms.select_send_to\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 \\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[10,\\\"name\\\",\\\"sendto\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"sendto\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sendto_options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,1,[\\\"name\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"name\\\"]],[24,[\\\"alarmValue\\\",\\\"sendto\\\"]]],null]],[8],[1,[23,1,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSaveButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"pull-left btn btn-primary btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveAlarm\\\"]],[8],[1,[28,\\\"t\\\",[\\\"alarms.save\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/alarm-setter/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport podNames from 'ember-component-css/pod-names';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment';\n\nexport default class AppVersionDialogComponent extends Component {\n    @service('collector-service') Collector;\n    @service() gui;\n\n    @tracked completed;\n    get styleNamespace() {\n        return podNames['app-version-dialog'];\n    }\n    get isOtta() {\n        return this.Collector.testNeedsOne('products.generic_timetracker');\n    }\n    get currentLang() {\n        return moment.locale();\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"zfw7BRMz\",\"block\":\"{\\\"symbols\\\":[\\\"@version\\\",\\\"@closeModal\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"await\\\",[[23,1,[\\\"status\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@class\\\",\\\"@header\\\",\\\"@hideClose\\\",\\\"@close\\\"],[[23,0,[\\\"styleNamespace\\\"]],[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"await\\\",[[23,1,[\\\"status\\\"]]],null],\\\"deprecated\\\"],null],[28,\\\"t\\\",[\\\"app-version-dialog.update-available\\\"],null],[28,\\\"t\\\",[\\\"app-version-dialog.app-expired\\\"],null]],null],[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"await\\\",[[23,1,[\\\"status\\\"]]],null],\\\"deprecated\\\"],null],false,true],null],[23,2,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dialog-body-text\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pt-5 pb-5\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"await\\\",[[23,1,[\\\"status\\\"]]],null],\\\"deprecated\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Error\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"app-version-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"await\\\",[[23,1,[\\\"status\\\"]]],null],\\\"deprecated\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.deprecation-text\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.deprecation-text-stop-working-1\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"days-until-expires\\\"],[8],[1,[23,1,[\\\"days_until_expires\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.deprecation-text-stop-working-2\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.expired-text\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"link-to-store\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isOtta\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"gui\\\",\\\"isAndroid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"https://play.google.com/store/apps/details?id=fi.movenium.visma\\\"],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-external-link\\\"],[8],[9],[1,[28,\\\"t\\\",[\\\"app-version-dialog.update-link-text\\\"],null],false],[9],[0,\\\"\\\\n                        (\\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.play-store-link\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[29,[\\\"https://apps.apple.com/fi/app/visma-entry/id1281506211?l=\\\",[23,0,[\\\"currentLang\\\"]]]]],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-external-link\\\"],[8],[9],[1,[28,\\\"t\\\",[\\\"app-version-dialog.update-link-text\\\"],null],false],[9],[0,\\\"\\\\n                        (\\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.app-store-link\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"gui\\\",\\\"isAndroid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"https://play.google.com/store/apps/details?id=fi.movenium.app\\\"],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-external-link\\\"],[8],[9],[1,[28,\\\"t\\\",[\\\"app-version-dialog.update-link-text\\\"],null],false],[9],[0,\\\"\\\\n                        (\\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.play-store-link\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[29,[\\\"https://apps.apple.com/fi/app/movenium/id1037756306?l=\\\",[23,0,[\\\"currentLang\\\"]]]]],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-external-link\\\"],[8],[9],[1,[28,\\\"t\\\",[\\\"app-version-dialog.update-link-text\\\"],null],false],[9],[0,\\\"\\\\n                        (\\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.app-store-link\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"version-number\\\"],[8],[1,[28,\\\"t\\\",[\\\"app-version-dialog.version-code\\\"],null],false],[1,[28,\\\"get\\\",[[28,\\\"await\\\",[[23,1,[]]],null],\\\"version\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/app-version-dialog/template.hbs\"}});","import Component from '@ember/component';\nimport { set } from '@ember/object';\n\n/**\n * \n * {{#auto-modal as |modal|}}\n        {{#modal.open}}<button {{action modal.show}}>open</button>{{/modal.open}}\n\n        {{#modal.content}}\n            modal content goes here\n\n            <button {{action (model.close)}}>close</button>\n        {{/modal.content}}\n    {{/auto-modal}}\n * \n */\nexport default Component.extend({\n    showModal: false,\n\n    actions: {\n        openModal() {\n            set(this, 'showModal', true);\n        },\n\n        closeModal() {\n            set(this, 'showModal', false);\n        },\n    },\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"i0IZMQHv\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/auto-modal/content/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"JmWej+6t\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/auto-modal/open/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"RoF1iiDN\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"open\\\",\\\"show\\\",\\\"close\\\"],[[28,\\\"component\\\",[\\\"auto-modal/open\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openModal\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]]]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"header\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showModal\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"content\\\",\\\"show\\\",\\\"close\\\"],[[28,\\\"component\\\",[\\\"auto-modal/content\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openModal\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/auto-modal/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"hff7uudi\",\"block\":\"{\\\"symbols\\\":[\\\"@label\\\",\\\"@value\\\",\\\"@toggleValue\\\"],\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"beta-toggle\\\"],[11,\\\"data-anchor\\\",[29,[\\\"beta-toggle-\\\",[23,1,[]]]]],[8],[0,\\\"\\\\n    \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@value\\\",\\\"@theme\\\",\\\"@onToggle\\\",\\\"@offLabel\\\",\\\"@onLabel\\\",\\\"@showLabels\\\",\\\"@size\\\"],[[23,2,[]],\\\"light\\\",[23,3,[]],\\\"\\\",\\\"Beta\\\",true,\\\"large\\\"]]],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/beta-toggle/template.hbs\"}});","import Component from '@ember/component';\nimport moment from 'moment';\nimport { inject } from '@ember/service';\nimport { get, set, computed } from '@ember/object';\n\nexport default Component.extend({\n    blocks: inject(),\n    data: null,\n\n    _data: computed('data', function () {\n        let first = true;\n        let format = false;\n\n        get(this, 'data').forEach((item) => {\n            if (first) {\n                if (item[0] === 'date') format = true;\n                first = false;\n            } else if (format) {\n                item[0] = moment(item[0]).toDate();\n            }\n        });\n\n        return get(this, 'data');\n    }),\n\n    options: computed('title', function () {\n        return {\n            title: get(this, 'title'),\n        };\n    }),\n\n    didReceiveAttrs() {\n        if (get(this, 'url')) {\n            get(this, 'blocks')\n                .request(get(this, 'url'), {\n                    data: get(this, 'params'),\n                })\n                .then((data) => this._setData(data));\n        }\n    },\n\n    _setData(data) {\n        set(this, 'data', data);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"dHvZ/g71\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"component\\\",[[28,\\\"concat\\\",[[24,[\\\"type\\\"]],\\\"-chart\\\"],null]],[[\\\"data\\\",\\\"options\\\"],[[24,[\\\"_data\\\"]],[24,[\\\"options\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/blocks-chart/template.hbs\"}});","import Component from '@ember/component';\n\n/**\n * usage\n *\n *   <BootstrapField @text={{\"Field name\"}} @mandatory={{true}} @error={{someErrorText}} @name={{\"Name of the field\"}}>\n *       <Input @class=\"form-control\" />\n *   </BootstrapField>\n */\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"WFh7lD/w\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[24,[\\\"error\\\"]],\\\"has-error has-feedback\\\"],null]]]],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-field\\\"],null]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"title\\\"],[8],[1,[22,\\\"text\\\"],false],[9],[0,\\\"\\\\n    \\\"],[4,\\\"if\\\",[[24,[\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[23,0,[\\\"error\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[14,1],[0,\\\"\\\\n    \\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/bootstrap-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-card-multi-day/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarCardMultiDayComponent;\n\nimport Ember from 'ember';\n\nCalendarCardMultiDayComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    end_field: 'enddate',\n    _data: Ember.computed('day', 'data.@each.date', function () {\n        return this.getData();\n    }),\n    _fields: Ember.computed('fields', function () {\n        var fields;\n        fields = this.get('fields');\n        if (Ember.typeOf(fields) === 'string') {\n            Em.assert(\n                'You need to provide the form if giving fields to calendar-card as string',\n                this.get('form'),\n            );\n            fields = this.get('Collector').fieldArray(this.get('form'), fields.split(','));\n        }\n        return fields;\n    }),\n    getData: function () {\n        var data, day, day_index, end, first, start;\n        data = this.get('data');\n        if (data) {\n            day = this.get('day');\n            start = this.get('date_field');\n            end = this.get('end_field');\n            first = this.get('date').split('_')[0];\n            day_index = this.get('index');\n            return data.map(function (item) {\n                if (item.get(start) <= day && item.get(end) >= day) {\n                    return Ember.Object.create({\n                        row: item,\n                        first: day === first || day_index === 0 ? true : false,\n                    });\n                } else if (\n                    day <= item.get(start) ||\n                    moment(day).week() > moment(item.get(end)).week()\n                ) {\n                    return false;\n                } else {\n                    return 'empty';\n                }\n            });\n        }\n    },\n    actions: {\n        click: function (row) {\n            if (this.get('onclick')) {\n                return this.onclick(row);\n            }\n        },\n        removeRecord: function (row) {\n            if (this.get('remove')) {\n                return this.remove(row);\n            }\n        },\n        showRemoveIcon: function (index) {\n            var elem;\n            elem = '.calendar-remove-item.num-' + index;\n            return $(elem).css('visibility', 'visible');\n        },\n        hideRemoveIcon: function (index) {\n            var elem;\n            elem = '.calendar-remove-item.num-' + index;\n            return $(elem).css('visibility', 'hidden');\n        },\n    },\n});\n\nexport default CalendarCardMultiDayComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-card-multi-day/content/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarCardMultiDayContentComponent;\n\nimport Ember from 'ember';\n\nCalendarCardMultiDayContentComponent = Ember.Component.extend();\n\nexport default CalendarCardMultiDayContentComponent;\n","export default Ember.HTMLBars.template({\"id\":\"vw8Sb986\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"index\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[24,[\\\"row\\\"]],\\\"status\\\"],null],\\\"fixed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"status-icon\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CheckedCircle\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"day-fields\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_fields\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],[24,[\\\"date_field\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,1,[\\\"name\\\"]],[23,1,[\\\"form\\\"]],[28,\\\"get\\\",[[24,[\\\"row\\\"]],[23,1,[\\\"name\\\"]]],null]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    - \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,1,[\\\"name\\\"]],[23,1,[\\\"form\\\"]],[28,\\\"get\\\",[[24,[\\\"row\\\"]],[23,1,[\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-card-multi-day/content/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"qOt1z9iH\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"idx\\\",\\\"&default\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"_data\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"empty\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card-multi-day empty-card\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"remove\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[23,1,[\\\"row\\\"]],[24,[\\\"end_field\\\"]]],null],[24,[\\\"day\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"row\\\",\\\"isRemovable\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[\\\"calendar-remove-item move move-Cancel num-\\\",[23,2,[]]]]],[12,\\\"onmouseenter\\\",[28,\\\"action\\\",[[23,0,[]],\\\"showRemoveIcon\\\",[23,2,[]]],null]],[12,\\\"onmouseleave\\\",[28,\\\"action\\\",[[23,0,[]],\\\"hideRemoveIcon\\\",[23,2,[]]],null]],[3,\\\"action\\\",[[23,0,[]],\\\"removeRecord\\\",[23,1,[\\\"row\\\"]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"card-multi-day \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[23,1,[\\\"row\\\"]],[24,[\\\"date_field\\\"]]],null],[24,[\\\"day\\\"]]],null],\\\"first-day\\\"],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[23,1,[\\\"row\\\"]],[24,[\\\"end_field\\\"]]],null],[24,[\\\"day\\\"]]],null],\\\"last-day\\\"],null]]]],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"click\\\",[23,1,[\\\"row\\\"]]],null]],[11,\\\"onmouseenter\\\",[28,\\\"action\\\",[[23,0,[]],\\\"showRemoveIcon\\\",[23,2,[]]],null]],[11,\\\"onmouseleave\\\",[28,\\\"action\\\",[[23,0,[]],\\\"hideRemoveIcon\\\",[23,2,[]]],null]],[11,\\\"style\\\",[29,[\\\"border-color:\\\",[28,\\\"randomize-color\\\",null,[[\\\"record\\\",\\\"fields\\\"],[[23,1,[\\\"row\\\"]],[24,[\\\"randomColor\\\"]]]]],\\\";\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[23,1,[\\\"row\\\"]],[24,[\\\"date_field\\\"]]],null],[24,[\\\"day\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"calendar-card-multi-day/content\\\",null,[[\\\"row\\\",\\\"_fields\\\",\\\"date_field\\\"],[[23,1,[\\\"row\\\"]],[24,[\\\"_fields\\\"]],[24,[\\\"date_field\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"first\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"calendar-card-multi-day/content\\\",null,[[\\\"row\\\",\\\"_fields\\\",\\\"date_field\\\"],[[23,1,[\\\"row\\\"]],[24,[\\\"_fields\\\"]],[24,[\\\"date_field\\\"]]]]],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[14,3,[[23,1,[\\\"row\\\"]]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1,2]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-card-multi-day/template.hbs\"}});","import { assert } from '@ember/debug';\nimport { computed, get } from '@ember/object';\nimport Component from '@ember/component';\nimport { defineProperty } from '@ember/object';\nimport { isEmpty } from '@ember/utils';\n\nexport default Component.extend({\n    filteredModel: computed('model', function () {\n        const date = get(this, 'date');\n        const fields = get(this, 'fields');\n        const model = get(this, 'model');\n        if (isEmpty(model)) {\n            return [];\n        }\n        return model.filterBy(fields.date, date);\n    }),\n\n    init() {\n        this._super(...arguments);\n        const date = get(this, 'date');\n        const fields = get(this, 'fields');\n        assert('Date must be given for what day we are filtering sums', date);\n        assert('Fields must be given and contain date and hour field names', fields);\n        assert('Date field name must be given', fields.date);\n        assert('Hours field name must be given from where we calculate hours', fields.hours);\n        defineProperty(\n            this,\n            'sum',\n            computed('filteredModel', 'model.@each.' + fields.hours, function () {\n                const model = get(this, 'filteredModel');\n                const date = get(this, 'date');\n                const fields = get(this, 'fields');\n                assert(\n                    'Model must be given that has the rows from where sums should be calculated',\n                    model,\n                );\n                let sum = null;\n\n                model.filterBy(fields.date, date).forEach((item) => {\n                    if (sum === null) sum = 0;\n                    sum += get(item, fields.hours);\n                });\n\n                if (sum) {\n                    sum = Number(sum);\n                    if (!isNaN(sum)) {\n                        sum = sum.toFixed(2);\n                    }\n                }\n                return sum;\n            }),\n        );\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"JCC5+HKn\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1,[[24,[\\\"sum\\\"]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-card-sum/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-card-v2/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarCardComponent;\n\nimport Ember from 'ember';\n\nCalendarCardComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    classNames: ['calendar-card'],\n    _data: Ember.computed('day', 'data.@each.date', function () {\n        return this.getData();\n    }),\n    _fields: Ember.computed('fields', function () {\n        var boldArray, fields;\n        fields = this.get('fields');\n        boldArray = this.get('boldFields') ? this.get('boldFields').split(' ') : [];\n        this.set('boldArray', boldArray);\n        if (Ember.typeOf(fields) === 'string') {\n            Em.assert(\n                'You need to provide the form if giving fields to calendar-card as string',\n                this.get('form'),\n            );\n            fields = this.get('Collector').fieldArray(this.get('form'), fields.split(','));\n        }\n        fields.forEach((item, i, arr) => {\n            if (boldArray.includes(item.name)) {\n                return arr.push(arr.splice(i, 1)[0]);\n            }\n        });\n        return fields;\n    }),\n    getData: function () {\n        var data;\n        data = this.get('data');\n        if (data) {\n            return data.filterBy(this.get('date_field'), this.get('day'));\n        }\n    },\n    actions: {\n        click: function (row) {\n            if (this.get('onclick')) {\n                return this.onclick(row);\n            }\n        },\n        removeRecord: function (row) {\n            if (this.get('remove')) {\n                return this.remove(row);\n            }\n        },\n    },\n});\n\nexport default CalendarCardComponent;\n","export default Ember.HTMLBars.template({\"id\":\"3NsYupcw\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"field\\\",\\\"index\\\",\\\"&default\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"_data\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"remove\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"isRemovable\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"calendar-remove-item move move-Cancel\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeRecord\\\",[23,1,[]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"click\\\",[23,1,[]]],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"topImage\\\"]],\\\"user-image\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"style\\\",\\\"float:right\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"user-icon\\\",[[23,1,[\\\"user\\\",\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],[[\\\"text\\\"],[[28,\\\"concat\\\",[[23,1,[\\\"user\\\",\\\"firstname\\\"]],\\\" \\\",[23,1,[\\\"user\\\",\\\"lastname\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"_fields\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"name\\\"]],[24,[\\\"date_field\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[23,3,[]],0],null],[28,\\\"not\\\",[[24,[\\\"boldFields\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,2,[\\\"name\\\"]],[23,2,[\\\"form\\\"]],[28,\\\"get\\\",[[23,1,[]],[23,2,[\\\"name\\\"]]],null]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"in-array\\\",[[23,2,[\\\"name\\\"]],[24,[\\\"boldArray\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h5\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,2,[\\\"name\\\"]],[23,2,[\\\"form\\\"]],[28,\\\"get\\\",[[23,1,[]],[23,2,[\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[23,2,[\\\"name\\\"]],[23,2,[\\\"form\\\"]]]]],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[23,2,[\\\"form\\\"]],[23,2,[\\\"name\\\"]],[28,\\\"get\\\",[[23,1,[]],[23,2,[\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2,3]},null],[0,\\\"        \\\"],[14,4,[[23,1,[]]]],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-card-v2/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-card/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarCardComponent;\n\nimport Ember from 'ember';\n\nCalendarCardComponent = Ember.Component.extend({\n    didReceiveAttrs: function () {\n        return this.setData();\n    },\n    setData: function () {\n        var formatted_data, rows;\n        formatted_data = this.get('formatted_data');\n        // first_column_is_date = false\n        if (formatted_data) {\n            rows = formatted_data.filterBy('cal_date_value', this.get('day'));\n            return this.set('currentDayData', rows);\n        }\n    },\n});\n\nexport default CalendarCardComponent;\n","export default Ember.HTMLBars.template({\"id\":\"AX1K24ti\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"column\\\",\\\"index\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"currentDayData\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,2,[]],[24,[\\\"date_field\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[23,2,[]],[24,[\\\"form\\\"]]]]],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2,3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-card/template.hbs\"}});","import Component from '@ember/component';\nimport moment from 'moment';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    dates: computed('range', function () {\n        function getRangeOfDates(start, end, key, arr = [start.startOf(key)]) {\n            if (start.isAfter(end)) throw new Error('start must precede end');\n            if (!key) throw new Error('key must be given');\n            const next = moment(start).add(1, key).startOf(key);\n\n            if (next.isAfter(end, key)) return arr;\n\n            return getRangeOfDates(next, end, key, arr.concat(next));\n        }\n        if (!get(this, 'range')) return [];\n        const [start, end] = get(this, 'range').split('_');\n        return getRangeOfDates(moment(start), moment(end), 'day');\n    }),\n\n    fixedCellWidths: computed('range', function () {\n        return get(this, 'dates.length') * 35 > this.element.offsetWidth;\n    }),\n});\n","import Component from '@ember/component';\nimport { computed } from '@ember/object';\n\nexport default Component.extend({\n    tagName: 'tr',\n\n    toDay: computed(function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"vOoGuv10\",\"block\":\"{\\\"symbols\\\":[\\\"date\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"toDay\\\"]],[28,\\\"moment-format\\\",[[23,1,[]],\\\"YYYY-MM-DD\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"today\\\"],[8],[1,[28,\\\"moment-format\\\",[[23,1,[]],\\\"DD\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[]],\\\"DD\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"th\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/days-header/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    tagName: 'tr',\n\n    _dates: computed('dates', function () {\n        return get(this, 'dates').map((date, index) => {\n            if (index == 0 && moment(date).format('D') <= 26) return date; // show month in first column if next month is at least 4 days from this date\n            return moment(date).format('D') === '1' ? date : ''; // show date string on every month change column\n        });\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"bN6WTn+S\",\"block\":\"{\\\"symbols\\\":[\\\"date\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[]],\\\"MMMM YYYY\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"th\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/months-header/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, set, get } from '@ember/object';\n\nexport default Component.extend({\n    tagName: 'div',\n    classNames: ['day-cell-bar'],\n    startDateField: 'date',\n    endDateField: 'enddate',\n    colorString: computed('colorFields', function () {\n        const row = get(this, 'cellRows.firstObject');\n        let string = '';\n        get(this, 'colorFields').forEach((field) => {\n            string += get(row, field);\n        });\n        return string;\n    }),\n\n    init() {\n        this._super(...arguments);\n        if (!this.colorFields) {\n            set(this, 'colorFields', ['user.id', 'id']);\n        }\n    },\n    //classNameBindings: ['hasRows:day-empty'],\n    //hasRows: notEmpty('rows')\n});\n","export default Ember.HTMLBars.template({\"id\":\"Bd6XHatS\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"cell-block \\\",[28,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[24,[\\\"cellRows\\\",\\\"firstObject\\\"]],[24,[\\\"startDateField\\\"]]],null],[28,\\\"moment-format\\\",[[24,[\\\"cellDate\\\"]],\\\"YYYY-MM-DD\\\"],null]],null],[28,\\\"get\\\",[[24,[\\\"cellRows\\\",\\\"firstObject\\\"]],[24,[\\\"endDateField\\\"]]],null]],null],\\\"cell-block-first\\\"],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[24,[\\\"cellRows\\\",\\\"firstObject\\\"]],[24,[\\\"endDateField\\\"]]],null],[28,\\\"moment-format\\\",[[24,[\\\"cellDate\\\"]],\\\"YYYY-MM-DD\\\"],null]],null],\\\"cell-block-last\\\"],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"not\\\",[[28,\\\"get\\\",[[24,[\\\"cellRows\\\",\\\"firstObject\\\"]],[24,[\\\"endDateField\\\"]]],null]],null],\\\"cell-block-single\\\"],null]]]],[11,\\\"style\\\",[29,[\\\"background-color:\\\",[28,\\\"randomize-color\\\",[[24,[\\\"colorString\\\"]]],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[24,[\\\"cellRows\\\",\\\"firstObject\\\"]],[24,[\\\"startDateField\\\"]]],null],[28,\\\"moment-format\\\",[[24,[\\\"cellDate\\\"]],\\\"YYYY-MM-DD\\\"],null],[28,\\\"get\\\",[[24,[\\\"cellRows\\\",\\\"firstObject\\\"]],[24,[\\\"endDateField\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"cell-block-info\\\"],[8],[0,\\\"\\\\n            \\\"],[14,1],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/cell/bar/template.hbs\"}});","import Component from '@ember/component';\nimport { notEmpty } from '@ember/object/computed';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    tagName: 'td',\n    classNames: ['day-cell'],\n    classNameBindings: ['hasRows:day-empty', 'isWeekend:weekend'],\n    hasRows: notEmpty('rows'),\n\n    isWeekend: computed(function () {\n        const weekday = moment(get(this, 'date')).format('d');\n        if (weekday == 0 || weekday == 6) return true;\n\n        return false;\n    }),\n});\n","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    tagName: 'div',\n    classNames: ['day-cell-bar'],\n    //classNameBindings: ['hasRows:day-empty'],\n    //hasRows: notEmpty('rows')\n\n    blockWidth: 35,\n\n    dayCount: 3 /*computed(\"rows\", function() {\n       return this.get(\"rows.length\")\n    }),*/,\n\n    widthInPixels: computed('dayCount', function () {\n        return get(this, 'dayCount') * get(this, 'blockWidth') - 4 + 'px';\n    }),\n\n    isFirst: computed('rows', 'date', function () {\n        return moment(get(this, 'rows.firstObject.date')).isSame(get(this, 'date'), 'day');\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"V36ShUgb\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"isFirst\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"cell-block-long-bar\\\"],[11,\\\"style\\\",[29,[\\\"width: \\\",[22,\\\"widthInPixels\\\"],\\\"; background-color:\\\",[28,\\\"randomize-color\\\",[[28,\\\"concat\\\",[[24,[\\\"rows\\\",\\\"firstObject\\\",\\\"user\\\",\\\"id\\\"]],[24,[\\\"cellRows\\\",\\\"firstObject\\\",\\\"id\\\"]]],null]],null]]]],[8],[0,\\\"\\\\n    \\\"],[14,1],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/cell/long-bar/template.hbs\"}});","import Component from '@ember/component';\nimport { get } from '@ember/object';\n\nexport default Component.extend({\n    actions: {\n        addNew(user) {\n            this.onAdd(moment(get(this, 'date')).format('YYYY-MM-DD'), user);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"89Zfel9S\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"calendar-plus-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addNew\\\",[24,[\\\"user\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"plus move move-PlusMath\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/cell/plus-button/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    actions: {\n        editRow(row) {\n            this.onEdit(row);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"Kv53hphM\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"field\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"rows\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"report.\\\",[24,[\\\"form\\\"]],\\\".\\\",[23,2,[\\\"name\\\"]]],null]],null],false],[0,\\\":\\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,2,[\\\"name\\\"]],[24,[\\\"form\\\"]],[28,\\\"get\\\",[[23,1,[]],[28,\\\"concat\\\",[[23,2,[\\\"name\\\"]]],null]],null]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"],[4,\\\"if\\\",[[23,1,[\\\"isEditable\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"editRow\\\",[23,1,[]]]],[8],[9],[7,\\\"br\\\",true],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,1,[]],[24,[\\\"rows\\\",\\\"lastObject\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/cell/popover-content-fields/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"OJSfJrPo\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasRows\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"rows\\\",\\\"date\\\",\\\"bar\\\",\\\"long-bar\\\"],[[24,[\\\"rows\\\"]],[24,[\\\"date\\\"]],[28,\\\"component\\\",[\\\"calendar-compact/row/cell/bar\\\"],[[\\\"cellRows\\\",\\\"cellDate\\\"],[[24,[\\\"rows\\\"]],[24,[\\\"date\\\"]]]]],[28,\\\"component\\\",[\\\"calendar-compact/row/cell/long-bar\\\"],[[\\\"rows\\\",\\\"date\\\"],[[24,[\\\"rows\\\"]],[24,[\\\"date\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"],[4,\\\"ember-popover\\\",null,[[\\\"event\\\",\\\"hideOn\\\",\\\"popoverHideDelay\\\",\\\"class\\\"],[\\\"click\\\",\\\"mouseleave\\\",1000,\\\"ember-popover\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"popover-content-fields\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/row/cell/popover-content-fields\\\"],[[\\\"rows\\\"],[[24,[\\\"rows\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"plus-button\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/row/cell/plus-button\\\"],[[\\\"user\\\",\\\"date\\\"],[[24,[\\\"user\\\"]],[24,[\\\"date\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/cell/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'tr',\n});\n","export default Ember.HTMLBars.template({\"id\":\"ChMHoIfw\",\"block\":\"{\\\"symbols\\\":[\\\"date\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"cell\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/row/cell\\\"],[[\\\"rows\\\",\\\"user\\\",\\\"date\\\"],[[28,\\\"get\\\",[[24,[\\\"row\\\",\\\"rows\\\"]],[28,\\\"moment-format\\\",[[23,1,[]],\\\"YYYY-MM-DD\\\"],null]],null],[24,[\\\"row\\\",\\\"main\\\"]],[23,1,[]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[14,2,[[28,\\\"hash\\\",null,[[\\\"title\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/row/title\\\"],[[\\\"title\\\"],[[24,[\\\"row\\\",\\\"main\\\"]]]]]]]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    flags: service(),\n    tagName: 'td',\n    classNames: 'title-cell',\n    // we can use classnamebindings to add a css-class to the element based on some computed property\n    classNameBindings: ['isTopMenu:top-menu-left-margin-fix'],\n    isTopMenu: computed(function () {\n        return get(this, 'flags').test('top-header-menu');\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"Ej2MQ/V/\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1,[[24,[\\\"title\\\"]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/title/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"aDYqsgEC\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"table\\\",true],[11,\\\"class\\\",[29,[\\\"table \\\",[28,\\\"if\\\",[[24,[\\\"fixedCellWidths\\\"]],\\\"fixed\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n        \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"months-header\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/months-header\\\"],[[\\\"dates\\\"],[[24,[\\\"dates\\\"]]]]]]]]]],[0,\\\"\\\\n        \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"weeks-header\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/weeks-header\\\"],[[\\\"dates\\\"],[[24,[\\\"dates\\\"]]]]]]]]]],[0,\\\"\\\\n        \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"days-header\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/days-header\\\"],[[\\\"dates\\\"],[[24,[\\\"dates\\\"]]]]]]]]]],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"row\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/row\\\"],[[\\\"row\\\",\\\"dates\\\"],[[23,1,[]],[24,[\\\"dates\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'tr',\n});\n","export default Ember.HTMLBars.template({\"id\":\"/p8PnPvd\",\"block\":\"{\\\"symbols\\\":[\\\"date\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"moment-format\\\",[[23,1,[]],\\\"E\\\"],null],\\\"1\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[]],\\\"W\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"th\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/weeks-header/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-report-add-options/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarReportAddOptionsComponent;\n\nimport Ember from 'ember';\n\nimport clickelsewhere from 'tt4/mixins/clickelsewhere';\n\nCalendarReportAddOptionsComponent = Ember.Component.extend(clickelsewhere, {\n    Collector: Ember.inject.service('collector-service'),\n    analytics: Ember.inject.service(),\n    showOptions: false,\n    onClickElsewhere: function () {\n        return this.set('showOptions', false);\n    },\n    addableOptions: Ember.computed('options.[]', function () {\n        var c;\n        c = this.get('Collector');\n        return this.get('options').filter((option) => {\n            if (option === 'worktime') {\n                return c.canAddWorktime(this.get('date')) && !c.hasErrors(option);\n            }\n            return !c.hasErrors(option);\n        });\n    }),\n    actions: {\n        toggleOptions: function () {\n            if (this.get('addableOptions.length') === 1) {\n                return this.send('addRecord', this.get('addableOptions.firstObject'));\n            } else {\n                return this.toggleProperty('showOptions');\n            }\n        },\n        addRecord: function (type) {\n            if (type === 'worktime') {\n                this.get('analytics').customData = { category: 'calendar-report' };\n            }\n            if (this.get('add')) {\n                this.add(type);\n            }\n            return this.set('showOptions', false);\n        },\n    },\n});\n\nexport default CalendarReportAddOptionsComponent;\n","export default Ember.HTMLBars.template({\"id\":\"j6Wn8Crl\",\"block\":\"{\\\"symbols\\\":[\\\"opt\\\"],\\\"statements\\\":[[1,[28,\\\"calendar-report-add\\\",null,[[\\\"options\\\",\\\"click\\\"],[[24,[\\\"options\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleOptions\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"options\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showOptions\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"addableOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addRecord\\\",[23,1,[]]]],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"menu.add_\\\",[23,1,[]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-report-add-options/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-report-add/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarReportAddComponent;\n\nimport Ember from 'ember';\n\nCalendarReportAddComponent = Ember.Component.extend({\n    classNames: 'calendar-report-add',\n});\n\nexport default CalendarReportAddComponent;\n","export default Ember.HTMLBars.template({\"id\":\"LWkDFOXy\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"plus-button\\\"],[8],[0,\\\"\\\\n   \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-report-add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-report-day/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarReportDayComponent;\n\nimport Ember from 'ember';\n\nCalendarReportDayComponent = Ember.Component.extend({\n    isToday: Ember.computed('day', function () {\n        return moment().isSame(this.get('day'), 'day');\n    }),\n    utcday: Ember.computed('day', function () {\n        if (!this.get('day') || this.get('day') === '') {\n            return;\n        }\n        return moment(this.get('day')).format('DD.MM');\n    }),\n});\n\nexport default CalendarReportDayComponent;\n","export default Ember.HTMLBars.template({\"id\":\"x0EXKL26\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"p\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"isToday\\\"]],\\\"istoday\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"dateNonBlock\\\"]],\\\"non-block\\\"],null]]]],[8],[4,\\\"if\\\",[[24,[\\\"utcday\\\"]]],null,{\\\"statements\\\":[[1,[22,\\\"utcday\\\"],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\" \\\"]],\\\"parameters\\\":[]}],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"specialDay\\\"]]],null,{\\\"statements\\\":[[0,\\\" - \\\"],[7,\\\"b\\\",true],[8],[1,[22,\\\"specialDay\\\"],false],[9]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[14,1],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-report-day/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-report/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarReportComponent;\n\nimport Ember from 'ember';\n\n//import collector from '../../classes/collector'\nCalendarReportComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    store: Ember.inject.service(),\n    date:\n        moment.utc().startOf('month').format('YYYY-MM-DD') +\n        '_' +\n        moment.utc().endOf('month').format('YYYY-MM-DD'),\n    hideWeekend: true,\n    showWeekend: Ember.computed.not('hideWeekend'),\n    workdays: Ember.computed('user', 'date', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                var c, params;\n                c = this.get('Collector');\n                params = {\n                    country: this.get('session.currentUser.company_info.country'),\n                    date: this.get('date'),\n                };\n                if (c.formExists('worktimegroup') && this.get('user')) {\n                    // Use peekRecord instead of findRecord, temporary fix for Foreman issue EP-13300\n                    const record = this.store.peekRecord('user', this.get('user'));\n                    params['worktimegroup'] = record.get('worktimegroup.id')\n                        ? record.get('worktimegroup.id')\n                        : null;\n                }\n                return this.get('store')\n                    .query('workday-day', params)\n                    .then((rows) => {\n                        var days;\n                        days = {};\n                        rows.forEach((row) => {\n                            return (days[row.get('date')] = row.get('desc'));\n                        });\n                        return resolve({\n                            value: days,\n                        });\n                    });\n            }),\n        });\n    }),\n    calendar: Ember.computed('date', function () {\n        const extractDates = (dateString) => {\n            const [start, end] = dateString.split('_');\n            return { startDay: moment.utc(start).toDate(), endDay: moment.utc(end).toDate() };\n        };\n        const weekdayNames = [\n            'monday',\n            'tuesday',\n            'wednesday',\n            'thursday',\n            'friday',\n            'saturday',\n            'sunday',\n        ];\n        const { startDay, endDay } = extractDates(this.get('date'));\n        // Get days between start and end\n        const days = [];\n        let day = startDay;\n        while (day <= endDay) {\n            days.push(day);\n            day = moment.utc(day).add(1, 'day').toDate();\n        }\n        // Get week number(s) between start and end\n        const weekNumbers = [];\n        let week = moment(startDay).startOf('isoWeek').toDate();\n        while (week <= endDay) {\n            weekNumbers.push(moment(week).isoWeek());\n            week = moment(week).add(1, 'week').toDate();\n        }\n        // Create array for each week\n        const weekArrays = [];\n        weekNumbers.forEach(() => {\n            weekArrays.push(['', '', '', '', '', '', '']);\n        });\n        // Fill week arrays with their days\n        weekArrays.forEach((weekArray) => {\n            for (let i = 0; i < 7; i++) {\n                const _day = days.shift();\n                if (!_day) break;\n                const index = weekdayNames.indexOf(\n                    _day.toLocaleDateString('en', { weekday: 'long' }).toLowerCase(),\n                );\n                weekArray[index] = _day;\n                if (index === 6 || days.length === 0) break;\n            }\n        });\n        // Format week array dates\n        const formattedWeekArrays = weekArrays.map((weekArray) => {\n            return weekArray.map((weekday) => {\n                if (weekday === '') return weekday;\n                else return moment(weekday).format('YYYY-MM-DD');\n            });\n        });\n        // Create object with week numbers as keys and week arrays as values (i.e 202309: [....])\n        let weekObject = {};\n        let currentYear = moment().year();\n        let lastWeekNumber = 0; // Variable to keep track of the last week number\n\n        weekNumbers.forEach((weekNumber, index) => {\n            // Check if the weekNumber has rolled over to the next year\n            if (weekNumber < lastWeekNumber) {\n                currentYear++;\n            }\n            // Update the lastWeekNumber for the next iteration\n            lastWeekNumber = weekNumber;\n            // Generate the key for weekObject\n            let key =\n                weekNumber < 10 ? `${currentYear}0${weekNumber}` : `${currentYear}${weekNumber}`;\n            weekObject[key] = formattedWeekArrays[index];\n        });\n        return weekObject;\n    }),\n    actions: {\n        fullScreen: function () {\n            if (this.get('fullscreenmode') === 'custom') {\n                return this.get('gui').toggleCustomFullScreen();\n            } else {\n                return this.get('gui').togglefullScreen();\n            }\n        },\n        toggleHideWeekend: function () {\n            return this.toggleProperty('hideWeekend');\n        },\n    },\n});\n\nexport default CalendarReportComponent;\n","export default Ember.HTMLBars.template({\"id\":\"MJ0Ky2Ji\",\"block\":\"{\\\"symbols\\\":[\\\"week\\\",\\\"key\\\",\\\"day\\\",\\\"index\\\",\\\"&default\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"hideDateRangePicker\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-8 col-sm-4 text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"date-range-picker\\\",null,[[\\\"value\\\"],[[24,[\\\"date\\\"]]]]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"fullScreen\\\"]],\\\"report-main-zoomed\\\"],null],\\\" calendar-report\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"gui\\\",\\\"fullScreen\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row no-margin-row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-right report-button-row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"fullscreenmode\\\"]],\\\"custom\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"fullScreen\\\"]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"customFullScreen\\\"]],\\\"move move-Cross\\\",\\\"move move-FitWidth report-fullscreen\\\"],null]],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"fullScreen\\\"]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"fullScreen\\\"]],\\\"move move-Cross\\\",\\\"move move-FitWidth report-fullscreen\\\"],null]],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-right report-button-row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more weekend-toggle\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"theme\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[[24,[\\\"showWeekend\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleHideWeekend\\\"],null],\\\"light\\\",[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"calendar.hide.weekend\\\"],null],\\\"\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-striped table-responsive\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"no-borders\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.monday\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.tuesday\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.wednesday\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.thursday\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.friday\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hideWeekend\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.saturday\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.sunday\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[24,[\\\"calendar\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"week-number no-borders\\\"],[8],[1,[28,\\\"moment-format\\\",[[23,2,[]],\\\"ww\\\",\\\"YYYYww\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"and\\\",[[24,[\\\"hideWeekend\\\"]],[28,\\\"is-weekend\\\",[[28,\\\"add\\\",[[23,4,[]],1],null]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[11,\\\"class\\\",[29,[\\\"day \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[]],\\\"\\\"],null],\\\"day-inactive\\\"],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"workdays\\\",\\\"value\\\"]],[23,3,[]]],null],\\\"day-special\\\"],null],\\\" \\\",[28,\\\"concat\\\",[\\\"weekday-\\\",[23,4,[]]],null]]]],[8],[0,\\\"\\\\n\\\"],[0,\\\"                            \\\"],[14,5,[[23,3,[]],[23,4,[]],[28,\\\"get\\\",[[24,[\\\"workdays\\\",\\\"value\\\"]],[23,3,[]]],null]]],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3,4]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-report/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action, get } from '@ember/object';\n\nexport default class CcbuttonComponent extends Component {\n    @tracked integrations;\n    @tracked saving = false;\n    @tracked selected = null;\n    @tracked errorMessage = null;\n    @tracked values = {};\n    @service store;\n    @service ttapi;\n    @service notifications;\n    @service intl;\n    @service error;\n\n    constructor() {\n        super(...arguments);\n        this.load();\n    }\n\n    async load() {\n        const integrations = await this.store.findAll('ccbutton');\n\n        const running = await this.store.query('ccbuttonexecution', {\n            filter: { 'attributes.state': 'running' },\n        });\n\n        const oldRows = running.filter((item) =>\n            moment(item.started).isBefore(moment().subtract(1, 'hour')),\n        );\n\n        oldRows.forEach((record) => {\n            record.state = 'error';\n            record.save();\n        });\n\n        this.integrations = integrations.map((item) => {\n            return {\n                id: item.id,\n                name: item.name,\n                disabled: running.find((a) => {\n                    if (!a.ccbutton) return false;\n                    if (a.state !== 'running') return false;\n                    return get(a, 'ccbutton.id') === get(item, 'id');\n                })\n                    ? true\n                    : false,\n            };\n        });\n    }\n\n    get selectedIntegrationName() {\n        return this.store.peekRecord('ccbutton', this.selected).name;\n    }\n\n    get fields() {\n        let fields = this.store.peekRecord('ccbutton', this.selected).fields;\n        if (!fields) return [];\n        fields = fields.split(',');\n        return fields.map((field) => {\n            if (field.includes('.')) {\n                const [form, fieldName] = field.split('.');\n                return { form, fieldName };\n            }\n            return { form: 'worktime', fieldName: field };\n        });\n    }\n\n    @action async execute() {\n        this.saving = true;\n        this.errorMessage = null;\n\n        const queryParams = Object.keys(this.values).map((key) => {\n            const value = this.values[key];\n            return key + '=' + (value.id ? value.id : value);\n        });\n        queryParams.push('blocking=' + this.store.peekRecord('ccbutton', this.selected).blocking);\n        if (this.store.peekRecord('ccbutton', this.selected).token) queryParams.push('token=true');\n\n        try {\n            await this.ttapi.request(\n                'api/ccbutton/execute/' + this.selected + '?' + queryParams.join('&'),\n                { method: 'post' },\n            );\n            this.notifications.success(this.intl.t('integrations.started'), { autoClear: true });\n            this.selected = null;\n        } catch (e) {\n            this.errorMessage = get(e, 'payload.message') || e;\n        }\n\n        this.saving = false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"dpW+NjTg\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"integration\\\",\\\"&default\\\"],\\\"statements\\\":[[14,3],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-33 pr-4\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"bootstrap-field\\\",[[12,\\\"class\\\",\\\"mt-6\\\"]],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"menu.integrations\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"selected\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[10,\\\"class\\\",\\\"form-control mb-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[8],[1,[28,\\\"t\\\",[\\\"integrations.select\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"integrations\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"disabled\\\",[23,2,[\\\"disabled\\\"]]],[11,\\\"value\\\",[23,2,[\\\"id\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[24,[\\\"selected\\\"]],[23,2,[\\\"id\\\"]]],null]],[8],[1,[23,2,[\\\"name\\\"]],false],[0,\\\" \\\"],[4,\\\"if\\\",[[23,2,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"integration.not_done\\\"],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selected\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column center\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"text-primary mt-0 mb-2\\\"],[8],[1,[23,0,[\\\"selectedIntegrationName\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[]],\\\"date_interval\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"report.worktime.date\\\"],null]]],{\\\"statements\\\":[],\\\"parameters\\\":[]}],[0,\\\"\\\\n                            \\\"],[5,\\\"date-range-picker\\\",[[12,\\\"class\\\",\\\"pb-4\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"values\\\",\\\"date\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[[28,\\\"concat\\\",[[23,1,[\\\"form\\\"]],\\\".\\\",[23,1,[\\\"fieldName\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"addon/field-container\\\",[],[[\\\"@field\\\",\\\"@value\\\",\\\"@onChange\\\"],[[28,\\\"concat\\\",[[23,1,[\\\"form\\\"]],\\\".\\\",[23,1,[\\\"fieldName\\\"]]],null],[28,\\\"get\\\",[[23,0,[\\\"values\\\"]],[23,1,[\\\"fieldName\\\"]]],null],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[28,\\\"get\\\",[[23,0,[\\\"values\\\"]],[23,1,[\\\"fieldName\\\"]]],null]],null]],null]]]],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column pt-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 pr-2\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"saveButtonText\\\"],[[23,0,[\\\"saving\\\"]],[23,0,[\\\"execute\\\"]],\\\"btn btn-primary btn-block\\\",[28,\\\"t\\\",[\\\"integrations.execute\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 pl-2\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-block\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[24,[\\\"selected\\\"]]],null],false],null]]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[23,0,[\\\"errorMessage\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[28,\\\"t\\\",[\\\"integrations.select_first\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/ccbutton/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/change-status/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Component;\n\nimport Ember from 'ember';\n\nimport { pluralize } from 'ember-inflector';\n\nComponent = Ember.Component.extend({\n    notifications: Ember.inject.service(),\n    store: Ember.inject.service(),\n    capi: Ember.inject.service(),\n    rowCount: Ember.computed('params.rowCount', function () {\n        return this.get('params.rowCount');\n    }),\n    rowHeap: [],\n    fullHeapSize: 0,\n    done: false,\n    numericalProgress: 0,\n    progress: Ember.computed('numericalProgress', function () {\n        return this.get('numericalProgress') + ' %';\n    }),\n    progressStyle: Ember.computed('progress', function () {\n        return Ember.String.htmlSafe('width: ' + this.get('numericalProgress') + '%');\n    }),\n    setStatusForAll: function (changeData) {\n        var data, form, reqParams;\n        reqParams = this.get('params.requestParams');\n        form = this.get('params.form');\n        data = {};\n        data[form] = changeData;\n        this.set('executing', true);\n        return this.get('store')\n            .query(form, reqParams)\n            .then((rows) => {\n                var array_row_ids, chunkSize, handled, i, j, promises, ref, row_ids, slices;\n                row_ids = [];\n                array_row_ids = [];\n                rows.forEach((row) => {\n                    return row_ids.push(row.get('id'));\n                });\n                // set size of id's to capi multiedit\n                chunkSize = 10;\n                slices = Math.ceil(row_ids.length / chunkSize);\n                //covert long id array to chunks of max chunkSize\n                for (\n                    i = j = 0, ref = slices;\n                    0 <= ref ? j < ref : j > ref;\n                    i = 0 <= ref ? ++j : --j\n                ) {\n                    array_row_ids.push(row_ids.slice(i * chunkSize, (i + 1) * chunkSize));\n                }\n                promises = [];\n                handled = 0;\n                array_row_ids.forEach((item) => {\n                    var form_plural, promise;\n                    data[form].id = item;\n                    data[form].meta = {\n                        insert_history: 'true',\n                    };\n                    form_plural = pluralize(form).camelize();\n                    promise = this.get('capi')\n                        .request('/' + form_plural, {\n                            dataType: 'json',\n                            type: 'PUT',\n                            data: JSON.stringify(data),\n                        })\n                        .then(() => {\n                            handled++;\n                            return this.set(\n                                'numericalProgress',\n                                Math.ceil((handled / array_row_ids.length) * 100),\n                            );\n                        })\n                        .catch((e) => {\n                            this.get('notifications').error(e, {\n                                autoClear: true,\n                            });\n                            handled++;\n                            return this.set(\n                                'numericalProgress',\n                                Math.ceil((handled / array_row_ids.length) * 100),\n                            );\n                        });\n                    return promises.push(promise);\n                });\n                return Em.RSVP.Promise.all(promises).then(() => {\n                    this.set('executing', false);\n                    return this.set('done', true);\n                });\n            });\n    },\n    actions: {\n        closeModal: function () {\n            return this.sendAction('close');\n        },\n        changeStatusForAll: function () {\n            var action, changeData, locked, status;\n            action = this.get('params.action');\n            status = this.get('params.status');\n            if (action === 'lock' || action === 'unlock') {\n                locked = this.get('params.action') === 'lock' ? true : false;\n                changeData = {\n                    locked: locked,\n                };\n            } else {\n                changeData = {\n                    status: status,\n                };\n            }\n            return this.setStatusForAll(changeData);\n        },\n    },\n});\n\nexport default Component;\n","export default Ember.HTMLBars.template({\"id\":\"xuLUYyz2\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"report.change_status_to_all_header\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.change_status_to_all\\\"],[[\\\"count\\\"],[[24,[\\\"rowCount\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"general.done\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"executing\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"executing\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[10,\\\"aria-valuenow\\\",\\\"20\\\"],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[11,\\\"style\\\",[22,\\\"progressStyle\\\"]],[8],[0,\\\"\\\\n                    \\\"],[1,[22,\\\"progress\\\"],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"executing\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-cancel\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeStatusForAll\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.change_status_to_all_button\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/change-status/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"RsglJR6M\",\"block\":\"{\\\"symbols\\\":[\\\"@animate\\\"],\\\"statements\\\":[[7,\\\"svg\\\",true],[10,\\\"class\\\",\\\"clock\\\"],[10,\\\"width\\\",\\\"30\\\"],[10,\\\"height\\\",\\\"30\\\"],[10,\\\"viewBox\\\",\\\"0 0 24 24\\\"],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[8],[0,\\\"\\\\n\\\\n \\\"],[7,\\\"g\\\",true],[8],[0,\\\"\\\\n  \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"m9,0l0,2l6,0l0,-2l-6,0zm2,3l0,1.0625c-5.06474,0.49692 -9,4.73956 -9,9.9375c0,5.53333 4.46667,10 10,10c5.53333,0 10,-4.46667 10,-10c0,-2.91958 -1.26241,-5.51752 -3.25,-7.34375l1.34375,-1.34375l-1.40625,-1.40625l-1.53125,1.53125c-1.23644,-0.74298 -2.64489,-1.22671 -4.15625,-1.375l0,-1.0625l-2,0zm1,3c4.46667,0 8,3.53333 8,8c0,4.46667 -3.53333,8 -8,8c-4.46667,0 -8,-3.53333 -8,-8c0,-4.46667 3.53333,-8 8,-8z\\\"],[10,\\\"shape-rendering\\\",\\\"geometricPrecision\\\"],[8],[9],[0,\\\"\\\\n  \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"m6.68738,8.49994l3.5625,4.96875c-0.04601,0.16835 -0.0625,0.34831 -0.0625,0.53125c0,1.10457 0.89543,2 2,2c1.10457,0 2,-0.89543 2,-2c0,-1.10457 -0.89543,-2 -2,-2c-0.18294,0 -0.3629,0.01649 -0.53125,0.0625l-4.96875,-3.5625z\\\"],[10,\\\"shape-rendering\\\",\\\"geometricPrecision\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"animateTransform\\\",true],[10,\\\"attributeName\\\",\\\"transform\\\"],[10,\\\"attributeType\\\",\\\"XML\\\"],[10,\\\"from\\\",\\\"0 12 14\\\"],[10,\\\"to\\\",\\\"360 12 14\\\"],[10,\\\"dur\\\",\\\"60s\\\"],[10,\\\"repeatCount\\\",\\\"indefinite\\\"],[10,\\\"type\\\",\\\"rotate\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/clockcard/clock/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport podNames from 'ember-component-css/pod-names';\nimport { tracked } from '@glimmer/tracking';\nimport { later, next } from '@ember/runloop';\nimport { A } from '@ember/array';\n\nexport default class ClockcardComponent extends Component {\n    @service store;\n    @service session;\n    @service evented;\n    @service('collector-service') collector;\n    @service() notifications;\n    @service intl;\n    @service error;\n    @service('gps2') gps;\n    @service dialogs;\n    @service router;\n    @service analytics;\n\n    @tracked worktimes;\n    @tracked openWorktime;\n    @tracked newWorktime;\n    @tracked showNext;\n    @tracked promise;\n    @tracked showEdit = false;\n    @tracked nextContainerOnTop;\n    @tracked siteTooFar;\n    @tracked descriptionTooLong;\n    @tracked loading;\n    @tracked saving = false;\n    @tracked saveAction;\n    @tracked overRideEditModalTitle = false;\n\n    get styleNamespace() {\n        return podNames['clockcard'];\n    }\n\n    get workHoursToday() {\n        if (!this.worktimes) return '';\n        return this.worktimes.reduce((total, worktime) => total + (worktime.work_hours || 0), 0);\n    }\n    get startTimeToday() {\n        if (!this.worktimes) return '';\n        // sort worktimes by starttime and return first starttime\n        return this.worktimes.filter((worktime) => worktime.starttime).sortBy('starttime')\n            .firstObject?.starttime;\n    }\n    get pauseToday() {\n        if (!this.worktimes) return '';\n        // Manual pause: only add pauses for worktimes which have work_hours so it doesn't add currently running worktime's default pause\n        // Multipause: use pause field normally, because multipauses are added during the open worktime\n        const worktimes = this.collector.testNeeds(['products.multipause'])\n            ? this.worktimes\n            : this.worktimes.filter((worktime) => worktime.work_hours);\n        return worktimes.reduce((total, worktime) => total + (worktime.pause / 60 || 0), 0);\n    }\n\n    get timer() {\n        if (!this.openWorktime) return null;\n\n        // on first minute seconds should start from current seconds so counter starts from 00:00:00\n        const seconds =\n            this.openWorktime.starttime === moment().format('HH:mm') ? moment().format('ss') : '00';\n        return (\n            moment(this.openWorktime.date + ' ' + this.openWorktime.starttime).format(\n                'YYYY-MM-DD HH:mm:',\n            ) + seconds\n        );\n    }\n\n    get openPause() {\n        if (!this.openWorktime?.multipause) return null;\n\n        const pausesWithoutEnd = this.openWorktime.multipause.filter(\n            (pause) => pause.start && !pause.end,\n        );\n\n        return pausesWithoutEnd?.firstObject;\n    }\n\n    get pauseTimer() {\n        if (!this.openPause) return null;\n\n        // on first minute seconds should start from current seconds so counter starts from 00:00:00\n        const seconds =\n            this.openPause.start === moment().format('HH:mm') ? moment().format('ss') : '00';\n        return (\n            moment(this.openPause.date + ' ' + this.openPause.start).format('YYYY-MM-DD HH:mm:') +\n            seconds\n        );\n    }\n\n    // select fields that are shown on timecard start\n    // filter fields that are alwaysVisible or mandatory but not in newerShow\n    // show fields that have show_field_on_clockcard_start feature\n    // return as string ie \"field1,field2\"\n    get showFieldsOnStart() {\n        const neverShow = ['user', 'date', 'starttime', 'endtime', 'location', 'description'];\n        const neverShowType = ['databasearray'];\n        const neverShowFeature = ['hide_field_on_clockcard_start']; // fields with this feature are hidden on clockcard start\n\n        const fields = this.collector.fieldArray('worktime').filter((field) => {\n            const hasDesiredFeature = field.features.mandatory || field.features.show_field_on_clockcard_start;\n            return (\n                !neverShowType.includes(field.type) &&\n                hasDesiredFeature &&\n                !neverShow.includes(field.name) &&\n                !neverShowFeature.some((feature) => field.features[feature])\n            );\n        });\n\n        return fields.mapBy('name').join(',');\n    }\n\n    get showFieldsOnEdit() {\n        const neverShow = ['user', 'date', 'starttime', 'endtime', 'location'];\n        const fields = this.collector.fieldArray('worktime').filter((field) => {\n            return !neverShow.includes(field.name);\n        });\n\n        return fields.mapBy('name').join(',');\n    }\n\n    constructor() {\n        super(...arguments);\n        // clean new worktimes that are not saved, to prevent issue where endtime is taken from worktime form, causing an imediate save\n        this.cleanNewWorktimes();\n\n        if (\n            this.collector.testNeedsOne('products.gps_force') ||\n            this.collector.testNeedsOne('products.gps')\n        ) {\n            // if gps2 service is not started yet, start it now (this is needed because database-gps-force-field doesn't start it automatically for userlevel != 1)\n            // gps2 service has a check so that it cannot be started twice\n            this.gps.start();\n            this.siteTooFar = true;\n        }\n\n        // eslint-disable-next-line ember/named-functions-in-promises\n        this.getWorktimes().then(() => {\n            this.setMySite(); // Check if this.newWorktime and session.currentMySite exist and if so, set this.newWorktime.project to session.currentMySite\n        });\n\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumeEvent');\n        this.evented.on('gpsLockedPositionChanged', this, 'checkIfSiteTooFar');\n\n        this.router.on('routeWillChange', (transition) => {\n            if (!transition.to.find((route) => route.name === this.routeName)) {\n                this.newWorktime?.rollbackAttributes();\n                this.openWorktime?.rollbackAttributes();\n            }\n        });\n        // Validate all except databasearrays and fields with hide_field_on_clockcard_start feature, \n        // because they are hidden from start component regardless of being mandatory\n        // used in worktime start validation\n        this.fields = this.collector.fieldArray('worktime');\n        this.validateFields = this.fields\n            .filter((field) => \n                field.type !== 'databasearray' && \n                field.name !== 'description' &&\n                !field.features?.hide_field_on_clockcard_start\n            )\n            .mapBy('name');\n    }\n\n    cleanNewWorktimes() {\n        const newWorktimes = this.store.peekAll('worktime').filterBy('isNew', true);\n        newWorktimes.forEach((worktime) => worktime.destroyRecord());\n    }\n\n    setMySite() {\n        if (this.newWorktime && this.session && this.session.currentUser.currentMySite) {\n            this.newWorktime.project = this.session.currentUser.currentMySite;\n        }\n    }\n\n    willDestroy() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumeEvent');\n        this.evented.off('gpsLockedPositionChanged', this, 'checkIfSiteTooFar');\n    }\n\n    @action\n    async start() {\n        if (this.saving) return;\n        this.saving = true;\n\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Start worktime' });\n\n        // Do all validation before UI updates\n        const worktime = this.newWorktime?.isDeleted\n            ? this.collector.copyRecord(this.newWorktime)\n            : this.newWorktime;\n        worktime.date = moment().format('YYYY-MM-DD');\n        if (!worktime.user) worktime.user = this.session.currentUser;\n\n        worktime.starttime = moment().format('HH:mm');\n        if ('location' in worktime) worktime.location = await this.getLocation();\n\n        await worktime.validate(this.validateFields);\n        if (!worktime.isValid) {\n            this.saving = false;\n            return;\n        }\n\n        await this.checkIfSiteTooFar();\n        if (this.siteTooFar) {\n            worktime.starttime = null;\n            this.saving = false;\n            return;\n        }\n\n        // Save first\n        try {\n            worktime.validation = 'off';\n            await worktime.save();\n\n            // Only update UI after successful save\n            this.openWorktime = worktime;\n            this.newWorktime = worktime;\n            this.updateWorktimes();\n\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n            this.evented.storeEvent('insert', 'worktime', this.openWorktime);\n            if (this.args.saveAction) this.args.saveAction();\n        } catch (error) {\n            this.dialogs.alert(await this.error.toStringAsyncHTML(error));\n            worktime.starttime = null;\n            this.newWorktime = worktime;\n            this.openWorktime = null;\n        } finally {\n            this.saving = false;\n        }\n    }\n\n    @action\n    async takeABreak() {\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Start break' });\n        let worktime = this.openWorktime;\n        this.loading = true;\n\n        let pauseParams = {\n            date: worktime.date,\n            start: moment().format('HH:mm'),\n            user: worktime.user,\n        };\n        const pauseRecord = await this.store.createRecord('multipause', pauseParams);\n\n        try {\n            await pauseRecord.save();\n            if (!worktime.multipause) worktime.multipause = A([]);\n            worktime.multipause.pushObject(pauseRecord);\n            await worktime.save();\n            this.openWorktime = worktime;\n            this.notifications.success(this.intl.t('general.pause_started'), { autoClear: true });\n            if (this.args.saveAction) this.args.saveAction();\n        } catch (error) {\n            this.dialogs.alert(await this.error.toStringAsyncHTML(error));\n        } finally {\n            this.loading = false;\n        }\n    }\n\n    @action\n    async continueWork() {\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Stop break' });\n        this.loading = true;\n        let openPause = this.openPause;\n        let worktime = this.openWorktime;\n\n        openPause.end = moment().format('HH:mm');\n\n        try {\n            await openPause.save();\n            await worktime.save();\n            this.notifications.success(this.intl.t('general.pause_saved'), { autoClear: true });\n        } catch (error) {\n            this.dialogs.alert(await this.error.toStringAsyncHTML(error));\n        } finally {\n            this.loading = false;\n        }\n    }\n\n    @action\n    async cancelPause() {\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Cancel break' });\n        this.loading = true;\n        let openPause = this.openPause;\n        let worktime = this.openWorktime;\n        try {\n            worktime.multipause.removeObject(openPause);\n            await openPause.destroyRecord();\n            await worktime.save();\n            this.notifications.info(this.intl.t('general.pause_canceled'), { autoClear: true });\n        } catch (error) {\n            this.dialogs.alert(await this.error.toStringAsyncHTML(error));\n        } finally {\n            this.loading = false;\n        }\n    }\n\n    @action\n    async stop(enforce_forced = false) {\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Stop worktime' });\n        if (this.siteTooFar) return;\n\n        const worktime = this.openWorktime;\n        await worktime.validate();\n\n        if (\n            !worktime.isValid ||\n            (enforce_forced && this.collector.testNeeds(['products.force_clockcard_dialog']))\n        ) {\n            this.saveAction = 'stop';\n            this.overRideEditModalTitle = this.intl.t('general.end_last_worktime');\n            return (this.showEdit = true);\n        }\n\n        worktime.endtime = moment().format('HH:mm');\n        if ('end_location' in worktime) worktime.end_location = await this.getLocation();\n        await this.checkIfSiteTooFar();\n        if (this.siteTooFar) {\n            return;\n        }\n        this.openWorktime = null;\n\n        this.updateWorktimes();\n        try {\n            await worktime.save();\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n            this.evented.storeEvent('insert', 'worktime', this.openWorktime);\n            if (this.args.saveAction) this.args.saveAction();\n        } catch (error) {\n            this.error.notify(error);\n            worktime.endtime = null;\n            this.openWorktime = worktime;\n        }\n    }\n\n    // After clicking save in edit modal, determine next action based on saveAction\n    @action\n    async afterSave() {\n        switch (this.saveAction) {\n            case 'stop':\n                await this.stop();\n                break;\n            case 'startnext':\n                await this.startNext();\n                break;\n        }\n    }\n\n    @action\n    openEditModal() {\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Open edit modal' });\n        this.saveAction = null;\n        this.overRideEditModalTitle = this.intl.t('general.edit_worktime');\n        this.showEdit = true;\n    }\n\n    @action\n    async startNext() {\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Start next worktime' });\n        if (this.siteTooFar) return;\n\n        const oldWorktime = this.openWorktime;\n        const newWorktime = this.newWorktime;\n\n        await oldWorktime.validate();\n        await newWorktime.validate(this.validateFields);\n\n        if (!oldWorktime.isValid) {\n            this.showEdit = true;\n            this.saveAction = 'startnext';\n            return;\n        }\n\n        if (!newWorktime.isValid) return;\n\n        oldWorktime.endtime = moment().format('HH:mm');\n        if ('end_location' in oldWorktime) oldWorktime.end_location = await this.getLocation();\n        newWorktime.starttime = moment().format('HH:mm');\n\n        // hax to force render form again so new values of new record would be updated to fields... this wouldn't be needed\n        // if fields would support ddau better .. when ddau works change to one line \"this.openWorktime = newWorktime\"\n        this.openWorktime = null;\n        next(this, () => {\n            this.openWorktime = newWorktime;\n        });\n\n        this.newWorktime = this.createNewWorktime();\n\n        // hide next worktime component\n        this.closeNext();\n\n        this.updateWorktimes();\n\n        try {\n            newWorktime.validation = 'off';\n\n            await oldWorktime.save();\n            await newWorktime.save();\n\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n            this.evented.storeEvent('insert', 'worktime', oldWorktime);\n        } catch (error) {\n            this.error.notify(error);\n            newWorktime.starttime = null;\n            oldWorktime.endtime = null;\n            this.newWorktime = newWorktime;\n            this.openWorktime = oldWorktime;\n\n            this.openNext(0);\n        }\n    }\n\n    @action\n    openNext(time = 301) {\n        this.showNext = true;\n        this.saveAction = null;\n\n        // animation takes 300ms so after that we change nextContainerOnTop to true witch makes removes stop div to hidden\n        // and makes startnew div to not absolute so it will change the size of the parent div\n        later(\n            this,\n            () => {\n                this.nextContainerOnTop = true;\n                // if force_clockcard_dialog is on, show edit modal when we are opening \"next worktime\"-page\n                if (this.collector.testNeeds(['products.force_clockcard_dialog'])) {\n                    this.showEdit = true;\n                    this.overRideEditModalTitle = this.intl.t('general.edit_last_worktime');\n                }\n            },\n            time,\n        );\n    }\n\n    @action\n    closeNext() {\n        this.showNext = false;\n        this.nextContainerOnTop = false;\n    }\n\n    @action onFieldChange(type, field, value) {\n        value = value?.target ? value.target.value : value;\n        if (type === 'open') this.openWorktime[field] = value;\n        else if (type === 'new') this.newWorktime[field] = value;\n        if (field === 'description') {\n            this.descriptionTooLong =\n                value.length > 256 ? this.intl.t('validation.too_long_error') : null;\n        }\n        if (field === 'project') this.checkIfSiteTooFar();\n    }\n\n    @action\n    closeEdit(ExtraInfo) {\n        this.showEdit = false;\n        // Is needed so that default pause is not lost when worktime form is opened and closed :')\n        if (ExtraInfo !== 'AfterSave') this.setDefaultPause(this.openWorktime);\n    }\n\n    createNewWorktime() {\n        let defaults = { date: moment().format('YYYY-MM-DD'), user: this.session.currentUser };\n        if (this.collector.fieldExists('worktime', 'affects_overtime'))\n            defaults.affects_overtime = 'off';\n        return this.store.createRecord('worktime', defaults);\n    }\n\n    async dummy() {}\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime') this.getWorktimes();\n    }\n\n    onResumeEvent(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        this.getWorktimes();\n    }\n\n    async getWorktimes() {\n        this.promise = this.store.query('worktime', {\n            date:\n                moment().subtract(1, 'day').format('YYYY-MM-DD') +\n                '_' +\n                moment().format('YYYY-MM-DD'),\n            user: this.session.currentUser.id,\n            sideload: true,\n        });\n        // Have to load multipauses also to store so some data is not undefined 🥲\n        if (this.collector.testNeeds(['products.multipause']))\n            await this.store.query('multipause', {\n                date:\n                    moment().subtract(1, 'day').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD'),\n                user: this.session.currentUser.id,\n                sideload: true,\n            });\n\n        const worktimes = await this.promise;\n\n        this.updateWorktimes();\n\n        const openWorktime = worktimes.find((worktime) => {\n            return worktime.starttime && !worktime.endtime;\n        });\n\n        if (openWorktime) {\n            this.setDefaultPause(openWorktime);\n            this.openWorktime = openWorktime;\n            this.checkIfSiteTooFar();\n        } else this.openWorktime = null;\n    }\n\n    updateWorktimes() {\n        this.worktimes = this.store.peekAll('worktime').filter((worktime) => {\n            return (\n                worktime.date === moment().format('YYYY-MM-DD') &&\n                worktime.user == this.session.currentUser\n            );\n        });\n\n        const records = this.store.peekAll('worktime').filterBy('isNew', true);\n        if (records.length > 0) {\n            this.newWorktime = records.firstObject;\n            // when reusing unsaved worktime .. date must always be today so play starts worktime for today\n            this.newWorktime.date = moment().format('YYYY-MM-DD');\n            if (\n                this.collector.fieldExists('worktime', 'affects_overtime') &&\n                !this.newWorktime.affects_overtime\n            )\n                this.newWorktime.affects_overtime = 'off';\n        } else {\n            this.newWorktime = this.createNewWorktime();\n        }\n        this.checkIfSiteTooFar();\n    }\n\n    // check if pause is on .. and set pause for given worktime\n    setDefaultPause(worktime) {\n        const pauseField = this.collector\n            .fieldArray('worktime')\n            .find((item) => item.name === 'pause');\n        let pause = null;\n        // support for worktime-groups\n        if (pauseField) {\n            if (typeof get(pauseField, 'features.default_value') == 'object')\n                pause = get(pauseField, 'features.default_value.value');\n            else pause = get(pauseField, 'features.default_value');\n        }\n\n        if ((!worktime.pause || worktime.pause == null) && pause) worktime.pause = pause;\n        // Overwrite worktime default pause as null if worktime doesn't have any multipauses\n        // why: because multipauses are calculated in capi and setting default value is unnecessary and messes up pauseToday\n        if (worktime.multipause?.length === 0) worktime.pause = null;\n    }\n\n    async getLocation() {\n        if (this.gps.status != 'located') return null;\n\n        let location = {\n            latitude: await this.gps.lockedLatitude,\n            longitude: await this.gps.lockedLongitude,\n            accuracy: await this.gps.lockedAccuracy,\n        };\n\n        return JSON.stringify(location);\n    }\n\n    async checkIfSiteTooFar() {\n        if (!this.collector.fieldExists('project', 'force_location')) {\n            this.siteTooFar = false;\n            return;\n        }\n        if (!this.openWorktime) {\n            if (!this.newWorktime?.project) {\n                return;\n            }\n        }\n        let worktime = this.openWorktime ?? this.newWorktime;\n\n        if (worktime.project.force_location == undefined)\n            await this.store.findRecord('project', worktime.project.id, { reload: true });\n        if (!worktime.project.force_location) {\n            this.siteTooFar = false;\n            return;\n        }\n\n        if (!this.gps.lockedPosition || !this.gps.positionFromWatch) {\n            this.siteTooFar = true;\n            return;\n        }\n        let projectLocation = JSON.parse(worktime.project.location_map);\n        const distance = this.gps.getDistance(projectLocation, this.gps.lockedPosition);\n        if (distance > this.gps.allowedDistance) {\n            this.siteTooFar = true;\n            return;\n        }\n\n        this.siteTooFar = false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"mYG27bCD\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"x\\\",\\\"0px\\\"],[10,\\\"y\\\",\\\"0px\\\"],[10,\\\"width\\\",\\\"30\\\"],[10,\\\"height\\\",\\\"30\\\"],[10,\\\"viewBox\\\",\\\"0 0 30 30\\\"],[10,\\\"style\\\",\\\" fill:#000000;\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M 22.40625 4 L 17.78125 8.59375 C 16.628906 9.746094 16.628906 11.660156 17.78125 12.8125 L 16 14.5625 L 7.21875 5.78125 L 6.5 5.09375 L 5.78125 5.78125 C 4.011719 7.550781 4.011719 10.449219 5.78125 12.21875 L 12.0625 18.5 L 4.28125 26.28125 L 5.71875 27.71875 L 13.5 19.9375 L 14.6875 21.09375 L 15.40625 21.8125 L 16.09375 21.09375 L 17.875 19.3125 L 26.28125 27.71875 L 27.71875 26.28125 L 18.59375 17.1875 L 17.4375 16 L 19.1875 14.21875 L 19.21875 14.21875 L 19.25 14.25 C 20.410156 15.351563 22.269531 15.355469 23.40625 14.21875 L 23.5 14.09375 L 28 9.59375 L 26.59375 8.1875 L 22 12.78125 C 21.566406 13.214844 21.0625 13.226563 20.625 12.8125 L 25.90625 7.5 L 24.5 6.09375 L 19.1875 11.375 C 18.773438 10.9375 18.785156 10.433594 19.21875 10 L 23.8125 5.40625 Z M 6.78125 8.21875 L 16.46875 17.90625 L 15.40625 18.96875 L 7.21875 10.78125 C 6.476563 10.039063 6.457031 9.105469 6.78125 8.21875 Z\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/clockcard/dining/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"7iJncf0g\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"@close\\\",\\\"@title\\\",\\\"@showFields\\\",\\\"@record\\\",\\\"@afterSave\\\"],\\\"statements\\\":[[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[23,2,[]],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"if\\\",[[23,3,[]],[23,3,[]],[28,\\\"t\\\",[\\\"menu.add_worktime\\\"],null]],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"collector/form-add/forms/worktime\\\",[],[[\\\"@form\\\",\\\"@only\\\",\\\"@record\\\",\\\"@preserveRecordOnDestroy\\\",\\\"@close\\\",\\\"@showSaved\\\",\\\"@rowEdited\\\"],[\\\"worktime\\\",[23,4,[]],[23,5,[]],true,[23,2,[]],false,[23,6,[]]]]],[0,\\\"\\\\n\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/clockcard/edit/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { htmlSafe } from '@ember/template';\nimport fetch from 'fetch';\n\nexport default class ClockcardEndComponent extends Component {\n    @tracked showWorktimeRoundedPopup = false;\n    @tracked worktimeRoundedInfoText;\n\n    constructor() {\n        super(...arguments);\n        this.setInfoText();\n    }\n\n    @action toggleWorktimeRoundedPopup() {\n        this.showWorktimeRoundedPopup = !this.showWorktimeRoundedPopup;\n    }\n\n    async setInfoText() {\n        const key = 'worktime-rounded-' + moment.locale();\n        const fileUrl = `https://cloud-writer-prod.s3.amazonaws.com/${key}.html`;\n\n        let response = await fetch(fileUrl, { dataType: 'text' });\n        if (!response.ok) return (this.worktimeRoundedInfoText = `cannot find help for ${key}`);\n\n        this.worktimeRoundedInfoText = htmlSafe(await response.text());\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"EwUbd3En\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"fields\\\",\\\"fieldcomp\\\",\\\"record\\\",\\\"change\\\",\\\"field\\\",\\\"Fields\\\",\\\"Field\\\",\\\"Container\\\",\\\"FieldComponent\\\",\\\"@edit\\\",\\\"@takeABreak\\\",\\\"@descriptionTooLong\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@pause\\\",\\\"@timer\\\",\\\"@workhours\\\",\\\"@startTime\\\",\\\"@siteTooFar\\\",\\\"@stop\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"time-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_tracked\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"time\\\"],[8],[5,\\\"clockcard/clock\\\",[],[[\\\"@animate\\\"],[true]]],[0,\\\"\\\\n        \\\"],[1,[28,\\\"if\\\",[[23,17,[]],[28,\\\"duration-clock\\\",[[23,17,[]]],null],\\\"00:00:00\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"includes\\\",[\\\"-\\\",[28,\\\"duration-clock\\\",[[23,17,[]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"rounded-worktime\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"timecard.worktime_rounded\\\"],null],false],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"toggleWorktimeRoundedPopup\\\"]]],null]]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"timecard.worktime_rounded.info\\\"],null],false],[0,\\\"\\\\n                \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@text\\\",\\\"@tooltipClass\\\",\\\"@popperContainer\\\",\\\"@event\\\",\\\"@isShown\\\",\\\"@hideOn\\\",\\\"@side\\\"],[[23,0,[\\\"worktimeRoundedInfoText\\\"]],\\\"help-tooltip\\\",\\\"body\\\",\\\"none\\\",[23,0,[\\\"showWorktimeRoundedPopup\\\"]],\\\"click\\\",\\\"bottom\\\"]]],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime.pause\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pt-2\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pause\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.pause_today\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"clockcard-time-bold\\\"],[8],[1,[28,\\\"if\\\",[[23,16,[]],[28,\\\"format-hours\\\",[[23,16,[]]],null],\\\"00:00h\\\"],null],false],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pt-2 time-today pb-5\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"border-line pt-2\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"data-anchor\\\",\\\"clockcard-end-time-today\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_today\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"clockcard-time-bold\\\"],[8],[1,[28,\\\"if\\\",[[23,18,[]],[28,\\\"format-hours\\\",[[23,18,[]]],null],\\\"00:00h\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"data-anchor\\\",\\\"clockcard-start-time-today\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.start\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"clockcard-time-bold\\\"],[8],[1,[28,\\\"if\\\",[[23,19,[]],[23,19,[]],\\\"-\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"project\\\"],[8],[1,[23,14,[\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"collector/form-add/forms/worktime\\\",[],[[\\\"@only\\\",\\\"@sortFields\\\",\\\"@record\\\",\\\"@preserveRecordOnDestroy\\\"],[\\\"description,pause\\\",true,[23,14,[]],true]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,7,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"flex-item-100 field-\\\",[23,8,[\\\"name\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,8,[\\\"name\\\"]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"bootstrap-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\",\\\"@name\\\"],[[23,8,[\\\"translated_name\\\"]],[23,8,[\\\"features\\\",\\\"mandatory\\\"]],[23,13,[]],[23,8,[\\\"name\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[5,\\\"textarea\\\",[],[[\\\"@class\\\",\\\"@value\\\",\\\"@rows\\\",\\\"@change\\\"],[\\\"form-control add-fields\\\",[28,\\\"get\\\",[[23,14,[]],[23,8,[\\\"name\\\"]]],null],\\\"4\\\",[28,\\\"fn\\\",[[23,15,[]],[23,8,[\\\"name\\\"]]],null]]]],[0,\\\"                            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"title\\\"],[8],[1,[23,8,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[5,\\\"addon/field-container\\\",[],[[\\\"@record\\\",\\\"@form\\\",\\\"@field\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@value\\\"],[[23,14,[]],[23,8,[\\\"form\\\"]],[23,8,[\\\"name\\\"]],[28,\\\"fn\\\",[[23,15,[]],[23,8,[\\\"name\\\"]]],null],[23,8,[\\\"mandatory\\\"]],[28,\\\"get\\\",[[23,14,[]],[23,8,[\\\"name\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"let\\\",[[23,9,[\\\"fieldComponent\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,10,[]],[],[[\\\"@value\\\",\\\"@onChange\\\",\\\"@class\\\",\\\"@record\\\"],[[28,\\\"get\\\",[[23,14,[]],[23,8,[\\\"name\\\"]]],null],[23,9,[\\\"args\\\",\\\"onChange\\\"]],\\\"form-control\\\",[23,14,[]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[10]},null],[0,\\\"                            \\\"]],\\\"parameters\\\":[9]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[6,[23,1,[\\\"fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"flex-item-100 field-\\\",[23,6,[\\\"name\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,6,[\\\"name\\\"]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"bootstrap-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\",\\\"@name\\\"],[[23,6,[\\\"translated_name\\\"]],[23,6,[\\\"features\\\",\\\"mandatory\\\"]],[23,13,[]],[23,6,[\\\"name\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[5,\\\"textarea\\\",[],[[\\\"@class\\\",\\\"@value\\\",\\\"@rows\\\",\\\"@change\\\"],[\\\"form-control add-fields\\\",[28,\\\"get\\\",[[23,14,[]],[23,6,[\\\"name\\\"]]],null],\\\"4\\\",[28,\\\"fn\\\",[[23,15,[]],[23,6,[\\\"name\\\"]]],null]]]],[0,\\\"                            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"title\\\"],[8],[1,[23,6,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"record\\\",\\\"change\\\"],[[28,\\\"hash\\\",null,[[\\\"features\\\",\\\"form\\\",\\\"name\\\",\\\"options\\\",\\\"translated_name\\\",\\\"type\\\",\\\"value\\\"],[[23,6,[\\\"features\\\"]],[23,6,[\\\"form\\\"]],[23,6,[\\\"name\\\"]],[23,6,[\\\"options\\\"]],[23,6,[\\\"translated_name\\\"]],[23,6,[\\\"type\\\"]],[28,\\\"get\\\",[[23,4,[]],[23,6,[\\\"name\\\"]]],null]]]],[23,4,[]],[23,5,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[2,3,4,5]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,20,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h5\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.gps.too_far\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column stop-buttons\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100 flex-center\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"stop-button\\\",[],[[\\\"@click\\\",\\\"@disabled\\\",\\\"@width\\\",\\\"@height\\\"],[[23,21,[]],[23,20,[]],\\\"100\\\",\\\"100\\\"]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.multipause\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 flex-center flex-center-vertically\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"end-worktime-button start-pause\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,12,[]]]],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"timecard.start_pause\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 flex-center flex-center-vertically\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"end-worktime-button extra-info\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,11,[]]]],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"timecard.add_extra_info\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100 flex-center flex-center-vertically\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"end-worktime-button extra-info\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,11,[]]]],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"timecard.add_extra_info\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/clockcard/end/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"iF8JwNt8\",\"block\":\"{\\\"symbols\\\":[\\\"@gpsStatus\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"searching\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"general.loading\\\"],null]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"worktime.location\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"located\\\"],null],\\\"text-success\\\",\\\"text-danger\\\"],null]],[8],[1,[28,\\\"standard-icon\\\",[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"located\\\"],null],\\\"ok\\\",\\\"remove\\\"],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/clockcard/gps-indicator/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"IoF/7okf\",\"block\":\"{\\\"symbols\\\":[\\\"@pauseTimer\\\",\\\"@continueWork\\\",\\\"@cancelPause\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"time-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.pause_tracked\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"time\\\"],[8],[5,\\\"clockcard/dining\\\",[],[[],[]]],[0,\\\" \\\"],[1,[28,\\\"if\\\",[[23,1,[]],[28,\\\"duration-clock\\\",[[23,1,[]]],null],\\\"00:00:00\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100 pause-button-continue-work\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,2,[]]]],[8],[1,[28,\\\"t\\\",[\\\"timecard.continue_work\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100 pause-button-cancel-pause\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,3,[]]]],[8],[1,[28,\\\"t\\\",[\\\"timecard.cancel_pause\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/clockcard/pause/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\nexport default class ClockCardComponent extends Component {\n    @action\n    // we have to have this \"middleware\" action to handle the formOnchange and also the onFieldChange\n    onChangeHandler(field, formOnchange, value) {\n        // Manually call formOnchange with field name and value\n        formOnchange(field, value);\n        // Manually call onFieldChange with field name and value\n        this.args.onFieldChange(field, value);\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"R0KrarY9\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"fields\\\",\\\"fieldcomp\\\",\\\"field\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@descriptionTooLong\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@pause\\\",\\\"@timer\\\",\\\"@workhours\\\",\\\"@startTime\\\",\\\"@showFields\\\",\\\"@siteTooFar\\\",\\\"@start\\\",\\\"@saving\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"time-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_tracked\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"time\\\"],[8],[5,\\\"clockcard/clock\\\",[],[[],[]]],[0,\\\" \\\"],[1,[28,\\\"if\\\",[[23,12,[]],[28,\\\"duration-clock\\\",[[23,12,[]]],null],\\\"00:00:00\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime.pause\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pt-2\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pause\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.pause_today\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"clockcard-time-bold\\\"],[8],[1,[28,\\\"if\\\",[[23,11,[]],[28,\\\"format-hours\\\",[[23,11,[]]],null],\\\"00:00h\\\"],null],false],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pt-2 time-today\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"border-line pt-2\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"data-anchor\\\",\\\"clockcard-time-today\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_today\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"clockcard-time-bold\\\"],[8],[1,[28,\\\"if\\\",[[23,13,[]],[28,\\\"format-hours\\\",[[23,13,[]]],null],\\\"00:00h\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"data-anchor\\\",\\\"clockcard-start-time-today\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.start\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"clockcard-time-bold\\\"],[8],[1,[28,\\\"if\\\",[[23,14,[]],[23,14,[]],\\\"-\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"collector/form-add/forms/worktime\\\",[],[[\\\"@only\\\",\\\"@record\\\",\\\"@preserveRecordOnDestroy\\\"],[[23,15,[]],[23,9,[]],true]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field-cont\\\"],[8],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,5,[]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"flex-item-100 field-\\\",[23,7,[\\\"name\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[\\\"name\\\"]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"bootstrap-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\",\\\"@name\\\"],[[23,7,[\\\"translated_name\\\"]],[23,7,[\\\"features\\\",\\\"mandatory\\\"]],[23,8,[]],[23,7,[\\\"name\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[5,\\\"textarea\\\",[],[[\\\"@class\\\",\\\"@value\\\",\\\"@rows\\\",\\\"@change\\\"],[\\\"form-control add-fields\\\",[28,\\\"get\\\",[[23,9,[]],[23,7,[\\\"name\\\"]]],null],\\\"4\\\",[28,\\\"fn\\\",[[23,10,[]],[23,7,[\\\"name\\\"]]],null]]]],[0,\\\"                            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[6,[23,6,[]],[],[[\\\"@record\\\",\\\"@form\\\",\\\"@field\\\",\\\"@onChange\\\",\\\"@value\\\",\\\"@mandatory\\\",\\\"@forceType\\\",\\\"@prompt\\\"],[[28,\\\"readonly\\\",[[23,9,[]]],null],[23,7,[\\\"form\\\"]],[23,7,[\\\"name\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"onChangeHandler\\\"]],[23,7,[\\\"name\\\"]],[23,1,[\\\"OnChange\\\"]]],null],[28,\\\"get\\\",[[23,9,[]],[23,7,[\\\"name\\\"]]],null],[23,7,[\\\"mandatory\\\"]],[23,7,[\\\"forceType\\\"]],\\\"general.choose\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[\\\"name\\\"]],\\\"project\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"project-help\\\",[],[[\\\"@projectid\\\"],[[23,9,[\\\"project\\\",\\\"id\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[5,6]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field-cont\\\"],[8],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"flex-item-100 field-\\\",[23,4,[\\\"name\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,4,[\\\"name\\\"]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"bootstrap-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\",\\\"@name\\\"],[[23,4,[\\\"translated_name\\\"]],[23,4,[\\\"features\\\",\\\"mandatory\\\"]],[23,8,[]],[23,4,[\\\"name\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[5,\\\"textarea\\\",[],[[\\\"@class\\\",\\\"@value\\\",\\\"@rows\\\",\\\"@change\\\"],[\\\"form-control add-fields\\\",[28,\\\"get\\\",[[23,9,[]],[23,4,[\\\"name\\\"]]],null],\\\"4\\\",[28,\\\"fn\\\",[[23,10,[]],[23,4,[\\\"name\\\"]]],null]]]],[0,\\\"                            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[]],\\\"expected `fieldcomp` to be a contextual component but found a string. Did you mean `(component fieldcomp)`? ('tt4/pods/components/clockcard/start/template.hbs' @ L100:C30) \\\"],null]],[[\\\"field\\\"],[[23,4,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center play-button-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[23,16,[]],[23,9,[\\\"project\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h5\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.gps.too_far\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[5,\\\"play-button\\\",[],[[\\\"@click\\\",\\\"@disabled\\\",\\\"@width\\\",\\\"@height\\\"],[[23,17,[]],[28,\\\"or\\\",[[23,16,[]],[23,18,[]]],null],\\\"100\\\",\\\"100\\\"]]],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/clockcard/start/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"fbwX9u/V\",\"block\":\"{\\\"symbols\\\":[\\\"@additionalClass\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"dash-board/widget-spinner\\\",[],[[\\\"@promise\\\",\\\"@skeletonRows\\\"],[[23,0,[\\\"promise\\\"]],6]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loading-state\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"openPause\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"clockcard/pause\\\",[],[[\\\"@pauseTimer\\\",\\\"@continueWork\\\",\\\"@cancelPause\\\"],[[23,0,[\\\"pauseTimer\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"continueWork\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"cancelPause\\\"]]],null]]]],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"openWorktime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"nextContainerOnTop\\\"]],\\\"hidden\\\"],null]],[8],[0,\\\"\\\\n            \\\"],[5,\\\"clockcard/end\\\",[],[[\\\"@record\\\",\\\"@workhours\\\",\\\"@startTime\\\",\\\"@pause\\\",\\\"@timer\\\",\\\"@stop\\\",\\\"@takeABreak\\\",\\\"@edit\\\",\\\"@onFieldChange\\\",\\\"@siteTooFar\\\",\\\"@descriptionTooLong\\\"],[[23,0,[\\\"openWorktime\\\"]],[23,0,[\\\"workHoursToday\\\"]],[23,0,[\\\"startTimeToday\\\"]],[23,0,[\\\"pauseToday\\\"]],[23,0,[\\\"timer\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"stop\\\"]],true],null],[28,\\\"fn\\\",[[23,0,[\\\"takeABreak\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"openEditModal\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"open\\\"],null],[23,0,[\\\"siteTooFar\\\"]],[23,0,[\\\"descriptionTooLong\\\"]]]]],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"not\\\",[[24,[\\\"showNext\\\"]]],null],[28,\\\"needs\\\",[\\\"products.gps||products.gps_force\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clockcard-gps-indicator clockcard-gps-indicator-end\\\"],[8],[5,\\\"clockcard/gps-indicator\\\",[],[[\\\"@gpsStatus\\\"],[[23,0,[\\\"gps\\\",\\\"status\\\"]]]]],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"next-container\\\\n                \\\",[23,1,[]],\\\"\\\\n                \\\",[28,\\\"if\\\",[[24,[\\\"showNext\\\"]],\\\"animate\\\"],null],\\\"\\\\n                \\\",[28,\\\"if\\\",[[24,[\\\"nextContainerOnTop\\\"]],\\\"normalPosition\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column tabs\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25 sidetab\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showNext\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"closeNext\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Back\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"general.back\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 flex-center next-worktime-container\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"end-worktime-button next\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openNext\\\"]],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"general.next\\\"],null],false],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"general.worktime\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25 sidetab\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[5,\\\"clockcard/start\\\",[],[[\\\"@record\\\",\\\"@workhours\\\",\\\"@startTime\\\",\\\"@pause\\\",\\\"@showFields\\\",\\\"@start\\\",\\\"@onFieldChange\\\",\\\"@siteTooFar\\\",\\\"@saving\\\",\\\"@descriptionTooLong\\\"],[[23,0,[\\\"newWorktime\\\"]],[23,0,[\\\"workHoursToday\\\"]],[23,0,[\\\"startTimeToday\\\"]],[23,0,[\\\"pauseToday\\\"]],[23,0,[\\\"showFieldsOnStart\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"startNext\\\"]],true],null],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"new\\\"],null],[23,0,[\\\"siteTooFar\\\"]],[23,0,[\\\"saving\\\"]],[23,0,[\\\"descriptionTooLong\\\"]]]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"showNext\\\"]],[28,\\\"needs\\\",[\\\"products.gps||products.gps_force\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clockcard-gps-indicator\\\"],[8],[5,\\\"clockcard/gps-indicator\\\",[],[[\\\"@gpsStatus\\\"],[[23,0,[\\\"gps\\\",\\\"status\\\"]]]]],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"newWorktime\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"clockcard/start\\\",[],[[\\\"@record\\\",\\\"@pause\\\",\\\"@workhours\\\",\\\"@startTime\\\",\\\"@showFields\\\",\\\"@start\\\",\\\"@onFieldChange\\\",\\\"@descriptionTooLong\\\",\\\"@siteTooFar\\\",\\\"@saving\\\"],[[23,0,[\\\"newWorktime\\\"]],[23,0,[\\\"pauseToday\\\"]],[23,0,[\\\"workHoursToday\\\"]],[23,0,[\\\"startTimeToday\\\"]],[23,0,[\\\"showFieldsOnStart\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"start\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"new\\\"],null],[23,0,[\\\"descriptionTooLong\\\"]],[23,0,[\\\"siteTooFar\\\"]],[23,0,[\\\"saving\\\"]]]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"not\\\",[[24,[\\\"showNext\\\"]]],null],[28,\\\"needs\\\",[\\\"products.gps||products.gps_force\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clockcard-gps-indicator\\\"],[8],[5,\\\"clockcard/gps-indicator\\\",[],[[\\\"@gpsStatus\\\"],[[23,0,[\\\"gps\\\",\\\"status\\\"]]]]],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"clockcard/edit\\\",[],[[\\\"@record\\\",\\\"@showFields\\\",\\\"@close\\\",\\\"@onFieldChange\\\",\\\"@descriptionTooLong\\\",\\\"@afterSave\\\",\\\"@title\\\"],[[23,0,[\\\"openWorktime\\\"]],[23,0,[\\\"showFieldsOnEdit\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"closeEdit\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"open\\\"],null],[23,0,[\\\"descriptionTooLong\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"afterSave\\\"]]],null],[23,0,[\\\"overRideEditModalTitle\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/clockcard/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/company-info/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Component;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nComponent = Ember.Component.extend({\n    notifications: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    countries: Em.computed(function () {\n        return [\n            {\n                id: 'se',\n                name: 'se',\n            },\n            {\n                id: 'fi',\n                name: 'fi',\n            },\n        ];\n    }),\n    errors: Em.Object.create({\n        company_vatin: false,\n        company_name: false,\n    }),\n    showAdminMode: Em.computed('application.impersonate', 'Ember.devModeOn', function () {\n        if (Ember.get(Ember, 'devModeOn')) {\n            return true;\n        }\n        if (this.get('application.impersonate')) {\n            return true;\n        }\n    }),\n    actions: {\n        save: function (row) {\n            var field, hasError, i, len, ref;\n            ref = ['company_vatin', 'company_name'];\n            for (i = 0, len = ref.length; i < len; i++) {\n                field = ref[i];\n                if (!this.get('model.' + field) || this.get('model.' + field) === '') {\n                    this.set('errors.' + field, true);\n                    hasError = true;\n                } else {\n                    this.set('errors.' + field, false);\n                }\n            }\n            if (!hasError) {\n                return row.save().then(() => {\n                    if (this.get('refreshNeeded')) {\n                        this.refreshNeeded();\n                    }\n                    return this.get('notifications').success(\n                        this.get('intl').t('billing_info.company_info_saved'),\n                        {\n                            autoClear: true,\n                        },\n                    );\n                });\n            }\n        },\n    },\n});\n\nexport default Component;\n","export default Ember.HTMLBars.template({\"id\":\"klpG6Mi5\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-group address-info\\\"],[10,\\\"id\\\",\\\"accordion\\\"],[10,\\\"role\\\",\\\"tablist\\\"],[10,\\\"aria-multiselectable\\\",\\\"false\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"company_info.company_name\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"company_name\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"company_name\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"company_info.company_vatin\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"company_vatin\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"company_vatin\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"company_info.company_contact_person\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"company_contact_person\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"company_info.company_phone\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"company_phone\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"company_info.company_email\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"company_email\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAdminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"company_info.country\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"prompt\\\",\\\"classes\\\"],[[24,[\\\"countries\\\"]],[24,[\\\"model\\\",\\\"country\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"model\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/company-info/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    valid: computed('status', 'date', function () {\n        if (get(this, 'status') === 'approved' && moment(get(this, 'expires')).isAfter(moment())) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"5+dJUP3q\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-md-4\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"competencecard\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"style\\\",[29,[\\\"background-image:url(\\\",[22,\\\"image\\\"],\\\")\\\"]]],[10,\\\"class\\\",\\\"image\\\"],[8],[9],[0,\\\"\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"caption\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[\\\"type\\\",\\\"card\\\",[24,[\\\"type\\\"]]]]],false],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[24,[\\\"user\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"user\\\",\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"valid\\\"]],\\\"valid\\\",\\\"notvalid\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"status\\\"]],\\\"approved\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CheckedCircle\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Circle\\\"],[8],[9],[0,\\\" (\\\"],[1,[22,\\\"status\\\"],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[7,\\\"i\\\",true],[8],[1,[28,\\\"moment-format\\\",[[24,[\\\"expires\\\"]],\\\"L\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/competence-card/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { inject as service } from '@ember/service';\nimport { action, set } from '@ember/object';\nimport fetch from 'fetch';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class CustomExportComponent extends Component {\n    @service('collector-service') collector;\n    @service router;\n    @service store;\n    @service intl;\n    @service error;\n    @service() notifications;\n    @service ttapi;\n    @service('export-file') exportFile;\n    @service dialogs;\n\n    defaultsForCustomExport = {\n        encoding: 'utf8',\n        separator: 'comma',\n        decimal: 'colon',\n        linebreak: 'lf',\n        headers: true,\n        integrationtype: 'salary',\n        absences: true,\n        templateId: null,\n        orderBy: [],\n        absencesAfterWorktimes: false,\n    };\n\n    texts = {\n        utf8: 'Unicode UTF-8',\n        latin1: 'Latin 1',\n        lf: 'LF',\n        lfcr: 'LFCR',\n        showIntegration: 'show integration',\n    };\n\n    get styleNamespace() {\n        return podNames['custom-export-comp'];\n    }\n\n    get columnList() {\n        return this.createColumnList();\n    }\n\n    @tracked isLoadingPreview = false;\n    @tracked isSaving = false;\n    @tracked isLoadingFile = false;\n    @tracked exportList = [];\n    @tracked validate = false;\n    @tracked absenceTypes = [];\n    @tracked record;\n    @tracked templateList = [];\n\n    constructor() {\n        super(...arguments);\n        this.loadExportList();\n        this.createTemplateList();\n        set(this, 'record', this.store.createRecord('custom-export', this.defaultsForCustomExport));\n        set(this, 'filterPreview', {\n            date:\n                moment().startOf('week').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('week').format('YYYY-MM-DD'),\n        });\n        set(this, 'dateFormatList', ['YYYY-MM-DD', 'DD.MM.YYYY', 'YYYY/MM/DD']);\n        this.absenceTypes = this.getAbsenceTypes();\n    }\n\n    @action\n    addColumn() {\n        if (!this.record.columns) this.record.columns = [{}];\n        else this.record.columns.pushObject({});\n    }\n\n    @action\n    async save() {\n        this.isSaving = true;\n        this.validate = false;\n\n        if (this.checkValidations()) {\n            this.validate = true;\n            this.isSaving = false;\n            return;\n        }\n\n        const firstSave = this.record.isNew;\n        try {\n            await this.record.save();\n            if (firstSave) this.loadExportList();\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n        } catch (e) {\n            this.notifications.error(this.error.toString(e), { autoClear: true });\n        }\n        this.isSaving = false;\n    }\n\n    @action\n    delete(column) {\n        this.record.columns.removeObject(column);\n    }\n\n    @action\n    move(direction, column) {\n        const originalIndex = this.record.columns.indexOf(column);\n\n        if (direction === 'up') {\n            if (originalIndex === 0) return;\n            this.record.columns.removeObject(column);\n            this.record.columns.insertAt(originalIndex - 1, column);\n        }\n\n        if (direction === 'down') {\n            if (originalIndex === this.record.columns.length - 1) return;\n            this.record.columns.removeObject(column);\n            this.record.columns.insertAt(originalIndex + 1, column);\n        }\n    }\n\n    @action\n    goto(record) {\n        set(this, 'record', record);\n    }\n\n    @action\n    createNew() {\n        set(this, 'record', this.store.createRecord('custom-export', this.defaultsForCustomExport));\n    }\n\n    @action\n    async remove(record) {\n        if (await this.dialogs.confirm(this.intl.t('general.remove_row'))) {\n            record.destroyRecord();\n            if (record === this.record)\n                set(\n                    this,\n                    'record',\n                    this.store.createRecord('custom-export', this.defaultsForCustomExport),\n                );\n        }\n    }\n\n    @action\n    updateColumnKey(column, event) {\n        const obj = this.columnList.findBy('key', event.target.value);\n\n        if (obj.type === 'date') set(column, 'dateformat', this.dateFormatList[0]); // auto select default dateformat\n\n        set(column, 'type', obj.type);\n        set(column, 'key', obj.key);\n    }\n\n    @action\n    filterChange(value, field) {\n        if (!field) return;\n        set(this.filterPreview, field, value);\n\n        if (this.previewHasBeenLoaded) this.updatePreview();\n    }\n\n    @action\n    async updatePreview() {\n        this.isLoadingPreview = true;\n        const data = await this.fetchExport();\n        set(this, 'previewStr', data);\n        set(this, 'previewHasBeenLoaded', true);\n        this.isLoadingPreview = false;\n    }\n\n    @action\n    async loadFile() {\n        this.isLoadingFile = true;\n        const data = await this.fetchExport();\n        this.exportFile.exportFile(data, 'preview', 'csv');\n        this.isLoadingFile = false;\n    }\n\n    @action\n    toggleType(type) {\n        this.record.integrationtype = type;\n        if (type === 'absences') this.record.absences = true;\n    }\n\n    @action\n    setAbsenceTypes(type) {\n        if (!this.record.absencetypes) this.record.absencetypes = [];\n        if (this.record.absencetypes.findBy('id', type.id)) {\n            this.record.absencetypes.removeObject(type);\n        } else {\n            this.record.absencetypes.pushObject(type);\n        }\n    }\n\n    get orderByOptions() {\n        return this.columnList.filter((col) => col.type !== 'static');\n    }\n\n    @action\n    setPeriodDate(column, event) {\n        const value = event.target.value;\n        if (value) {\n            set(column, 'periodDate', value);\n        } else {\n            delete column.periodDate;\n        }\n    }\n\n    @action\n    setOrderBy(option) {\n        if (!this.record.orderBy) this.record.orderBy = [];\n        const existing = this.record.orderBy.indexOf(option.key);\n        if (existing !== -1) {\n            this.record.orderBy.removeAt(existing);\n        } else {\n            this.record.orderBy.pushObject(option.key);\n        }\n    }\n\n    @action\n    removeOrderBy(key) {\n        if (!this.record.orderBy) return;\n        this.record.orderBy.removeObject(key);\n    }\n\n    checkValidations() {\n        let somethingIsMissing = false;\n        if (!this.record.name) somethingIsMissing = true;\n        if (this.record.columns) {\n            for (let column of this.record.columns) {\n                if (!column.header) somethingIsMissing = true;\n                if (column.type === 'database' && !column.subfield) somethingIsMissing = true;\n            }\n        }\n\n        return somethingIsMissing ? true : false;\n    }\n\n    async loadExportList() {\n        set(this, 'exportList', await this.store.query('custom-export', {}));\n    }\n\n    // Salary templates\n    createTemplateList() {\n        const personec = {\n            name: 'Personec',\n            columns: [\n                {\n                    header: 'Henkilönumero',\n                    type: 'database',\n                    key: 'user',\n                    subfield: 'number',\n                },\n                {\n                    header: 'Palkkalaji',\n                    key: 'salarycode',\n                },\n                {\n                    header: 'Määrä',\n                    key: 'amount',\n                },\n                {\n                    header: 'Päivämäärä',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'date',\n                },\n                {\n                    header: 'Seurantataso',\n                    type: 'database',\n                    key: 'project',\n                    subfield: 'number',\n                },\n            ],\n            encoding: 'utf8',\n            separator: 'semicolon',\n            decimal: 'comma',\n            linebreak: 'lf',\n            quotes: false,\n            headers: false,\n            integrationtype: 'salary',\n            absences: true,\n            onerowabsences: false,\n            orderBy: [],\n        };\n\n        const mepco = {\n            name: 'Mepco',\n            columns: [\n                {\n                    header: 'PVM',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'date',\n                },\n                {\n                    header: 'Filleri 1',\n                },\n                {\n                    header: 'TYNRO',\n                    type: 'database',\n                    key: 'user',\n                    subfield: 'number',\n                },\n                {\n                    header: 'PLNRO',\n                    key: 'salarycode',\n                },\n                {\n                    header: 'KPL/MÄÄRÄ',\n                    key: 'amount',\n                },\n                {\n                    header: 'Filleri2',\n                },\n                {\n                    header: 'KUSTPA',\n                    type: 'database',\n                    key: 'project',\n                    subfield: 'number',\n                },\n            ],\n            encoding: 'utf8',\n            separator: 'semicolon',\n            decimal: 'comma',\n            linebreak: 'lf',\n            quotes: false,\n            headers: false,\n            integrationtype: 'salary',\n            absences: true,\n            onerowabsences: false,\n            orderBy: [],\n        };\n\n        const procountor = {\n            name: 'Procountor',\n            columns: [\n                {\n                    header: 'Rivityyppi',\n                    type: 'static',\n                    key: 'static',\n                    static: 'E',\n                },\n                {\n                    header: 'Henkilönumero',\n                    type: 'database',\n                    key: 'user',\n                    subfield: 'number',\n                },\n                {\n                    header: 'Palkkalajin koodi',\n                    key: 'salarycode',\n                },\n                {\n                    header: 'Palkkalajin nimi',\n                },\n                {\n                    header: 'Rivin lukumäärä',\n                    key: 'amount',\n                },\n                {\n                    header: 'Rivin yksikköhinta',\n                },\n                {\n                    header: 'Dimension nimi 1',\n                },\n                {\n                    header: 'Nimikkeen nimi 1',\n                },\n                {\n                    header: 'Dimension nimi 2',\n                },\n                {\n                    header: 'Nimikkeen nimi 2',\n                },\n                {\n                    header: 'Dimension nimi 3',\n                },\n                {\n                    header: 'Nimikkeen nimi 3',\n                },\n                {\n                    header: 'Dimension nimi 4',\n                },\n                {\n                    header: 'Nimikkeen nimi 4',\n                },\n                {\n                    header: 'Dimension nimi 5',\n                },\n                {\n                    header: 'Nimikkeen nimi 5',\n                },\n                {\n                    header: 'Dimension nimi 6',\n                },\n                {\n                    header: 'Nimikkeen nimi 6',\n                },\n                {\n                    header: 'Ansaintajakson alku pvm',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'date',\n                },\n                {\n                    header: 'Ansaintajakson loppu pvm',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'date',\n                },\n                {\n                    header: 'Rivikommentti',\n                    type: 'textbox',\n                    key: 'description',\n                },\n            ],\n            encoding: 'utf8',\n            separator: 'semicolon',\n            decimal: 'colon',\n            linebreak: 'lf',\n            quotes: false,\n            headers: false,\n            integrationtype: 'salary',\n            absences: true,\n            onerowabsences: false,\n            orderBy: [],\n            templateId: 'Procountor',\n        };\n\n        const talenom_tyoajat = {\n            name: 'Talenom - Työajat',\n            columns: [\n                {\n                    header: 'PVM',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'date',\n                },\n                {\n                    header: 'TYNRO',\n                    type: 'database',\n                    key: 'user',\n                    subfield: 'number',\n                },\n                {\n                    header: 'PLAJI',\n                    key: 'salarycode',\n                },\n                {\n                    header: 'MÄÄRÄ',\n                    key: 'amount',\n                },\n                {\n                    header: 'TYHJÄ 1',\n                },\n                {\n                    header: 'TYHJÄ 2',\n                },\n                {\n                    header: 'TYHJÄ 3',\n                },\n                {\n                    header: 'PROJ',\n                    key: 'project',\n                    type: 'database',\n                    subfield: 'number',\n                },\n            ],\n            encoding: 'utf8',\n            separator: 'semicolon',\n            decimal: 'colon',\n            linebreak: 'lf',\n            quotes: false,\n            headers: false,\n            integrationtype: 'salary',\n            absences: false,\n            onerowabsences: false,\n        };\n\n        const talenom_poissaolot = {\n            name: 'Talenom - Poissaolot',\n            columns: [\n                {\n                    header: 'TYNRO',\n                    type: 'database',\n                    key: 'user',\n                    subfield: 'number',\n                },\n                {\n                    header: 'APVM',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'startdate',\n                },\n                {\n                    header: 'LPVM',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'enddate',\n                },\n                {\n                    header: 'KOODI',\n                    type: 'database',\n                    key: 'abcensetype',\n                    subfield: 'key',\n                },\n                {\n                    header: 'TUNNIT',\n                    type: 'hours',\n                    key: 'absence_hours',\n                },\n            ],\n            encoding: 'utf8',\n            separator: 'semicolon',\n            decimal: 'colon',\n            linebreak: 'lf',\n            quotes: false,\n            headers: false,\n            integrationtype: 'absences',\n            absences: true,\n            onerowabsences: true,\n        };\n\n        const talenom_vuosilomat = {\n            name: 'Talenom - Vuosilomat',\n            columns: [\n                {\n                    header: 'TYNRO',\n                    type: 'database',\n                    key: 'user',\n                    subfield: 'number',\n                },\n                {\n                    header: 'APVM',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'startdate',\n                },\n                {\n                    header: 'LPVM',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'enddate',\n                },\n                {\n                    header: 'KOODI',\n                    type: 'database',\n                    key: 'abcensetype',\n                    subfield: 'absence_code',\n                },\n            ],\n            encoding: 'utf8',\n            separator: 'semicolon',\n            decimal: 'colon',\n            linebreak: 'lf',\n            quotes: false,\n            headers: false,\n            integrationtype: 'absences',\n            absences: true,\n            onerowabsences: true,\n        };\n\n        const fennoa_tyoajat = {\n            name: 'Fennoa - Työajat',\n            columns: [\n                {\n                    header: 'Henkilönumero',\n                    type: 'database',\n                    key: 'user',\n                    subfield: 'number',\n                },\n                {\n                    header: 'Palkkalajin koodi',\n                    key: 'salarycode',\n                },\n                {\n                    header: 'Päivämäärä',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'date',\n                },\n                {\n                    header: 'Määrä',\n                    key: 'amount',\n                },\n                {\n                    header: 'Hinta',\n                },\n                {\n                    header: 'Kerroin',\n                },\n                {\n                    header: 'Selite',\n                },\n                {\n                    header: 'Poissaolo alkaa',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'startdate',\n                },\n                {\n                    header: 'Poissaolo päättyy',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'enddate',\n                },\n                {\n                    header: 'Poissaolo päivät',\n                    key: 'dayamount',\n                },\n                {\n                    header: 'Dimensio1',\n                },\n                {\n                    header: 'Dimensio2',\n                },\n                {\n                    header: 'Dimensio3',\n                },\n                {\n                    header: 'Dimensio4',\n                },\n            ],\n            encoding: 'utf8',\n            separator: 'semicolon',\n            decimal: 'colon',\n            linebreak: 'lf',\n            quotes: false,\n            headers: false,\n            integrationtype: 'salary',\n            absences: true,\n            onerowabsences: true,\n            templateId: 'Fennoa',\n            orderBy: [],\n        };\n\n        this.templateList = [\n            personec,\n            mepco,\n            procountor,\n            talenom_tyoajat,\n            talenom_poissaolot,\n            talenom_vuosilomat,\n            fennoa_tyoajat,\n        ];\n    }\n\n    @action\n    createTemplateFields(template) {\n        set(this, 'record', this.store.createRecord('custom-export', template));\n    }\n\n    createColumnList() {\n        const whiteListTypes = ['date', 'database', 'textbox'];\n        const absenceWhiteListTypes = ['date', 'database', 'textbox', 'hours', 'number'];\n        const blackListFields = [\n            'export_salary',\n            'salarytype',\n            'location',\n            'end_location',\n            'superior',\n        ];\n        const columnList = [\n            { key: 'static', name: this.intl.t('custom-export.static'), type: 'static' },\n            { key: 'salarycode', name: this.intl.t('custom-export.salary-code') },\n            { key: 'amount', name: this.intl.t('custom-export.amount') },\n        ];\n\n        if (this.record.integrationtype === 'salary') {\n            let worktimeFieldArray = this.collector\n                .fieldArray('worktime')\n                .filter(\n                    (item) =>\n                        whiteListTypes.includes(item.type) && !blackListFields.includes(item.name),\n                );\n            for (let field of worktimeFieldArray)\n                columnList.push({ key: field.name, name: field.translated_name, type: field.type });\n        }\n\n        if (this.record.absences) {\n            let absencesFieldArray = this.collector\n                .fieldArray('abcense')\n                .filter((item) => absenceWhiteListTypes.includes(item.type));\n            for (let field of absencesFieldArray) {\n                if (!columnList.findBy('key', field.name))\n                    columnList.push({\n                        key: field.name,\n                        name: field.translated_name,\n                        type: field.type,\n                    });\n            }\n            if (!columnList.findBy('key', 'date')) {\n                let dateField = this.collector.field('worktime', 'date');\n                columnList.push({\n                    key: dateField.name,\n                    name: dateField.translated_name,\n                    type: dateField.type,\n                });\n            }\n        }\n\n        return columnList.sort((a, b) => ('' + a.name).localeCompare(b.name));\n    }\n\n    async fetchExport() {\n        const headers = this.ttapi.headers;\n        headers['Content-Type'] = 'application/json';\n        const response = await fetch(\n            this.ttapi.host + '/api/custom-export?salaryversion=' + this.getVersion(),\n            {\n                headers: headers,\n                method: 'POST',\n                body: JSON.stringify(\n                    Object.assign(\n                        this.filterPreview,\n                        {\n                            limit: 25,\n                            preview: true,\n                            debug: this.debugShowIntegration ? 'integration' : null,\n                        },\n                        { export: this.record.toJSON() },\n                    ),\n                ),\n            },\n        );\n        return await response.text();\n    }\n\n    async getAbsenceTypes() {\n        const types = await this.store.findAll('abcensetype');\n        return types.map((type) => {\n            return { id: type.id, text: type.name };\n        });\n    }\n\n    getVersion() {\n        if (this.collector.testNeeds(['products.salarytype_v2'])) return 2;\n        else return 1;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"dh6U0mkl\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\",\\\"@remove\\\",\\\"@selected\\\",\\\"@disabled\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[23,4,[]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"custom-export.absencetypes.selected_amount\\\"],[[\\\"amount\\\"],[[23,3,[\\\"length\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@event\\\",\\\"@hideOn\\\",\\\"@side\\\",\\\"@delay\\\",\\\"@class\\\"],[\\\"hover\\\",\\\"mouseleave\\\",\\\"right\\\",700,\\\"ember-popover\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"popover-item\\\"],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross add-modal-cross\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,2,[]],[23,1,[]]],null]]],[8],[9],[1,[23,1,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/custom-export-comp/multi-select-amount/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"O/xniJkP\",\"block\":\"{\\\"symbols\\\":[\\\"key\\\",\\\"index\\\",\\\"@remove\\\",\\\"@selected\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[23,4,[\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"custom-export.orderby.selected_amount\\\"],[[\\\"amount\\\"],[[23,4,[\\\"length\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@event\\\",\\\"@hideOn\\\",\\\"@side\\\",\\\"@delay\\\",\\\"@class\\\"],[\\\"hover\\\",\\\"mouseleave\\\",\\\"right\\\",700,\\\"ember-popover\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,4,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"popover-item\\\"],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross add-modal-cross\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,3,[]],[23,1,[]]],null]]],[8],[9],[1,[28,\\\"add\\\",[[23,2,[]],1],null],false],[0,\\\". \\\"],[1,[23,1,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/custom-export-comp/order-by-select/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"wNJBIJeH\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"item\\\",\\\"option\\\",\\\"@createTemplateFields\\\",\\\"@onChange\\\",\\\"@remove\\\",\\\"@selected\\\",\\\"@createNew\\\",\\\"@options\\\",\\\"@templateList\\\"],\\\"statements\\\":[[5,\\\"basic-dropdown\\\",[],[[\\\"@verticalPosition\\\",\\\"@horizontalPosition\\\"],[\\\"below\\\",\\\"left\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Trigger\\\"]],[[12,\\\"data-anchor\\\",\\\"custom-export-basic-dropdown\\\"],[12,\\\"class\\\",\\\"ember-basic-dropdown-trigger  ember-power-select-trigger\\\"]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"data-anchor\\\",\\\"custom-export-selected-item\\\"],[10,\\\"class\\\",\\\"ember-power-select-selected-item\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[23,7,[\\\"name\\\"]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"ember-power-select-status-icon\\\"],[8],[9],[0,\\\"\\\\n\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Content\\\"]],[[12,\\\"data-anchor\\\",\\\"custom-export-basic-dropdown-content\\\"],[12,\\\"class\\\",\\\"ember-power-select-dropdown px-5 py-4\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,1,[\\\"actions\\\",\\\"close\\\"]]]]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",false],[12,\\\"role\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,8,[]]]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"custom-export.create\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"my-5\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"custom-export.custom.templates\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,9,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"py-1\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,5,[]],[23,3,[]]],null]]],[8],[1,[23,3,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"pull-right pl-6\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,6,[]],[23,3,[]]],null]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Delete\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"custom-export.templates\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,10,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"py-1\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"data-anchor\\\",\\\"custom-export-template-option\\\"],[12,\\\"role\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,4,[]],[23,2,[]]],null]]],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/custom-export-comp/select-export/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"z8ii/mMd\",\"block\":\"{\\\"symbols\\\":[\\\"column\\\",\\\"index\\\",\\\"subfield\\\",\\\"format\\\",\\\"col\\\",\\\"option\\\",\\\"option\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"query\\\"],[\\\"btn btn-visma btn-wide my-4\\\",[28,\\\"hash\\\",null,[[\\\"wizard\\\"],[\\\"help-custom-export\\\"]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"dashboard.show_info\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-33 pr-4\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"boxed\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.exports\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"custom-export-comp/select-export\\\",[],[[\\\"@options\\\",\\\"@templateList\\\",\\\"@selected\\\",\\\"@remove\\\",\\\"@onChange\\\",\\\"@createNew\\\",\\\"@createTemplateFields\\\"],[[23,0,[\\\"exportList\\\"]],[23,0,[\\\"templateList\\\"]],[23,0,[\\\"record\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"remove\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"goto\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"createNew\\\"]]],null],[28,\\\"fn\\\",[[24,[\\\"createTemplateFields\\\"]]],null]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.export_type\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"radio-button\\\",[],[[\\\"@value\\\",\\\"@groupValue\\\",\\\"@changed\\\"],[\\\"salary\\\",[23,0,[\\\"record\\\",\\\"integrationtype\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"toggleType\\\"]],\\\"salary\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"custom-export.export_type.salary\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[5,\\\"radio-button\\\",[],[[\\\"@value\\\",\\\"@groupValue\\\",\\\"@changed\\\"],[\\\"absences\\\",[23,0,[\\\"record\\\",\\\"integrationtype\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"toggleType\\\"]],\\\"absences\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"custom-export.export_type.absence\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\"],[[28,\\\"t\\\",[\\\"custom-export.name\\\"],null],true,[28,\\\"and\\\",[[28,\\\"not\\\",[[23,0,[\\\"record\\\",\\\"name\\\"]]],null],[23,0,[\\\"validate\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"record\\\",\\\"name\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.encoding\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"encoding\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"utf8\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"encoding\\\"]],\\\"utf8\\\"],null]],[8],[1,[23,0,[\\\"texts\\\",\\\"utf8\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"latin1\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"encoding\\\"]],\\\"latin1\\\"],null]],[8],[1,[23,0,[\\\"texts\\\",\\\"latin1\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.separator\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                     \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"separator\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"comma\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"separator\\\"]],\\\"comma\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.comma\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"semicolon\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"separator\\\"]],\\\"semicolon\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.semicolon\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"tab\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"separator\\\"]],\\\"tab\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.tabulator\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.decimal\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                     \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"decimal\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"colon\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"decimal\\\"]],\\\"colon\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.colon\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"comma\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"decimal\\\"]],\\\"comma\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.comma\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.linebreak\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                     \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"linebreak\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"lf\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"linebreak\\\"]],\\\"lf\\\"],null]],[8],[1,[23,0,[\\\"texts\\\",\\\"lf\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"lfcr\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"linebreak\\\"]],\\\"lfcr\\\"],null]],[8],[1,[23,0,[\\\"texts\\\",\\\"lfcr\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.quotes\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                     \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[23,0,[\\\"record\\\",\\\"quotes\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"quotes\\\"]]],null],[28,\\\"not\\\",[[23,0,[\\\"record\\\",\\\"quotes\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.headers\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                     \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[23,0,[\\\"record\\\",\\\"headers\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"headers\\\"]]],null],[28,\\\"not\\\",[[23,0,[\\\"record\\\",\\\"headers\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"integrationtype\\\"]],\\\"salary\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.absences\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@value\\\",\\\"@onToggle\\\",\\\"@size\\\",\\\"@theme\\\"],[[23,0,[\\\"record\\\",\\\"absences\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"absences\\\"]]],null],[28,\\\"not\\\",[[23,0,[\\\"record\\\",\\\"absences\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.absences.asOneRow\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@value\\\",\\\"@onToggle\\\",\\\"@size\\\",\\\"@theme\\\",\\\"@disabled\\\"],[[23,0,[\\\"record\\\",\\\"onerowabsences\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"onerowabsences\\\"]]],null],[28,\\\"not\\\",[[23,0,[\\\"record\\\",\\\"onerowabsences\\\"]]],null]],null],\\\"large\\\",\\\"light\\\",[28,\\\"not\\\",[[23,0,[\\\"record\\\",\\\"absences\\\"]]],null]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.absencetypes\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"power-select\\\",[],[[\\\"@placeholder\\\",\\\"@selected\\\",\\\"@selectedItemComponent\\\",\\\"@options\\\",\\\"@disabled\\\",\\\"@onChange\\\"],[[28,\\\"if\\\",[[23,0,[\\\"record\\\",\\\"absences\\\"]],[28,\\\"t\\\",[\\\"custom-export.absencetypes.export_all\\\"],null]],null],[23,0,[\\\"record\\\",\\\"absencetypes\\\"]],[28,\\\"component\\\",[\\\"custom-export-comp/multi-select-amount\\\"],[[\\\"selected\\\",\\\"remove\\\",\\\"disabled\\\"],[[23,0,[\\\"record\\\",\\\"absencetypes\\\"]],[23,0,[\\\"setAbsenceTypes\\\"]],[28,\\\"not\\\",[[23,0,[\\\"record\\\",\\\"absences\\\"]]],null]]]],[23,0,[\\\"absenceTypes\\\"]],[28,\\\"not\\\",[[23,0,[\\\"record\\\",\\\"absences\\\"]]],null],[23,0,[\\\"setAbsenceTypes\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[23,7,[\\\"text\\\"]],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.orderby\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"power-select\\\",[],[[\\\"@placeholder\\\",\\\"@selected\\\",\\\"@selectedItemComponent\\\",\\\"@options\\\",\\\"@onChange\\\"],[[28,\\\"t\\\",[\\\"custom-export.orderby.placeholder\\\"],null],[23,0,[\\\"record\\\",\\\"orderBy\\\"]],[28,\\\"component\\\",[\\\"custom-export-comp/order-by-select\\\"],[[\\\"selected\\\",\\\"remove\\\"],[[23,0,[\\\"record\\\",\\\"orderBy\\\"]],[23,0,[\\\"removeOrderBy\\\"]]]]],[23,0,[\\\"orderByOptions\\\"]],[23,0,[\\\"setOrderBy\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[23,6,[\\\"name\\\"]],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"integrationtype\\\"]],\\\"salary\\\"],null],[23,0,[\\\"record\\\",\\\"absences\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"data-anchor\\\",\\\"custom-export-absences-after-worktimes-field\\\"],[8],[0,\\\"\\\\n                        \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.absencesAfterWorktimes\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@value\\\",\\\"@onToggle\\\",\\\"@size\\\",\\\"@theme\\\"],[[23,0,[\\\"record\\\",\\\"absencesAfterWorktimes\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"absencesAfterWorktimes\\\"]]],null],[28,\\\"not\\\",[[23,0,[\\\"record\\\",\\\"absencesAfterWorktimes\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-66 pl-4\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"boxed\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"movenium-table\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"custom-export.index\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"custom-export.header\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"custom-export.column\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"custom-export.extra\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"record\\\",\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"add\\\",[[23,2,[]],1],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"not\\\",[[23,1,[\\\"header\\\"]]],null],[23,0,[\\\"validate\\\"]]],null],\\\"has-error\\\"],null]]]],[8],[0,\\\"\\\\n                                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"]],[[\\\"@value\\\"],[[23,1,[\\\"header\\\"]]]]],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"select\\\",false],[12,\\\"class\\\",\\\"form-control\\\"],[3,\\\"on\\\",[\\\"change\\\",[28,\\\"fn\\\",[[23,0,[\\\"updateColumnKey\\\"]],[23,1,[]]],null]]],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.choose\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"columnList\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,5,[\\\"key\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"key\\\"]],[23,5,[\\\"key\\\"]]],null]],[8],[1,[23,5,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[\\\"type\\\"]],\\\"static\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"]],[[\\\"@value\\\"],[[23,1,[\\\"static\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[\\\"type\\\"]],\\\"date\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,1,[\\\"dateformat\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"dateFormatList\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,4,[]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"dateformat\\\"]],[23,4,[]]],null]],[8],[1,[23,4,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[11,\\\"selected\\\",[28,\\\"not\\\",[[28,\\\"includes\\\",[[23,1,[\\\"dateformat\\\"]],[23,0,[\\\"dateFormatList\\\"]]],null]],null]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.customdate\\\"],null],false],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"not\\\",[[28,\\\"includes\\\",[[23,1,[\\\"dateformat\\\"]],[23,0,[\\\"dateFormatList\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"wrap-custom-dateformat\\\"],[8],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control display-inline\\\"]],[[\\\"@value\\\"],[[23,1,[\\\"dateformat\\\"]]]]],[0,\\\" \\\"],[5,\\\"help-bubble-icon\\\",[],[[\\\"@side\\\",\\\"@text\\\"],[\\\"left-start\\\",\\\"testing\\\"]]],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control mt-2\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[23,0,[\\\"setPeriodDate\\\"]],[23,1,[]]],null]],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[11,\\\"selected\\\",[28,\\\"not\\\",[[23,1,[\\\"periodDate\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.periodDate.none\\\"],null],false],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"start\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"periodDate\\\"]],\\\"start\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.periodDate.start\\\"],null],false],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"end\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"periodDate\\\"]],\\\"end\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.periodDate.end\\\"],null],false],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[\\\"type\\\"]],\\\"database\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"not\\\",[[23,1,[\\\"subfield\\\"]]],null],[23,0,[\\\"validate\\\"]]],null],\\\"has-error\\\"],null]]]],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,1,[\\\"subfield\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.choose\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"sort\\\",[[28,\\\"collector-field-list\\\",[[23,1,[\\\"key\\\"]]],[[\\\"onlyTypes\\\"],[\\\"textbox,number,date\\\"]]]],[[\\\"sortBy\\\"],[\\\"translated_name\\\"]]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,3,[\\\"name\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"subfield\\\"]],[23,3,[\\\"name\\\"]]],null]],[8],[1,[23,3,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"t\\\",[\\\"custom-export.no-extra\\\"],null],false],[0,\\\"\\\\n                                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"actions\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-SortDown\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"move\\\"]],\\\"down\\\",[23,1,[]]],null]]],[8],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-SortUp\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"move\\\"]],\\\"up\\\",[23,1,[]]],null]]],[8],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Delete\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"delete\\\"]],[23,1,[]]],null]]],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"validate\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.something_missing\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-33\\\"],[8],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-visma btn-wide\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"addColumn\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.add-column\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-33\\\"],[8],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\",\\\"@saveButtonText\\\"],[[22,\\\"isLoadingPreview\\\"],[28,\\\"fn\\\",[[23,0,[\\\"updatePreview\\\"]]],null],\\\"btn btn-visma btn-wide\\\",[28,\\\"t\\\",[\\\"custom-export.update-preview\\\"],null]]]],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-33\\\"],[8],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\",\\\"@saveButtonText\\\"],[[22,\\\"isSaving\\\"],[28,\\\"fn\\\",[[23,0,[\\\"save\\\"]]],null],\\\"btn btn-primary btn-wide\\\",[28,\\\"t\\\",[\\\"custom-export.save\\\"],null]]]],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"development\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column py-4\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[23,0,[\\\"debugShowIntegration\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"debugShowIntegration\\\"]]],null],[28,\\\"not\\\",[[23,0,[\\\"debugShowIntegration\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\" \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"px-5\\\"],[8],[1,[23,0,[\\\"texts\\\",\\\"showIntegration\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"custom-export.prevew\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"collector/form-report/filters\\\",[],[[\\\"@form\\\",\\\"@showColumns\\\",\\\"@values\\\",\\\"@change\\\"],[\\\"worktime\\\",\\\"date,employer,project,user\\\",[23,0,[\\\"filterPreview\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"filterChange\\\"]]],null]]]],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"preview\\\"],[8],[4,\\\"if\\\",[[24,[\\\"isLoadingPreview\\\"]]],null,{\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[22,\\\"previewStr\\\"],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"previewStr\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column center\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\"],[[22,\\\"isLoadingFile\\\"],[28,\\\"fn\\\",[[23,0,[\\\"loadFile\\\"]]],null],\\\"btn btn-visma\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"custom-export.load\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-download pl-4\\\"],[8],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/custom-export-comp/template.hbs\"}});","import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\n\nexport default Component.extend({\n    intl: service(),\n    analytics: service(),\n    gui: service(),\n    classNames: ['widget'],\n    attributeBindings: ['draggable', 'data-name'],\n    classNameBindings: ['dragClass'],\n    dragClass: 'inactive',\n    draggable: alias('editing'),\n    'data-name': alias('name'),\n\n    widgetPath: computed(function () {\n        return 'dash-board/widgets/' + get(this, 'name');\n    }),\n\n    helpBubbleText: computed('betaValue', function () {\n        if (!this.name) return '';\n        const translationName = this.betaValue ? this.name + '-beta' : this.name;\n        return 'widget.' + translationName + '.help';\n    }),\n\n    actions: {\n        removeMe() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'remove-' + get(this, 'name'),\n            });\n            this.onremove(this.name);\n        },\n\n        helpClicked() {\n            this.analytics.trackEvent({\n                category: 'widget',\n                action: 'help_opened',\n                property: get(this, 'name'),\n            });\n        },\n    },\n\n    dragStart(event) {\n        event.dataTransfer.setData('text/data', get(this, 'name'));\n        window.Tt4.draggedWidgetType = 'widget';\n    },\n\n    dragLeave(event) {\n        event.preventDefault();\n        set(this, 'dragClass', 'inactive');\n    },\n\n    dragOver(event) {\n        const itemType = window.Tt4.draggedWidgetType;\n        if (itemType === 'widget' || itemType === 'widgetIcon') {\n            event.preventDefault();\n            const { y, height } = event.target.getBoundingClientRect();\n            if (event.originalEvent.pageY - window.scrollY < y + height / 2) {\n                set(this, 'dragClass', 'active-up');\n            } else {\n                set(this, 'dragClass', 'active-down');\n            }\n        }\n    },\n\n    dragEnter(event) {\n        event.preventDefault();\n    },\n\n    drop(event) {\n        set(this, 'dragClass', 'inactive');\n        const data = event.dataTransfer.getData('text/data');\n        if (!data || data == this.name) return;\n        this.dropped(this.name, data, event);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"Jio8GdRn\",\"block\":\"{\\\"symbols\\\":[\\\"@name\\\",\\\"@toggleValue\\\",\\\"@declineBeta\\\",\\\"@betaValue\\\",\\\"@dontShowPopupAgain\\\",\\\"@popupText\\\",\\\"@tableLayout\\\",\\\"@changeLayout\\\",\\\"@moveWidget\\\",\\\"@position\\\",\\\"@betaFeatureToggle\\\",\\\"&default\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"editing\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"gui\\\",\\\"isMobileComputed\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"draggableArea\\\"],[11,\\\"data-name\\\",[22,\\\"name\\\"]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Delete\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeMe\\\"]],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"   \\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mobile-edit-container transform-widget\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"moving-buttons\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],[23,9,[]],[23,0,[]],\\\"top\\\"],null]],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,10,[]],\\\"top\\\"],null],\\\"disabled-moving-button\\\"],null],\\\" moving-button move-to-top\\\"]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-FastForwardUp\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],[23,9,[]],[23,0,[]],\\\"up\\\"],null]],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,10,[]],\\\"top\\\"],null],\\\"disabled-moving-button\\\"],null],\\\" moving-button move-up\\\"]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-MoveUp\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],[23,9,[]],[23,0,[]],\\\"bottom\\\"],null]],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,10,[]],\\\"bottom\\\"],null],\\\"disabled-moving-button\\\"],null],\\\" moving-button move-to-bottom\\\"]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-FastForwardDown\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],[23,9,[]],[23,0,[]],\\\"down\\\"],null]],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,10,[]],\\\"bottom\\\"],null],\\\"disabled-moving-button\\\"],null],\\\" moving-button move-down\\\"]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-MoveDown\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"moving-button delete-widget\\\"],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Delete\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeMe\\\"]],[8],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-header\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text\\\"],[8],[1,[22,\\\"header\\\"],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[23,7,[]],[28,\\\"not\\\",[[24,[\\\"editing\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"layout-buttons\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[\\\"move move-GridLayout \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[]],\\\"grid\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],[23,8,[]],\\\"grid\\\"]],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[\\\"move move-ReportLayout \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[]],\\\"report\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],[23,8,[]],\\\"report\\\"]],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,11,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"beta-toggle\\\",[],[[\\\"@label\\\",\\\"@toggleValue\\\",\\\"@declineBeta\\\",\\\"@value\\\",\\\"@dontShowPopupAgain\\\",\\\"@popupText\\\"],[[23,1,[]],[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"helpBubbleText\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"widget-help-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"helpClicked\\\"]],[8],[0,\\\"\\\\n            \\\"],[5,\\\"help-bubble-icon\\\",[],[[\\\"@vismaIcon\\\",\\\"@side\\\",\\\"@key\\\"],[\\\"vismaicon vismaicon-dynamic vismaicon-info\\\",\\\"left-start\\\",[22,\\\"helpBubbleText\\\"]]],{\\\"statements\\\":[],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-content\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[14,12],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/base-widget/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set, setProperties } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { later, debounce, next } from '@ember/runloop';\nimport Ember from 'ember';\n\nexport default Component.extend({\n    intl: service(),\n    collector: service('collector-service'),\n    flags: service(),\n    gui: service(),\n    store: service(),\n    localstorage: service(),\n    analytics: service(),\n    evented: service(),\n    userSettings: service(),\n\n    widgets: computed(function () {\n        const widgets = [\n            {\n                needs: [\n                    'worktime',\n                    'worktime@add',\n                    'modulecontrol.worktimes',\n                    'flag.clockcard-25||!products.gps_force',\n                    '!products.timetracker_hours',\n                ],\n                name: 'timecard',\n                icon: 'Time',\n                header: this.intl.t('header.path.add.timecard'),\n            },\n            {\n                needs: [\n                    'worktime',\n                    'worktime@add',\n                    '!products.timetracker_clockcard||!userlevel=1?',\n                    'modulecontrol.worktimes',\n                ],\n                name: 'worktime-add',\n                icon: 'Time',\n                header: this.intl.t('widget.worktime-add.header'),\n            },\n            { needs: ['userHasSaldos'], name: 'saldo', icon: 'Timespan', header: 'Saldo' },\n            {\n                needs: ['worktime', 'modulecontrol.worktimes'],\n                name: 'worktime-calendar',\n                icon: 'Calendar',\n                header: this.intl.t('widget.worktime-calendar.header'),\n                wide: true,\n            },\n            {\n                needs: [\n                    '!mobileView',\n                    'worktime',\n                    'worktime@add',\n                    'modulecontrol.worktimes',\n                    '!products.gps_force',\n                ],\n                name: 'my-sites',\n                icon: 'MySites',\n                header: this.intl.t('widget.my-sites.header'),\n                wide: true,\n            },\n            {\n                needs: [\n                    'worktime',\n                    'products.absences',\n                    '!customersetting.hide_holidays',\n                    'holiday@access',\n                ],\n                name: 'holiday',\n                icon: 'Sun',\n                header: this.intl.t('widget.holiday.header'),\n            },\n            {\n                needs: ['worktime', 'products.absences'],\n                name: 'absence',\n                icon: 'Cup',\n                header: this.intl.t('widget.absence.header'),\n            },\n            {\n                needs: [],\n                name: 'custom-help',\n                icon: 'FAQ',\n                header: this.intl.t('widget.custom-help.header'),\n            },\n            {\n                needs: [\n                    'worktime',\n                    'salarytype||salarytypev2',\n                    'salarytype@access||salarytypev2@access',\n                ],\n                name: 'salary-sum',\n                icon: 'Timespan',\n                header: this.intl.t('widget.salary-sum.header'),\n            },\n            {\n                needs: ['products.worktimebank'],\n                name: 'bank',\n                icon: 'Timespan',\n                header: this.intl.t('widget.bank.header'),\n            },\n            {\n                needs: [],\n                name: 'promo-messages',\n                icon: 'Message',\n                header: this.intl.t('widget.promoMessages.header'),\n            },\n            {\n                needs: ['worktime||presence', '!userlevel=1?'],\n                name: 'working-now',\n                icon: 'Calendar',\n                header: this.intl.t('widget.working-now.header'),\n            },\n            {\n                needs: [\n                    'employer',\n                    'employer@access',\n                    'employer.tv_status',\n                    'worktime.project||presence.project',\n                ],\n                name: 'tv-status',\n                icon: 'PieChart',\n                header: this.intl.t('widget.tv-status.header'),\n            },\n            {\n                needs: ['worktime', 'products.absences', '!userlevel=1,9?'],\n                name: 'absentees',\n                icon: 'Calendar',\n                header: this.intl.t('widget.absentees.header'),\n            },\n        ];\n\n        if (this.flags.test('anomality-widget')) {\n            widgets.unshift({\n                needs: [\n                    'products.saldo||worktime||products.orientations||export_taxman',\n                    '!userlevel=1',\n                ],\n                name: 'anomalities',\n                icon: 'Expired',\n                header: this.intl.t('widget.anomalities.header'),\n            });\n        }\n\n        return widgets.filter((item) => this.collector.testNeeds(item.needs));\n    }),\n\n    hidden_widgets: computed('widgets', 'widget_columns', function () {\n        const allWidgets = this.widgets;\n        const shownWidgets = this.widget_columns;\n        let hidden_widgets = [];\n        if (this.isMobileOrEditingMobile) {\n            allWidgets\n                .filter((widget) => !widget.needs.includes('!mobileView'))\n                .forEach((widget) => {\n                    if (shownWidgets.mobile.findBy('name', widget.name)) return;\n                    hidden_widgets.push(widget);\n                });\n        } else {\n            allWidgets.forEach((widget) => {\n                if (shownWidgets.left.findBy('name', widget.name)) return;\n                if (shownWidgets.center.findBy('name', widget.name)) return;\n                if (shownWidgets.right.findBy('name', widget.name)) return;\n                hidden_widgets.push(widget);\n            });\n        }\n        return hidden_widgets;\n    }),\n\n    widget_columns: computed('isMobileOrEditingMobile', function () {\n        const dashboard = this.localstorage.getItem('dashboard');\n        const dashboardMobile = this.localstorage.getItem('dashboard-mobile');\n\n        if (this.isMobileOrEditingMobile && dashboardMobile) {\n            return {\n                mobile: this.mapWidgetsAndFilter(dashboardMobile.mobile),\n            };\n        } else if (!this.isMobileOrEditingMobile && dashboard) {\n            return {\n                left: this.mapWidgetsAndFilter(dashboard.left),\n                center: this.mapWidgetsAndFilter(dashboard.center),\n                right: this.mapWidgetsAndFilter(dashboard.right),\n            };\n        }\n\n        return this.default_widgets;\n    }),\n\n    default_widgets: computed(function () {\n        // 'hide-dashboard-widgets' LD flag (JSON array of widget names) lets us hide widgets by default for individual services.\n        // Filtered here, not in `widgets`, so the widget stays in hidden_widgets and the user can still drag it back.\n        // Array.isArray guard: if the flag is misconfigured (wrong type), fall back to no hiding instead of crashing the dashboard.\n        const rawList = this.flags.variation('hide-dashboard-widgets', []);\n        const hideList = Array.isArray(rawList) ? rawList : [];\n        const visibleWidgets = this.widgets.filter((w) => !hideList.includes(w.name));\n        const narrow_widgets = visibleWidgets.filter((item) => !item.wide);\n        const slice_from = Math.floor(narrow_widgets.length / 2);\n\n        return {\n            left: narrow_widgets.slice(0, slice_from),\n            center: visibleWidgets.filter((item) => item.wide),\n            right: narrow_widgets.slice(slice_from, narrow_widgets.length),\n            mobile: visibleWidgets.filter((widget) => !widget.needs.includes('!mobileView')),\n        };\n    }),\n\n    isMobileOrEditingMobile: computed('dashboardView', function () {\n        return this.gui.isMobile() || this.dashboardView === 'mobile';\n    }),\n\n    projectField: computed('project', function () {\n        const form = this.Collector.fieldExists('worktime', 'project') ? 'worktime' : 'presence';\n        let field = this.collector.field(form, 'project');\n        if (field) {\n            field.prompt = 'general.all_projects';\n        }\n        return field;\n    }),\n\n    init() {\n        this._super(...arguments);\n        this.dashboardView = 'browser';\n        this.evented.on('onResumed', this, 'onResumed');\n        set(this, 'refreshTime', new Date()); // this is shown in template\n        if (!Ember.testing) later(this, this.autorefresh, 30 * 60 * 1000); // 30 minutes\n        this.doTheseBeforeRender();\n    },\n\n    didInsertElement() {\n        this.loadDashboard();\n    },\n\n    didDestroyElement() {\n        this.evented.off('onResumed', this, 'onResumed');\n    },\n\n    actions: {\n        projectFilterChange(project) {\n            this.analytics.trackEvent({ category: 'Dashboard', action: 'main project filter changed' });\n            set(this, 'project', project?.id);\n            this.evented.dashboardProjectChanged(project);\n        },\n\n        toggleEdit() {\n            this.toggleProperty('editingDashboard');\n            this.analytics.trackEvent({ category: 'Dashboard', action: 'edit-mode' });\n            window.Tt4.draggedWidgetType = null;\n            if (this.editingDashboard) {\n                set(this, 'gui.sidebar', false);\n            } else {\n                this.gui.resetSidebar();\n                this.send('changeView', 'browser'); //to load the correct view when exiting edit mode\n            }\n        },\n\n        async onremove(name) {\n            this.analytics.trackEvent({ category: 'Dashboard', action: `Widget removed: ${name}` });\n            let widgetStrings = this.moveWidgets(name);\n            await this.saveDashboard(widgetStrings);\n            this.evented.storeEvent('insert', 'dashboard', null);\n        },\n\n        widgetDropped(dropTargetName, dropWidgetName, event) {\n            this.analytics.trackEvent({ category: 'Dashboard', action: `Widget moved` });\n\n            const { y, height } = event.target.getBoundingClientRect();\n            // set(this, 'dragClass', 'active-down')\n            const dropPlacement =\n                event.originalEvent.pageY - window.scrollY < y + height / 2 ? 'above' : 'below';\n\n            let widgetStrings = this.moveWidgets(dropWidgetName, dropTargetName, dropPlacement);\n            this.saveDashboard(widgetStrings);\n        },\n\n        async changeView(view) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Edit view changed to ${view}`,\n            });\n            set(this, 'dashboardView', view);\n            set(this, 'loading', true);\n            await this.loadDashboard();\n            set(this, 'loading', false);\n        },\n\n        refresh() {\n            this.analytics.trackEvent({ category: 'Dashboard', action: 'Refresh' });\n            // prevent fast clicking\n            debounce(this, this.refreshDebounce, 1000, true);\n        },\n        async moveWidget(widget, direction) {\n            this.disableScrolling(); // we have to disable scrolling because if we unshift objects to the top of the array the page jumps to the top without smooth scrolling\n\n            let widgets = this.widget_columns.mobile;\n            let currentWidget = widgets.findBy('name', widget.name);\n            let currentIndex = widgets.indexOf(currentWidget);\n\n            if (direction == 'up' && currentIndex - 1 >= 0) {\n                widgets.removeObject(currentWidget);\n                widgets.insertAt(currentIndex - 1, currentWidget);\n            } else if (direction == 'down' && currentIndex + 1 < widgets.length) {\n                widgets.removeObject(currentWidget);\n                widgets.insertAt(currentIndex + 1, currentWidget);\n            } else if (direction == 'bottom') {\n                widgets.removeObject(currentWidget);\n                widgets.pushObject(currentWidget);\n            } else if (direction == 'top') {\n                widgets.removeObject(currentWidget);\n                widgets.unshiftObject(currentWidget);\n            }\n\n            let widgetNames = widgets.reduce((acc, widget) => {\n                acc.push(widget.name);\n                return acc;\n            }, []);\n\n            this.saveDashboard({ mobile: widgetNames.join() });\n\n            next(this, () => {\n                this.enableScrolling(); // we can enable scrolling once again so we can smoothly scroll to correct position\n                this.evented.storeEvent('insert', 'dashboard', null);\n                let element = document.querySelector(\"[data-name='\" + widget.name + \"']\");\n                element.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' });\n            });\n        },\n\n        async addWidget(widget) {\n            let widgets = this.widget_columns.mobile;\n            let widgetNames = widgets.reduce((acc, widget) => {\n                acc.push(widget.name);\n                return acc;\n            }, []);\n            widgetNames.unshiftObject(widget.name);\n            await this.saveDashboard({ mobile: widgetNames.join() });\n            this.evented.storeEvent('insert', 'dashboard', null);\n        },\n    },\n\n    async doTheseBeforeRender() {\n        set(this, 'loading', true);\n\n        //check if 'user has saldo on' info is not found form localstorage or if userSettings has different value than localstorage\n        //if so, refresh userSettings\n        //why? because first time user logs in dashboard is rendered before user-settings service has checked if user has saldos\n        if (this.localstorage.getItem('saldosOn') === null || (this.userSettings.hasSaldos != this.localstorage.getItem('saldosOn'))) {\n            await this.userSettings.setUserSettings();\n        }\n\n        set(this, 'loading', false);\n    },\n\n    refreshDebounce() {\n        get(this, 'evented').resumed({ force: true });\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n\n        set(this, 'refreshTime', new Date()); // this is shown in template\n    },\n\n    autorefresh() {\n        if (this.isDestroyed) return;\n\n        // stop autorefreshing after 3 days .. just for case\n        if (get(this, 'evented').getOntime() > 3 * 24 * 3600) return;\n\n        get(this, 'evented').resumed({ force: true });\n        later(this, this.autorefresh, 30 * 60 * 1000); // 30 minutes\n    },\n\n    async loadDashboard() {\n        let dashboards;\n        try {\n            dashboards = this.isMobileOrEditingMobile\n                ? await this.store.query('dashboard-mobile', {})\n                : await this.store.query('dashboard', {});\n        } catch (error) {\n            // no need for actions .. we just use what is in ls\n            return;\n        }\n\n        if (this.isMobileOrEditingMobile) {\n            // dashboard is different in database and localstorage .. update localstorage and inform widget_columns to reload\n            if (\n                JSON.stringify(this.localstorage.getItem('dashboard-mobile')) !==\n                JSON.stringify(get(dashboards, 'firstObject') || null)\n            ) {\n                if (get(dashboards, 'firstObject'))\n                    this.localstorage.setItem('dashboard-mobile', get(dashboards, 'firstObject'));\n                else this.localstorage.removeItem('dashboard-mobile');\n            }\n        } else {\n            // dashboard is different in database and localstorage .. update localstorage and inform widget_columns to reload\n            if (\n                JSON.stringify(this.localstorage.getItem('dashboard')) !==\n                JSON.stringify(get(dashboards, 'firstObject') || null)\n            ) {\n                if (get(dashboards, 'firstObject'))\n                    this.localstorage.setItem('dashboard', get(dashboards, 'firstObject'));\n                else this.localstorage.removeItem('dashboard');\n            }\n        }\n        this.notifyPropertyChange('widget_columns');\n    },\n\n    async saveDashboard(dashboard) {\n        this.isMobileOrEditingMobile\n            ? this.localstorage.setItem('dashboard-mobile', dashboard)\n            : this.localstorage.setItem('dashboard', dashboard);\n        this.notifyPropertyChange('widget_columns');\n        const storeDashboards = this.isMobileOrEditingMobile\n            ? this.store.peekAll('dashboard-mobile')\n            : this.store.peekAll('dashboard');\n        let storeBoard = '';\n        if (get(storeDashboards, 'length') > 0) {\n            storeBoard = get(storeDashboards, 'firstObject');\n        } else {\n            storeBoard = this.isMobileOrEditingMobile\n                ? this.store.createRecord('dashboard-mobile', dashboard)\n                : this.store.createRecord('dashboard', dashboard);\n        }\n        setProperties(storeBoard, dashboard);\n        return storeBoard.save();\n    },\n\n    moveWidgets(move, moveAt = false, dropPlacement) {\n        let lsWidgets = this.localstorage.getItem('dashboard');\n        let mobileLsWidgets = this.localstorage.getItem('dashboard-mobile');\n        let widgets = {};\n        if (this.isMobileOrEditingMobile && mobileLsWidgets) {\n            widgets = {\n                mobile: this.mapWidgetsAndFilter(mobileLsWidgets.mobile),\n            };\n        } else if (!this.isMobileOrEditingMobile && lsWidgets) {\n            widgets = {\n                left: this.mapWidgetsAndFilter(lsWidgets.left),\n                center: this.mapWidgetsAndFilter(lsWidgets.center),\n                right: this.mapWidgetsAndFilter(lsWidgets.right),\n            };\n        } else {\n            widgets = this.default_widgets;\n        }\n\n        if (this.isMobileOrEditingMobile)\n            return {\n                mobile: this.mapWidgetsToString(\n                    widgets.mobile,\n                    move,\n                    moveAt,\n                    'mobile',\n                    dropPlacement,\n                ),\n            };\n        return {\n            left: this.mapWidgetsToString(widgets.left, move, moveAt, 'left', dropPlacement),\n            center: this.mapWidgetsToString(widgets.center, move, moveAt, 'center', dropPlacement),\n            right: this.mapWidgetsToString(widgets.right, move, moveAt, 'right', dropPlacement),\n        };\n    },\n\n    mapWidgetsToString(widgets, move, moveAt, column, dropPlacement) {\n        let widgetNames = widgets.map((item) => item.name);\n        if (moveAt === column) {\n            if (widgetNames.includes(move)) {\n                widgetNames = widgetNames.filter((item) => item !== move);\n            }\n            widgetNames.push(move);\n            return widgetNames.join(',');\n        }\n\n        let indexMove = widgetNames.indexOf(move);\n        if (indexMove > -1) {\n            widgetNames.splice(indexMove, 1);\n        }\n\n        let index1 = widgetNames.indexOf(moveAt);\n        if (index1 > -1) {\n            if (dropPlacement === 'above') {\n                widgetNames.splice(index1, 0, move);\n            } else {\n                widgetNames.splice(index1 + 1, 0, move);\n            }\n        }\n\n        return widgetNames.join(',');\n    },\n\n    mapWidgetsAndFilter(str) {\n        if (!str) return [];\n        return str\n            .split(',')\n            .map((name) => this.widgets.find((item) => item.name === name))\n            .filter((item) => item);\n    },\n\n    disableScrolling() {\n        var x = window.scrollX;\n        var y = window.scrollY;\n        window.onscroll = function () {\n            window.scrollTo(x, y);\n        };\n    },\n    enableScrolling() {\n        window.onscroll = function () {};\n    },\n    position(index, count) {\n        if (index === 0) return 'top';\n        if (index === count - 1) return 'bottom';\n        return 'center';\n    },\n});\n","import Component from '@ember/component';\nimport { set } from '@ember/object';\n\nexport default Component.extend({\n    classNameBindings: ['dragClass'],\n    dragClass: 'inactive',\n\n    dragLeave(event) {\n        event.preventDefault();\n        set(this, 'dragClass', 'inactive');\n    },\n\n    dragOver(event) {\n        event.preventDefault();\n        set(this, 'dragClass', 'active');\n    },\n\n    dragEnter(event) {\n        event.preventDefault();\n    },\n\n    drop(event) {\n        set(this, 'dragClass', 'inactive');\n\n        const data = event.dataTransfer.getData('text/data');\n        if (!data) return;\n        this.dropped(this.name, data, event);\n    },\n});\n","import Component from '@ember/component';\nimport { set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport pdfExport from 'tt4/mixins/pdf-export';\n\nexport default Component.extend(pdfExport, {\n    intl: service(),\n    cordova: service('own-cordova-service'),\n    error: service(),\n\n    actions: {\n        async exportPdf() {\n            set(this, 'showLoader', true);\n            try {\n                await this.createPdf('download');\n            } catch (error) {\n                this.error.notify(error);\n            } finally {\n                set(this, 'showLoader', false);\n            }\n        },\n    },\n\n    async createPdf(mode = 'download') {\n        let showColumns = this.headers;\n        let element = await this.createPdfTableElement(\n            showColumns,\n            this.data,\n            this.translated_headers,\n        );\n        let elements = [element];\n        let file = await this.createPdfFromElements(elements, mode, '', 8);\n\n        if (window.cordova) {\n            this.cordova.openFile(file, 'application/pdf');\n        }\n        return file;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"sxRSo1Ut\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"export_button\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"exportPdf\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PDF-2Filled\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/export/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nexport default class GanttComponent extends Component {\n    get styleNamespace() {\n        return podNames['dash-board/gantt'];\n    }\n\n    get dates() {\n        const [start, end] = this.args.range.split('_');\n        let dates = [];\n        let date = start;\n        while (moment(date) < moment(end)) {\n            dates = [...dates, date];\n            date = moment(date).add(1, 'days');\n        }\n        dates = [...dates, moment(end)];\n        return dates;\n    }\n\n    get hideHeaders() {\n        let containerWidth = document.getElementsByClassName('data-container')[0].offsetWidth;\n        return (this.dates.length >= 14 && containerWidth < 320) || this.dates.length > 14\n            ? true\n            : false;\n    }\n}\n","import Component from '@glimmer/component';\nimport { get } from '@ember/object';\n\nexport default class RowCellComponent extends Component {\n    get isWeekend() {\n        const weekday = moment(this.args.date).format('d');\n        if (weekday == 0 || weekday == 6) return true;\n        return false;\n    }\n\n    get colorString() {\n        let row = this.args.row.firstObject;\n        let string = this.args.colorFields.reduce((acc, current) => {\n            acc += get(row, current);\n            return acc;\n        }, '');\n\n        return string;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"FRcCvzHJ\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"@row\\\",\\\"@popupFields\\\",\\\"@hideHeaders\\\"],\\\"statements\\\":[[7,\\\"td\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"isWeekend\\\"]],\\\"weekend\\\"],null],\\\" \\\",[28,\\\"if\\\",[[23,4,[]],\\\"hideHeaders\\\"],null]]]],[11,\\\"style\\\",[28,\\\"if\\\",[[23,2,[]],[28,\\\"concat\\\",[\\\"background-color:\\\",[28,\\\"randomize-color\\\",[[24,[\\\"colorString\\\"]]],null]],null]],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@delay\\\",\\\"@tooltipClass\\\",\\\"@side\\\"],[\\\"400\\\",\\\"help-tooltip\\\",\\\"right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"get\\\",[[23,2,[\\\"firstObject\\\"]],[28,\\\"concat\\\",[[23,1,[]]],null]],null],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/gantt/row-cell/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"zkY2ABuT\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"columndate\\\",\\\"date\\\",\\\"@colorFields\\\",\\\"@popupFields\\\",\\\"@data\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,6,[]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"data-container\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"th\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"hideHeaders\\\"]],\\\"hideHeaders\\\"],null]]]],[8],[1,[28,\\\"moment-format\\\",[[23,3,[]],\\\"D.M\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,6,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"dash-board/gantt/row-cell\\\",[],[[\\\"@date\\\",\\\"@row\\\",\\\"@colorFields\\\",\\\"@hideHeaders\\\",\\\"@popupFields\\\"],[[23,2,[]],[28,\\\"get\\\",[[23,1,[\\\"rows\\\"]],[28,\\\"moment-format\\\",[[23,2,[]],\\\"YYYY-MM-DD\\\"],null]],null],[23,4,[]],[23,0,[\\\"hideHeaders\\\"]],[23,5,[]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"mainHeader\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"no-data\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"icon move move-Search\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.no-content\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/gantt/template.hbs\"}});","import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    flags: service(),\n    classNames: ['widget-library'],\n    classNameBindings: ['nonFixedMode:non-fixed-mode'],\n    // if flag 'top-header-menu' is true then we add non-fixed-mode class to the component\n    nonFixedMode: computed(function () {\n        return this.flags.test('top-header-menu');\n    }),\n});\n","import Component from '@ember/component';\nimport { get } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nexport default Component.extend({\n    classNames: ['widget-thumbnail'],\n    attributeBindings: ['draggable', 'data-name'],\n    draggable: true,\n    'data-name': alias('widget.name'),\n    dragStart(event) {\n        event.dataTransfer.setData('text/data', get(this, 'widget.name'));\n        window.Tt4.draggedWidgetType = 'widgetIcon';\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"WZ+en7XU\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"p\\\",true],[8],[1,[24,[\\\"widget\\\",\\\"header\\\"]],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"p\\\",true],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"icon move move-\\\",[24,[\\\"widget\\\",\\\"icon\\\"]]]]],[8],[9],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/library/library-widget/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"cDC5Oz4a\",\"block\":\"{\\\"symbols\\\":[\\\"widget\\\",\\\"widget\\\",\\\"@addWidget\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"isMobile\\\"]]],null,{\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"dashboard.widget_library.title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"widgets\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"dash-board/library/library-widget\\\",null,[[\\\"widget\\\"],[[23,2,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\" \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"mobile-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"dashboard.widget_library.title\\\"],null],false],[9],[0,\\\"\\\\n \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mobile-widgets-library\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"widgets\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"widgets\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",false],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,3,[]],[23,1,[]]],null]]],[8],[1,[28,\\\"dash-board/library/library-widget\\\",null,[[\\\"widget\\\"],[[23,1,[]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-library\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-EmptyBox\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"all-widgets-added-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"dashboard.widget_library.all_widgets_added\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/library/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    intl: service(),\n\n    translated_headers: computed(function () {\n        let headers = get(this, 'headers');\n        return headers.map((header) =>\n            this.intl.t('widget.' + get(this, 'form') + '.table-header.' + header),\n        );\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"HzFS4fZZ\",\"block\":\"{\\\"symbols\\\":[\\\"rowData\\\",\\\"row\\\",\\\"header\\\",\\\"translated_header\\\",\\\"@rowClicked\\\"],\\\"statements\\\":[[7,\\\"table\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"translated_headers\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"th\\\",true],[8],[1,[23,4,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"await\\\",[[24,[\\\"data\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[11,\\\"onclick\\\",[28,\\\"if\\\",[[23,5,[]],[28,\\\"fn\\\",[[23,5,[]],[23,2,[]]],null]],null]],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[23,2,[\\\"class\\\"]],[23,2,[\\\"class\\\"]]],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"headers\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[]],\\\"status\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[28,\\\"get\\\",[[23,2,[]],[23,3,[]]],null],\\\"open\\\"],null],\\\"open-status\\\",\\\"approved-status\\\"],null]],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.\\\",[24,[\\\"form\\\"]],\\\".status.\\\",[28,\\\"get\\\",[[23,2,[]],[23,3,[]]],null]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[]],\\\"hours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"if\\\",[[28,\\\"get\\\",[[23,2,[]],[23,3,[]]],null],[28,\\\"format-hours\\\",[[28,\\\"get\\\",[[23,2,[]],[23,3,[]]],null]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"get\\\",[[23,2,[]],[23,3,[]]],null],false],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[3]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"no-rows-cell\\\"],[11,\\\"colspan\\\",[23,0,[\\\"headers\\\",\\\"length\\\"]]],[8],[1,[28,\\\"t\\\",[\\\"general.no_rows_found\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/table/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"dR/UYuov\",\"block\":\"{\\\"symbols\\\":[\\\"widget\\\",\\\"widget\\\",\\\"widget\\\",\\\"widget\\\",\\\"index\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"buttons flex-column align-center pt-3\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"gui\\\",\\\"isMobileComputed\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"query\\\"],[\\\"btn btn-xs btn-secondary dashboard-top-button\\\",[28,\\\"hash\\\",null,[[\\\"wizard\\\"],[\\\"dashboard-info-wizard\\\"]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"dashboard.show_info\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-xs btn-secondary dashboard-top-button\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggleEdit\\\"],null]],[8],[4,\\\"if\\\",[[24,[\\\"editingDashboard\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"dashboard.edit_mode_off\\\"],null],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"dashboard.edit_mode_on\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"gui\\\",\\\"isMobileComputed\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"editingDashboard\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"radio-buttons\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"browser\\\",[24,[\\\"dashboardView\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeView\\\",\\\"browser\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"dashboard.edit_mode_browser\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"mobile\\\",[24,[\\\"dashboardView\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeView\\\",\\\"mobile\\\"],null]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"t\\\",[\\\"dashboard.edit_mode_mobile\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"refresh\\\"],null]],[10,\\\"class\\\",\\\"btn btn-secondary refresh\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-refresh\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pl-3\\\"],[8],[1,[28,\\\"t\\\",[\\\"dashboard.last_refresh\\\"],[[\\\"time\\\"],[[28,\\\"moment-format\\\",[[24,[\\\"refreshTime\\\"]],\\\"HH:mm:ss\\\"],null]]]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime||presence\\\",\\\"!userlevel=1\\\",\\\"flag.dashboard-project\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pl-3\\\"],[8],[1,[28,\\\"collector/field-comp\\\",[[23,0,[\\\"projectField\\\"]]],[[\\\"change\\\",\\\"value\\\",\\\"usePowerDropdown\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"projectFilterChange\\\"],null],[24,[\\\"project\\\"]],true]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"dashboard-container \\\",[28,\\\"if\\\",[[24,[\\\"editingDashboard\\\"]],[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"dashboardView\\\"]],\\\"browser\\\"],null],\\\"edit-mode-br\\\",\\\"edit-mode-mb\\\"],null]],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"editingDashboard\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"dashboard-widget-library-container \\\",[28,\\\"unless\\\",[[28,\\\"flag\\\",[\\\"top-header-menu\\\"],null],\\\"dashboard-widget-library-absolute-position\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"dash-board/library\\\",null,[[\\\"widgets\\\",\\\"isMobile\\\",\\\"addWidget\\\",\\\"libraryUpdated\\\"],[[24,[\\\"hidden_widgets\\\"]],[24,[\\\"gui\\\",\\\"isMobileComputed\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addWidget\\\"],null],[24,[\\\"libraryUpdated\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dashboard-widgets-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isMobileOrEditingMobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"column\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"widget_columns\\\",\\\"mobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"concat\\\",[\\\"dash-board/widgets/\\\",[23,4,[\\\"name\\\"]]],null]],[[\\\"onremove\\\",\\\"dropped\\\",\\\"name\\\",\\\"editing\\\",\\\"icon\\\",\\\"header\\\",\\\"position\\\",\\\"moveWidget\\\",\\\"project\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"onremove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null],[23,4,[\\\"name\\\"]],[24,[\\\"editingDashboard\\\"]],[23,4,[\\\"icon\\\"]],[23,4,[\\\"header\\\"]],[28,\\\"call\\\",[[28,\\\"fn\\\",[[23,0,[\\\"position\\\"]],[23,5,[]],[24,[\\\"widget_columns\\\",\\\"mobile\\\",\\\"length\\\"]]],null]],null],[28,\\\"action\\\",[[23,0,[]],\\\"moveWidget\\\"],null],[24,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4,5]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"dash-board/empty-drop-zone\\\",null,[[\\\"name\\\",\\\"dropped\\\"],[\\\"mobile\\\",[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"column left-column\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"widget_columns\\\",\\\"left\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"concat\\\",[\\\"dash-board/widgets/\\\",[23,3,[\\\"name\\\"]]],null]],[[\\\"onremove\\\",\\\"dropped\\\",\\\"name\\\",\\\"editing\\\",\\\"icon\\\",\\\"header\\\",\\\"project\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"onremove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null],[23,3,[\\\"name\\\"]],[24,[\\\"editingDashboard\\\"]],[23,3,[\\\"icon\\\"]],[23,3,[\\\"header\\\"]],[24,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"dash-board/empty-drop-zone\\\",null,[[\\\"name\\\",\\\"dropped\\\"],[\\\"left\\\",[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"column center-column\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"widget_columns\\\",\\\"center\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"concat\\\",[\\\"dash-board/widgets/\\\",[23,2,[\\\"name\\\"]]],null]],[[\\\"onremove\\\",\\\"dropped\\\",\\\"name\\\",\\\"editing\\\",\\\"icon\\\",\\\"header\\\",\\\"project\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"onremove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null],[23,2,[\\\"name\\\"]],[24,[\\\"editingDashboard\\\"]],[23,2,[\\\"icon\\\"]],[23,2,[\\\"header\\\"]],[24,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"dash-board/empty-drop-zone\\\",null,[[\\\"name\\\",\\\"dropped\\\"],[\\\"center\\\",[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"column right-column\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"widget_columns\\\",\\\"right\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"concat\\\",[\\\"dash-board/widgets/\\\",[23,1,[\\\"name\\\"]]],null]],[[\\\"onremove\\\",\\\"dropped\\\",\\\"name\\\",\\\"editing\\\",\\\"icon\\\",\\\"header\\\",\\\"project\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"onremove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null],[23,1,[\\\"name\\\"]],[24,[\\\"editingDashboard\\\"]],[23,1,[\\\"icon\\\"]],[23,1,[\\\"header\\\"]],[24,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"dash-board/empty-drop-zone\\\",null,[[\\\"name\\\",\\\"dropped\\\"],[\\\"right\\\",[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\n\n/*\nShow skeleton component on widget first load, and normal loader on subsequent loads\nJust dump this component in the first line of the widget's template\n\n{{dash-board/widget-spinner promise=promise skeletonRows=<number>}}\n\nIf you have more than one promise use the promise-all helper\n{{dash-board/widget-spinner promise=(promise-all promise1 promise2 promise3)}}\n\n*/\n\nexport default Component.extend({\n    skeletonRows: 4,\n    firstLoad: true,\n\n    async didUpdateAttrs() {\n        if (!get(this, 'firstLoad')) return;\n        try {\n            await get(this, 'promise');\n            set(this, 'firstLoad', false);\n        } catch (e) {\n            set(this, 'firstLoad', false);\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"ia5qbe6k\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"promise\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"firstLoad\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"skeleton-component\\\",[],[[\\\"@rows\\\",\\\"@loader\\\"],[[22,\\\"skeletonRows\\\"],true]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"loader-icon\\\",[],[[\\\"@class\\\"],[\\\"component_overlay_loader\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widget-spinner/template.hbs\"}});","import Component from '@ember/component';\nimport { set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment-timezone';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n\n    init() {\n        this._super(...arguments);\n        this.headers = ['date', 'absencetype', 'status'];\n        this.form = 'absence';\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n    },\n\n    didInsertElement() {\n        set(this, 'data', this.getAbsences());\n    },\n\n    didDestroyElement() {\n        this._super(...arguments);\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'abcense') set(this, 'data', this.getAbsences());\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        set(this, 'data', this.getAbsences());\n    },\n\n    async getAbsences() {\n        if (!this.Collector.testNeedsOne('abcense')) return [];\n        let absences = await this.store.query('abcense', {\n            startdate_enddate:\n                moment().format('YYYY-MM-DD') + '_' + moment().add(2, 'years').format('YYYY-MM-DD'),\n            order: 'startdate,enddate',\n            user: this.session.currentUser.id,\n            sideload: ['abcensetype.name'],\n        });\n        let arr = [];\n\n        absences.forEach((data) => {\n            let enddate =\n                data.startdate !== data.enddate ? ' - ' + moment(data.enddate).format('L') : '';\n            arr.pushObject({\n                date: moment(data.startdate).format('L') + enddate,\n                absencetype: data.abcensetype.name,\n                status: data.status,\n            });\n        });\n        return arr;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"ZSY0Ys6/\",\"block\":\"{\\\"symbols\\\":[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,1,[]],[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[24,[\\\"data\\\"]],3]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/table\\\",null,[[\\\"data\\\",\\\"headers\\\",\\\"form\\\"],[[24,[\\\"data\\\"]],[24,[\\\"headers\\\"]],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/absence/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { action, set } from '@ember/object';\nimport { isEmpty } from '@ember/utils';\n\nexport default class AbsenteesComponent extends Component {\n    @service store;\n    @service intl;\n    @service('collector-service') Collector;\n    @service localstorage;\n    @service evented;\n    @service analytics;\n\n    @tracked data;\n    @tracked dateRange;\n    @tracked currentSalaryPeriod;\n    @tracked layout;\n    @tracked ganttData;\n    @tracked dateRanges;\n\n    get styleNamespace() {\n        return podNames['dash-board/widgets/absentees'];\n    }\n\n    get colorFields() {\n        return ['abcensetype.id'];\n    }\n\n    get popupFields() {\n        return ['dateRange', 'userName', 'absencetype', 'description'];\n    }\n\n    get absenceTypes() {\n        let field = this.Collector.field('abcense', 'abcensetype');\n        if (field) {\n            field.value = this.abcensetype;\n            field.prompt = 'general.all_absencetypes';\n        }\n        return field;\n    }\n\n    async getDateRanges() {\n        if (!this.currentSalaryPeriod) await this.setCurrentPeriod();\n        return [\n            {\n                key: 'this_week',\n                id:\n                    moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('isoWeek').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.this_week'),\n            },\n            {\n                key: 'this_and_next_week',\n                id:\n                    moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().add(1, 'week').endOf('isoWeek').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.this_and_next_week'),\n            },\n            {\n                key: 'this_month',\n                id:\n                    moment().startOf('month').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('month').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.this_month'),\n            },\n            {\n                key: 'next_month',\n                id:\n                    moment().add(1, 'month').startOf('month').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().add(1, 'month').endOf('month').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.next_month'),\n            },\n            {\n                key: 'this_salaryperiod',\n                id: this.currentSalaryPeriod,\n                name: this.intl.t('general.period.this_salaryperiod'),\n            },\n        ];\n    }\n\n    // Fetch absences for all users in batches\n    async fetchAllAbsencesInBatches() {\n        const allAbsences = [];\n        const limit = 100; // Fetch 100 records at a time\n        let offset = 0;\n        let hasMore = true;\n\n        while (hasMore) {\n            let batch = await this.store.query('abcense', {\n                startdate_enddate: this.dateRanges.filterBy('key', this.dateRange.key)[0]['id'],\n                order: 'startdate,enddate',\n                abcensetype: this.abcensetype,\n                sideload: true,\n                limit: limit,\n                offset: offset,\n            });\n\n            allAbsences.push(...batch.toArray());\n\n            if (batch.length < limit) {\n                hasMore = false;\n            } else {\n                offset += limit;\n            }\n        }\n\n        return allAbsences;\n    }\n\n    async getAbsences() {\n        if (!this.dateRanges) await this.setDateRanges();\n\n        const absences = await this.fetchAllAbsencesInBatches();\n        const formattedData = this.formatAbsences(absences);\n        this.ganttData = this.absencesByuser(formattedData);\n        return formattedData;\n    }\n\n    async setCurrentPeriod() {\n        let salaryPeriods = this.store.peekAll('wage-period');\n        if (isEmpty(salaryPeriods)) salaryPeriods = await this.store.findAll('wage-period');\n        if (isEmpty(salaryPeriods))\n            return (this.currentSalaryPeriod =\n                moment().startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('month').format('YYYY-MM-DD'));\n\n        const currentDate = moment().format('YYYY-MM-DD');\n        const currentPeriods = salaryPeriods.filter((period) => {\n            return period.period_start_date <= currentDate && period.period_end_date >= currentDate;\n        });\n        if (isEmpty(currentPeriods))\n            return (this.currentSalaryPeriod =\n                moment().startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('month').format('YYYY-MM-DD'));\n        // Just set first that is found\n        this.currentSalaryPeriod =\n            currentPeriods[0].period_start_date + '_' + currentPeriods[0].period_end_date;\n    }\n\n    constructor() {\n        super(...arguments);\n        this.data = this.getAbsences();\n        this.form = 'absence';\n        this.headers = ['userName', 'absencetype', 'start', 'end'];\n        this.layout = this.getFilter('absentee_widget_layout', 'table');\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n    }\n\n    @action\n    filterchanged(value, field) {\n        if (field && typeof field === 'string') {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Change ${field}`,\n                label: 'Absentees widget',\n            });\n            if (!value) set(this, field, null);\n            else set(this, field, value.id);\n        }\n        this.data = this.getAbsences();\n    }\n\n    @action\n    changeDate(value) {\n        if (value) this.dateRange = value;\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: `Change date range`,\n            label: 'Absentees widget',\n        });\n        this.setFilterToLS('absentee_widget_filter', this.dateRange);\n        this.data = this.getAbsences();\n    }\n\n    @action\n    changeLayout(layout) {\n        this.layout = layout;\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: `Use ${layout} layout`,\n            label: 'Absentees widget',\n        });\n        this.setFilterToLS('absentee_widget_layout', layout);\n    }\n\n    async setDateRanges() {\n        this.dateRanges = await this.getDateRanges();\n        let lsRange = this.getFilter('absentee_widget_filter', this.dateRanges[0]);\n        if (!lsRange.key) this.dateRange = this.dateRanges[0];\n        else this.dateRange = lsRange;\n    }\n\n    setFilterToLS(key, filter) {\n        this.localstorage.setItem(key, filter);\n    }\n\n    getFilter(key, defaultValue) {\n        let LSFilter = this.localstorage.getItem(key);\n        return LSFilter ? LSFilter : defaultValue;\n    }\n\n    formatAbsences(absences) {\n        return absences.map((item) => {\n            set(item, 'start', moment(item.startdate).format('L'));\n            set(item, 'end', moment(item.enddate).format('L'));\n            set(\n                item,\n                'dateRange',\n                moment(item.startdate).format('DD.MM') +\n                    ' - ' +\n                    moment(item.enddate).format('DD.MM'),\n            );\n            set(item, 'absencetype', item.abcensetype.name);\n            set(item, 'userName', item.user.firstname + ' ' + item.user.lastname);\n            return item;\n        });\n    }\n\n    absencesByuser(absences) {\n        let users = absences.reduce((acc, item) => {\n            let arr = [...acc, item.user];\n            return [...new Set(arr)];\n        }, []);\n\n        return users.map((user) => {\n            let arr = [];\n            let rows = this.formatganttData(absences.filterBy('user.id', user.id));\n            arr.rows = rows;\n            arr.mainHeader = user.firstname + ' ' + user.lastname;\n            return arr;\n        });\n    }\n\n    formatganttData(rows) {\n        return rows.reduce((acc, item) => {\n            const date = item.startdate;\n            if (!acc[date]) acc[date] = [];\n\n            if (item.enddate) {\n                let i = 1;\n                const moment_date = moment(date);\n                const diff = moment(item.enddate).diff(moment_date, 'day');\n                acc[date].push(item);\n                while (i <= diff) {\n                    const new_date = moment_date.add(1, 'day').format('YYYY-MM-DD');\n                    if (!acc[new_date]) acc[new_date] = [];\n                    acc[new_date].push(item);\n                    i++;\n                }\n            } else {\n                acc[date].push(item);\n            }\n            return acc;\n        }, {});\n    }\n    willDestroy() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n    }\n\n    onStoreEvent(params) {\n        if (params.type === 'abcense') this.data = this.getAbsences();\n    }\n\n    async onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        if (this.currentSalaryPeriod) {\n            // If dashboard is open for a long time, we have to update current period if its end date is past current date\n            const splitCurrent = this.currentSalaryPeriod.split('_');\n            if (splitCurrent[1] < moment().format('YYYY-MM-DD')) await this.setCurrentPeriod();\n        }\n        this.dateRanges = await this.getDateRanges();\n        if (this.dateRange.key) {\n            this.setFilterToLS(\n                'absentee_widget_filter',\n                this.dateRanges.filterBy('key', this.dateRange.key)[0],\n            );\n            this.dateRange = this.dateRanges.filterBy('key', this.dateRange.key)[0];\n        } else {\n            this.dateRange = this.dateRanges[0];\n        }\n        this.data = this.getAbsences();\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"yKfax/G0\",\"block\":\"{\\\"symbols\\\":[\\\"option\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@tableLayout\\\",\\\"@changeLayout\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,0,[\\\"layout\\\"]],[23,0,[\\\"changeLayout\\\"]],[23,8,[]],[23,9,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"dash-board/widget-spinner\\\",[],[[\\\"@promise\\\",\\\"@skeletonRows\\\"],[[23,0,[\\\"data\\\"]],4]]],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"fixed-flex-filters\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"collector/field-comp\\\",[],[[\\\"@field\\\",\\\"@change\\\",\\\"@_class\\\"],[[23,0,[\\\"absenceTypes\\\"]],[23,0,[\\\"filterchanged\\\"]],\\\"\\\"]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"power-select\\\",[],[[\\\"@selected\\\",\\\"@options\\\",\\\"@onChange\\\"],[[23,0,[\\\"dateRange\\\"]],[23,0,[\\\"dateRanges\\\"]],[23,0,[\\\"changeDate\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"layout\\\"]],\\\"grid\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"dash-board/gantt\\\",[],[[\\\"@data\\\",\\\"@range\\\",\\\"@colorFields\\\",\\\"@popupFields\\\"],[[23,0,[\\\"ganttData\\\"]],[23,0,[\\\"dateRange\\\",\\\"id\\\"]],[23,0,[\\\"colorFields\\\"]],[23,0,[\\\"popupFields\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"dash-board/table\\\",[],[[\\\"@data\\\",\\\"@headers\\\",\\\"@form\\\"],[[23,0,[\\\"data\\\"]],[23,0,[\\\"headers\\\"]],[23,0,[\\\"form\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/absentees/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n    ttapi: service(),\n    intl: service(),\n    localstorage: service(),\n    router: service(),\n    collector: service('collector-service'),\n    notifications: service(),\n    analytics: service(),\n    user: null,\n    project: null,\n    worktimegroup: null,\n    showOkAlso: true,\n\n    tableLayout: computed(function () {\n        if (this.localstorage.getItem('anomalitywidget-layout')) {\n            return this.localstorage.getItem('anomalitywidget-layout');\n        } else {\n            return 'report';\n        }\n    }),\n\n    missingWorktimesPerUser: computed('anomalities', async function () {\n        const anomalities = this.anomalities.findBy('type', 'missing_worktimes');\n        let data = anomalities.data;\n        const userIds = this.unique(data.mapBy('user'));\n        const users = anomalities.users;\n        return userIds.map((userid) => {\n            const user = users.findBy('id', userid);\n            const missing_dates = data\n                .filter((item) => item.user === userid)\n                .map((item) => item.date + ' 00:00:00Z');\n            return {\n                userid: userid,\n                name: `${user.firstname} ${user.lastname}`,\n                missing_dates: missing_dates,\n                email: user.email,\n                phone: user.phone,\n            };\n        });\n    }),\n\n    saldo: computed('anomalities', function () {\n        return get(this, 'anomalities').findBy('type', 'saldo').data;\n    }),\n\n    taxman_errors: computed('anomalities', function () {\n        return get(this, 'anomalities').findBy('type', 'taxman_errors').data;\n    }),\n\n    init() {\n        this._super();\n        const promise = this.loadAnomalities();\n        set(this, 'promise', promise);\n\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n        this.evented.on('dashboardProjectChanged', this, 'dashboardProjectChanged');\n    },\n\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n        this.evented.off('dashboardProjectChanged', this, 'dashboardProjectChanged');\n    },\n\n    actions: {\n        /* general actions */\n        setEditableSetting(setting) {\n            set(this, 'showSettings', false);\n            set(this, 'currentSetting', setting);\n        },\n        closeCurrentSetting() {\n            set(this, 'showSettings', true);\n            set(this, 'currentSetting', false);\n        },\n        changeLayout(layout) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Use ${layout} layout`,\n                label: 'Anomalities widget',\n            });\n            this.localstorage.setItem('anomalitywidget-layout', layout);\n            //set(this,'tableLayout',layout)\n            this.notifyPropertyChange('tableLayout');\n        },\n        gotoAnomality(anomality) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Binoculars clicked for ${anomality.type}`,\n                label: 'Anomalities widget',\n            });\n            if (anomality.link) {\n                this.router.transitionTo(anomality.link.route, {\n                    queryParams: anomality.link.query_params,\n                });\n            } else {\n                set(this, 'showAnomality', anomality.type);\n                set(this, 'anomalityValue', anomality.value);\n            }\n        },\n\n        /* settings-actions */\n        async saveSettings() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Save settings',\n                label: 'Anomalities widget',\n            });\n            set(this, 'showSettings', false);\n            set(this, 'promise', this.saveSettingsAndReloadAnomalities());\n        },\n\n        closeSettings() {\n            set(this, 'showSettings', false);\n            set(this, 'promise', this.loadAnomalities());\n        },\n\n        /* missing-worktimes actions */\n        async toggleCheckAll(check) {\n            let data = await this.missingWorktimesPerUser;\n            data.map((row) => set(row, 'checked', check));\n        },\n        async toggleCheckRow(row) {\n            set(row, 'checked', row.checked ? false : true);\n\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Show ${row.type} set ${row.checked}`,\n                label: 'Anomalities widget',\n            });\n\n            let missingWorktimes = await this.missingWorktimesPerUser;\n            if (!missingWorktimes) return;\n            set(this, 'allRowsChecked', missingWorktimes.isEvery('checked', true));\n        },\n\n        async sendNotificationToCheckedUsers() {\n            let users = [...(await this.missingWorktimesPerUser)];\n            let sendTo = users.filter((user) => user.checked);\n            let sendBy = this.getSendBySetting('missing_worktimes', 'push');\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Send notification to selected users by ${sendBy}`,\n                label: 'Anomalities widget',\n            });\n            sendTo.forEach((user) => {\n                let content = this.getNoticeContent(user);\n                this.sendNotice(sendBy, user, content);\n            });\n        },\n\n        showSettings() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Open settings',\n                label: 'Anomalities widget',\n            });\n            set(this, 'showSettings', true);\n        },\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime' || params.type === 'abcense')\n            set(this, 'promise', this.loadAnomalities());\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        set(this, 'promise', this.loadAnomalities());\n    },\n\n    getNoticeContent(user) {\n        let message = this.intl.t('widget.anomalities.missing-worktimes.noticeContent') + '\\n';\n        user.missing_dates.map((date) => (message += moment(date).format('DD.MM.') + ' '));\n        return message;\n    },\n\n    sendNotice(sendBy, user, content) {\n        let title = this.intl.t('widget.anomalities.missing-worktimes.noticeTitle');\n        switch (sendBy) {\n            case 'email':\n                if (user.email)\n                    return this.sender(\n                        'sendEmail',\n                        { email: user.email, title: title, content: content },\n                        user.name,\n                    );\n                return this.notifications.error(\n                    this.intl.t('widget.anomalities.missing-worktimes.noEmailAddress', {\n                        user: user.name,\n                    }),\n                    {\n                        autoClear: true,\n                    },\n                );\n\n            case 'sms':\n                if (user.phone)\n                    return this.sender(\n                        'sendSms',\n                        {\n                            phone: user.phone,\n                            messageid: 'anomalities_notice',\n                            language: moment.locale(),\n                            values: {\n                                days: user.missing_dates\n                                    .map((date) => moment(date).format('DD.MM.'))\n                                    .join(','),\n                            },\n                        },\n                        user.name,\n                    );\n                return this.notifications.error(\n                    this.intl.t('widget.anomalities.missing-worktimes.noPhone', {\n                        user: user.name,\n                    }),\n                    {\n                        autoClear: true,\n                    },\n                );\n\n            case 'push':\n                return this.sender(\n                    'push',\n                    { userids: JSON.stringify([user.userid]), title: title, message: content },\n                    user.name,\n                );\n        }\n    },\n    async sender(url, data, user) {\n        try {\n            await this.ttapi.request(url, {\n                dataType: 'text',\n                data: data,\n                method: 'post',\n            });\n        } catch (e) {\n            return this.notifications.error(e, { autoClear: true });\n        }\n        this.notifications.success(\n            this.intl.t('widget.anomalities.missing-worktimes.noticeSent', { user: user }),\n            {\n                autoClear: true,\n            },\n        );\n    },\n\n    async loadAnomalities() {\n        let c = this.collector;\n        const settings = await this.store.findAll('widget-anomalies-setting');\n\n        if (settings.findBy('name', 'show-ok'))\n            set(this, 'showOkAlso', settings.findBy('name', 'show-ok').value);\n\n        let arr = c.needsOfArray([\n            {\n                type: 'missing_worktimes',\n                needs: ['worktime'],\n                hasSettings: true,\n                checked: this.isChecked('missing_worktimes', settings),\n            },\n            {\n                type: 'saldo',\n                needs: ['products.saldo'],\n                checked: this.isChecked('saldo', settings),\n            },\n            {\n                type: 'ending_passes',\n                needs: ['products.orientations||products.orientations_new', 'orientation@access'],\n                hasSettings: true,\n                checked: this.isChecked('ending_passes', settings),\n                link: {\n                    route: 'orientations.passes',\n                    query_params: {\n                        order: 'pass_end-',\n                        'pass_end:pass_end': this.getDaterange('ending_passes'),\n                        'ori_site': this.project,\n                    },\n                },\n            },\n            {\n                type: 'unapproved_worktimes',\n                needs: ['worktime', 'worktime@access'],\n                hasSettings: true,\n                checked: this.isChecked('unapproved_worktimes', settings),\n                link: {\n                    route: 'timetracker.worktime-list',\n                    query_params: {\n                        date: this.getDaterange('unapproved_worktimes'),\n                        status: 'open',\n                        project: this.project,\n                    },\n                },\n            },\n            {\n                type: 'taxman_errors',\n                needs: [\n                    'export_taxman',\n                    '!userlevel=1?',\n                    'export_contact_person@access',\n                    'urakkaraportointi@access',\n                ],\n                checked: this.isChecked('taxman_errors', settings),\n            },\n            {\n                type: 'abcense',\n                needs: ['abcense'],\n                hasSettings: true,\n                checked: this.isChecked('abcense', settings),\n                link: {\n                    route: 'abcenses',\n                    query_params: { startdate: this.getDaterange('abcense'), status: 'open' },\n                },\n            },\n        ]);\n\n        const queryParams = ['show=' + arr.filterBy('checked', true).mapBy('type').join(',')];\n        if (arr.findBy('type', 'unapproved_worktimes'))\n            queryParams.push(\n                'unapproved_worktimes_date=' + this.getDaterange('unapproved_worktimes'),\n            );\n        if (arr.findBy('type', 'ending_passes'))\n            queryParams.push('ending_passes_date=' + this.getDaterange('ending_passes'));\n        if (arr.findBy('type', 'missing_worktimes')) {\n            queryParams.push('missing_worktimes_date=' + this.getDaterange('missing_worktimes'));\n            const setting = this.store\n                .peekAll('widget-anomalies-setting')\n                .findBy('name', 'missing_worktimes');\n            if (setting && setting.value.hideUserIds)\n                queryParams.push('missing_worktimes_hide=' + setting.value.hideUserIds.join(','));\n        }\n        if (arr.findBy('type', 'abcense'))\n            queryParams.push('abcense=' + this.getDaterange('abcense'));\n\n        if (this.project) queryParams.push('project=' + this.project);\n\n        set(this, 'anomalitiesSettings', arr);\n        // get values from backend\n        const response = await this.ttapi.request('api/anomalies?' + queryParams.join('&'));\n        for (let type in response) Object.assign(arr.findBy('type', type), response[type]);\n\n        set(this, 'anomalities', arr);\n    },\n\n    getDaterange(type) {\n        const setting = this.store.peekAll('widget-anomalies-setting').findBy('name', type);\n        const defaults = {\n            unapproved_worktimes: 7,\n            ending_passes: 7,\n            missing_worktimes: 'current_week',\n            abcense: 1,\n        };\n        const dateRange = setting ? setting.value.selectedDateRange : defaults[type];\n\n        if (type === 'ending_passes')\n            return (\n                moment().format('YYYY-MM-DD') +\n                '_' +\n                moment().add(dateRange, 'days').format('YYYY-MM-DD')\n            );\n        if (type === 'abcense')\n            return (\n                moment().subtract(3, 'month').format('YYYY-MM-DD') +\n                '_' +\n                moment().add(dateRange, 'months').format('YYYY-MM-DD')\n            );\n\n        if (dateRange === 'current_week')\n            return (\n                moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                '_' +\n                moment().format('YYYY-MM-DD')\n            );\n        if (dateRange === 'last_week')\n            return (\n                moment().startOf('isoWeek').subtract(1, 'week').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('isoWeek').subtract(1, 'week').format('YYYY-MM-DD')\n            );\n        if (dateRange === 'last_2_weeks')\n            return (\n                moment().startOf('isoWeek').subtract(2, 'week').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('isoWeek').subtract(1, 'week').format('YYYY-MM-DD')\n            );\n        if (dateRange === 'current_month')\n            return (\n                moment().startOf('month').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD')\n            );\n        if (dateRange === 'last_month')\n            return (\n                moment().subtract(1, 'month').startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().subtract(1, 'month').endOf('month').format('YYYY-MM-DD')\n            );\n\n        // default style is to calculate days backwards\n        return (\n            moment().subtract(dateRange, 'days').format('YYYY-MM-DD') +\n            '_' +\n            moment().format('YYYY-MM-DD')\n        );\n    },\n\n    getSendBySetting(type, defaultValue = null) {\n        const setting = this.store.peekAll('widget-anomalies-setting').findBy('name', type);\n        // if setting is never saved .. default to push\n        return setting ? setting.value.sendBy : defaultValue;\n    },\n\n    isChecked(name, settings) {\n        if (!settings.findBy('name', 'show-anomalies')) return true; // default is always on\n        return settings.findBy('name', 'show-anomalies').value.includes(name);\n    },\n\n    async saveSettingsAndReloadAnomalities() {\n        let record = this.store\n            .peekAll('widget-anomalies-setting')\n            .findBy('name', 'show-anomalies');\n        if (!record)\n            record = this.store.createRecord('widget-anomalies-setting', {\n                name: 'show-anomalies',\n            });\n        set(record, 'value', this.anomalitiesSettings.filterBy('checked', true).mapBy('type'));\n        await record.save();\n\n        let recordShowOk = this.store.peekAll('widget-anomalies-setting').findBy('name', 'show-ok');\n        if (!recordShowOk)\n            recordShowOk = this.store.createRecord('widget-anomalies-setting', { name: 'show-ok' });\n        set(recordShowOk, 'value', this.showOkAlso);\n        await recordShowOk.save();\n\n        await this.loadAnomalities();\n    },\n\n    unique(array) {\n        // https://stackoverflow.com/questions/1960473/get-all-unique-values-in-a-javascript-array-remove-duplicates\n        return [...new Set(array)];\n    },\n\n    dashboardProjectChanged(params) {\n        set(this, 'promise', this.loadAnomalities());\n        set(this, 'projectName', params.project?.name);\n    },\n});\n","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n    ttapi: service(),\n    error: service(),\n    intl: service(),\n    localstorage: service(),\n\n    init() {\n        this._super();\n        let forms = [];\n        if (this.Collector.testNeedsOne('worktime')) forms.push('worktime');\n        if (this.Collector.testNeedsOne('abcense')) forms.push('abcense');\n        this.forms = forms;\n        let own_settings = {}; //this.settings.findBy('type','missing_worktimes').settings;\n        if (!own_settings || !own_settings.unSelectedUsers) {\n            own_settings = { unSelectedUsers: [] };\n        }\n\n        set(this, 'own_settings', own_settings);\n        //set(this, 'settings', await this.data.settings);\n        //console.log(this.settings);\n    },\n\n    actions: {\n        check(row) {\n            this.toggleCheckRow(row);\n        },\n        checkAll() {\n            this.isChecked ? this.toggleCheckAll(false) : this.toggleCheckAll(true);\n            this.toggleProperty('isChecked');\n        },\n\n        sendNotificationToCheckedUsers() {\n            this.sendNotificationToCheckedUsers();\n        },\n        showAddModal(user, date) {\n            set(this, 'selectedUser', user);\n            set(this, 'selectedDate', date);\n            set(this, 'showAddModal', true);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"bjvMKM+J\",\"block\":\"{\\\"symbols\\\":[\\\"table\\\",\\\"user\\\",\\\"date\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"promise\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"centered-table\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"isChecked\\\"]],\\\"move move-CheckedCheckbox\\\",\\\"move move-UncheckedCheckbox\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"checkAll\\\"]],[8],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.user\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.date\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[23,0,[\\\"users\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,2,[\\\"userid\\\"]],[24,[\\\"own_settings\\\",\\\"unSelectedUsers\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[28,\\\"if\\\",[[23,2,[\\\"checked\\\"]],\\\"move move-CheckedCheckbox\\\",\\\"move move-UncheckedCheckbox\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"check\\\",[23,2,[]]]],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[\\\"missing_dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"missing-day\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showAddModal\\\",[23,2,[\\\"userid\\\"]],[23,3,[]]]],[8],[1,[28,\\\"moment-format\\\",[[23,3,[]],\\\"D.M.\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendNotificationToCheckedUsers\\\"]],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.send_to_selected\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[23,0,[\\\"showAddModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@header\\\",\\\"@close\\\"],[[28,\\\"moment-format\\\",[[23,0,[\\\"selectedDate\\\"]],\\\"dd DD[.]MM[.]\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"showAddModal\\\"]]],[[\\\"value\\\"],[null]]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"workday-summary\\\",[],[[\\\"@user\\\",\\\"@day\\\",\\\"@date\\\",\\\"@addForms\\\",\\\"@autoclose\\\",\\\"@close\\\"],[[23,0,[\\\"selectedUser\\\"]],[28,\\\"moment-format\\\",[[23,0,[\\\"selectedDate\\\"]],\\\"YYYY-MM-DD\\\"],null],[23,0,[\\\"selectedDate\\\"]],[23,0,[\\\"forms\\\"]],true,[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"showAddModal\\\"]]],[[\\\"value\\\"],[null]]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"edit\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"add\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/missing-worktimes/template.hbs\"}});","import Component from '@ember/component';\nimport { set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n\n    init() {\n        this._super();\n        this.load();\n    },\n\n    async load() {\n        await this.store.query('user', { id: this.data.mapBy('saldos.userid').join(','), limit: 'all' });\n\n        const over = [];\n        const under = [];\n        for (let row of this.data) {\n            const user = this.store.peekRecord('user', row.saldos.userid);\n            const add = {\n                name: `${user.firstname} ${user.lastname}`,\n                saldo: this.toHoursAndMinutes(parseInt(row.saldos.saldo, 10)),\n            };\n            if (parseInt(row.saldo, 10) > 0) over.push(add);\n            else under.push(add);\n        }\n\n        set(this, 'over', over);\n        set(this, 'under', under);\n    },\n\n    toHoursAndMinutes(minutes) {\n        const negative = minutes < 0;\n        minutes = Math.abs(minutes);\n        let hours = Math.floor(minutes / 60);\n        let minutesLeft = Math.floor(minutes - hours * 60);\n\n        return (\n            (negative ? '-' : '') + hours + ':' + (minutesLeft < 10 ? '0' : '') + minutesLeft + 'h'\n        );\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"r5t8wPg0\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\",\\\"user\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"saldo-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"over\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.over-max-saldo\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"table\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.user\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.saldo-anomality\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"over\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"saldo\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,0,[\\\"under\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.under-min-saldo\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"table\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.user\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.saldo-anomality\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"under\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"saldo\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/saldo/template.hbs\"}});","import Component from '@ember/component';\nimport settingsDateRange from '../common/common';\n\nexport default Component.extend(settingsDateRange('abcense'));\n","export default Ember.HTMLBars.template({\"id\":\"nGGohr0e\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"widget.anomalities.notify_time\\\"],null],false],[0,\\\"\\\\n\\\"],[5,\\\"drop-down\\\",[],[[\\\"@options\\\",\\\"@value\\\",\\\"@prompt\\\"],[[22,\\\"dateRanges\\\"],[22,\\\"selectedDateRange\\\"],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general.select.worktimegroup\\\"],null],\\\" \\\",[28,\\\"t\\\",[\\\"widget.anomalities.notify_time\\\"],null]],null]]]],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg save\\\"],[12,\\\"disabled\\\",[22,\\\"isDisabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"selectedDateRange\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/settings/abcense/template.hbs\"}});","import { set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default function settingsDateRange(page) {\n    return {\n        intl: service(),\n        store: service(),\n        analytics: service(),\n\n        // 7pv, 14,pv, 30pv, 60pv, 90pv\n        dateRanges: computed(function () {\n            if (page === 'abcense') {\n                return [\n                    { id: '1', name: '1 ' + this.intl.t('general.months') },\n                    { id: '2', name: '2 ' + this.intl.t('general.months') },\n                    { id: '3', name: '3 ' + this.intl.t('general.months') },\n                    { id: '6', name: '6 ' + this.intl.t('general.months') },\n                    { id: '12', name: '12 ' + this.intl.t('general.months') },\n                ];\n            }\n\n            return [\n                { id: '7', name: '7 ' + this.intl.t('general.days') },\n                { id: '14', name: '14 ' + this.intl.t('general.days') },\n                { id: '30', name: '30 ' + this.intl.t('general.days') },\n                { id: '60', name: '60 ' + this.intl.t('general.days') },\n                { id: '90', name: '90 ' + this.intl.t('general.days') },\n            ];\n        }),\n        init() {\n            this._super();\n            let record = this.store.peekAll('widget-anomalies-setting').findBy('name', page);\n            if (!record) {\n                let storeValue = {\n                    name: page,\n                };\n\n                if (page === 'abcense') {\n                    storeValue.value = { selectedDateRange: 1 };\n                } else {\n                    storeValue.value = { selectedDateRange: 7 };\n                }\n                record = this.store.createRecord('widget-anomalies-setting', storeValue);\n            }\n            set(this, 'record', record);\n            set(this, 'selectedDateRange', this.record.value.selectedDateRange);\n        },\n        actions: {\n            save(selectedDateRange) {\n                this.analytics.trackEvent({\n                    category: 'Dashboard',\n                    action: `Change date range setting for ${page} to ${selectedDateRange}`,\n                    label: 'Anomalities widget',\n                });\n                set(this, 'record.value.selectedDateRange', selectedDateRange);\n                this.record.save();\n                this.cancel();\n            },\n            cancel() {\n                this.cancel();\n            },\n        },\n    };\n}\n","import Component from '@ember/component';\nimport { set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    analytics: service(),\n\n    settingsComponent: computed('currentSetting', function () {\n        return 'dash-board/widgets/anomalities/settings/' + this.currentSetting.replace('_', '-');\n    }),\n\n    actions: {\n        check(setting) {\n            this.toggleCheckRow(setting);\n        },\n        saveSettings() {\n            set(this, 'currentSetting', false);\n        },\n        closeModal() {\n            set(this, 'currentSetting', false);\n        },\n        setCurrentSetting(setting) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Open ${setting} settings`,\n                label: 'Anomalities widget',\n            });\n            set(this, 'currentSetting', setting);\n        },\n    },\n});\n","import Component from '@ember/component';\nimport settingsDateRange from '../common/common';\n\nexport default Component.extend(settingsDateRange('ending_passes'));\n","export default Ember.HTMLBars.template({\"id\":\"A/4W+oMd\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"widget.anomalities.notify_time\\\"],null],false],[0,\\\"\\\\n\\\"],[5,\\\"drop-down\\\",[],[[\\\"@options\\\",\\\"@value\\\",\\\"@prompt\\\"],[[22,\\\"dateRanges\\\"],[22,\\\"selectedDateRange\\\"],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general.select.worktimegroup\\\"],null],\\\" \\\",[28,\\\"t\\\",[\\\"widget.anomalities.notify_time\\\"],null]],null]]]],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg save\\\"],[12,\\\"disabled\\\",[22,\\\"isDisabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"selectedDateRange\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/settings/ending-passes/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\n\nexport default Component.extend({\n    intl: service(),\n    store: service(),\n    analytics: service(),\n    linkIds: computed.mapBy('hideUsers', 'id'),\n\n    dateRanges: computed(function () {\n        return [\n            { id: 'current_week', name: this.intl.t('widget.anomalities.current_week') },\n            { id: 'last_week', name: this.intl.t('widget.anomalities.last_week') },\n            { id: 'last_2_weeks', name: this.intl.t('widget.anomalities.last_2_weeks') },\n            { id: 'current_month', name: this.intl.t('widget.anomalities.current_month') },\n            { id: 'last_month', name: this.intl.t('widget.anomalities.last_month') },\n        ];\n    }),\n    sendMethods: computed(function () {\n        return [\n            { id: 'sms', name: this.intl.t('widget.anomalities.sms') },\n            { id: 'push', name: this.intl.t('widget.anomalities.push') },\n            { id: 'email', name: this.intl.t('widget.anomalities.email') },\n        ];\n    }),\n\n    showUsers: computed('users', 'hideUserIds', 'hideUserIds.length', function () {\n        return this.users.filter((user) => !this.hideUserIds.includes(user.id));\n    }),\n\n    hiddenUsers: computed('users', 'hideUserIds', 'hideUserIds.length', function () {\n        return this.users.filter((user) => this.hideUserIds.includes(user.id));\n    }),\n\n    init() {\n        this._super();\n        let record = this.store\n            .peekAll('widget-anomalies-setting')\n            .findBy('name', 'missing_worktimes');\n        if (!record)\n            record = this.store.createRecord('widget-anomalies-setting', {\n                name: 'missing_worktimes',\n                value: { selectedDateRange: 'current_week', hideUserIds: [], sendBy: 'push' },\n            });\n        set(this, 'record', record);\n        set(this, 'selectedDateRange', this.record.value.selectedDateRange);\n        set(this, 'hideUserIds', A(this.record.value.hideUserIds || []));\n        set(this, 'sendBy', this.record.value.sendBy);\n\n        set(this, 'users', []);\n        this.loadUsers();\n    },\n\n    actions: {\n        save() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Missing worktimes settings saved',\n                label: 'Anomalities widget',\n            });\n\n            set(this, 'record.value.selectedDateRange', this.selectedDateRange);\n            set(this, 'record.value.hideUserIds', this.hideUserIds);\n            set(this, 'record.value.sendBy', this.sendBy);\n\n            this.record.save();\n            this.cancel();\n        },\n        cancel() {\n            this.cancel();\n        },\n        searchChanged(value) {\n            this.loadUsers(typeof value == 'string' ? value : null);\n        },\n        selectUser(user) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'User selected to be shown on missing worktimes',\n                label: 'Anomalities widget',\n            });\n            this.hideUserIds.removeObject(user.id);\n        },\n        deselectUser(user) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'User selected to be hidden on missing worktimes',\n                label: 'Anomalities widget',\n            });\n            this.hideUserIds.pushObject(user.id);\n        },\n    },\n\n    async loadUsers(term) {\n        let params = {};\n        if (term) params.q = term;\n        set(this, 'users', await get(this, 'store').query('user', params));\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"wHKLsVUX\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"row\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.date_range\\\"],null],false],[0,\\\"\\\\n\\\"],[5,\\\"drop-down\\\",[],[[\\\"@options\\\",\\\"@value\\\",\\\"@prompt\\\"],[[22,\\\"dateRanges\\\"],[22,\\\"selectedDateRange\\\"],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general.select.worktimegroup\\\"],null],\\\" \\\",[28,\\\"t\\\",[\\\"worksitediary.date_range\\\"],null]],null]]]],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"widget.anomalities.send_method\\\"],null],false],[0,\\\"\\\\n\\\"],[5,\\\"drop-down\\\",[],[[\\\"@options\\\",\\\"@value\\\",\\\"@prompt\\\"],[[22,\\\"sendMethods\\\"],[22,\\\"sendBy\\\"],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general.select.worktimegroup\\\"],null],\\\" \\\",[28,\\\"t\\\",[\\\"widget.anomalities.send_method\\\"],null]],null]]]],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"user-selector\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"first-list\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"list-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.selected_users\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"showUsers\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"list-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"deselectUser\\\",[23,2,[]]]],[8],[1,[23,2,[\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"middle-svg\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"13\\\"],[10,\\\"height\\\",\\\"28\\\"],[10,\\\"viewBox\\\",\\\"0 0 13 28\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"g\\\",true],[10,\\\"id\\\",\\\"Polygon_12\\\"],[10,\\\"data-name\\\",\\\"Polygon 12\\\"],[10,\\\"transform\\\",\\\"translate(0 28) rotate(-90)\\\"],[10,\\\"fill\\\",\\\"#737373\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M 26.72672462463379 12.5 L 1.273276209831238 12.5 L 14 0.6823278665542603 L 26.72672462463379 12.5 Z\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M 14 1.364636421203613 L 2.546531677246094 12 L 25.45346832275391 12 L 14 1.364636421203613 M 14 0 L 28 13 L 0 13 L 14 0 Z\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[10,\\\"fill\\\",\\\"#707070\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"13\\\"],[10,\\\"height\\\",\\\"28\\\"],[10,\\\"viewBox\\\",\\\"0 0 13 28\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"g\\\",true],[10,\\\"id\\\",\\\"Polygon_11\\\"],[10,\\\"data-name\\\",\\\"Polygon 11\\\"],[10,\\\"transform\\\",\\\"translate(13) rotate(90)\\\"],[10,\\\"fill\\\",\\\"#737373\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M 26.72672462463379 12.5 L 1.273276209831238 12.5 L 14 0.6823278665542603 L 26.72672462463379 12.5 Z\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M 14 1.364636421203613 L 2.546531677246094 12 L 25.45346832275391 12 L 14 1.364636421203613 M 14 0 L 28 13 L 0 13 L 14 0 Z\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[10,\\\"fill\\\",\\\"#707070\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"second-list\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"list-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.unselected_users\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"hiddenUsers\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"list-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"selectUser\\\",[23,1,[]]]],[8],[1,[23,1,[\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"search-box-div\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"search-box\\\",null,[[\\\"value\\\",\\\"change\\\",\\\"classes\\\"],[[24,[\\\"searchvalue\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"searchChanged\\\"],null],\\\"form-control add-field\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg save\\\"],[12,\\\"disabled\\\",[22,\\\"isDisabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/settings/missing-worktimes/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"IJAowNXq\",\"block\":\"{\\\"symbols\\\":[\\\"setting\\\",\\\"@save\\\"],\\\"statements\\\":[[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"centered-table\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.setting\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[23,0,[\\\"data\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[28,\\\"if\\\",[[23,1,[\\\"checked\\\"]],\\\"move move-CheckedCheckbox\\\",\\\"move move-UncheckedCheckbox\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"check\\\",[23,1,[]]]],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.anomalities.\\\",[23,1,[\\\"type\\\"]]],null]],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"hasSettings\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setCurrentSetting\\\",[23,1,[\\\"type\\\"]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"no-rows-cell\\\"],[10,\\\"colspan\\\",\\\"3\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.no_rows_found\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"onToggle\\\",\\\"theme\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[\\\"mt-4\\\",[24,[\\\"showOkAlso\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showOkAlso\\\"]]],null]],null],\\\"light\\\",[28,\\\"t\\\",[\\\"widget.anomalities.show_ok_also\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentSetting\\\"]]],null,{\\\"statements\\\":[[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"currentSetting\\\"]]],null],false],null],[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.anomalities.settings-header-\\\",[24,[\\\"currentSetting\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,0,[\\\"settingsComponent\\\"]],[],[[\\\"@settings\\\",\\\"@data\\\",\\\"@saveSettings\\\",\\\"@cancel\\\"],[[23,0,[\\\"settings\\\"]],[23,0,[\\\"data\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveSettings\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"edit-button mt-4\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],[23,2,[]]]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/settings/template.hbs\"}});","import Component from '@ember/component';\nimport settingsDateRange from '../common/common';\n\nexport default Component.extend(settingsDateRange('unapproved_worktimes'));\n","export default Ember.HTMLBars.template({\"id\":\"BFcG5Uhy\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.date_range\\\"],null],false],[0,\\\"\\\\n\\\"],[5,\\\"drop-down\\\",[],[[\\\"@options\\\",\\\"@value\\\",\\\"@prompt\\\"],[[22,\\\"dateRanges\\\"],[22,\\\"selectedDateRange\\\"],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general.select.worktimegroup\\\"],null],\\\" \\\",[28,\\\"t\\\",[\\\"worksitediary.date_range\\\"],null]],null]]]],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg save\\\"],[12,\\\"disabled\\\",[22,\\\"isDisabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"selectedDateRange\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/settings/unapproved-worktimes/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n    ttapi: service(),\n    error: service(),\n    intl: service(),\n    localstorage: service(),\n\n    init() {\n        this._super();\n        let forms = [];\n        if (this.Collector.testNeedsOne('worktime')) forms.push('worktime');\n        if (this.Collector.testNeedsOne('abcense')) forms.push('abcense');\n        this.forms = forms;\n\n        this.loadProjects();\n    },\n\n    actions: {\n        check(row) {\n            this.toggleCheckRow(row);\n        },\n        checkAll() {\n            if (this.isChecked) {\n                this.toggleCheckAll('missing_worktimes', false);\n            } else {\n                this.toggleCheckAll('missing_worktimes', true);\n            }\n            this.toggleProperty('isChecked');\n        },\n\n        sendNotificationToCheckedUsers() {\n            this.sendNotificationToCheckedUsers();\n        },\n        showAddModal(user, date) {\n            set(this, 'selectedUser', user);\n            set(this, 'selectedDate', date);\n            set(this, 'showAddModal', true);\n        },\n    },\n\n    async loadProjects() {\n        const projectSums = {};\n        this.data.forEach((item) => {\n            const message = JSON.parse(item.message);\n            if (!message.project) return;\n            if (projectSums[message.project]) projectSums[message.project]++;\n            else projectSums[message.project] = 1;\n        });\n\n        const projects = await this.store.query('project', {\n            id: Object.keys(projectSums).join(','),\n        });\n\n        const errorsByProject = Object.keys(projectSums).map((projectid) => {\n            return {\n                project: { name: projects.findBy('id', projectid).name, id: projectid },\n                errors: projectSums[projectid],\n            };\n        });\n\n        set(this, 'projects', errorsByProject);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"6DlMRl33\",\"block\":\"{\\\"symbols\\\":[\\\"project\\\"],\\\"statements\\\":[[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"centered-table\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.worksite\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.errors\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"projects\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"errors\\\"]],false],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"td\\\",true],[8],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-primary\\\",\\\"projects.edit.taxmanerrors\\\",[23,1,[\\\"project\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"widget.anomalities.link-to-report\\\"],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/taxman-errors/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"2HD+BuUw\",\"block\":\"{\\\"symbols\\\":[\\\"anomality\\\",\\\"anomality\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@tableLayout\\\",\\\"@changeLayout\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,0,[\\\"tableLayout\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeLayout\\\"],null],[23,9,[]],[23,10,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[23,0,[\\\"promise\\\"]],3]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"tableLayout\\\"]],\\\"grid\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"anomality-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"anomalities\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"and\\\",[[23,2,[\\\"checked\\\"]],[28,\\\"not\\\",[[24,[\\\"showOkAlso\\\"]]],null],[28,\\\"not\\\",[[28,\\\"eq\\\",[[23,2,[\\\"value\\\"]],\\\"0\\\"],null]],null]],null],[28,\\\"and\\\",[[23,2,[\\\"checked\\\"]],[24,[\\\"showOkAlso\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"anomality-item \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,2,[\\\"value\\\"]],\\\"0\\\"],null],\\\"ok-item\\\",\\\"warning-item\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"gotoAnomality\\\",[23,2,[]]]],[8],[0,\\\"\\\\n\\\"],[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"anomality-item-content\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h2\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"value\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[23,2,[\\\"value\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,0,false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.anomalities.\\\",[23,2,[\\\"type\\\"]]],null]],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"centered-table\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.anomality\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.amount\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"anomalities\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"and\\\",[[23,1,[\\\"checked\\\"]],[28,\\\"not\\\",[[24,[\\\"showOkAlso\\\"]]],null],[28,\\\"not\\\",[[28,\\\"eq\\\",[[23,1,[\\\"value\\\"]],\\\"0\\\"],null]],null]],null],[28,\\\"and\\\",[[23,1,[\\\"checked\\\"]],[24,[\\\"showOkAlso\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[\\\"value\\\"]],\\\"0\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Error\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"filteredByProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.anomalities.\\\",[23,1,[\\\"type\\\"]],\\\".filtered\\\"],null]],[[\\\"project\\\"],[[24,[\\\"projectName\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.anomalities.\\\",[23,1,[\\\"type\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[23,1,[\\\"value\\\"]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-View\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"gotoAnomality\\\",[23,1,[]]]],[8],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"no-rows-cell\\\"],[10,\\\"colspan\\\",\\\"4\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.no_rows_found\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"showSettings\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeSettings\\\"],null],[28,\\\"t\\\",[\\\"widget.anomalities.settings-header\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"dash-board/widgets/anomalities/settings\\\",[],[[\\\"@save\\\",\\\"@data\\\",\\\"@toggleCheckRow\\\",\\\"@showOkAlso\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"saveSettings\\\"],null],[23,0,[\\\"anomalitiesSettings\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCheckRow\\\"],null],[23,0,[\\\"showOkAlso\\\"]]]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAnomality\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAnomality\\\"]]],null],false],null],[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.anomalities.\\\",[24,[\\\"showAnomality\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"anomalityValue\\\"]],\\\"0\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"report-placeholder\\\",null,[[\\\"customHeader\\\",\\\"searchIcon\\\",\\\"searchInfoText\\\"],[[28,\\\"t\\\",[\\\"widget.anomalities.no_rows\\\"],null],true,[28,\\\"t\\\",[\\\"widget.anomalities.no_rows.infoText\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showAnomality\\\"]],\\\"missing_worktimes\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"dash-board/widgets/anomalities/missing-worktimes\\\",[],[[\\\"@users\\\",\\\"@settings\\\",\\\"@toggleCheckAll\\\",\\\"@toggleCheckRow\\\",\\\"@isChecked\\\",\\\"@sendNotificationToCheckedUsers\\\",\\\"@promise\\\"],[[23,0,[\\\"missingWorktimesPerUser\\\"]],[23,0,[\\\"settings\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCheckAll\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCheckRow\\\"],null],[23,0,[\\\"allRowsChecked\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"sendNotificationToCheckedUsers\\\"],null],[23,0,[\\\"promise\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showAnomality\\\"]],\\\"saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"dash-board/widgets/anomalities/saldo\\\",[],[[\\\"@data\\\"],[[23,0,[\\\"saldo\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showAnomality\\\"]],\\\"taxman_errors\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"dash-board/widgets/anomalities/taxman-errors\\\",[],[[\\\"@data\\\"],[[23,0,[\\\"taxman_errors\\\"]]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"edit-button mt-4\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showSettings\\\"]],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.settings\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/template.hbs\"}});","import Component from '@ember/component';\nimport { set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    session: service(),\n    evented: service(),\n    ttapi: service(),\n    intl: service(),\n    collector: service('collector-service'),\n    flags: service(),\n\n    init() {\n        this._super(...arguments);\n        this.headers = ['name', 'hours'];\n        this.form = 'bank';\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n    },\n\n    didInsertElement() {\n        set(this, 'data', this.getData());\n    },\n\n    didDestroyElement() {\n        this._super(...arguments);\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'abcense' || params.type === 'worktime')\n            set(this, 'data', this.getData());\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        set(this, 'data', this.getData());\n    },\n    async getData() {\n        let data = await this.ttapi.request(\n            '/api/getBankHours?user=' + this.session.currentUser.id,\n        );\n        return data;\n    }\n});\n","export default Ember.HTMLBars.template({\"id\":\"U7mSTPUe\",\"block\":\"{\\\"symbols\\\":[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,1,[]],[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[28,\\\"promise-all\\\",[[24,[\\\"data\\\"]],[24,[\\\"headers\\\"]]],null],3]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/table\\\",null,[[\\\"data\\\",\\\"headers\\\",\\\"form\\\"],[[24,[\\\"data\\\"]],[24,[\\\"headers\\\"]],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/bank/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n    intl: service(),\n    dialogs: service(),\n    analytics: service(),\n\n    didReceiveAttrs() {\n        set(this, 'help', this.store.findAll('help'));\n    },\n\n    actions: {\n        save(row) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Save instruction',\n                label: 'custom-help widget',\n            });\n\n            if (row.type === 'link' && !row.url) return;\n\n            row.save();\n            set(this, 'editRow', null);\n        },\n\n        create() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Create new clicked',\n                label: 'custom-help widget',\n            });\n            set(this, 'editRow', this.store.createRecord('help', {}));\n        },\n\n        async remove(row) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Remove instruction',\n                label: 'custom-help widget',\n            });\n            if (await this.dialogs.confirm(this.intl.t('general.remove_row'))) row.destroyRecord();\n        },\n\n        edit(row) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Edit instruction',\n                label: 'custom-help widget',\n            });\n            set(this, 'show', null);\n            set(this, 'editRow', row);\n        },\n\n        open(row) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Open instruction',\n                label: 'custom-help widget',\n            });\n            if (row.type === 'link') window.open(this.addProtocol(row.url), '_blank');\n            else set(this, 'show', row);\n        },\n\n        close() {\n            if (get(this, 'editRow.isNew')) this.editRow.deleteRecord();\n            set(this, 'editRow', null);\n        },\n    },\n\n    addProtocol(url) {\n        if (!url.startsWith('http://') && !url.startsWith('https://')) return 'https://' + url;\n        return url;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"AlkyZoMQ\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,9,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[23,0,[\\\"help\\\"]],2]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"help-container\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[23,0,[\\\"help\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"help\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"open\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"header\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[8],[1,[23,1,[\\\"header\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    (\\\"],[1,[28,\\\"t\\\",[\\\"general.empty\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[\\\"type\\\"]],\\\"link\\\"],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-external-link\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"show-on-hover pull-right move move-Delete\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,1,[]]]],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"show-on-hover pull-right move move-Pencil\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"edit\\\",[23,1,[]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"report-placeholder\\\",null,[[\\\"customHeader\\\"],[[28,\\\"t\\\",[\\\"report.placeholder.custom-help\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"create\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"close\\\",\\\"header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"show\\\"]]],null],null],null],[24,[\\\"show\\\",\\\"header\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-container\\\"],[8],[1,[24,[\\\"show\\\",\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"show\\\"]]],null],null]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"editRow\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"editRow\\\",\\\"header\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"bootstrap-field\\\",null,[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"widget.help.header\\\"],null]]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control\\\",[24,[\\\"editRow\\\",\\\"header\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bootstrap-field\\\",null,[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"widget.help.type\\\"],null]]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-button-group-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"btn-m flex-button-group-item-small flex-button-modal \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]],\\\"link\\\"],null],\\\"flex-button-group-item-small-selected\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]]],null],\\\"link\\\"]],[8],[0,\\\"\\\\n                    \\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]],\\\"link\\\"],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark radio-button-checkbox hidden-xs hidden-sm\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"widget.help.link\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"btn-m flex-button-group-item-small flex-button-modal \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]],\\\"text\\\"],null],\\\"flex-button-group-item-small-selected\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]]],null],\\\"text\\\"]],[8],[0,\\\"\\\\n                    \\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]],\\\"text\\\"],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark radio-button-checkbox hidden-xs hidden-sm\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"widget.help.text\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]],\\\"link\\\"],null]],null,{\\\"statements\\\":[[4,\\\"bootstrap-field\\\",null,[[\\\"text\\\",\\\"error\\\",\\\"mandatory\\\"],[[28,\\\"t\\\",[\\\"widget.help.url\\\"],null],[28,\\\"unless\\\",[[24,[\\\"editRow\\\",\\\"url\\\"]],[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null]],null],true]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control\\\",[24,[\\\"editRow\\\",\\\"url\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]],\\\"text\\\"],null]],null,{\\\"statements\\\":[[4,\\\"bootstrap-field\\\",null,[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"widget.help.content\\\"],null]]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"class\\\",\\\"rows\\\",\\\"value\\\"],[\\\"form-control\\\",8,[24,[\\\"editRow\\\",\\\"text\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"editRow\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/custom-help/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment-timezone';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n    flags: service(),\n    totalDaysLeft: 0,\n\n    init() {\n        this._super();\n        this.headers = ['year', 'days', 'daysleft'];\n        if (this.Collector.testNeedsOne('modules.holiday_pay') && this.flags.test('holidaypay_v2'))\n            this.headers.push('holidayPays');\n        this.form = 'holiday';\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n    },\n\n    didInsertElement() {\n        set(this, 'data', this.getHolidays());\n    },\n\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'abcense') set(this, 'data', this.getHolidays());\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        set(this, 'data', this.getHolidays());\n    },\n\n    async getHolidays() {\n        if (this.flags.test('holiday-checker')) return this.newGetHolidays();\n\n        if (!this.Collector.testNeedsOne('abcense')) return [];\n\n        let holidaySeasonChangeDate = moment().startOf('year').add({ days: 1, months: 4 });\n        let holidaySeason = moment().isSameOrAfter(holidaySeasonChangeDate, 'day')\n            ? moment().year() + 1\n            : moment().year();\n        // If it's currently 1.1 - 1.4, dont't show newest holiday season yet\n        const isStartOfYear = moment().isBetween(\n            moment().startOf('year'),\n            moment().startOf('year').add({ months: 3 }),\n            'day',\n        );\n\n        let arr = [];\n        let years = [];\n\n        if (!isStartOfYear) years.pushObject(holidaySeason + '-05-02');\n        years.pushObject(holidaySeason - 1 + '-05-02');\n        years.pushObject(holidaySeason - 2 + '-05-02');\n        years.pushObject(holidaySeason - 3 + '-05-02');\n        years.pushObject(holidaySeason - 4 + '-05-02');\n\n        arr = await this.getMultiSeasonHolidays(years);\n        let filteredArr = arr.filter((data) => data.daysleft > 0 || data.year == holidaySeason - 1 || data.holidayPays > 0);\n\n        set(\n            this,\n            'totalDaysLeft',\n            filteredArr.reduce((sum, data) => sum + (data.daysleft || 0), 0),\n        );\n\n        filteredArr = arr.filter(\n            (data) =>\n                data.daysleft > 0 ||\n                data.year == holidaySeason - 1 ||\n                (data.holidayPays > 0 && this.Collector.testNeedsOne('modules.holiday_pay')),\n        );\n        const totalDays = filteredArr.reduce(\n            (sum, data) =>\n                sum +\n                (data.daysleft || 0) +\n                (this.Collector.testNeedsOne('modules.holiday_pay') ? data.holidayPays || 0 : 0),\n            0,\n        );\n        set(this, 'totalDaysLeft', totalDays);\n\n        return filteredArr.reverse();\n    },\n\n    async getMultiSeasonHolidays(years) {\n        let params = {\n            id: this.session.currentUser.id,\n            years: years.join(','),\n            country: this.session.currentUser.company_info.country,\n        };\n\n        const url = 'api/getMultipleSeasons';\n\n        let holidays = await get(this, 'Collector').ttapi({\n            url: url,\n            data: params,\n        });\n\n        return holidays.users.map((row) => {\n            return {\n                year: row.holidayYear,\n                days: row.allDays,\n                daysleft: row.daysLeft,\n                holidayPays: row.availableHolidayPays,\n            };\n        });\n    },\n\n    /**\n     * holidays are fetched directly from ttapi route api/getUserHolidays\n     * @returns\n     */\n    async newGetHolidays() {\n        if (!this.Collector.testNeedsOne('abcense')) return [];\n\n        let params = {\n            id: this.session.currentUser.id,\n            country: this.session.currentUser.company_info.country,\n        };\n\n        const url = 'api/getUserHolidays';\n\n        let holidays = await get(this, 'Collector').ttapi({\n            url: url,\n            data: params,\n        });\n\n        set(this, 'totalDaysLeft', (holidays.sums.daysleft + holidays.sums.holidayPays));\n\n        // current year (key === 0) is always shown\n        const yearsWithDaysLeft = holidays.years.filter(\n            (year, key) => year.daysleft > 0 || key === 0 || year.holidayPays > 0,\n        );\n        return yearsWithDaysLeft;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"n2iv0g2Y\",\"block\":\"{\\\"symbols\\\":[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,1,[]],[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[24,[\\\"data\\\"]],4]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/table\\\",null,[[\\\"data\\\",\\\"headers\\\",\\\"form\\\"],[[24,[\\\"data\\\"]],[24,[\\\"headers\\\"]],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"daysleft\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"daysleft-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.holiday.daysleft_total\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"daysleft-sum-circle\\\"],[8],[1,[22,\\\"totalDaysLeft\\\"],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/holiday/template.hbs\"}});","import Component from '@ember/component';\nimport { set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\n\nexport default Component.extend({\n    session: service(),\n    collector: service('collector-service'),\n    store: service(),\n    evented: service(),\n\n    init() {\n        this._super();\n        this.siteCards = [null, null, null];\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumeEvent');\n    },\n\n    async didReceiveAttrs() {\n        this.mysites = await this.getMySites();\n        if (this.mysites) {\n            this.addMysitesToCards();\n        }\n    },\n\n    didInsertElement() {\n        set(this, 'canUse', this.canWeUseThisWidget());\n        set(this, 'promise', this.getOpenWorktime());\n    },\n\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumeEvent');\n    },\n\n    actions: {\n        notifySiteCards() {\n            this.addMysitesToCards();\n        },\n        setRemovableIndexNull(project) {\n            this.siteCards.splice(this.siteCards.indexOf(project), 1, null);\n        },\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime') {\n            set(this, 'promise', this.getOpenWorktime());\n        }\n    },\n\n    onResumeEvent(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        set(this, 'promise', this.getOpenWorktime());\n    },\n\n    async getMySites() {\n        return await this.store.findAll('my-site');\n    },\n\n    addMysitesToCards() {\n        let mySitesArr = this.mysites.toArray();\n        for (let i = 0; i < this.mysites.length; i++) {\n            set(this.siteCards, i, mySitesArr[i]);\n        }\n        this.notifyPropertyChange('siteCards');\n    },\n\n    async getOpenWorktime() {\n        let worktimes = await this.store.query('worktime', {\n            date:\n                moment().subtract(1, 'day').format('YYYY-MM-DD') +\n                '_' +\n                moment().format('YYYY-MM-DD'),\n            user: this.session.currentUser.id,\n            sideload: true,\n        });\n        let openWorktimes = await worktimes.filter((worktime) => isEmpty(worktime.endtime));\n        set(this, 'openWorktime', !isEmpty(openWorktimes) ? openWorktimes.firstObject : null);\n    },\n\n    canWeUseThisWidget() {\n        return !this.collector.fieldArray('worktime').some((item) => {\n            return item.features.mandatory && !['project', 'user'].includes(item.name);\n        });\n    },\n});\n","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\n\nexport default Component.extend({\n    async didReceiveAttrs() {\n        let proj = await get(this.project, 'project');\n        set(this, 'projectInfo', proj);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"Fj3/NdKj\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"projectInfo\\\",\\\"image\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-image\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[28,\\\"api-image\\\",[[24,[\\\"projectInfo\\\",\\\"image\\\",\\\"firstObject\\\",\\\"s3url\\\"]]],null],\\\"')\\\"]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"my-sites-delete-button\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"showConfirmationPage\\\"]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-image\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[28,\\\"random-mysite-image\\\",[[24,[\\\"projectInfo\\\",\\\"id\\\"]],5],null],\\\"')\\\"]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"my-sites-delete-button\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"showConfirmationPage\\\"]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"my-sites-project-name\\\"],[11,\\\"title\\\",[29,[[24,[\\\"projectInfo\\\",\\\"name\\\"]]]]],[8],[1,[24,[\\\"projectInfo\\\",\\\"name\\\"]],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/my-sites/project-info/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, set, get, setProperties } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment-timezone';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    intl: service(),\n    notifications: service(),\n    error: service(),\n    evented: service(),\n    analytics: service(),\n    classNameBindings: ['isDashed:dashed'],\n    confirmPage: false,\n    pausePage: false,\n    commentPage: false,\n    selectNew: false,\n    loading: false,\n    unit: 'min',\n\n    isDashed: computed('project', function () {\n        return !this.project;\n    }),\n\n    projectField: computed(function () {\n        let field = this.Collector.field('worktime', 'project');\n        if (field) {\n            field.prompt = 'my-sites.add_site';\n            field.skipForcedGPS = true;\n        }\n        return field;\n    }),\n\n    worktimeOn: computed('openWorktime', 'project', function () {\n        if (!this.openWorktime || !this.project) return false;\n\n        let openWorktimeProject = get(this.openWorktime, 'project.id');\n        let siteCardProject = get(this.project, 'project.id');\n\n        if (openWorktimeProject === siteCardProject) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n\n    startDateAndTime: computed('openWorktime', function () {\n        return this.openWorktime.date + ' ' + this.openWorktime.starttime;\n    }),\n\n    actions: {\n        async startWork(mysite) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Worktime startted',\n                label: 'my-sites widget',\n            });\n\n            let proj = await get(mysite, 'project');\n            try {\n                set(this, 'loading', true);\n                let record = this.createWorktime(proj);\n                await record.save();\n                set(this, 'worktimeStartMoment', moment());\n                this.notifications.success(this.intl.t('timetracker.timecard.started'), {\n                    autoClear: true,\n                });\n                set(this, 'openWorktime', record);\n            } catch (error) {\n                if (\n                    error.errors &&\n                    error.errors.firstObject &&\n                    error.errors.firstObject.error === 'overlap' &&\n                    this.openWorktime\n                ) {\n                    //Ugly try catch to handle absences on project change...should be made better in EP-6663\n                    try {\n                        if (error.errors.firstObject.errorMeta.hits === 'worktime') {\n                            this.setEndtime();\n                            await this.openWorktime.save();\n                            this.notifications.success(this.intl.t('general.saved'), {\n                                autoClear: true,\n                            });\n                            get(this, 'evented').storeEvent(\n                                'insert',\n                                'worktime',\n                                this.openWorktime,\n                            );\n                            set(this, 'openWorktime', null);\n\n                            let record = this.createWorktime(proj);\n                            await record.save();\n                            set(this, 'worktimeStartMoment', moment());\n                            this.notifications.success(\n                                this.intl.t('timetracker.timecard.started'),\n                                {\n                                    autoClear: true,\n                                },\n                            );\n                            set(this, 'openWorktime', record);\n                            set(this, 'pausePage', false);\n                            set(this, 'commentPage', false);\n                        }\n                    } catch (error) {\n                        this.error.notify(error);\n                    }\n                } else {\n                    this.error.notify(error);\n                }\n            } finally {\n                set(this, 'loading', false);\n            }\n        },\n\n        async endWork() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Worktime ended',\n                label: 'my-sites widget',\n            });\n\n            try {\n                set(this, 'loading', true);\n                this.setEndtime();\n                await this.openWorktime.save();\n                this.notifications.success(this.intl.t('general.saved'), {\n                    autoClear: true,\n                });\n                get(this, 'evented').storeEvent('insert', 'worktime', this.openWorktime);\n                set(this, 'openWorktime', null);\n            } catch (error) {\n                this.error.notify(error);\n            } finally {\n                set(this, 'loading', false);\n            }\n        },\n\n        showPausePage() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Show pause page',\n                label: 'my-sites widget',\n            });\n\n            set(this, 'pausePage', true);\n            set(this, 'pause', this.openWorktime.pause ? this.openWorktime.pause : null);\n            set(this, 'commentPage', false);\n        },\n\n        addPauseToWorktime(value) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Pause added',\n                label: 'my-sites widget',\n            });\n\n            set(this.openWorktime, 'pause', value);\n            this.openWorktime.save();\n            this.notifications.success(this.intl.t('general.saved'), {\n                autoClear: true,\n            });\n            set(this, 'pausePage', false);\n        },\n\n        showCommentPage() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Show comment page',\n                label: 'my-sites widget',\n            });\n\n            set(this, 'commentPage', true);\n            set(\n                this,\n                'comment',\n                this.openWorktime.description ? this.openWorktime.description : null,\n            );\n            set(this, 'pausePage', false);\n        },\n\n        addCommentToWorktime(value) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Comment added',\n                label: 'my-sites widget',\n            });\n\n            set(this.openWorktime, 'description', value);\n            this.openWorktime.save();\n            this.notifications.success(this.intl.t('general.saved'), {\n                autoClear: true,\n            });\n            set(this, 'commentPage', false);\n        },\n        async addMySite(project) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'My site Added',\n                label: 'my-sites widget',\n            });\n            if (!project || (project && !project.data)) return; //stupid jquery event\n            if (this.siteCardAlreadyAdded(project.id)) {\n                this.notifications.info(this.intl.t('widget.my-sites.sitecard_already_added'), {\n                    autoClear: true,\n                });\n                return;\n            }\n            await this.store.createRecord('my-site', { project }).save();\n            set(this, 'selectNew', false);\n            this.notifySiteCards();\n        },\n\n        async removeMySite(project) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'My site Removed',\n                label: 'my-sites widget',\n            });\n            await project.destroyRecord();\n            set(this, 'project', null);\n            set(this, 'confirmPage', false);\n            set(this, 'selectNew', false);\n            this.setRemovableIndexNull(project);\n        },\n    },\n\n    createWorktime(proj) {\n        let record = this.store.createRecord('worktime');\n\n        setProperties(record, {\n            date: moment().format('YYYY-MM-DD'),\n            user: this.session.currentUser.id,\n            project: proj,\n            starttime: moment().format('HH:mm'),\n            validation: 'off',\n        });\n\n        return record;\n    },\n\n    setEndtime() {\n        if (\n            get(this.openWorktime, 'date') === moment().format('YYYY-MM-DD') &&\n            get(this.openWorktime, 'starttime') > moment().format('HH:mm')\n        ) {\n            set(this.openWorktime, 'endtime', get(this.openWorktime, 'starttime'));\n        } else {\n            set(this.openWorktime, 'endtime', moment().format('HH:mm'));\n        }\n    },\n\n    siteCardAlreadyAdded(project) {\n        let siteCards = this.store.peekAll('my-site');\n        let mapped = siteCards.map((site) => {\n            if (site) {\n                let cardData = get(site, 'project');\n                return get(cardData, 'id');\n            }\n        });\n        return mapped.includes(project);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"xQTAVWsH\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\"],[true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"confirmPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-confirm-page\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"flex-item\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.my-sites.confirm_card_removal\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs flex-item yes-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeMySite\\\",[24,[\\\"project\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.yes\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs flex-item no-button\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"confirmPage\\\"]]],null],false]],[8],[1,[28,\\\"t\\\",[\\\"general.no\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"worktimeOn\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"commentPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"mysites-align-center\\\"],[8],[1,[23,0,[\\\"openWorktime\\\",\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mysites-comment-objects\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"value\\\",\\\"class\\\",\\\"placeholder\\\"],[8,[24,[\\\"comment\\\"]],\\\"\\\",[28,\\\"t\\\",[\\\"mysites.commentpage.add_comment\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mysites-flexy-buttons\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"mysites-ok-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addCommentToWorktime\\\",[24,[\\\"comment\\\"]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"mysites-notok-button\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"commentPage\\\"]]],null],false]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[8],[9],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"dash-board/widgets/my-sites/project-info\\\",null,[[\\\"project\\\",\\\"showConfirmationPage\\\"],[[24,[\\\"project\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"confirmPage\\\"]]],null],true],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"pausePage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"mysites-align-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.mysites.add_pause\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mysites-pause-objects\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mysites-pause-values\\\"],[10,\\\"data-anchor\\\",\\\"mysites-pause-field\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"pause\\\"]],\\\"mysites-pause-text\\\"]]],false],[0,\\\" \\\"],[1,[22,\\\"unit\\\"],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"mysites-ok-button\\\"],[12,\\\"data-anchor\\\",\\\"mysites-pause-save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addPauseToWorktime\\\",[24,[\\\"pause\\\"]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"mysites-notok-button\\\"],[12,\\\"data-anchor\\\",\\\"mysites-pause-close\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"pausePage\\\"]]],null],false]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[8],[9],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-stop-button-container\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"my-sites-stop-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"endWork\\\"]],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Stop\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worktime-duration\\\"],[8],[4,\\\"if\\\",[[23,0,[\\\"openWorktime\\\",\\\"starttime\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"duration-clock\\\",[[23,0,[\\\"startDateAndTime\\\"]]],null],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"00:00:00\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"commentPage\\\"]],\\\"absolute-buttons\\\",\\\"my-sites-additional-buttons\\\"],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.pause\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-xs my-sites-additional-button \\\",[28,\\\"if\\\",[[24,[\\\"pausePage\\\"]],\\\"active-button\\\"],null]]]],[12,\\\"data-anchor\\\",\\\"my-sites-widget-pause-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showPausePage\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worktime.pause\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-xs my-sites-additional-button \\\",[28,\\\"if\\\",[[24,[\\\"commentPage\\\"]],\\\"active-button\\\"],null]]]],[12,\\\"data-anchor\\\",\\\"my-sites-widget-description-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showCommentPage\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worktime.description\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[2,\\\"button class=\\\\\\\"btn btn-xs my-sites-additional-button\\\\\\\">{{t \\\\\\\"widget.my-sites.change\\\\\\\"}}</button\\\"],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"dash-board/widgets/my-sites/project-info\\\",null,[[\\\"project\\\",\\\"showConfirmationPage\\\"],[[24,[\\\"project\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"confirmPage\\\"]]],null],true],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-play-button-container\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"my-sites-play-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"startWork\\\",[24,[\\\"project\\\"]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Play\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"selectNew\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-selecting-page\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"change\\\"],[[24,[\\\"projectField\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addMySite\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"my-sites-add-new\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"selectNew\\\"]]],null],true]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.my-sites.add_new_card\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CityScape\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/my-sites/site-card/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"iyDlwN5v\",\"block\":\"{\\\"symbols\\\":[\\\"site\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,9,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[23,0,[\\\"promise\\\"]],6]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-card-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[23,0,[\\\"canUse\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overlay\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.my-sites.can_not_use\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[23,0,[\\\"siteCards\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"dash-board/widgets/my-sites/site-card\\\",null,[[\\\"project\\\",\\\"openWorktime\\\",\\\"setRemovableIndexNull\\\",\\\"notifySiteCards\\\"],[[23,1,[]],[23,0,[\\\"openWorktime\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setRemovableIndexNull\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"notifySiteCards\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/my-sites/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport Ember from 'ember';\nimport { later } from '@ember/runloop';\nimport { htmlSafe } from '@ember/template';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class WorkingNowComponent extends Component {\n    @service session;\n    @service evented;\n    @service('collector-service') Collector;\n    @service intl;\n    @service localStorageWrapper;\n    @service analytics;\n    @service('promo-messages') promoMessages;\n\n    @tracked data;\n    @tracked messageModalcontent;\n    @tracked showMessageModal;\n    @tracked selectedType;\n\n    get styleNamespace() {\n        return podNames['dash-board/widgets/promo-messages'];\n    }\n\n    constructor() {\n        super(...arguments);\n        this.types = ['release_note', 'tips', 'new_feature', 'future_webinar', 'failure_report'];\n        this.headers = ['subject', 'startdate'];\n        this.form = 'promomessage';\n        this.key = 'messageWidgetFilters';\n        this.subtle_key = 'promomessages_subtle';\n        this.selectedType = this.getFiltersFromLS();\n        this.getUnreadMessages();\n        this.data = this.getMessages();\n\n        if (!Ember.testing) {\n            later(\n                this,\n                () => {\n                    this.getUnreadMessages();\n                    this.data = this.getMessages();\n                },\n                10000,\n            );\n        }\n\n        this.evented.on('onResumed', this, 'onResumed');\n    }\n\n    @action\n    showMessage(row) {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Show message',\n            label: 'Promo messages widget',\n        });\n\n        this.markMessageAsRead(row);\n        this.messageModalcontent = row;\n        this.showMessageModal = true;\n    }\n\n    @action\n    closeMessage() {\n        this.messageModalcontent = null;\n        this.showMessageModal = false;\n    }\n\n    @action\n    typeChange(type) {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: `Message type change to ${type}`,\n            label: 'Promo messages widget',\n        });\n\n        this.selectedType = type;\n        this.setFiltersToLS(this.selectedType);\n        this.data = this.getMessages();\n    }\n\n    willDestroy() {\n        this.evented.off('onResumed', this, 'onResumed');\n    }\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        this.data = this.getMessages();\n    }\n\n    async getMessages() {\n        let products = this.Collector.products;\n        let country = this.session.currentUser.company_info.country;\n        let userlevel = this.session.currentUser.userlevel;\n\n        if (!products || !country || !userlevel) return [];\n\n        const messages = await this.promoMessages.getMessages({\n            country: country,\n            userlevel: userlevel,\n            prods: products,\n            new: true,\n            type: this.selectedType,\n        });\n        // Sort by startdate\n        let data = messages.data.sort((el1, el2) => (el1.startdate < el2.startdate ? 1 : -1));\n        return this.formatMessageData(data);\n    }\n\n    formatMessageData(data) {\n        let badgeText = this.intl.t('widget.promomessage.unread');\n        let formattedData = data.map((item) => {\n            item.subject = item.type\n                ? this.intl.t('promomessage.type.' + item.type) + ': ' + item.title\n                : item.title;\n            item.startdate = moment(item.startdate).format('DD.MM.YYYY');\n            if (this.unReadMessages && this.unReadMessages.findBy('id', item.id)) {\n                item.subject = htmlSafe(\n                    item.subject +\n                        ' <span class=\"badge badge-pill badge-unread\">' +\n                        badgeText +\n                        '</span>',\n                );\n                item.class = 'unread';\n            }\n            return item;\n        });\n        return formattedData;\n    }\n\n    setFiltersToLS(filters) {\n        if (this.key) this.localStorageWrapper.setUserSetting(this.key, filters);\n    }\n\n    getFiltersFromLS() {\n        let LSfilters = this.localStorageWrapper.getUserSetting(this.key);\n        if (LSfilters && LSfilters.length > 0 && this.key) return LSfilters;\n        return null;\n    }\n\n    getUnreadMessages() {\n        let messages = this.localStorageWrapper.getUserSetting(this.subtle_key);\n        if (messages && messages.length > 0) this.unReadMessages = messages;\n    }\n\n    markMessageAsRead(item) {\n        if (!this.unReadMessages) return;\n        this.unReadMessages = this.unReadMessages.rejectBy('id', item.id);\n        this.localStorageWrapper.setUserSetting(this.subtle_key, this.unReadMessages);\n\n        let readMessages = this.localStorageWrapper.getUserSetting('promomessages');\n        readMessages.push(item.id);\n        this.localStorageWrapper.setUserSetting('promomessages', [...new Set(readMessages)]);\n        this.data = this.getMessages();\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"5mp436Tb\",\"block\":\"{\\\"symbols\\\":[\\\"type\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,9,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"dash-board/widget-spinner\\\",[],[[\\\"@promise\\\",\\\"@skeletonRows\\\"],[[23,0,[\\\"data\\\"]],3]]],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"fixed-flex-filters\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n                \\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@options\\\",\\\"@selected\\\",\\\"@placeholder\\\",\\\"@onChange\\\",\\\"@noMatchesMessage\\\"],[[23,0,[\\\"types\\\"]],[23,0,[\\\"selectedType\\\"]],[28,\\\"t\\\",[\\\"promomessage.select_type\\\"],null],[23,0,[\\\"typeChange\\\"]],[28,\\\"t\\\",[\\\"general.no-content\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"promomessage.type.\\\",[23,1,[]]],null]],null],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"dash-board/table\\\",[],[[\\\"@data\\\",\\\"@headers\\\",\\\"@form\\\",\\\"@rowClicked\\\"],[[23,0,[\\\"data\\\"]],[23,0,[\\\"headers\\\"]],[23,0,[\\\"form\\\"]],[23,0,[\\\"showMessage\\\"]]]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showMessageModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"mess-ages/types/promo\\\",[],[[\\\"@close\\\",\\\"@store\\\",\\\"@content\\\"],[[23,0,[\\\"closeMessage\\\"]],[23,0,[\\\"store\\\"]],[23,0,[\\\"messageModalcontent\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/promo-messages/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed, setProperties } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment-timezone';\nimport { isEmpty } from '@ember/utils';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n    ttapi: service(),\n    error: service(),\n    intl: service(),\n    localstorage: service(),\n    analytics: service(),\n    Collector: service('collector-service'),\n\n    user: null,\n    project: null,\n    worktimegroup: null,\n\n    formattedSalaryData: computed('salaryData', async function () {\n        let salarytypes = await this.getSalarytypes();\n        let data = await this.salaryData;\n        if (isEmpty(data)) return [];\n        let arr = [];\n\n        //First calculate total work hours and push to array (% is always 100 if there are work hours)\n        let total_hours = await this.calculateTotalHours();\n        if (total_hours > 0) {\n            arr.pushObject({\n                salarytype: this.intl.t('report.worktime.work_hours'),\n                accrual: get(this, 'Collector')._format_(\n                    total_hours,\n                    'worktime',\n                    'work_hours',\n                    'salarycategory',\n                ),\n                percent: '100.0',\n            });\n        }\n\n        //Then loop through salarytypes and calculate accruals based on salarydata and % based on work hours\n        salarytypes.forEach(async (type) => {\n            let accrual = data.reduce((sum, row) => sum + (Number(row[type.name]) || 0), 0);\n            if (accrual === 0) return;\n            let percent =\n                type.fieldType === 'work_hours' && total_hours > 0\n                    ? ((accrual / total_hours) * 100).toFixed(1)\n                    : '-';\n\n            if (type.fieldType) {\n                let fieldType =\n                    type.fieldType === 'no_percent_hours' ? 'work_hours' : type.fieldType;\n                accrual = get(this, 'Collector')._format_(\n                    accrual,\n                    'worktime',\n                    fieldType,\n                    'salarycategory',\n                );\n            }\n\n            let salarytype = type.translatedName ? type.translatedName : type.name;\n            arr.pushObject({\n                salarytype: salarytype,\n                accrual:\n                    type.fieldType === 'comp'\n                        ? accrual + ' ' + this.intl.t('general.amount')\n                        : accrual,\n                percent: percent >= 0 ? percent : '-',\n            });\n        });\n\n        let sortedArr = arr.sort((a, b) => {\n            let percentA = !isNaN(parseFloat(a.percent)) ? parseFloat(a.percent) : 0;\n            let percentB = !isNaN(parseFloat(b.percent)) ? parseFloat(b.percent) : 0;\n            if (percentA === 0 && typeof a.accrual === 'string' && !a.accrual.indexOf('h') > -1) {\n                percentA = 0.01;\n            }\n            return percentB - percentA;\n        });\n\n        return sortedArr;\n    }),\n\n    tableLayout: computed(function () {\n        if (this.localstorage.getItem('sumwidget-layout')) {\n            return this.localstorage.getItem('sumwidget-layout');\n        } else {\n            return 'report';\n        }\n    }),\n\n    projectField: computed('project', function () {\n        let field = this.Collector.field('worktime', 'project');\n        if (field) {\n            field.prompt = 'general.all_projects';\n        }\n        return field;\n    }),\n\n    userField: computed('user', function () {\n        let field = this.Collector.field('worktime', 'user');\n        if (field) {\n            field.prompt = 'general.all_users';\n        }\n        return field;\n    }),\n\n    /*worktimegroupField: computed('worktimegroup', function() {\n        let field = this.Collector.field('user', 'worktimegroup')\n        if (field) {\n            field.value = this.worktimegroup\n            field.prompt = \"general.all_worktimegroups\"\n        }\n        return field\n    }),*/\n\n    init() {\n        this._super();\n        this.headers = ['salarytype', 'accrual'];\n        if (this.session.currentUser.userlevel !== '1') this.headers.push('percent');\n        this.form = 'salarytype';\n        this.useSalarytypeV2 = this.Collector.testNeeds(['products.salarytype_v2']);\n        this.salarytypes = this.store.query(this.useSalarytypeV2 ? 'salarytypev2' : 'salarytype', {\n            sideload: true,\n            limit: 'all',\n        });\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumeEvent');\n    },\n\n    async didReceiveAttrs() {\n        set(this, 'periods', await this.getPeriods());\n        setProperties(this, {\n            date: this.periods[0],\n            user: this.session.currentUser.id,\n            project: this.project,\n            worktimegroup: null,\n        });\n        set(this, 'salaryData', this.getSalaryData());\n    },\n\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumeEvent');\n    },\n\n    actions: {\n        filterChange(value, field) {\n            if (field && typeof field === 'string') {\n                this.analytics.trackEvent({\n                    category: 'Dashboard',\n                    action: `change ${field} filter`,\n                    label: 'salary-sum widget',\n                });\n                if (!value) set(this, field, null);\n                else set(this, field, value.id);\n            }\n            set(this, 'salaryData', this.getSalaryData());\n        },\n\n        changeDate(value) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `change date filter`,\n                label: 'salary-sum widget',\n            });\n            if (value) set(this, 'date', value);\n            set(this, 'salaryData', this.getSalaryData());\n        },\n\n        changeLayout(layout) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Use ${layout} layout`,\n                label: 'salary-sum widget',\n            });\n\n            this.localstorage.setItem('sumwidget-layout', layout);\n            this.notifyPropertyChange('tableLayout');\n        },\n    },\n\n    async getPeriods() {\n        if (!this.currentSalaryPeriod) await this.setCurrentPeriod();\n        return [\n            {\n                key: 'this_week',\n                id:\n                    moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('isoWeek').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.this_week'),\n            },\n            {\n                key: 'last_week',\n                id:\n                    moment().subtract(1, 'week').startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().subtract(1, 'week').endOf('isoWeek').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.last_week'),\n            },\n            {\n                key: 'this_month',\n                id:\n                    moment().startOf('month').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('month').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.this_month'),\n            },\n            {\n                key: 'last_month',\n                id:\n                    moment().subtract(1, 'month').startOf('month').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().subtract(1, 'month').endOf('month').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.last_month'),\n            },\n            {\n                key: 'this_year',\n                id:\n                    moment().startOf('year').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.this_year'),\n            },\n            {\n                key: 'last_year',\n                id:\n                    moment().subtract(1, 'year').startOf('year').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().subtract(1, 'year').endOf('year').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.last_year'),\n            },\n            {\n                key: 'this_salaryperiod',\n                id: this.currentSalaryPeriod,\n                name: this.intl.t('general.period.this_salaryperiod'),\n            },\n        ];\n    },\n\n    async setCurrentPeriod() {\n        let salaryPeriods = this.store.peekAll('wage-period');\n        if (isEmpty(salaryPeriods)) salaryPeriods = await this.store.findAll('wage-period');\n        if (isEmpty(salaryPeriods))\n            return (this.currentSalaryPeriod =\n                moment().startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('month').format('YYYY-MM-DD'));\n\n        const currentDate = moment().format('YYYY-MM-DD');\n        const currentPeriods = salaryPeriods.filter((period) => {\n            return period.period_start_date <= currentDate && period.period_end_date >= currentDate;\n        });\n        if (isEmpty(currentPeriods))\n            return (this.currentSalaryPeriod =\n                moment().startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('month').format('YYYY-MM-DD'));\n        // Just set first that is found\n        this.currentSalaryPeriod =\n            currentPeriods[0].period_start_date + '_' + currentPeriods[0].period_end_date;\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime' || params.type === 'abcense') {\n            set(this, 'salaryData', this.getSalaryData());\n        }\n    },\n\n    async onResumeEvent(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        if (this.currentSalaryPeriod) {\n            // If dashboard is open for a long time, we have to update current period if its end date is past current date\n            const splitCurrent = this.currentSalaryPeriod.split('_');\n            if (splitCurrent[1] < moment().format('YYYY-MM-DD')) await this.setCurrentPeriod();\n        }\n        set(this, 'periods', await this.getPeriods());\n        if (this.date.key) set(this, 'date', this.periods.findBy('key', this.date.key));\n        else set(this, 'date', this.periods[0]);\n        set(this, 'salaryData', this.getSalaryData());\n    },\n\n    async getSalaryData() {\n        let data = {\n            date: this.date?.id\n                ? this.date.id\n                : moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                  '_' +\n                  moment().endOf('isoWeek').format('YYYY-MM-DD'),\n            user: this.user,\n            project: this.project ? this.project : null,\n            allowEmptySalaryCodes: true,\n            useSalarytypeV2: this.useSalarytypeV2,\n        };\n\n        /*if (this.worktimegroup) {\n            data.worktimegroup = this.worktimegroup\n            data.user = null\n        }*/\n        return this.ttapi.request('api/salary-categories', {\n            method: 'GET',\n            data: data,\n        });\n    },\n\n    async getSalarytypes() {\n        let data = await this.salaryData;\n        if (!data) return [];\n        let types = [];\n        data.forEach((row) => {\n            types = types.concat(\n                Object.keys(row).reject((item) => ['date', 'hours'].includes(item)),\n            );\n        });\n        // only unique ones sorted\n        types = types.filter((v, i, a) => a.indexOf(v) === i).sort();\n\n        let stypes = await this.salarytypes;\n        let formFields = await this.Collector.fieldArray('worktime');\n        let temptypes = [];\n        types.forEach((row) => {\n            let fieldType = this.getFieldType(row, stypes, formFields);\n            if (['pause', 'saldo'].includes(row)) {\n                let translatedName = this.intl.t('salarycategory.' + row);\n                temptypes.push({ name: row, fieldType, translatedName });\n            } else {\n                temptypes.push({ name: row, fieldType });\n            }\n        });\n        return temptypes;\n    },\n\n    getFieldType(type, salary, fields) {\n        let typeName = type.split(/\\((.*)\\)/);\n        let stype = salary.find((item) => item.name == typeName[0].trim());\n        if (!stype) return 'no_percent_hours';\n        if (stype.control === 'work_hours;salarytype=$this') return 'work_hours';\n        if (stype.control === '_midweek_holiday_pay') return 'no_percent_hours';\n        let fieldExt = this.useSalarytypeV2 ? stype.type : stype.option;\n        if (!stype.option && stype.control) {\n            let control = stype.control.split(/;|=/);\n            fieldExt = control[1];\n        }\n\n        // compensations and other dropdowns have : have in them (ie meal:full) but the field external type is only\n        // the first part.. ie meal:full -> meal\n        if (fieldExt.includes(':')) fieldExt = fieldExt.split(':')[0];\n\n        let field = fields.find((item) => item.name == fieldExt);\n        if (!field || field.type === 'hours') return 'work_hours';\n        return field.name;\n    },\n\n    handleComp(data, type) {\n        let dropdown = [];\n        data.forEach((row) => {\n            if (!row[type.name]) return;\n            dropdown[row[type.name]] = (dropdown[row[type.name]] || 0) + 1;\n        });\n        return dropdown;\n    },\n\n    async calculateTotalHours() {\n        let worktimeHours = await this.store.query('worktime', {\n            user: this.user,\n            date: this.date.id,\n            project: this.project,\n            cols: 'starttime,endtime,work_hours,user',\n        });\n        return worktimeHours.reduce((sum, row) => sum + (row['work_hours'] || 0), 0);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"MMuyt8i1\",\"block\":\"{\\\"symbols\\\":[\\\"sdata\\\",\\\"option\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@tableLayout\\\",\\\"@changeLayout\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,0,[\\\"tableLayout\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeLayout\\\"],null],[23,9,[]],[23,10,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[23,0,[\\\"salaryData\\\"]],6]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!userlevel=1\\\"],null],\\\"auto-flex-filters\\\",\\\"fixed-flex-filters\\\"],null]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"power-select\\\",[],[[\\\"@selected\\\",\\\"@options\\\",\\\"@onChange\\\"],[[23,0,[\\\"date\\\"]],[23,0,[\\\"periods\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeDate\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[23,2,[\\\"name\\\"]],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!userlevel=1\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"collector/field-comp\\\",[],[[\\\"@field\\\",\\\"@change\\\",\\\"@_class\\\",\\\"@value\\\",\\\"@usePowerDropdown\\\"],[[23,0,[\\\"projectField\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChange\\\"],null],\\\"\\\",[23,0,[\\\"project\\\"]],true]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"collector/field-comp\\\",[],[[\\\"@field\\\",\\\"@change\\\",\\\"@_class\\\",\\\"@value\\\"],[[23,0,[\\\"userField\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChange\\\"],null],\\\"\\\",[23,0,[\\\"user\\\"]]]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"tableLayout\\\"]],\\\"grid\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"salary-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"await\\\",[[23,0,[\\\"formattedSalaryData\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"no-salary-data\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"icon move move-Search\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.no-content\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[28,\\\"await\\\",[[23,0,[\\\"formattedSalaryData\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"salary-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h2\\\",true],[8],[1,[23,1,[\\\"accrual\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[8],[1,[23,1,[\\\"salarytype\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"dash-board/table\\\",null,[[\\\"data\\\",\\\"headers\\\",\\\"form\\\"],[[23,0,[\\\"formattedSalaryData\\\"]],[24,[\\\"headers\\\"]],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/salary-sum/template.hbs\"}});","/* eslint-disable ember/named-functions-in-promises */\nimport Component from '@ember/component';\nimport { set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    session: service(),\n    evented: service(),\n\n    init() {\n        this._super();\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n    },\n\n    didInsertElement() {\n        set(this, 'saldoHours', this.getSaldoData());\n    },\n\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime' || params.type === 'abcense')\n            set(this, 'saldoHours', this.getSaldoData());\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        set(this, 'saldoHours', this.getSaldoData());\n    },\n\n    async getSaldoData() {\n        const saldoSettings = await this.Collector.ttapi({\n            url: 'saldo/saldoSettings?userid=' + this.session.currentUser.id,\n        });\n        const userSaldo = await this.Collector.ttapi({\n            url: 'saldo/get_current_saldo?userid=' + this.session.currentUser.id,\n        });\n\n        set(this, 'max', saldoSettings['maximum'] / 60);\n        set(this, 'min', saldoSettings['minimum'] / 60);\n\n        return userSaldo['saldo'] / 60;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"KsNuUYhf\",\"block\":\"{\\\"symbols\\\":[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,1,[]],[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[24,[\\\"saldoHours\\\"]],6]]],false],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[5,\\\"gauge-chart\\\",[],[[\\\"@value\\\",\\\"@max\\\",\\\"@min\\\",\\\"@label\\\",\\\"@subLabel\\\"],[[28,\\\"await\\\",[[24,[\\\"saldoHours\\\"]]],null],[23,0,[\\\"max\\\"]],[23,0,[\\\"min\\\"]],[28,\\\"t\\\",[\\\"widget.saldo.label\\\"],null],[28,\\\"t\\\",[\\\"widget.saldo.sublabel\\\"],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/saldo/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"IddPsRb3\",\"block\":\"{\\\"symbols\\\":[\\\"@animate\\\"],\\\"statements\\\":[[7,\\\"svg\\\",true],[10,\\\"class\\\",\\\"clock\\\"],[10,\\\"width\\\",\\\"30\\\"],[10,\\\"height\\\",\\\"30\\\"],[10,\\\"viewBox\\\",\\\"0 0 24 24\\\"],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[8],[0,\\\"\\\\n\\\\n \\\"],[7,\\\"g\\\",true],[8],[0,\\\"\\\\n  \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"m9,0l0,2l6,0l0,-2l-6,0zm2,3l0,1.0625c-5.06474,0.49692 -9,4.73956 -9,9.9375c0,5.53333 4.46667,10 10,10c5.53333,0 10,-4.46667 10,-10c0,-2.91958 -1.26241,-5.51752 -3.25,-7.34375l1.34375,-1.34375l-1.40625,-1.40625l-1.53125,1.53125c-1.23644,-0.74298 -2.64489,-1.22671 -4.15625,-1.375l0,-1.0625l-2,0zm1,3c4.46667,0 8,3.53333 8,8c0,4.46667 -3.53333,8 -8,8c-4.46667,0 -8,-3.53333 -8,-8c0,-4.46667 3.53333,-8 8,-8z\\\"],[10,\\\"shape-rendering\\\",\\\"geometricPrecision\\\"],[8],[9],[0,\\\"\\\\n  \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"m6.68738,8.49994l3.5625,4.96875c-0.04601,0.16835 -0.0625,0.34831 -0.0625,0.53125c0,1.10457 0.89543,2 2,2c1.10457,0 2,-0.89543 2,-2c0,-1.10457 -0.89543,-2 -2,-2c-0.18294,0 -0.3629,0.01649 -0.53125,0.0625l-4.96875,-3.5625z\\\"],[10,\\\"shape-rendering\\\",\\\"geometricPrecision\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"animateTransform\\\",true],[10,\\\"attributeName\\\",\\\"transform\\\"],[10,\\\"attributeType\\\",\\\"XML\\\"],[10,\\\"from\\\",\\\"0 12 14\\\"],[10,\\\"to\\\",\\\"360 12 14\\\"],[10,\\\"dur\\\",\\\"60s\\\"],[10,\\\"repeatCount\\\",\\\"indefinite\\\"],[10,\\\"type\\\",\\\"rotate\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/timecard/clock/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport podNames from 'ember-component-css/pod-names';\nimport { tracked } from '@glimmer/tracking';\nimport { later, next } from '@ember/runloop';\nimport { save_record } from 'tt4/ember-movenium/utils/save-the-children';\n\nexport default class DashBoardWidgetsTimecardComponent extends Component {\n    @service store;\n    @service session;\n    @service evented;\n    @service('collector-service') collector;\n    @service() notifications;\n    @service intl;\n    @service error;\n    @service gps;\n    @service dialogs;\n    @service router;\n    @service localstorage;\n    @service flags;\n    @service analytics;\n\n    @tracked worktimes;\n    @tracked openWorktime;\n    @tracked newWorktime;\n    @tracked showNext;\n    @tracked promise;\n    @tracked showNext;\n    @tracked nextContainerOnTop;\n    @tracked siteTooFar;\n    @tracked descriptionTooLong;\n    @tracked showEdit;\n\n    get styleNamespace() {\n        return podNames['dash-board/widgets/timecard'];\n    }\n\n    get workHoursToday() {\n        if (!this.worktimes) return '';\n        return this.worktimes.reduce((total, worktime) => total + (worktime.work_hours || 0), 0);\n    }\n\n    get started() {\n        if (!this.worktimes) return '';\n        if (this.worktimes.length === 0) return '';\n        let min = '24:00';\n        this.worktimes.forEach((worktime) => {\n            if (worktime.starttime < min) min = worktime.starttime;\n        });\n        return min;\n    }\n\n    get timer() {\n        if (!this.openWorktime) return null;\n\n        // on first minute seconds should start from current seconds so counter starts from 00:00:00\n        const seconds =\n            this.openWorktime.starttime === moment().format('HH:mm') ? moment().format('ss') : '00';\n        return (\n            moment(this.openWorktime.date + ' ' + this.openWorktime.starttime).format(\n                'YYYY-MM-DD HH:mm:',\n            ) + seconds\n        );\n    }\n\n    // select fields that are shown on timecard start\n    // filter fields that are alwaysVisible or mandatory but not in newerShow\n    // return as string ie \"field1,field2\"\n    get showFieldsOnStart() {\n        const alwaysVisible = [\n            'project',\n            'task',\n            'subtask',\n            'subproject',\n            'affects_overtime',\n            'salarytype',\n        ];\n        const neverShow = ['user', 'date', 'starttime', 'endtime', 'location'];\n        const fields = this.collector.fieldArray('worktime').filter((field) => {\n            return (\n                alwaysVisible.includes(field.name) ||\n                (field.features.mandatory && !neverShow.includes(field.name))\n            );\n        });\n\n        return fields.mapBy('name').join(',');\n    }\n\n    get showFieldsOnEdit() {\n        const neverShow = ['user', 'date', 'starttime', 'endtime', 'location'];\n        const fields = this.collector.fieldArray('worktime').filter((field) => {\n            return !neverShow.includes(field.name);\n        });\n\n        return fields.mapBy('name').join(',');\n    }\n\n    constructor() {\n        super(...arguments);\n        this.form = 'worktime';\n        if (this.collector.testNeedsOne('products.gps_force')) this.siteTooFar = true;\n        this.getWorktimes();\n\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumeEvent');\n        this.gps.on('lockedPositionChanged', this, 'checkIfSiteTooFar');\n\n        this.router.on('routeWillChange', (transition) => {\n            if (!transition.to.find((route) => route.name === this.routeName)) {\n                this.newWorktime?.rollbackAttributes();\n                this.openWorktime?.rollbackAttributes();\n            }\n        });\n    }\n\n    willDestroy() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumeEvent');\n        this.gps.off('lockedPositionChanged', this, 'checkIfSiteTooFar');\n    }\n\n    @action\n    async start() {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Start worktime',\n            label: 'Timecard widget',\n        });\n\n        if (this.siteTooFar) return;\n\n        const worktime = this.newWorktime?.isDeleted\n            ? this.collector.copyRecord(this.newWorktime)\n            : this.newWorktime;\n        if (!worktime.date) worktime.date = moment().format('YYYY-MM-DD');\n        if (!worktime.user) worktime.user = this.session.currentUser;\n\n        worktime.starttime = moment().format('HH:mm');\n        if ('location' in worktime) worktime.location = await this.getLocation();\n        await worktime.validate();\n\n        if (!worktime.isValid) return;\n\n        // this.setDefaultPause(worktime)\n        this.openWorktime = worktime;\n        this.newWorktime = worktime;\n\n        this.updateWorktimes();\n\n        try {\n            await save_record(worktime, this);\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n            this.evented.storeEvent('insert', 'worktime', this.openWorktime);\n            if (this.args.saveAction) this.args.saveAction();\n        } catch (error) {\n            this.dialogs.alert(await this.error.toStringAsyncHTML(error));\n            worktime.starttime = null;\n            this.newWorktime = worktime;\n            this.openWorktime = null;\n        }\n    }\n\n    @action\n    async stop() {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Stop worktime',\n            label: 'Timecard widget',\n        });\n\n        if (this.siteTooFar) return;\n\n        const worktime = this.openWorktime;\n        await worktime.validate();\n\n        if (!worktime.isValid) return;\n\n        worktime.endtime = moment().format('HH:mm');\n        if ('end_location' in worktime) worktime.end_location = await this.getLocation();\n\n        this.openWorktime = null;\n        this.updateWorktimes();\n\n        try {\n            await worktime.save();\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n            this.evented.storeEvent('insert', 'worktime', this.openWorktime);\n            if (this.args.saveAction) this.args.saveAction();\n        } catch (error) {\n            this.error.notify(error);\n            worktime.endtime = null;\n            this.openWorktime = worktime;\n        }\n    }\n\n    @action\n    async startNext() {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Start next worktime',\n            label: 'Timecard widget',\n        });\n\n        if (this.siteTooFar) return;\n\n        const oldWorktime = this.openWorktime;\n        const newWorktime = this.newWorktime;\n\n        await oldWorktime.validate();\n        await newWorktime.validate();\n\n        if (!oldWorktime.isValid) return;\n        if (!newWorktime.isValid) return;\n\n        oldWorktime.endtime = moment().format('HH:mm');\n        if ('end_location' in oldWorktime) oldWorktime.end_location = await this.getLocation();\n        newWorktime.starttime = moment().format('HH:mm');\n\n        // hax to force render form again so new values of new record would be updated to fields... this wouldn't be needed\n        // if fields would support ddau better .. when ddau works change to one line \"this.openWorktime = newWorktime\"\n        this.openWorktime = null;\n        next(this, () => {\n            this.openWorktime = newWorktime;\n        });\n\n        this.newWorktime = this.createNewWorktime();\n\n        // hide next worktime component\n        this.closeNext();\n\n        this.updateWorktimes();\n\n        try {\n            await oldWorktime.save();\n            await newWorktime.save();\n\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n            this.evented.storeEvent('insert', 'worktime', oldWorktime);\n        } catch (error) {\n            this.error.notify(error);\n            newWorktime.starttime = null;\n            oldWorktime.endtime = null;\n            this.newWorktime = newWorktime;\n            this.openWorktime = oldWorktime;\n\n            this.openNext(0);\n        }\n    }\n\n    @action\n    openNext(time = 301) {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Open next worktime view',\n            label: 'Timecard widget',\n        });\n\n        this.showNext = true;\n\n        // animation takes 300ms so after that we change nextContainerOnTop to true witch makes removes stop div to hidden\n        // and makes startnew div to not absolute so it will change the size of the parent div\n        later(\n            this,\n            () => {\n                this.nextContainerOnTop = true;\n            },\n            time,\n        );\n    }\n\n    @action\n    closeNext() {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Close next worktime view',\n            label: 'Timecard widget',\n        });\n\n        this.showNext = false;\n        this.nextContainerOnTop = false;\n    }\n\n    @action\n    showEditView() {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Open edit worktime view',\n            label: 'Timecard widget',\n        });\n        this.showEdit = true;\n    }\n\n    @action onFieldChange(type, field, value) {\n        if (type === 'open') this.openWorktime[field] = value;\n        else if (type === 'new') this.newWorktime[field] = value;\n        if (field === 'description') {\n            this.descriptionTooLong =\n                value.length > 256 ? this.intl.t('validation.too_long_error') : null;\n        }\n    }\n\n    createNewWorktime() {\n        let defaults = { date: moment().format('YYYY-MM-DD'), user: this.session.currentUser };\n        if (this.collector.fieldExists('worktime', 'affects_overtime'))\n            defaults.affects_overtime = 'off';\n        return this.store.createRecord('worktime', defaults);\n    }\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime') this.getWorktimes();\n    }\n\n    onResumeEvent(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        this.getWorktimes();\n    }\n\n    async getWorktimes() {\n        this.promise = this.store.query('worktime', {\n            date:\n                moment().subtract(1, 'day').format('YYYY-MM-DD') +\n                '_' +\n                moment().format('YYYY-MM-DD'),\n            user: this.session.currentUser.id,\n            sideload: true,\n        });\n        const worktimes = await this.promise;\n\n        this.updateWorktimes();\n\n        const openWorktime = worktimes.find((worktime) => {\n            return worktime.starttime && !worktime.endtime;\n        });\n\n        if (openWorktime) {\n            this.setDefaultPause(openWorktime);\n            this.openWorktime = openWorktime;\n            this.checkIfSiteTooFar();\n        } else this.openWorktime = null;\n    }\n\n    updateWorktimes() {\n        this.worktimes = this.store.peekAll('worktime').filter((worktime) => {\n            return (\n                worktime.date === moment().format('YYYY-MM-DD') &&\n                worktime.user == this.session.currentUser\n            );\n        });\n\n        const records = this.store.peekAll('worktime').filterBy('isNew', true);\n        if (records.length > 0) {\n            this.newWorktime = records.firstObject;\n            // when reusing unsaved worktime .. date must always be today so play starts worktime for today\n            this.newWorktime.date = moment().format('YYYY-MM-DD');\n            if (\n                this.collector.fieldExists('worktime', 'affects_overtime') &&\n                !this.newWorktime.affects_overtime\n            )\n                this.newWorktime.affects_overtime = 'off';\n        } else {\n            this.newWorktime = this.createNewWorktime();\n        }\n        this.checkIfSiteTooFar();\n    }\n\n    // check if pause is on .. and set pause for given worktime\n    setDefaultPause(worktime) {\n        const pauseField = this.collector\n            .fieldArray('worktime')\n            .find((item) => item.name === 'pause');\n        let pause = null;\n        // support for worktime-groups\n        if (pauseField) {\n            if (typeof get(pauseField, 'features.default_value') == 'object')\n                pause = get(pauseField, 'features.default_value.value');\n            else pause = get(pauseField, 'features.default_value');\n        }\n\n        if ((!worktime.pause || worktime.pause == null) && pause) worktime.pause = pause;\n        // Need this hax also here because it overwrites somehow default pause in new clockcard 😩\n        if (worktime.multipause?.length === 0) worktime.pause = null;\n    }\n\n    async getLocation() {\n        if (this.gps.status != 'located') return null;\n\n        let location = {\n            latitude: await this.gps.lockedLatitude,\n            longitude: await this.gps.lockedLongitude,\n            accuracy: await this.gps.lockedAccuracy,\n        };\n\n        return JSON.stringify(location);\n    }\n\n    async checkIfSiteTooFar() {\n        if (!this.collector.fieldExists('project', 'force_location'))\n            return (this.siteTooFar = false);\n\n        if (!this.openWorktime) return (this.siteTooFar = true);\n\n        if (this.openWorktime.project.force_location == undefined)\n            await this.store.findRecord('project', this.openWorktime.project.id, { reload: true });\n        if (!this.openWorktime.project.force_location) return (this.siteTooFar = false);\n\n        if (!this.gps.getLockedPosition) return (this.siteTooFar = true);\n\n        let projectLocation = JSON.parse(this.openWorktime.project.location_map);\n        if (\n            !this.gps.withinAcceptedDistance(\n                { lat: projectLocation.latitude, lon: projectLocation.longitude },\n                {\n                    lat: this.gps.getLockedPosition.latitude,\n                    lon: this.gps.getLockedPosition.longitude,\n                },\n            )\n        )\n            return (this.siteTooFar = true);\n\n        this.siteTooFar = false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"i/+wgjIp\",\"block\":\"{\\\"symbols\\\":[\\\"@click\\\"],\\\"statements\\\":[[7,\\\"svg\\\",false],[12,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[12,\\\"width\\\",\\\"40\\\"],[12,\\\"height\\\",\\\"40\\\"],[12,\\\"viewBox\\\",\\\"0 0 60 60\\\"],[12,\\\"class\\\",\\\"timecard-edit-button\\\"],[3,\\\"action\\\",[[23,0,[]],[23,1,[]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"circle\\\",true],[10,\\\"id\\\",\\\"Ellipse_20\\\"],[10,\\\"data-name\\\",\\\"Ellipse 20\\\"],[10,\\\"cx\\\",\\\"30\\\"],[10,\\\"cy\\\",\\\"30\\\"],[10,\\\"r\\\",\\\"30\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Pencil\\\"],[10,\\\"d\\\",\\\"M20.094.25a2.245,2.245,0,0,0-1.625.656l-1,1.031,6.594,6.625,1-1.031a2.319,2.319,0,0,0,0-3.281L21.75.938A2.36,2.36,0,0,0,20.094.25Zm-3.75,2.594-1.562,1.5,6.875,6.875L23.25,9.75ZM13.781,5.438,2.969,16.156a.975.975,0,0,0-.5.625L.156,24.625a.975.975,0,0,0,1.219,1.219l7.844-2.312A.975.975,0,0,0,10,22.875L20.656,12.313,18,9.656h-.031L16.188,7.844Zm-9.625,12.5.531.531,2.594.219.125,2.531.656.656L3.844,23.094l-.937-.937Z\\\"],[10,\\\"transform\\\",\\\"translate(16.887 16.75)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/timecard/edit-button/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"xjJoFpum\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"fields\\\",\\\"fieldcomp\\\",\\\"field\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@timer\\\",\\\"@started\\\",\\\"@workhours\\\",\\\"@showFields\\\",\\\"@close\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_tracked\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"time\\\"],[8],[5,\\\"dash-board/widgets/timecard/clock\\\",[],[[\\\"@animate\\\"],[true]]],[0,\\\" \\\"],[1,[28,\\\"if\\\",[[23,10,[]],[28,\\\"duration-clock\\\",[[23,10,[]]],null],\\\"00:00:00\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"table\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.start\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[23,11,[]],false],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_today\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[28,\\\"if\\\",[[23,12,[]],[28,\\\"format-hours\\\",[[23,12,[]]],null],\\\"-\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"project\\\"],[8],[1,[23,8,[\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"collector/form-add/forms/worktime\\\",[],[[\\\"@only\\\",\\\"@record\\\",\\\"@close\\\",\\\"@preserveRecordOnDestroy\\\",\\\"@showSaved\\\"],[[23,13,[]],[23,8,[]],[23,14,[]],true,false]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field-cont\\\"],[8],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,5,[]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50\\\"],[8],[0,\\\"\\\\n                        \\\"],[6,[23,6,[]],[],[[\\\"@form\\\",\\\"@field\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@value\\\",\\\"@mandatory\\\"],[[23,7,[\\\"form\\\"]],[23,7,[\\\"name\\\"]],[23,8,[]],[28,\\\"fn\\\",[[23,9,[]],[23,7,[\\\"name\\\"]]],null],[28,\\\"get\\\",[[23,8,[]],[23,7,[\\\"name\\\"]]],null],[23,7,[\\\"mandatory\\\"]]]]],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[5,6]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field-cont\\\"],[8],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[]],\\\"expected `fieldcomp` to be a contextual component but found a string. Did you mean `(component fieldcomp)`? ('tt4/pods/components/dash-board/widgets/timecard/edit/template.hbs' @ L39:C26) \\\"],null]],[[\\\"field\\\"],[[23,4,[]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/timecard/edit/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"JarBmwur\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"fields\\\",\\\"fieldcomp\\\",\\\"record\\\",\\\"change\\\",\\\"field\\\",\\\"Fields\\\",\\\"Field\\\",\\\"Container\\\",\\\"FieldComponent\\\",\\\"@record\\\",\\\"@descriptionTooLong\\\",\\\"@onFieldChange\\\",\\\"@timer\\\",\\\"@started\\\",\\\"@workhours\\\",\\\"@siteTooFar\\\",\\\"@stop\\\",\\\"@edit\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_tracked\\\"],null],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"time\\\"],[8],[5,\\\"dash-board/widgets/timecard/clock\\\",[],[[\\\"@animate\\\"],[true]]],[0,\\\" \\\"],[1,[28,\\\"if\\\",[[23,14,[]],[28,\\\"duration-clock\\\",[[23,14,[]]],null],\\\"00:00:00\\\"],null],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"table\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.start\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[23,15,[]],false],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_today\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[28,\\\"if\\\",[[23,16,[]],[28,\\\"format-hours\\\",[[23,16,[]]],null],\\\"-\\\"],null],false],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"project\\\"],[8],[1,[23,11,[\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"collector/form-add/forms/worktime\\\",[],[[\\\"@only\\\",\\\"@sortFields\\\",\\\"@record\\\",\\\"@preserveRecordOnDestroy\\\"],[\\\"description,pause\\\",true,[23,11,[]],true]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,7,[]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-20\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[23,8,[\\\"translated_name\\\"]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"flex-item-80 field-\\\",[23,8,[\\\"name\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,8,[\\\"name\\\"]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[23,12,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[5,\\\"addon/field-container\\\",[],[[\\\"@record\\\",\\\"@form\\\",\\\"@field\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@value\\\"],[[23,11,[]],[23,8,[\\\"form\\\"]],[23,8,[\\\"name\\\"]],[28,\\\"fn\\\",[[23,13,[]],[23,8,[\\\"name\\\"]]],null],[23,8,[\\\"mandatory\\\"]],[28,\\\"get\\\",[[23,11,[]],[23,8,[\\\"name\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"let\\\",[[23,9,[\\\"fieldComponent\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,10,[]],[],[[\\\"@value\\\",\\\"@onChange\\\",\\\"@class\\\",\\\"@record\\\"],[[28,\\\"get\\\",[[23,11,[]],[23,8,[\\\"name\\\"]]],null],[23,9,[\\\"args\\\",\\\"onChange\\\"]],\\\"form-control\\\",[23,11,[]]]],{\\\"statements\\\":[],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[10]},null],[0,\\\"                            \\\"]],\\\"parameters\\\":[9]}],[0,\\\"\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,1,[\\\"fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-20\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[23,6,[\\\"translated_name\\\"]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"flex-item-80 field-\\\",[23,6,[\\\"name\\\"]]]]],[8],[0,\\\"\\\\n\\\\n                            \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"record\\\",\\\"change\\\"],[[28,\\\"hash\\\",null,[[\\\"features\\\",\\\"form\\\",\\\"name\\\",\\\"options\\\",\\\"translated_name\\\",\\\"type\\\",\\\"value\\\"],[[23,6,[\\\"features\\\"]],[23,6,[\\\"form\\\"]],[23,6,[\\\"name\\\"]],[23,6,[\\\"options\\\"]],[23,6,[\\\"translated_name\\\"]],[23,6,[\\\"type\\\"]],[28,\\\"get\\\",[[23,4,[]],[23,6,[\\\"name\\\"]]],null]]]],[23,4,[]],[23,5,[]]]]],false],[0,\\\"\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[2,3,4,5]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,17,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h5\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.gps.too_far\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column two-buttons\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 flex-center\\\"],[8],[0,\\\"\\\\n                \\\"],[5,\\\"stop-button\\\",[],[[\\\"@click\\\",\\\"@disabled\\\"],[[23,18,[]],[23,17,[]]]]],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25 flex-center flex-center-vertically\\\"],[8],[0,\\\"\\\\n                \\\"],[5,\\\"dash-board/widgets/timecard/edit-button\\\",[],[[\\\"@click\\\"],[[28,\\\"fn\\\",[[23,19,[]]],null]]]],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/timecard/end/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"vz5zCkI1\",\"block\":\"{\\\"symbols\\\":[\\\"@gpsStatus\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"searching\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"general.loading\\\"],null]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"worktime.location\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"located\\\"],null],\\\"text-success\\\",\\\"text-danger\\\"],null]],[8],[1,[28,\\\"standard-icon\\\",[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"located\\\"],null],\\\"ok\\\",\\\"remove\\\"],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/timecard/gps-indicator/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Gm59EnT+\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"fields\\\",\\\"fieldcomp\\\",\\\"field\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@record\\\",\\\"@timer\\\",\\\"@started\\\",\\\"@workhours\\\",\\\"@showFields\\\",\\\"@siteTooFar\\\",\\\"@start\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_tracked\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"time\\\"],[8],[1,[22,\\\"dash-board/widgets/timecard/clock\\\"],false],[0,\\\" \\\"],[1,[28,\\\"if\\\",[[23,9,[]],[28,\\\"duration-clock\\\",[[23,9,[]]],null],\\\"00:00:00\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"table\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.start\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[23,10,[]],false],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_today\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[28,\\\"if\\\",[[23,11,[]],[28,\\\"format-hours\\\",[[23,11,[]]],null],\\\"-\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"collector/form-add/forms/worktime\\\",[],[[\\\"@only\\\",\\\"@record\\\",\\\"@preserveRecordOnDestroy\\\"],[[23,12,[]],[23,8,[]],true]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field-cont\\\"],[8],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,5,[]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"length\\\"]],1],null],\\\"flex-item-100\\\",\\\"flex-item-50\\\"],null]],[8],[0,\\\"\\\\n                        \\\"],[6,[23,6,[]],[],[[\\\"@record\\\",\\\"@form\\\",\\\"@field\\\",\\\"@onChange\\\",\\\"@value\\\",\\\"@mandatory\\\"],[[28,\\\"readonly\\\",[[23,8,[]]],null],[23,7,[\\\"form\\\"]],[23,7,[\\\"name\\\"]],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,7,[\\\"name\\\"]]],null],[28,\\\"get\\\",[[23,8,[]],[23,7,[\\\"name\\\"]]],null],[23,7,[\\\"mandatory\\\"]]]]],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[5,6]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field-cont\\\"],[8],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,2,[\\\"length\\\"]],1],null],\\\"flex-item-100\\\",\\\"flex-item-50\\\"],null]],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[]],\\\"expected `fieldcomp` to be a contextual component but found a string. Did you mean `(component fieldcomp)`? ('tt4/pods/components/dash-board/widgets/timecard/start/template.hbs' @ L39:C26) \\\"],null]],[[\\\"field\\\"],[[23,4,[]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,13,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h5\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.gps.too_far\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[5,\\\"play-button\\\",[],[[\\\"@click\\\",\\\"@disabled\\\"],[[23,14,[]],[23,13,[]]]]],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/timecard/start/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"NH3ammiC\",\"block\":\"{\\\"symbols\\\":[\\\"@additionalClass\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\",\\\"@betaFeatureToggle\\\",\\\"@betaValue\\\"],[[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,9,[]],false,true]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"clockcard-25\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"dump-dev\\\",[],[[\\\"@text\\\"],[\\\"new clockcard v2.5\\\"]]],[0,\\\"\\\\n    \\\"],[5,\\\"clockcard\\\",[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\\n        \\\"],[5,\\\"dash-board/widget-spinner\\\",[],[[\\\"@promise\\\",\\\"@skeletonRows\\\"],[[23,0,[\\\"promise\\\"]],6]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"dash-board/widgets/timecard/edit\\\",[],[[\\\"@record\\\",\\\"@started\\\",\\\"@workhours\\\",\\\"@timer\\\",\\\"@showFields\\\",\\\"@close\\\",\\\"@onFieldChange\\\"],[[23,0,[\\\"openWorktime\\\"]],[23,0,[\\\"started\\\"]],[23,0,[\\\"workHoursToday\\\"]],[23,0,[\\\"timer\\\"]],[23,0,[\\\"showFieldsOnEdit\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[24,[\\\"showEdit\\\"]]],null],false],null],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"open\\\"],null]]]],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"openWorktime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"nextContainerOnTop\\\"]],\\\"hidden\\\"],null]],[8],[0,\\\"\\\\n                \\\"],[5,\\\"dash-board/widgets/timecard/end\\\",[],[[\\\"@record\\\",\\\"@started\\\",\\\"@workhours\\\",\\\"@timer\\\",\\\"@stop\\\",\\\"@edit\\\",\\\"@onFieldChange\\\",\\\"@siteTooFar\\\",\\\"@descriptionTooLong\\\"],[[23,0,[\\\"openWorktime\\\"]],[23,0,[\\\"started\\\"]],[23,0,[\\\"workHoursToday\\\"]],[23,0,[\\\"timer\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"stop\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"showEditView\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"open\\\"],null],[23,0,[\\\"siteTooFar\\\"]],[23,0,[\\\"descriptionTooLong\\\"]]]]],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"next-container \\\",[23,1,[]],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"showNext\\\"]],\\\"animate\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"nextContainerOnTop\\\"]],\\\"normalPosition\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column tabs\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25 sidetab\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showNext\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"closeNext\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Back\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"general.back\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.gps||products.gps_force\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[5,\\\"dash-board/widgets/timecard/gps-indicator\\\",[],[[\\\"@gpsStatus\\\"],[[23,0,[\\\"gps\\\",\\\"status\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"flex-item-50 tab flex-center\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openNext\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.next\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"general.worktime\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25 sidetab\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[5,\\\"dash-board/widgets/timecard/start\\\",[],[[\\\"@record\\\",\\\"@started\\\",\\\"@workhours\\\",\\\"@showFields\\\",\\\"@start\\\",\\\"@onFieldChange\\\",\\\"@siteTooFar\\\"],[[23,0,[\\\"newWorktime\\\"]],[23,0,[\\\"started\\\"]],[23,0,[\\\"workHoursToday\\\"]],[23,0,[\\\"showFieldsOnStart\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"startNext\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"new\\\"],null],[23,0,[\\\"siteTooFar\\\"]]]]],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"newWorktime\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"dash-board/widgets/timecard/start\\\",[],[[\\\"@record\\\",\\\"@started\\\",\\\"@workhours\\\",\\\"@showFields\\\",\\\"@start\\\",\\\"@siteTooFar\\\",\\\"@onFieldChange\\\"],[[23,0,[\\\"newWorktime\\\"]],[23,0,[\\\"started\\\"]],[23,0,[\\\"workHoursToday\\\"]],[23,0,[\\\"showFieldsOnStart\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"start\\\"]]],null],[23,0,[\\\"siteTooFar\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"new\\\"],null]]]],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.gps||products.gps_force\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[4,\\\"unless\\\",[[28,\\\"and\\\",[[23,0,[\\\"openWorktime\\\"]],[28,\\\"not\\\",[[24,[\\\"showNext\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\" \\\"],[5,\\\"dash-board/widgets/timecard/gps-indicator\\\",[],[[\\\"@gpsStatus\\\"],[[23,0,[\\\"gps\\\",\\\"status\\\"]]]]],[0,\\\" \\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/timecard/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action, set } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class TvStatusComponent extends Component {\n    @service ttapi;\n    @service evented;\n    @service intl;\n    @service store;\n    @service router;\n    @service localstorage;\n    @service analytics;\n    @service('collector-service') Collector;\n\n    @tracked pieData;\n    @tracked project;\n\n    get styleNamespace() {\n        return podNames['dash-board/widgets/tv-status'];\n    }\n\n    get projectField() {\n        let field = {};\n        if (this.Collector.fieldExists('worktime', 'project')) {\n            field = this.Collector.field('worktime', 'project');\n        } else {\n            field = this.Collector.field('presence', 'project');\n        }\n        if (field) {\n            field.prompt = this.intl.t('widget.tv-status.select_project');\n            field.value = this.project;\n        }\n        return field;\n    }\n\n    async getPieData() {\n        const response = await this.ttapi.request('api/project/employersTvStatus', {\n            data: { project: this.project },\n        });\n\n        const employers = response?.employers ?? [];\n        if (employers.length === 0) return [];\n\n        // Count employers by status\n        const statusCounts = employers.reduce((acc, employer) => {\n            const status = employer.tv_status || 'missing';\n            acc[status] = (acc[status] || 0) + 1;\n            return acc;\n        }, {});\n\n        this.statuses = Object.keys(statusCounts);\n\n        // Build chart data: [header, ...data rows]\n        const chartHeader = [\n            this.intl.t('submenu.project.tv_status'),\n            this.intl.t('submenu.project.tv_status')\n        ];\n\n        const chartData = Object.entries(statusCounts).map(([status, count]) => {\n            const normalizedStatus = status.replace(/ä/g, 'a').replace(/ö/g, 'o');\n            return [this.intl.t('employer.tv_status.' + normalizedStatus), count];\n        });\n\n        return [chartHeader, ...chartData];\n    }\n\n    constructor() {\n        super(...arguments);\n        this.project = this.localstorage.getItem('widget-tv-status-filter')\n            ? this.localstorage.getItem('widget-tv-status-filter')\n            : null;\n        this.project = this.args.project ? this.args.project : this.project;\n        this.pieData = this.getPieData();\n        this.pieOptions = {\n            height: 220,\n            width: 400,\n            pieSliceTextStyle: {\n                color: 'black',\n            },\n        };\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n        this.evented.on('dashboardProjectChanged', this, 'dashboardProjectChanged');\n    }\n\n    @action\n    filterChange(value, field) {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Change project',\n            label: 'Tv-status widget',\n        });\n        if (field) {\n            if (!value) set(this, field, null);\n            else set(this, field, value.id);\n        }\n        this.localstorage.setItem('widget-tv-status-filter', this.project);\n        this.pieData = this.getPieData();\n    }\n\n    @action\n    onSelect(value) {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Pie clicked',\n            label: 'Tv-status widget',\n        });\n\n        this.router.transitionTo('projects.edit.tv-status', this.project, {\n            queryParams: {\n                status: this.statuses[value],\n            },\n        });\n    }\n\n    willDestroy() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n        this.evented.off('dashboardProjectChanged', this, 'dashboardProjectChanged');\n    }\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime') this.pieData = this.getPieData();\n    }\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        this.pieData = this.getPieData();\n    }\n\n    dashboardProjectChanged() {\n        this.project = this.args.project ? this.args.project : null;\n        this.pieData = this.getPieData();\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"X4Eya9CE\",\"block\":\"{\\\"symbols\\\":[\\\"data\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,9,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n    \\\"],[5,\\\"dash-board/widget-spinner\\\",[],[[\\\"@promise\\\",\\\"@skeletonRows\\\"],[[23,0,[\\\"pieData\\\"]],5]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"fixed-flex-filters\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n              \\\"],[5,\\\"collector/field-comp\\\",[],[[\\\"@field\\\",\\\"@change\\\",\\\"@_class\\\",\\\"@value\\\",\\\"@usePowerDropdown\\\"],[[23,0,[\\\"projectField\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"filterChange\\\"]]],null],\\\"\\\",[23,0,[\\\"project\\\"]],true]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"project\\\"]]],null,{\\\"statements\\\":[[4,\\\"with\\\",[[28,\\\"await\\\",[[23,0,[\\\"pieData\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pie-chart\\\"],[8],[0,\\\"\\\\n                \\\\n                \\\"],[5,\\\"chart-comp\\\",[],[[\\\"@data\\\",\\\"@type\\\",\\\"@colors\\\",\\\"@options\\\",\\\"@onSelect\\\"],[[23,1,[]],\\\"pie\\\",[28,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.generic_timetracker\\\"],null],\\\"#5FCA8A,#FCD498,#FFB6B6,#FFF171,#92A1EF,#C894CE\\\",\\\"#A3C8C1,#F1E5C0,#F98B73,#F3DB87,#A6B9EE,#E3C0E7\\\"],null],[23,0,[\\\"pieOptions\\\"]],[28,\\\"action\\\",[[23,0,[]],[23,0,[\\\"onSelect\\\"]]],null]]],{\\\"statements\\\":[],\\\"parameters\\\":[]}],[0,\\\"\\\\n      \\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"centered-data\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.no-content\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"centered-data\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.tv-status.select_project\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/tv-status/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { action, set } from '@ember/object';\n\nexport default class WorkingNowComponent extends Component {\n    @service ttapi;\n    @service('collector-service') Collector;\n    @service evented;\n    @service intl;\n    @service analytics;\n\n    @tracked data;\n    @tracked page;\n    @tracked promise;\n    @tracked project;\n\n    get styleNamespace() {\n        return podNames['dash-board/widgets/working-now'];\n    }\n\n    get projectField() {\n        let field = this.Collector.field(this.form, 'project');\n        if (field) {\n            field.value = this.project;\n            field.prompt = 'general.all_projects';\n        }\n        return field;\n    }\n\n    get usersField() {\n        let field = this.Collector.field(this.form, 'user');\n        if (field) {\n            field.value = this.user;\n            field.prompt = 'general.all_users';\n        }\n        return field;\n    }\n\n    get employersField() {\n        let field = this.Collector.field(this.form, 'employer');\n        if (field) {\n            field.value = this.employer;\n            field.prompt = 'general.all_employers';\n        }\n        return field;\n    }\n\n    get pageCount() {\n        if (!this.data) return null;\n        return Math.ceil(this.data.count / this.limit);\n    }\n\n    get translated_headers() {\n        return this.headers.map((header) =>\n            this.intl.t('widget.working-now.table-header.' + header),\n        );\n    }\n\n    get form() {\n        return this.Collector.testNeedsOne('worktime') ? 'worktime' : 'presence';\n    }\n\n    async setData() {\n        this.data = await this.ttapi.request('api/workingNow', {\n            data: {\n                project: this.project,\n                employer: this.employer,\n                user: this.user,\n                offset: this.page,\n            },\n        });\n    }\n\n    constructor() {\n        super(...arguments);\n        this.promise = this.setData();\n        this.setHeaders();\n        this.limit = 25;\n        this.page = 1;\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n        this.evented.on('dashboardProjectChanged', this, 'dashboardProjectChanged');\n    }\n\n    @action\n    filterchanged(value, field) {\n        if (field) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Change ${field} filter`,\n                label: 'Working-now widget',\n            });\n            if (!value) set(this, field, null);\n            else set(this, field, value.id);\n        }\n        this.page = 1;\n        this.promise = this.setData();\n    }\n\n    @action\n    pageChange(page) {\n        this.page = page;\n        this.promise = this.setData();\n    }\n\n    willDestroy() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n        this.evented.off('dashboardProjectChanged', this, 'dashboardProjectChanged');\n    }\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime' || params.type === 'presence') this.promise = this.setData();\n    }\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        this.promise = this.setData();\n    }\n\n    dashboardProjectChanged() {\n        this.project = this.args.project ? this.args.project : null;\n        this.promise = this.setData();\n    }\n\n    setHeaders() {\n        this.headers = ['user', 'project', 'starttime'];\n        if (this.Collector.testNeedsOne('employer')) this.headers.insertAt(1, 'employer');\n    }\n    // if headers contain \"starttime\" and customer doesn't have worktime module, change \"starttime\" to \"in\" and return modified headers but don't change original headers\n    get pdf_headers() {\n        if (this.headers.includes('starttime') && !this.Collector.testNeedsOne('worktime')) {\n            let headers = this.headers.slice();\n            headers[headers.indexOf('starttime')] = 'in';\n            return headers;\n        }\n        return this.headers;\n    }\n    // if data contains \"starttime\" and customer doesn't have worktime module, change \"starttime\" to \"in\" and return modified data but don't change original data\n    get pdf_data() {\n        // check that:\n        // 1. data has rows\n        // 2. data has rows[0]\n        // 3. rows[0] has starttime\n        // 4. customer doesn't have worktime module\n        if (\n            this.data?.rows &&\n            this.data.rows[0] &&\n            this.data.rows[0].starttime &&\n            !this.Collector.testNeedsOne('worktime')\n        ) {\n            let data = this.data.rows.slice();\n            data.forEach((row) => {\n                row.in = row.starttime;\n                delete row.starttime;\n            });\n            return data;\n        }\n        return this.data ? this.data.rows : null;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"iDLAggCE\",\"block\":\"{\\\"symbols\\\":[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,1,[]],[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n    \\\"],[5,\\\"dash-board/widget-spinner\\\",[],[[\\\"@promise\\\",\\\"@skeletonRows\\\"],[[23,0,[\\\"promise\\\"]],3]]],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"needs\\\",[\\\"employer\\\"],null],\\\"auto-flex-filters\\\",\\\"fixed-flex-filters\\\"],null]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"collector/field-comp\\\",[],[[\\\"@field\\\",\\\"@change\\\",\\\"@_class\\\"],[[23,0,[\\\"usersField\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"filterchanged\\\"]]],null],\\\"\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"employer\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"collector/field-comp\\\",[],[[\\\"@field\\\",\\\"@change\\\",\\\"@_class\\\"],[[23,0,[\\\"employersField\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"filterchanged\\\"]]],null],\\\"\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"collector/field-comp\\\",[],[[\\\"@field\\\",\\\"@change\\\",\\\"@_class\\\",\\\"@value\\\",\\\"@usePowerDropdown\\\"],[[23,0,[\\\"projectField\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"filterchanged\\\"]]],null],\\\"\\\",[23,0,[\\\"project\\\"]],true]],{\\\"statements\\\":[],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"dash-board/table\\\",[],[[\\\"@data\\\",\\\"@headers\\\",\\\"@form\\\",\\\"@export\\\"],[[23,0,[\\\"data\\\",\\\"rows\\\"]],[23,0,[\\\"headers\\\"]],\\\"working-now\\\",true]],{\\\"statements\\\":[],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actions\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"dash-board/export\\\",[],[[\\\"@data\\\",\\\"@headers\\\",\\\"@translated_headers\\\",\\\"@form\\\"],[[23,0,[\\\"pdf_data\\\"]],[23,0,[\\\"pdf_headers\\\"]],[23,0,[\\\"translated_headers\\\"]],[23,0,[\\\"form\\\"]]]]],[0,\\\"\\\\n        \\\"],[5,\\\"pagi-nate\\\",[],[[\\\"@rowsPerPage\\\",\\\"@currentPage\\\",\\\"@pageCount\\\",\\\"@pageChange\\\"],[[23,0,[\\\"limit\\\"]],[23,0,[\\\"page\\\"]],[23,0,[\\\"pageCount\\\"]],[23,0,[\\\"pageChange\\\"]]]]],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/working-now/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment-timezone';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n    notifications: service(),\n    intl: service(),\n    analytics: service(),\n\n    loading: false,\n\n    workweek: computed('data', async function () {\n        const worktimes = await this.data;\n        return [0, 1, 2, 3, 4, 5, 6].map((index) => {\n            const date = moment().startOf('isoWeek').add(index, 'days');\n            return {\n                name: this.capitalize(date.format('dd')),\n                active: moment().isSame(date, 'day'),\n                hours: worktimes\n                    .filter((worktime) => moment(worktime.date).isSame(date, 'day'))\n                    .reduce((hours, worktime) => (hours += worktime.work_hours), 0),\n            };\n        });\n    }),\n\n    hoursToday: computed('data', async function () {\n        return (await this.data)\n            .filter((worktime) => moment(worktime.date).isSame(moment(), 'day'))\n            .reduce((hours, worktime) => (hours += worktime.work_hours), 0);\n    }),\n\n    hourSum: computed('workweek', async function () {\n        return (await this.workweek).reduce((hours, day) => (hours += day.hours), 0);\n    }),\n\n    init() {\n        this._super();\n\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n    },\n\n    didInsertElement() {\n        set(this, 'data', this.loadWorktimeData());\n    },\n\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n    },\n\n    actions: {\n        notifySaved() {\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n        },\n        showWorktimeModal() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Add worktime clicked',\n                label: 'worktime add widget',\n            });\n            set(this, 'addWorktimeModal', true);\n        },\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime') set(this, 'data', this.loadWorktimeData());\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        set(this, 'data', this.loadWorktimeData());\n    },\n\n    async loadWorktimeData() {\n        return await this.store.query('worktime', {\n            user: get(this, 'session.currentUser.id'),\n            date:\n                moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('week').format('YYYY-MM-DD'),\n        });\n    },\n\n    capitalize(str) {\n        return str.charAt(0).toUpperCase() + str.slice(1);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"nzNyGxLS\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\",\\\"&default\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,9,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[14,10],[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[24,[\\\"data\\\"]],6]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"column\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showWorktimeModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"calendar.add_worktime\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"hours-today\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.worktime-add.today\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"if\\\",[[28,\\\"await\\\",[[23,0,[\\\"hoursToday\\\"]]],null],[28,\\\"format-hours\\\",[[28,\\\"await\\\",[[23,0,[\\\"hoursToday\\\"]]],null]],null],\\\"-\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"column\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"week\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"header\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.worktime-add.week\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"workweek\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"day \\\",[28,\\\"if\\\",[[23,1,[\\\"active\\\"]],\\\"active\\\"],null]]]],[8],[7,\\\"div\\\",true],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\" \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"if\\\",[[23,1,[\\\"hours\\\"]],[28,\\\"format-hours\\\",[[23,1,[\\\"hours\\\"]]],null],\\\"-\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"foot\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.worktime-add.sum\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"if\\\",[[28,\\\"await\\\",[[23,0,[\\\"hourSum\\\"]]],null],[28,\\\"format-hours\\\",[[28,\\\"await\\\",[[23,0,[\\\"hourSum\\\"]]],null]],null],\\\"-\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"addWorktimeModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"close\\\",\\\"header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"addWorktimeModal\\\"]]],null],false],null],[28,\\\"t\\\",[\\\"calendar.add_worktime\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/form-add/forms/worktime\\\",null,[[\\\"showSaved\\\",\\\"rowAdded\\\",\\\"close\\\"],[false,[28,\\\"action\\\",[[23,0,[]],\\\"notifySaved\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"addWorktimeModal\\\"]]],null],false],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/worktime-add/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    intl: service(),\n    store: service(),\n    session: service(),\n    ttapi: service(),\n    gui: service(),\n    evented: service(),\n    analytics: service(),\n\n    minDate: computed('center', function () {\n        if (!this.Collector.testNeedsOne('worktime')) return;\n        return new Date(this.center.getFullYear(), this.center.getMonth(), 1);\n    }),\n\n    maxDate: computed('center', function () {\n        if (!this.Collector.testNeedsOne('worktime')) return;\n        return new Date(this.center.getFullYear(), this.center.getMonth() + 1, 0);\n    }),\n\n    startOfMonth: computed('center', function () {\n        return moment(this.center).startOf('month').format('YYYY-MM-DD');\n    }),\n\n    endOfMonth: computed('center', function () {\n        return moment(this.center).endOf('month').format('YYYY-MM-DD');\n    }),\n\n    modalDate: computed('selected', function () {\n        let date = moment(this.selected).format('YYYY-MM-DD');\n        return date + '_' + date;\n    }),\n\n    navMonth: computed('center', 'intl.primaryLocale', function () {\n        return moment(this.center).format('MMMM YYYY');\n    }),\n\n    modalHeader: computed('selected', 'intl.primaryLocale', function () {\n        return moment(this.selected).format('dd DD[.]MM[.]YYYY');\n    }),\n\n    formattedDate: computed('selected', function () {\n        return moment(this.selected).format('YYYY-MM-DD');\n    }),\n\n    init() {\n        this._super();\n\n        let date = new Date();\n        this.center = new Date(date.getFullYear(), date.getMonth(), 1);\n        // this.specialDays = []\n        let forms = [];\n        if (this.Collector.testNeedsOne('worktime')) forms.push('worktime');\n        if (this.Collector.testNeedsOne('abcense')) forms.push('abcense');\n        this.forms = forms;\n\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n    },\n\n    didInsertElement() {\n        this.setAllData();\n    },\n\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n    },\n\n    actions: {\n        changeCenter(date) {\n            set(this, 'center', date);\n            this.setAllData();\n        },\n        changeMonth(amount) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Change month`,\n                label: 'worktime-calendar widget',\n            });\n            let center = get(this, 'center');\n            let newCenter = new Date(center.setMonth(center.getMonth() + amount));\n            set(this, 'center', newCenter);\n            this.setAllData();\n        },\n        selectDate(date) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Date clicked`,\n                label: 'worktime-calendar widget',\n            });\n            if (this.dayToBeCopied) {\n                this.dayToBeCopied(date);\n                return;\n            }\n            set(this, 'selected', date);\n        },\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime') set(this, 'worktimes', this.getWorktimes());\n        if (params.type === 'abcense') set(this, 'absences', this.getAbsences());\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        let center = get(this, 'center');\n        let date = new Date();\n        // if month shown in calendar is current month, update it to reflect possible day change\n        if (center.getMonth() === date.getMonth()) {\n            set(this, 'center', new Date(date.getFullYear(), date.getMonth(), 1));\n        }\n        this.setAllData();\n    },\n\n    setAllData() {\n        set(this, 'worktimes', this.getWorktimes());\n        set(this, 'absences', this.getAbsences());\n        set(this, 'specialDays', this.getSpecialDays());\n        set(this, 'weekNumbers', this.getweekNumbersForMonth());\n    },\n\n    async getWorktimes() {\n        if (!this.Collector.testNeedsOne('worktime')) return;\n        const params = {\n            date: this.startOfMonth + '_' + this.endOfMonth,\n            user: this.session.currentUser.id,\n            sideload: true,\n            limit: 500,\n        };\n        let query = await this.store.query('worktime', params);\n        let days = {};\n        let sum = 0;\n        query.forEach((worktime) => {\n            let date = get(worktime, 'date');\n\n            if (days[date]) days[date] += get(worktime, 'work_hours');\n            else days[date] = get(worktime, 'work_hours');\n\n            sum += get(worktime, 'work_hours');\n        });\n        return { days, sum };\n    },\n\n    async getAbsences() {\n        if (!this.Collector.testNeedsOne('abcense')) return;\n        const params = {\n            startdate: this.startOfMonth,\n            enddate: this.endOfMonth,\n            order: 'starttime,endtime',\n            user: this.session.currentUser.id,\n            sideload: ['abcensetype.name'],\n        };\n        let absences = await this.ttapi._get('absence/split', params);\n\n        let days = {};\n        let sum = 0;\n\n        absences.forEach((absence) => {\n            let date = get(absence, 'date');\n            let hours = get(absence, 'hours');\n\n            // Handle absences with exporttype==days which have their hours always set to 1.\n            // Calculate hours based on total absence hours divided by amount of days.\n            const dayamount = get(absence, 'dayamount');\n            if (absence.abcensetype?.exporttype === 'days' && dayamount > 0) {\n                hours = get(absence, 'absence_hours') / dayamount;\n            }\n\n            if (days[date]) {\n                days[date] += hours;\n            } else {\n                days[date] = hours;\n            }\n\n            sum += hours;\n        });\n        return { days, sum };\n    },\n\n    async getSpecialDays() {\n        const worktimegroup = await this.session.currentUser.worktimegroup;\n        let params = { date: this.startOfMonth + '_' + this.endOfMonth };\n        if (worktimegroup) params.worktimegroup = worktimegroup.id;\n        let workdays = await this.store.query('workday-day', params);\n        let days = {};\n        workdays.forEach((day) => {\n            if (day.minutes === 0) days[get(day, 'date')] = get(day, 'date');\n        });\n        return days;\n    },\n\n    // https://stackoverflow.com/questions/2483719/get-weeks-in-month-through-javascript\n    getweekNumbersForMonth() {\n        var firstOfMonth = moment(this.center).startOf('month');\n        var lastOfMonth = moment(this.center).endOf('month');\n        var day = firstOfMonth.day() || 6;\n        day = day === 1 ? 0 : day;\n        if (day) {\n            day--;\n        }\n        var diff = 7 - day;\n        var lastDate = lastOfMonth.date();\n        if (lastOfMonth.day() === 1) {\n            diff--;\n        }\n        var weeksInMonth = Math.ceil((lastDate - diff) / 7);\n        let weeks = [];\n        for (var i = 0; i < weeksInMonth + 1; i++) {\n            weeks.pushObject(\n                moment(this.center)\n                    .startOf('month')\n                    .add(i * 7, 'day')\n                    .isoWeek(),\n            );\n        }\n        return weeks;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"bn4OWDgA\",\"block\":\"{\\\"symbols\\\":[\\\"table\\\",\\\"calendar\\\",\\\"day\\\",\\\"absence\\\",\\\"worktime\\\",\\\"week\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,7,[]],[23,8,[]],[23,9,[]],[23,10,[]],[23,11,[]],[23,12,[]],[23,13,[]],[23,14,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[28,\\\"promise-all\\\",[[24,[\\\"worktimes\\\"]],[24,[\\\"absences\\\"]],[24,[\\\"specialDays\\\"]]],null],22]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"hideStatictics\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-worktime-sum\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-sum-text\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"general.worktimes\\\"],null],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"if\\\",[[28,\\\"await\\\",[[28,\\\"promise-all\\\",[[24,[\\\"worktimes\\\"]],[24,[\\\"absences\\\"]],[24,[\\\"specialDays\\\"]]],null]],null],[28,\\\"format-hours\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"worktimes\\\"]]],null],\\\"sum\\\"],null],\\\"0:00h\\\"],null]],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"hideStatictics\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-absence-sum\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-sum-text\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"general.absences\\\"],null],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"if\\\",[[28,\\\"await\\\",[[28,\\\"promise-all\\\",[[24,[\\\"worktimes\\\"]],[24,[\\\"absences\\\"]],[24,[\\\"specialDays\\\"]]],null]],null],[28,\\\"format-hours\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"absences\\\"]]],null],\\\"sum\\\"],null],\\\"0:00h\\\"],null]],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-weeknumbers-container\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-weeknumbers-day-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.week_abbr\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[28,\\\"promise-all\\\",[[24,[\\\"weekNumbers\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-week-number\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-week-span\\\"],[8],[1,[23,6,[]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column widget-worktime-calendar-week-container\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"power-calendar\\\",[],[[\\\"@locale\\\",\\\"@center\\\",\\\"@onCenterChange\\\",\\\"@selected\\\",\\\"@onSelect\\\"],[[23,0,[\\\"intl\\\",\\\"primaryLocale\\\"]],[23,0,[\\\"center\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeCenter\\\"],[[\\\"value\\\"],[\\\"date\\\"]]],[23,0,[\\\"selected\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"selectDate\\\"],[[\\\"value\\\"],[\\\"date\\\"]]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\\n        \\\"],[6,[23,2,[\\\"days\\\"]],[],[[\\\"@startOfWeek\\\",\\\"@minDate\\\",\\\"@maxDate\\\"],[1,[23,0,[\\\"minDate\\\"]],[23,0,[\\\"maxDate\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-pending\\\",[[28,\\\"promise-all\\\",[[24,[\\\"worktimes\\\"]],[24,[\\\"absences\\\"]],[24,[\\\"specialDays\\\"]]],null]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[\\\"isCurrentMonth\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-day-number\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"strong\\\",true],[11,\\\"class\\\",[29,[\\\"\\\\n                                \\\",[28,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-sunday\\\",[[23,3,[\\\"date\\\"]]],null],[23,3,[\\\"isCurrentMonth\\\"]]],null],\\\"sunday\\\"],null],\\\"\\\\n                                \\\",[28,\\\"if\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"specialDays\\\"]]],null],[23,3,[\\\"id\\\"]]],null],\\\"specialDay\\\"],null],\\\"\\\\n                                \\\",[28,\\\"unless\\\",[[23,3,[\\\"isCurrentMonth\\\"]],\\\"lastMonth\\\"],null],\\\"\\\\n                            \\\"]]],[8],[0,\\\"\\\\n                                \\\"],[1,[23,3,[\\\"number\\\"]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\\n\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"get\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"worktimes\\\"]]],null],\\\"days\\\"],null],[23,3,[\\\"id\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-item worktime-item\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"format-hours\\\",[[23,5,[]],0,true],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"get\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"absences\\\"]]],null],\\\"days\\\"],null],[23,3,[\\\"id\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-item absence-item\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"format-hours\\\",[[23,4,[]],0,true],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\\n\\\\n\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n        \\\"],[2,\\\" custom <calendar.nav /> \\\"],[0,\\\"\\\\n        \\\"],[7,\\\"nav\\\",true],[10,\\\"class\\\",\\\"ember-power-calendar-nav\\\"],[8],[0,\\\"\\\\n            \\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn-icon\\\"],[12,\\\"name\\\",\\\"calendar-nav-last-month\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeMonth\\\",-1]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"vismaicon vismaicon-dynamic vismaicon-move-left-circle\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"ember-power-calendar-nav-title\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[23,0,[\\\"navMonth\\\"]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn-icon\\\"],[12,\\\"name\\\",\\\"calendar-nav-next-month\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeMonth\\\",1]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"vismaicon vismaicon-dynamic vismaicon-move-right-circle\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"selected\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"isPreviousDayCopyComponent\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@header\\\",\\\"@close\\\"],[[23,0,[\\\"modalHeader\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"selected\\\"]]],[[\\\"value\\\"],[null]]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"workday-summary\\\",[],[[\\\"@user\\\",\\\"@day\\\",\\\"@date\\\",\\\"@addForms\\\",\\\"@autoclose\\\",\\\"@close\\\"],[[23,0,[\\\"session\\\",\\\"currentUser\\\",\\\"id\\\"]],[23,0,[\\\"formattedDate\\\"]],[23,0,[\\\"modalDate\\\"]],[23,0,[\\\"forms\\\"]],true,[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"selected\\\"]]],[[\\\"value\\\"],[null]]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"edit\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"add\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/worktime-calendar/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/database-multiple-filter/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Component;\n\nimport Ember from 'ember';\n\nComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    mySites: Ember.inject.service(),\n    //which filter options are affected by query params\n    linked_fields: ['worktime.user'],\n    placeholder: Em.computed(function () {\n        if (!this.get('filter.prompt')) {\n            return this.get('intl').t(this.get('filter.form') + '.' + this.get('filter.field'));\n        }\n        return this.get('intl').t(this.get('filter.prompt'));\n    }),\n    show_deleted: false,\n    salaryTypeFields: ['abcensetype', 'worktype'],\n\n    //must have observer to observe filter clear\n    valueObs: Em.observer('filter.value', function () {\n        if (Em.isEmpty(this.get('filter.value'))) {\n            this.set('row', []);\n            return this.sendAction('change', [], this.get('filter.field'));\n        }\n    }),\n    init: function () {\n        var filter_ids, promise_arr, selected_rows;\n        this._super();\n        if (this.get('filter.name') && !this.get('filter.field')) {\n            this.set('filter.field', this.get('filter.name'));\n        }\n        if (!Em.isEmpty(this.get('filter.value'))) {\n            filter_ids = [];\n            if (typeof this.get('filter.value') === 'string') {\n                filter_ids = this.get('filter.value').split(',');\n            }\n            selected_rows = [];\n            promise_arr = [];\n            return this.get('options').then((options) => {\n                filter_ids.forEach((filter_id) => {\n                    var sel_opt;\n                    sel_opt = options.findBy('id', filter_id);\n                    //if option not found in list already\n                    if (Em.isEmpty(sel_opt)) {\n                        promise_arr.push(\n                            this.get('Collector').findFormRelations(\n                                this.get('filter.form'),\n                                this.get('filter.field'),\n                                {\n                                    id: filter_id,\n                                },\n                            ),\n                        );\n                        return promise_arr.push(\n                            this.get('Collector').findFormRelations(\n                                this.get('filter.form'),\n                                this.get('filter.field'),\n                                {\n                                    id: filter_id,\n                                    row_info_status: 'removed',\n                                },\n                            ),\n                        );\n                    } else {\n                        return selected_rows.push(sel_opt);\n                    }\n                });\n                if (!Em.isEmpty(promise_arr)) {\n                    return Ember.RSVP.Promise.all(promise_arr).then((rows) => {\n                        //if second row not empty = show deleted is selected\n                        if (!Em.isEmpty(rows[1])) {\n                            this.set('show_deleted', true);\n                        }\n                        rows.forEach((rowobj) => {\n                            var obj, row, text;\n                            row = rowobj.get('firstObject');\n                            if (!Em.isEmpty(row)) {\n                                text = this.getText(row);\n                                obj = {\n                                    id: row.get('id'),\n                                    name: text,\n                                };\n                                return selected_rows.push(obj);\n                            }\n                        });\n                        return this.set('row', selected_rows);\n                    });\n                } else {\n                    return this.set('row', selected_rows);\n                }\n            });\n        }\n    },\n    currentMySites: Ember.computed(function () {\n        var currentMySites, slicedArr;\n        currentMySites = this.get('mySites').loadFromLocalStorage();\n        slicedArr = currentMySites.slice(0, 5);\n        return slicedArr;\n    }),\n    options: Em.computed('show_deleted', function () {\n        var arr,\n            currentMySites,\n            field,\n            filterOptions,\n            formfield,\n            key,\n            links,\n            mySitesArr,\n            params,\n            projectFields;\n        params = {};\n        arr = [];\n        mySitesArr = [];\n        currentMySites = this.get('currentMySites');\n        projectFields = ['project', 'ori_site', 'contract_project'];\n        //filter options only when field is found in linked_fields\n        formfield = this.get('filter.form') + '.' + this.get('filter.field');\n        if (this.get('linked_fields').includes(formfield)) {\n            field = this.get('Collector').field(this.get('filter.form'), this.get('filter.field'));\n            //get this field forms database links\n            links = this.get('Collector')\n                .fieldArray(field.options.form)\n                .filterBy('type', 'database')\n                .mapBy('options.form');\n            //check if some filter which has value is related to this filter\n            this.get('allFilters').forEach((other_filter) => {\n                var real_field;\n                //skip filters without value\n                if (Em.isEmpty(other_filter.value)) {\n                    return;\n                }\n                //skip all but database fields\n                if (other_filter.type !== 'database') {\n                    return;\n                }\n                //skip self\n                if (other_filter.field === this.get('filter.field')) {\n                    return;\n                }\n                //check if filter is found in current form fields\n                if (links.includes(other_filter.field)) {\n                    //get real name for field\n                    real_field = this.get('Collector')\n                        .fieldArray(field.options.form)\n                        .filterBy('options.form', other_filter.field)\n                        .get('firstObject');\n                    //and add it to params\n                    return (params[real_field.name] = other_filter.value);\n                }\n            });\n        }\n        if (this.get('show_deleted')) {\n            params.row_info_status = 'removed';\n        }\n        filterOptions = this.get('filter.filterOptions');\n        if (filterOptions) {\n            for (key in filterOptions) {\n                if (filterOptions[key]) {\n                    params[key] = filterOptions[key];\n                }\n            }\n        }\n        // set mysite options\n        let mySitesPromise = Ember.RSVP.resolve();\n        if (projectFields.includes(this.get('filter.field')) && currentMySites.length > 0) {\n            this.set('showMySitesLabel', true);\n            this.set('showOthersLabel', true);\n            mySitesPromise = this.findMysites(currentMySites.getEach('id')).then((items) => {\n                return items.forEach((item) => {\n                    return mySitesArr.push({\n                        id: item.id,\n                        name: this.getText(item),\n                    });\n                });\n            });\n        }\n        // return filter options with subheaders\n        if (\n            this.salaryTypeFields.includes(this.get('filter.field')) &&\n            this.Collector.testNeedsOne('products.salarytype_v2')\n        ) {\n            return this.getOptionsWithSubheaders(this.filter, params);\n        }\n\n        // set other options\n        const optionsPromise = this.get('Collector')\n            .findFormRelations(this.get('filter.form'), this.get('filter.field'), params)\n            .then((rows) => {\n                rows.forEach((row) => {\n                    var text;\n                    text = this.getText(row);\n                    return arr.push({\n                        id: row.id,\n                        name: text,\n                    });\n                });\n            });\n\n        // wait for both promises before building the final array\n        return Ember.RSVP.Promise.all([mySitesPromise, optionsPromise]).then(() => {\n                const randomId =\n                    Math.random().toString(36).substring(2, 15) +\n                    Math.random().toString(36).substring(2, 15);\n                if (this.get('showMySitesLabel')) {\n                    mySitesArr.unshift({\n                        id: randomId,\n                        label: this.get('intl').t('my-sites.title'),\n                        disabled: true,\n                    });\n                }\n                if (this.get('showOthersLabel')) {\n                    arr.unshift({\n                        id: randomId + 1,\n                        label: this.get('intl').t('other-sites.label'),\n                        disabled: true,\n                    });\n                }\n                if (mySitesArr.length > 0) {\n                    arr = mySitesArr.concat(arr).uniqBy('id');\n                }\n                if (this.get('show_deleted')) {\n                    arr.push({\n                        hide_deleted: true,\n                    });\n                } else {\n                    arr.push({\n                        show_deleted: true,\n                    });\n                }\n                return arr;\n            });\n    }),\n    // why: some salarytype fields needs subheaders,\n    // ie service can have multiple absence types with same name so we need to have subheader that tells user which worktimegroup it belongs to\n    async getOptionsWithSubheaders(filter, params) {\n        params.sideload = true;\n        let options = await this.store.query(filter.options.form, params);\n        let orderedOptions = await options.sortBy('worktimegroup.name');\n        let filterOptionsArr = [];\n\n        orderedOptions.map((item) => {\n            // if worktimegroup label is not found in optionsArr, add it\n            if (\n                item.worktimegroup &&\n                !filterOptionsArr.find((option) => option?.id == item.worktimegroup.id)\n            ) {\n                filterOptionsArr.push({\n                    id: item.worktimegroup.id,\n                    label: item.worktimegroup.name,\n                    disabled: true,\n                });\n            }\n            // add item to optionsArr\n            return filterOptionsArr.push({\n                id: item.id,\n                name: this.getText(item),\n            });\n        });\n        // add show/hide deleted options\n        filterOptionsArr.push(this.show_deleted ? { hide_deleted: true } : { show_deleted: true });\n\n        return filterOptionsArr;\n    },\n\n    getText: function (record) {\n        var field, i, len, ref, ref1, text, val;\n        text = '';\n        if (!record) {\n            return '';\n        }\n        field = this.get('Collector').field(this.get('filter.form'), this.get('filter.field'));\n        ref = field.options.fields;\n        for (i = 0, len = ref.length; i < len; i++) {\n            field = ref[i];\n            if (!field) {\n                continue;\n            }\n            val = record.get(field);\n            if (val && (ref1 = Ember.typeOf(val)) !== 'object' && ref1 !== 'array') {\n                text += val + ' ';\n            }\n        }\n        return text.slice(0, -1);\n    },\n    findRows: function () {\n        var arr, filterOptions, key, params, q, row_status;\n        if (this.get('show_deleted')) {\n            row_status = 'removed';\n        }\n        q = this.get('q');\n        params = {\n            q: q,\n            row_info_status: row_status,\n        };\n        // add filter options also to search params\n        filterOptions = this.get('filter.filterOptions');\n        if (filterOptions) {\n            for (key in filterOptions) {\n                if (filterOptions[key]) {\n                    params[key] = filterOptions[key];\n                }\n            }\n        }\n        // set filter options with subheaders\n        if (\n            this.salaryTypeFields.includes(this.get('filter.field')) &&\n            this.Collector.testNeedsOne('products.salarytype_v2')\n        ) {\n            this.set('options', this.getOptionsWithSubheaders(this.filter, params));\n            return this.set('searching', false);\n        }\n\n        arr = [];\n        return this.get('Collector')\n            .findFormRelations(this.get('filter.form'), this.get('filter.field'), params)\n            .then((rows) => {\n                if (this.get('isDestroyed')) {\n                    return;\n                }\n                rows.forEach((row) => {\n                    var text;\n                    text = this.getText(row);\n                    return arr.push({\n                        id: row.id,\n                        name: text,\n                    });\n                });\n                if (this.get('show_deleted')) {\n                    arr.push({\n                        hide_deleted: true,\n                    });\n                } else {\n                    arr.push({\n                        show_deleted: true,\n                    });\n                }\n                this.set('options', arr);\n                return this.set('searching', false);\n            });\n    },\n    findMysites: function (ids) {\n        return this.get('Collector').findFormRelations(\n            this.get('filter.form'),\n            this.get('filter.field'),\n            {\n                id: ids.join(),\n            },\n        );\n    },\n    showIEPlaceholder: Ember.computed('row', function () {\n        // Mega haxx for showing a \"placeholder\" on IE11 because power-select is buggy\n        return this.get('isIE') && !this.get('row');\n    }),\n    actions: {\n        selectRow: function (row) {\n            var ids;\n            if (!Em.isEmpty(row.findBy('show_deleted'))) {\n                this.set('show_deleted', true);\n                return;\n            }\n            if (!Em.isEmpty(row.findBy('hide_deleted'))) {\n                this.set('show_deleted', false);\n                return;\n            }\n            this.set('row', row);\n            ids = row.mapBy('id').toString();\n            ids = ids.replace(/(,$)|(^,)/g, ''); // make sure we don't have preceding or trailing comma.\n            //do not send change action if values not actually changed\n            if (ids === this.get('filter.value')) {\n                return;\n            }\n            return this.sendAction('change', ids, this.get('filter.field'));\n        },\n        searchRows: function (q) {\n            this.set('searching', true);\n            this.set('options', [\n                {\n                    loader: true,\n                },\n            ]);\n            this.set('q', q);\n            return Ember.run.debounce(this, this.findRows, 500);\n        },\n        closeDropdown: function () {\n            if (!Em.isNone(this.get('q'))) {\n                this.set('q', void 0);\n                return this.findRows();\n            }\n        },\n        preventEnter: function (options, e) {\n            if (e.key === 'Enter' && this.get('searching')) {\n                e.preventDefault();\n                return false;\n            }\n            return true;\n        },\n    },\n});\n\nexport default Component;\n","export default Ember.HTMLBars.template({\"id\":\"hNuq9MbH\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showIEPlaceholder\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"ie-placeholder\\\"],[8],[1,[22,\\\"placeholder\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@options\\\",\\\"@selected\\\",\\\"@search\\\",\\\"@searchField\\\",\\\"@searchEnabled\\\",\\\"@onclose\\\",\\\"@placeholder\\\",\\\"@onChange\\\",\\\"@loadingMessage\\\",\\\"@noMatchesMessage\\\",\\\"@searchMessage\\\",\\\"@onkeydown\\\"],[[23,0,[\\\"options\\\"]],[23,0,[\\\"row\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"searchRows\\\"],null],\\\"name\\\",true,[28,\\\"action\\\",[[23,0,[]],\\\"closeDropdown\\\"],null],[23,0,[\\\"placeholder\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"selectRow\\\"],null],[28,\\\"t\\\",[\\\"general.loading\\\"],null],[28,\\\"t\\\",[\\\"general.no_rows_found\\\"],null],[28,\\\"t\\\",[\\\"general.search\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"preventEnter\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"loader\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"show_deleted\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.actions.show_removed\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"hide_deleted\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.actions.show_normal\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"label\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"b\\\",true],[10,\\\"data-anchor\\\",\\\"multiple-filter-label\\\"],[8],[1,[23,1,[\\\"label\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/database-multiple-filter/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/date-range-picker/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDateRangePickerComponent;\n\nimport Ember from 'ember';\n\nimport { computed } from '@ember/object';\n\nimport $ from 'jquery';\n\nimport { isEmpty } from '@ember/utils';\n\nEmber.TextField.reopen({\n    attributeBindings: ['data-anchor'],\n});\n\nCollectorFieldsDateRangePickerComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    serverFormat: 'YYYY-MM-DD',\n    screenLimit: 564,\n    maximumDateIntervalInYears: 3,\n    showDropdown: true,\n    didInsertElement: function () {\n        let datesArr, end, lang, options, self, serverFormat, start;\n\n        if (window.innerWidth <= this.get('screenLimit')) {\n            this.set('readonly', true);\n        }\n\n        self = this;\n        serverFormat = this.get('serverFormat');\n\n        if (this.get('value')) {\n            datesArr = this.get('value').split('_');\n        } else {\n            datesArr = [];\n            datesArr.push(moment(this.get('start'), serverFormat));\n            datesArr.push(moment(this.get('end'), serverFormat));\n        }\n\n        if (moment.locale() === 'se') {\n            lang = 'sv';\n        } else {\n            lang = moment.locale();\n        }\n\n        options = {\n            language: lang,\n            autoclose: true,\n            todayHighlight: true,\n            calendarWeeks: true,\n            orientation: 'bottom auto',\n            clearBtn: !!this.get('clearBtn'),\n            weekStart: 1,\n        };\n\n        //startDate: startDate.format(\"L\")\n        $('.input-daterange', this.element).datepicker(options);\n\n        const startDateElement = $('.input-daterange .startdate', this.element);\n        const endDateElement = $('.input-daterange .enddate', this.element);\n\n        startDateElement.datepicker(\n            'setDate',\n            moment(datesArr[0]).toDate(),\n        );\n\n        endDateElement.datepicker(\n            'setDate',\n            moment(datesArr[1]).toDate(),\n        );\n\n        start = datesArr[0];\n        end = moment(start).add(this.maximumDateIntervalInYears, 'years');\n\n        endDateElement.datepicker('setEndDate', end.format('L'));\n\n        startDateElement.on('changeDate', (ev) => {\n            start = ev['date'];\n            end = moment(start).add(this.maximumDateIntervalInYears, 'years');\n            endDateElement.datepicker('setEndDate', end.format('L'));\n\n            if (\n                self.get('value') &&\n                moment(start).diff(self.get('value').split('_')[1], 'years', true) <\n                    -this.maximumDateIntervalInYears\n            ) {\n                endDateElement.datepicker(\n                    'setDate',\n                    moment(start).add(this.maximumDateIntervalInYears, 'years').toDate(),\n                );\n            }\n\n            // if mobile, do not show end-calendar automatically\n            if (window.innerWidth >= self.get('screenLimit')) {\n                return endDateElement.datepicker('show');\n                // but set value, because users wonder why nothing happens when only selecting startdate SUP-2234\n            }\n\n            if (endDateElement.datepicker('getDate')) {\n                self.set(\n                    'value',\n                    moment(start).format(serverFormat) +\n                        '_' +\n                        moment(\n                            endDateElement.datepicker('getDate'),\n                        ).format(serverFormat),\n                );\n                return this.sendAction('dateChange', this.get('value'), this.get('fieldName'));\n            }\n        });\n\n        endDateElement.on('hide', (ev) => {\n            const changeDates = () => {\n                let endDate, startDate;\n                startDate = moment(start);\n                endDate = moment(ev['date']);\n\n                if (!startDate.isValid() || !endDate.isValid()) {\n                    return;\n                }\n\n                this.set(\n                    'value',\n                    startDate.format(serverFormat) + '_' + endDate.format(serverFormat),\n                );\n\n                return this.sendAction('dateChange', this.get('value'), this.get('fieldName'));\n            };\n\n            // Ember.run.next loop was originally added in https://jira.visma.com/browse/SUP-2326\n            // but it does not work when screen size is smaller than 564 and datepicker changes in to the mobile mode\n            // if next loop is used with mobile mode this.set crashes because element is already destroyed\n            return this.gui.isMobile(564) ? changeDates() : Ember.run.next(this, changeDates);\n        });\n\n        if (this.get('ranges')) {\n            return this.get('ranges').then((ranges) => {\n                return this.set('periods', ranges);\n            });\n        }\n\n        const excludedField = !['employmentstarted', 'birthdate'].includes(this.get('fieldName'));\n\n        this.set('showDropdown', excludedField)\n\n        if (excludedField) {\n            return this.setWagePeriods();\n        }\n    },\n    setWagePeriods: function () {\n        var params;\n        if (this.get('Collector').formExists('wage_period')) {\n            params = {\n                limit: 20,\n                order: 'period_end_date-,period_start_date-',\n                period_start_date:\n                    moment().subtract(1, 'years').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD'),\n            };\n            return this.get('store')\n                .query('wage-period', params)\n                .then((periods) => {\n                    var ranges;\n                    if (periods.get('length') === 0) {\n                        return;\n                    }\n                    ranges = {};\n                    periods.forEach(function (period) {\n                        var name;\n                        if (period.get('period_name')) {\n                            name = period.get('period_name');\n                        } else {\n                            name =\n                                moment(period.get('period_start_date')).format('L') +\n                                ' - ' +\n                                moment(period.get('period_end_date')).format('L');\n                        }\n                        return (ranges[name] = [\n                            moment(period.get('period_start_date')),\n                            moment(period.get('period_end_date')),\n                        ]);\n                    });\n                    if (!this.get('isDestroyed')) {\n                        return this.set('periods', ranges);\n                    }\n                });\n        }\n    },\n    formattedPeriods: computed('periods', function () {\n        if (this.get('periods')) {\n            return Object.entries(this.get('periods'));\n        }\n    }),\n    currentPeriod: computed('periods', function () {\n        var currentPeriods, dateToday;\n        if (this.get('periods')) {\n            dateToday = moment().format('YYYY-MM-DD');\n            currentPeriods = Object.entries(this.get('periods')).filter((period) => {\n                var periodEndDate, periodStartDate;\n                periodStartDate = period[1][0].format('YYYY-MM-DD');\n                periodEndDate = period[1][1].format('YYYY-MM-DD');\n                return moment(dateToday).isBetween(periodStartDate, periodEndDate, null, '[]');\n            });\n            if (isEmpty(currentPeriods)) {\n                return false;\n            } else {\n                return currentPeriods[0][1];\n            }\n        }\n    }),\n    lastPeriod: computed('periods', function () {\n        var periodDates;\n        if (this.get('periods')) {\n            periodDates = Object.entries(this.get('periods')).map((period) => {\n                return period[1];\n            });\n            if (isEmpty(periodDates)) {\n                return false;\n            }\n            // If current period is found, return second newest\n            if (periodDates.includes(this.get('currentPeriod'))) {\n                return periodDates[1];\n            } else {\n                return periodDates[0];\n            }\n        }\n    }),\n    actions: {\n        setPeriod: function (period) {\n            var today = moment();\n            var dayOfWeek = today.day();\n            // if today is sunday, last monday is 7 days ago\n            var lastMonday = today.subtract(dayOfWeek === 0 ? 7 : dayOfWeek - 1, 'days');\n            var lastWeeksMonday = lastMonday.clone().subtract(1, 'weeks');\n\n            if (period === 'currentWeek') {\n                period = [lastMonday.clone(), lastMonday.clone().add(6, 'days')];\n            }\n            if (period === 'lastWeek') {\n                period = [lastWeeksMonday.clone(), lastWeeksMonday.clone().add(6, 'days')];\n            }\n            $('.input-daterange .startdate', this.element).datepicker(\n                'setDate',\n                moment(period[0]).toDate(),\n            );\n            $('.input-daterange .enddate', this.element).datepicker(\n                'setDate',\n                moment(period[1]).toDate(),\n            );\n            $('.input-daterange .enddate', this.element).datepicker('show'); //for mobile to update the picker must be shown first\n            return $('.input-daterange .enddate', this.element).datepicker('hide');\n        },\n    },\n});\n\nexport default CollectorFieldsDateRangePickerComponent;\n","export default Ember.HTMLBars.template({\"id\":\"bzsQTseN\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\",\\\"period\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"title\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"input-daterange-title\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[[24,[\\\"title\\\"]]],null],false],[0,\\\":\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group input-group-sm input-daterange\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-EmptyCalendar\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"readonly\\\",\\\"data-anchor\\\"],[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"focusedInput\\\"]],\\\"start\\\"],null],\\\"startdate form-control active\\\",\\\"startdate form-control\\\"],null],[24,[\\\"start\\\"]],[24,[\\\"readonly\\\"]],\\\"date-range-picker-start\\\"]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"readonly\\\",\\\"data-anchor\\\"],[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"focusedInput\\\"]],\\\"end\\\"],null],\\\"enddate form-control active\\\",\\\"enddate form-control\\\"],null],[24,[\\\"end\\\"]],[24,[\\\"readonly\\\"]],\\\"date-range-picker-end\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showDropdown\\\"]]],null,{\\\"statements\\\":[[0,\\\"         \\\"],[5,\\\"bs-dropdown\\\",[[12,\\\"class\\\",\\\"input-group-btn\\\"]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"button\\\"]],[[12,\\\"class\\\",\\\"btn\\\"],[12,\\\"data-anchor\\\",\\\"date-range-picker-more\\\"]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"caret\\\"],[8],[9],[0,\\\"\\\\n\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"date-range-picker-wageperiods\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n                \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"data-anchor\\\",\\\"date-range-picker-currentWeek\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setPeriod\\\",\\\"currentWeek\\\"]],[8],[1,[28,\\\"t\\\",[\\\"timetracker.approval.this_week\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"data-anchor\\\",\\\"date-range-picker-lastWeek\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setPeriod\\\",\\\"lastWeek\\\"]],[8],[1,[28,\\\"t\\\",[\\\"timetracker.approval.last_week\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"currentPeriod\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"data-anchor\\\",\\\"date-range-picker-currentPeriod\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setPeriod\\\",[23,0,[\\\"currentPeriod\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.period.this_salaryperiod\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,0,[\\\"lastPeriod\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"data-anchor\\\",\\\"date-range-picker-lastPeriod\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setPeriod\\\",[23,0,[\\\"lastPeriod\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.period.last_salaryperiod\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"periods\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,2,[\\\"divider\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"formattedPeriods\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"setPeriod\\\",[23,3,[\\\"lastObject\\\"]]]],[8],[1,[23,3,[\\\"firstObject\\\"]],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"hide\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\"],[[24,[\\\"start\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\"],[[24,[\\\"end\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/date-range-picker/template.hbs\"}});","import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { get } from '@ember/object';\n\nexport default Component.extend({\n    tagName: '',\n\n    color: '#0974B3',\n    color2: '#A0A0A0',\n\n    style: '',\n\n    strokeWidth: 30,\n\n    size: computed('custom_size', function () {\n        if (get(this, 'custom_size')) {\n            return get(this, 'custom_size');\n        } else {\n            return 220;\n        }\n    }),\n    styleStr: computed('color', 'style', function () {\n        if (this.style === 'outline') {\n            return `fill-opacity:0;fill-rule:nonzero;stroke:${this.color};stroke-width:${this.strokeWidth}`;\n        } else {\n            return `fill:${this.color};fill-opacity:1;fill-rule:nonzero;stroke:none`;\n        }\n    }),\n\n    styleFill: computed('color', function () {\n        return `fill:${this.color};fill-opacity:1;fill-rule:nonzero;stroke:none`;\n    }),\n\n    styleFillColor2: computed('color2', function () {\n        return `fill:${this.color2};fill-opacity:1;fill-rule:nonzero;stroke:none`;\n    }),\n\n    viewBox: computed('number', function () {\n        return [\n            '0 -20 128 128',\n            '96 0 155 128',\n            '243 -20 128 128',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 100 85 128',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '265 209 155 128',\n            '0 0 0 0',\n            '0 0 75.52 74.075',\n            '0 0 0 0',\n            '0 0 48 74',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '151 421 128 128',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '375 537 90 110',\n            '469 519 94 140',\n            '0 0 0 0',\n        ][this.number - 1];\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"DlmnFLuX\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"svg\\\",true],[10,\\\"xmlns:dc\\\",\\\"http://purl.org/dc/elements/1.1/\\\"],[10,\\\"xmlns:cc\\\",\\\"http://creativecommons.org/ns#\\\"],[10,\\\"xmlns:rdf\\\",\\\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\\\"],[10,\\\"xmlns:svg\\\",\\\"http://www.w3.org/2000/svg\\\"],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[11,\\\"viewBox\\\",[29,[[22,\\\"viewBox\\\"]]]],[11,\\\"height\\\",[29,[[22,\\\"size\\\"]]]],[11,\\\"width\\\",[29,[[22,\\\"size\\\"]]]],[10,\\\"xml:space\\\",\\\"preserve\\\",\\\"http://www.w3.org/XML/1998/namespace\\\"],[10,\\\"id\\\",\\\"svg2\\\"],[10,\\\"version\\\",\\\"1.1\\\"],[8],[0,\\\"\\\\n   \\\"],[7,\\\"defs\\\",true],[10,\\\"id\\\",\\\"defs6\\\"],[8],[9],[0,\\\"\\\\n   \\\"],[7,\\\"g\\\",true],[11,\\\"transform\\\",[28,\\\"if\\\",[[24,[\\\"noTransforming\\\"]],\\\"\\\",\\\"matrix(1.3333333,0,0,-1.3333333,0,641.57333)\\\"],null]],[10,\\\"id\\\",\\\"g10\\\"],[8],[0,\\\"\\\\n      \\\"],[7,\\\"g\\\",true],[11,\\\"transform\\\",[28,\\\"if\\\",[[24,[\\\"noScaling\\\"]],\\\"scale(1)\\\",\\\"scale(0.1)\\\"],null]],[10,\\\"id\\\",\\\"g12\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],1],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path44\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 465.723,4654.14 c 39.14,21.78 53.265,71.11 31.496,110.24 -21.727,39.12 -71.051,53.2 -110.149,31.49 -39.168,-21.75 -53.304,-71.07 -31.523,-110.17 21.711,-39.18 71.051,-53.26 110.176,-31.56\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path46\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 629.605,4779.14 c -22.535,7.81 -47.121,-4.12 -54.921,-26.66 l -35.071,-101.15 -55.211,-22 c -3.031,0.52 -6.187,0.81 -9.445,0.81 h -97.152 c -1.617,0 -3.203,-0.08 -4.77,-0.21 -13.316,1.23 -25.879,-3.36 -33.168,-13.53 L 208.961,4434.2 c -12.004,-16.72 -5.195,-42.2 15.219,-56.85 20.371,-14.66 46.726,-12.96 58.672,3.76 l 52.445,72.98 v -123.07 c 0,-0.98 0.066,-1.97 0.176,-2.94 -1.743,-2.91 -3.032,-6.09 -3.762,-9.51 L 284.645,4099.2 c -4.282,-20.15 12.097,-40.75 36.648,-46.01 24.59,-5.26 48.023,6.82 52.312,26.95 l 46.883,218.61 h 11.797 l 46.875,-218.61 c 4.274,-20.13 27.719,-32.21 52.317,-26.95 24.496,5.26 40.918,25.86 36.632,46.01 l -47.031,219.37 c -0.73,3.43 -2.031,6.63 -3.793,9.55 0.11,0.96 0.188,1.92 0.188,2.9 v 218.53 l 72.449,28.88 c 11.641,4.64 20.699,14.11 24.797,25.96 l 41.543,119.81 c 7.808,22.52 -4.121,47.13 -26.657,54.94\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path48\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 281.48,4055.1 -9.628,-1.05 -76.825,707.57 9.621,1.05 76.832,-707.57\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"flag\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 22.1875,4751.87 c 11.4453,-5.18 20.0039,-10.93 33.0508,-12.21 12.0234,-1.19 24.2773,0.28 35.8398,3.72 17.6519,5.26 32.4959,17.59 50.6679,21.17 18.641,3.69 35.539,-3.09 46.82,-18.48 0,0 10.211,-96.37 12.11,-114.55 0.203,-1.89 0.203,-1.59 -0.18,-0.89 -2.586,4.8 -14.723,9.46 -17.625,10.93 -10.117,5.09 -20.906,9.94 -31.687,13.41 -7.422,2.39 -15.875,3.29 -23.606,1.9 -12.113,-2.17 -23.519,-8.38 -33.3866,-15.5 -10.5976,-7.62 -20.207,-13.98 -33.25,-16.47 -12.8984,-2.46 -26.5664,-1.08 -39.2266,1.96 0,34.5 0.1954,68.98 -0.0351,103.48 -0.0547,7.18 -0.1602,14.37 0.5078,21.53\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],2],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path122\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 1132.64,4626.42 c 43.64,6.37 73.9,46.86 67.53,90.49 -6.32,43.61 -46.83,73.83 -90.4,67.49 -43.68,-6.33 -73.93,-46.79 -67.53,-90.41 6.29,-43.68 46.8,-73.86 90.4,-67.57\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path124\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 1286.07,4404.97 -56.45,33.29 -66.27,131.62 c -0.98,2.63 -2.29,5.18 -3.87,7.64 -7.67,14.25 -21.67,23.02 -36.75,24.61 l -89.26,33.87 c -24.01,9.12 -49.064,1.71 -55.97,-16.48 L 873.969,4346.75 c -1,-2.63 -1.547,-5.34 -1.719,-8.1 -2.504,-5.74 -3.891,-12.11 -3.891,-18.78 v -74.42 l -79.527,-37.24 c -23.617,-11.03 -33.801,-39.14 -22.754,-62.76 8.039,-17.15 25.043,-27.21 42.785,-27.21 6.707,0 13.516,1.43 19.996,4.48 l 106.707,49.95 c 16.582,7.77 27.184,24.43 27.184,42.74 v 59.91 l 23.949,-9.09 31.301,-64.43 -41.258,-81.26 c -11.797,-23.24 -2.523,-51.65 20.731,-63.45 6.847,-3.46 14.137,-5.13 21.317,-5.13 17.22,0 33.8,9.45 42.13,25.84 l 51.88,102.18 c 6.69,13.18 6.82,28.73 0.37,42.01 l -41.3,84.92 50.8,133.84 28.86,-57.34 c 4.07,-8.07 10.4,-14.82 18.18,-19.43 l 68.41,-40.33 c 7.54,-4.44 15.79,-6.54 23.93,-6.54 16.15,0 31.91,8.32 40.71,23.23 13.23,22.46 5.77,51.4 -16.69,64.63\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path126\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 1721.81,4143.16 c 0,-40.2 -32.57,-72.77 -72.75,-72.77 -40.18,0 -72.76,32.57 -72.76,72.77 0,40.18 32.58,72.74 72.76,72.74 40.18,0 72.75,-32.56 72.75,-72.74\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path128\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 1413.51,4361.67 229.36,-69.25 c 0,0 -58.3,212.68 -229.36,69.25\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path130\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 1674.8,4143.16 c 0,-14.21 -11.53,-25.74 -25.74,-25.74 -14.21,0 -25.73,11.53 -25.73,25.74 0,14.2 11.52,25.74 25.73,25.74 14.21,0 25.74,-11.54 25.74,-25.74\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path132\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 1390.95,4170.15 -2.85,105.87 87.83,-50.16 z m 294.88,112.7 -318.94,94.3 v -49.61 l -36.98,21.13 -16.97,-29.71 60.82,-34.72 -6.87,-147.58 125.93,79.56 139.28,-79.56 16.96,29.68 -56.06,32.03 92.83,84.48\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path134\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 1661.91,4143.15 c 0,-7.1 -5.75,-12.87 -12.87,-12.87 -7.1,0 -12.86,5.77 -12.86,12.87 0,7.1 5.76,12.87 12.86,12.87 7.12,0 12.87,-5.77 12.87,-12.87\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],3],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"lefthand\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2241.26,4363.4 c -17.19,0 -33.94,8.86 -43.28,24.78 l -37.75,64.31 c -11.37,19.4 -8.45,43.98 7.15,60.17 l 65.08,67.54 c 19.21,19.93 50.96,20.52 70.89,1.3 19.95,-19.2 20.53,-50.95 1.32,-70.89 l -38.7,-40.16 18.5,-31.53 c 14.01,-23.88 6.01,-54.6 -17.87,-68.62 -7.97,-4.66 -16.72,-6.9 -25.34,-6.9\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"righthand\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2428.3,4363.4 c 17.22,0 33.96,8.86 43.3,24.78 l 37.74,64.31 c 11.38,19.4 8.46,43.98 -7.14,60.17 l -65.07,67.54 c -19.22,19.93 -50.97,20.52 -70.9,1.3 -19.94,-19.2 -20.53,-50.95 -1.32,-70.89 l 38.71,-40.16 -18.5,-31.53 c -14.03,-23.88 -6.03,-54.6 17.86,-68.62 7.97,-4.66 16.71,-6.9 25.32,-6.9\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path160\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2380.48,4623.43 c 45.45,25.27 61.86,82.55 36.57,128.01 -25.21,45.42 -82.5,61.79 -127.9,36.57 -45.5,-25.25 -61.91,-82.54 -36.63,-127.94 25.23,-45.5 82.52,-61.85 127.96,-36.64\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path162\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2334.79,4175.04 -3.27,35.65 h 6.54 z m 106.95,199.1 v 183.93 c 0,20.7 -22.1,37.48 -49.37,37.48 h -112.83 c -27.27,0 -49.37,-16.78 -49.37,-37.48 v -182.13 c -8.39,-6.1 -13.22,-13.89 -12.48,-21.89 l 25.37,-276.19 c 1.49,-16.2 25.04,-27.28 52.6,-24.75 16.5,1.52 30.71,7.58 39.13,15.68 8.42,-8.1 22.63,-14.16 39.13,-15.68 27.55,-2.53 51.12,8.55 52.6,24.75 l 25.36,276.19 c 0.67,7.24 -3.21,14.28 -10.14,20.09\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path164\\\"],[11,\\\"style\\\",[22,\\\"styleFill\\\"]],[10,\\\"d\\\",\\\"m 2615.3,4411.99 h -741.81 c -12.05,0 -21.91,-9.87 -21.91,-21.92 v -38.62 c 0,-12.05 9.86,-21.9 21.91,-21.9 h 33.47 v -277.59 h 36.05 v 277.59 h 602.78 v -277.59 h 36.05 v 277.59 h 33.46 c 12.06,0 21.92,9.85 21.92,21.9 v 38.62 c 0,12.05 -9.86,21.92 -21.92,21.92\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"laptop1\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 2476.76,4419.28 c 0,-5.02 -4.11,-9.11 -9.12,-9.11 h -256.53 c -5.01,0 -9.12,4.09 -9.12,9.11 v 2.14 c 0,5.01 4.11,9.12 9.12,9.12 h 256.53 c 5.01,0 9.12,-4.11 9.12,-9.12 v -2.14\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"laptop2\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 2463.73,4430.54 h -248.7 v 165.01 h 248.7 v -165.01\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path170\\\"],[11,\\\"style\\\",[22,\\\"styleFill\\\"]],[10,\\\"d\\\",\\\"m 1915.92,4457.36 c -10.08,0 -18.24,-8.16 -18.24,-18.23 v -0.54 c 0,-10.08 8.16,-18.25 18.24,-18.25 h 161.85 v 37.02 h -161.85\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path172\\\"],[11,\\\"style\\\",[22,\\\"styleFill\\\"]],[10,\\\"d\\\",\\\"m 1926.51,4484.15 c -6.74,0 -12.21,-5.46 -12.21,-12.21 v -0.36 c 0,-6.75 5.47,-12.21 12.21,-12.21 h 108.39 v 24.78 h -108.39\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path174\\\"],[11,\\\"style\\\",[22,\\\"styleFill\\\"]],[10,\\\"d\\\",\\\"m 2041.98,4511.63 c 6.74,0 12.21,-5.46 12.21,-12.2 v -0.38 c 0,-6.75 -5.47,-12.2 -12.21,-12.2 h -108.39 v 24.78 h 108.39\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],6],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path290\\\"],[11,\\\"style\\\",[22,\\\"styleFill\\\"]],[10,\\\"d\\\",\\\"m 211.742,3678.58 v -146.19 l -21.683,6.62 c 3.492,6.75 5.211,14.54 4.535,22.68 l -7.375,89.45 z m 218.938,-27.44 -7.383,-89.45 c -0.668,-8.14 1.035,-15.93 4.539,-22.68 l -21.691,-6.62 v 146.19 z m 74.453,42.39 -92.36,103.35 c -10.546,11.81 -26.273,16.23 -40.683,12.9 -3.613,0.7 -7.395,1.07 -11.297,1.07 H 257.105 c -3.906,0 -7.691,-0.37 -11.3,-1.07 -14.407,3.33 -30.137,-1.09 -40.684,-12.9 l -92.363,-103.35 c -7.645,-8.57 -11.453,-19.91 -10.512,-31.35 l 8.871,-107.38 c 1.809,-21.88 20.117,-38.43 41.688,-38.43 1.16,0 2.328,0.04 3.5,0.13 9.394,0.78 17.8,4.6 24.34,10.41 l 31.097,-37.74 v -226.34 c 0,-14.96 20.621,-27.07 46.055,-27.07 25.402,0 46.051,12.11 46.051,27.07 v 194.4 h 10.199 v -194.4 c 0,-14.96 20.641,-27.07 46.051,-27.07 25.39,0 46.047,12.11 46.047,27.07 v 226.34 l 31.101,37.74 c 6.543,-5.81 14.949,-9.63 24.348,-10.41 1.172,-0.09 2.336,-0.13 3.496,-0.13 21.555,0 39.883,16.55 41.687,38.43 l 8.868,107.38 c 0.949,11.44 -2.852,22.78 -10.512,31.35\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path292\\\"],[11,\\\"style\\\",[22,\\\"styleFill\\\"]],[10,\\\"d\\\",\\\"m 350.934,3836.49 c 41.765,23.21 56.836,75.87 33.597,117.63 -23.172,41.74 -75.801,56.77 -117.519,33.61 -41.817,-23.22 -56.895,-75.85 -33.66,-117.56 23.175,-41.81 75.812,-56.85 117.582,-33.68\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path294\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 318.57,3780.08 8.633,18.3 -8.289,5.44 H 299.34 l -8.621,-5.44 8.605,-18.3 -9.136,-92.04 18.734,-36.88 v 0.24 l 0.055,-0.24 18.718,36.88 -9.125,92.04\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],15],null]],null,{\\\"statements\\\":[[0,\\\"             \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path184\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2008.69,2883.39 c 0,-11.72 18.42,-21.22 41.14,-21.22 h 454.36 c 22.72,0 41.13,9.5 41.13,21.22 v 23.33 c 0,11.72 -18.41,21.22 -41.13,21.22 h -454.36 c -22.72,0 -41.14,-9.5 -41.14,-21.22 v -23.33\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path186\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2008.69,2515.06 c 0,-11.72 18.42,-21.24 41.14,-21.24 h 454.36 c 22.72,0 41.13,9.52 41.13,21.24 v 23.31 c 0,11.73 -18.41,21.22 -41.13,21.22 h -454.36 c -22.72,0 -41.14,-9.49 -41.14,-21.22 v -23.31\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path188\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2440.52,2640.86 c 0,-29.72 22.06,-53.82 49.28,-53.82 v 0 c 27.22,0 49.32,24.1 49.32,53.82 v 136.2 c 0,29.71 -22.1,53.81 -49.32,53.81 v 0 c -27.22,0 -49.28,-24.1 -49.28,-53.81 v -136.2\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path190\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2298.65,2640.86 c 0,-29.72 22.07,-53.82 49.28,-53.82 v 0 c 27.25,0 49.31,24.1 49.31,53.82 v 136.2 c 0,29.71 -22.06,53.81 -49.31,53.81 v 0 c -27.21,0 -49.28,-24.1 -49.28,-53.81 v -136.2\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path192\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2156.79,2640.86 c 0,-29.72 22.06,-53.82 49.28,-53.82 v 0 c 27.25,0 49.29,24.1 49.29,53.82 v 136.2 c 0,29.71 -22.04,53.81 -49.29,53.81 v 0 c -27.22,0 -49.28,-24.1 -49.28,-53.81 v -136.2\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path194\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2014.93,2640.86 c 0,-29.72 22.06,-53.82 49.3,-53.82 v 0 c 27.22,0 49.28,24.1 49.28,53.82 v 136.2 c 0,29.71 -22.06,53.81 -49.28,53.81 v 0 c -27.24,0 -49.3,-24.1 -49.3,-53.81 v -136.2\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path196\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2548.62,2945.32 -271.63,160.42 -271.6,-160.42 z\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path198\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2830.09,3010.52 c -40.42,22.49 -55.02,73.47 -32.53,113.91 22.45,40.4 73.42,54.97 113.82,32.54 40.48,-22.48 55.08,-73.44 32.59,-113.84 -22.47,-40.48 -73.42,-55.03 -113.88,-32.61\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path200\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2590.7,2921.1 203.19,57.76 c 7.4,4.3 16.64,6.85 26.69,6.85 h 100.38 c 2.42,0 4.81,-0.16 7.12,-0.44 17.92,2.33 34.82,-4.8 41.89,-19.33 l 101.44,-208.4 c 9.3,-19.14 -2.02,-43.88 -25.38,-55.24 -23.34,-11.36 -49.84,-5.05 -59.14,14.07 l -22.02,45.23 v -59.76 -25.21 -221.57 c 0,-14.5 -19.96,-26.21 -44.59,-26.21 -24.59,0 -44.59,11.71 -44.59,26.21 v 188.23 h -16.87 l -26.11,-193.75 c -1.95,-14.35 -23.32,-23.3 -47.7,-20.01 -24.37,3.28 -42.62,17.57 -40.68,31.93 l 32.31,239.67 v 175.08 l -160.21,-45.53 c -20.44,-5.81 -42.85,9.67 -49.93,34.66 -7.1,24.97 3.76,49.94 24.2,55.76\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path202\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 2861.45,2939.35 -8.36,17.7 8.01,5.28 h 18.97 l 8.32,-5.28 -8.31,-17.7 8.84,-89.14 -18.14,-35.71 v 0.23 l -0.05,-0.23 -18.13,35.71 8.85,89.14\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path204\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 3030.85,2659.22 h 10.5 v 31.48 h -10.5 v -31.48\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path206\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 3019.88,2511.69 c 0,-4.46 3.65,-8.11 8.12,-8.11 h 16.2 c 4.47,0 8.11,3.65 8.11,8.11 v 135.61 c 0,4.46 -3.64,8.11 -8.11,8.11 H 3028 c -4.47,0 -8.12,-3.65 -8.12,-8.11 v -135.61\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],26],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path464\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 1588.98,1529.49 c 23.98,35.16 70.07,43.22 102.95,18 32.85,-25.21 40.05,-74.16 16.03,-109.34 -23.98,-35.14 -70.08,-43.22 -102.96,-17.99 -32.85,25.21 -40.03,74.16 -16.02,109.33\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path466\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 1372.37,1196.67 136.18,171.66 c 7.37,13.5 21.32,22.89 37.55,23.84 v 0.08 h 1.37 11.13 31.15 l 0.07,-0.03 c 0.05,0.01 0.1,0.02 0.16,0.03 l 38.63,-87.73 6.86,69.38 -8.53,18.08 h 36.15 l -8.54,-18.08 6.88,-69.38 38.5,87.46 c 0.48,-0.09 1.07,0.09 1.55,0 h 53.12 v -0.09 c 23.9,-1.38 42.89,-21.09 43.14,-45.29 v 0 -0.46 -31.77 -142.22 h 0.01 v -65.78 c 0,-25.33 -20.53,-45.86 -45.85,-45.86 -3.36,0 -6.63,0.38 -9.8,1.07 V 828.352 c 0,-14.813 -20.6,-26.801 -46.01,-26.801 -25.39,0 -45.98,11.988 -45.98,26.801 v 203.028 h -10.2 V 828.352 c 0,-14.813 -20.59,-26.801 -45.99,-26.801 -25.4,0 -45.99,11.988 -45.99,26.801 v 252.298 c 0,0.13 0.03,0.26 0.03,0.38 l -0.03,177.91 -101.26,-123.3 c -13.83,-16.8 -41.65,-16.78 -62.16,0.06 -20.51,16.85 -25.94,44.14 -12.14,60.97\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path468\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 1197.02,985.23 h 46.55 c 0.81,-26.39 5.03,-51.718 12.58,-75.5 h -37.34 c -12.89,23.071 -20.37,48.981 -21.79,75.5 z m 33.85,-94.16 h 31.92 c 1,-2.48 1.98,-4.8 3,-7.031 7.74,-17.289 17.26,-32.668 28.17,-45.59 -24.81,12.18 -46.45,30.192 -63.09,52.621 z m 54.3,0 h 76.18 v -70.16 c -6.82,0.391 -13.79,1.199 -20.84,2.461 -22.32,13.539 -41.73,37.328 -55.34,67.699 z m 76.18,18.66 h -83.55 c -0.05,0.161 -0.1,0.34 -0.16,0.5 -7.95,23.45 -12.41,48.661 -13.26,75 h 96.97 z m 0,94.17 h -96.97 c 0.85,26.34 5.31,51.53 13.26,75.01 0.07,0.17 0.13,0.35 0.19,0.55 h 83.52 z m -95.56,101.19 c -1.02,-2.3 -2,-4.62 -2.95,-6.98 h -31.89 c 16.62,22.42 38.24,40.38 63.03,52.56 -10.93,-12.94 -20.45,-28.31 -28.19,-45.58 z m -46.95,-25.63 h 37.32 c -7.56,-23.8 -11.78,-49.16 -12.59,-75.56 h -46.55 c 1.42,26.55 8.91,52.48 21.82,75.56 z m 161.14,0 h 83.52 c 0.08,-0.2 0.14,-0.41 0.2,-0.61 7.95,-23.39 12.39,-48.61 13.26,-74.95 h -96.98 z m 0,-94.23 h 96.98 c -0.87,-26.371 -5.31,-51.582 -13.26,-75.019 -0.06,-0.141 -0.1,-0.32 -0.17,-0.481 h -83.55 z m 0,-94.16 h 76.18 c -13.6,-30.371 -33,-54.16 -55.34,-67.699 -7.16,-1.289 -14.02,-2.07 -20.84,-2.461 z m 67.38,-52.621 c 10.93,12.922 20.46,28.301 28.2,45.571 0.95,2.14 1.91,4.402 2.97,7.05 h 31.92 c -16.63,-22.429 -38.28,-40.441 -63.09,-52.621 z m -269.69,156.11 c 0,-106.43 86.58,-193.008 193.01,-193.008 67.32,0 126.7,34.66 161.25,87.07 v 40.77 c -2.72,-6.719 -5.84,-13.321 -9.39,-19.661 h -37.35 c 7.54,23.758 11.77,49.102 12.58,75.5 h 34.16 v 18.67 h -34.16 c -0.83,26.4 -5.05,51.76 -12.58,75.56 h 37.29 c 3.58,-6.38 6.73,-12.99 9.45,-19.74 v 40.75 c -14.96,22.69 -34.55,42.08 -57.43,56.74 l -12.2,-14.84 c 18.57,-11.51 34.92,-26.49 48.08,-44.26 h -31.86 c -0.95,2.36 -1.95,4.68 -2.96,6.95 -5.17,11.53 -11.12,22.17 -17.76,31.83 l -6.43,-7.81 c -2.32,-2.84 -4.99,-5.25 -7.89,-7.28 4.63,-7.34 8.86,-15.25 12.65,-23.69 h -76.15 v 28.22 c -1.23,0.9 -2.47,1.82 -3.69,2.81 -6.1,5.05 -11.12,10.86 -14.94,17.04 v -48.07 h -76.14 c 13.61,30.34 33,54.11 55.3,67.66 4.27,0.73 8.49,1.32 12.65,1.75 -1.1,6.59 -0.95,13.15 0.57,19.3 -98.52,-8.61 -176.06,-91.55 -176.06,-192.261\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],35],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path432\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 3193,568.012 c -39.5,21.949 -53.76,71.726 -31.79,111.218 21.92,39.45 71.69,53.692 111.12,31.782 39.55,-21.942 53.81,-71.723 31.84,-111.172 -21.92,-39.52 -71.71,-53.738 -111.17,-31.828\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path434\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"M 3040.78,324.879 3145.69,525.5 c 6.67,12.75 21.23,19.27 37.02,18.148 1.22,0.082 2.45,0.133 3.7,0.133 h 92.19 l 81.06,8.16 -15.96,16.258 c -16.88,17.16 -16.63,44.75 0.52,61.602 17.15,16.879 44.75,16.64 61.61,-0.531 l 79.63,-81.04 c 11.74,-11.949 15.59,-29.57 9.89,-45.332 -5.68,-15.75 -19.93,-26.859 -36.59,-28.527 L 3327.32,461.109 V 266.582 241.969 25.6016 c 0,-14.1524 -19.49,-25.5898812 -43.53,-25.5898812 -24.02,0 -43.55,11.4374812 -43.55,25.5898812 V 209.422 h -9.63 V 25.6016 c 0,-14.1524 -19.54,-25.5898812 -43.56,-25.5898812 -24,0 -43.53,11.4374812 -43.53,25.5898812 v 216.3674 24.613 56.719 l -21.41,-40.969 c -9.57,-18.371 -35.64,-23.793 -58.14,-12.051 -22.41,11.719 -32.82,36.207 -23.19,54.598\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path436\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 3341.66,655.852 3.91,32.179 c 0.24,2.129 2.19,3.649 4.31,3.391 2.14,-0.262 3.66,-2.192 3.39,-4.332 l -3.29,-27.102 c 1.55,0.274 3.15,0.332 4.78,0.121 8.96,-1.097 15.35,-9.25 14.25,-18.218 l -5.26,-43.461 c -1.1,-8.981 -9.25,-15.348 -18.21,-14.27 -8.98,1.078 -15.35,9.238 -14.26,18.211 l 5.26,43.469 c 0.48,4 2.39,7.492 5.12,10.012\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path438\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 3226.33,514.699 -8.16,17.293 7.82,5.137 h 18.51 l 8.16,-5.137 -8.16,-17.293 8.65,-87.027 -17.7,-34.891 v 0.258 l -0.06,-0.258 -17.69,34.891 8.63,87.027\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path440\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 3023.2,693.59 c -2.27,1.859 -5.94,1.859 -8.21,0 l -24.74,-20.469 v 28.93 c 0,2.66 -2.6,4.808 -5.8,4.808 -3.2,0 -5.8,-2.148 -5.8,-4.808 V 661.52 c 0,0 0.01,-0.008 0.01,-0.04 0,-0.289 0.03,-0.589 0.09,-0.878 0.05,-0.161 0.11,-0.293 0.17,-0.422 0.05,-0.16 0.08,-0.321 0.17,-0.481 0.09,-0.16 0.2,-0.328 0.31,-0.457 0.07,-0.14 0.13,-0.242 0.23,-0.363 0.42,-0.508 0.96,-0.981 1.6,-1.328 0.14,-0.071 0.28,-0.129 0.43,-0.192 0.19,-0.089 0.36,-0.179 0.57,-0.257 0.19,-0.063 0.39,-0.09 0.58,-0.153 0.16,-0.039 0.33,-0.078 0.5,-0.097 0.38,-0.082 0.76,-0.122 1.14,-0.122 v 0 0 c 0.37,0 0.77,0.04 1.14,0.122 0.16,0.019 0.32,0.058 0.49,0.097 0.2,0.051 0.4,0.09 0.58,0.153 0.21,0.078 0.39,0.168 0.56,0.25 0.14,0.07 0.3,0.128 0.44,0.199 0.32,0.16 0.62,0.379 0.89,0.59 v 0 l 34.65,28.668 c 2.26,1.863 2.26,4.91 0,6.781\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path442\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2893.36,666 c 0,50.039 40.58,90.609 90.64,90.609 50.05,0 90.63,-40.57 90.63,-90.609 0,-50.078 -40.58,-90.66 -90.63,-90.66 -50.06,0 -90.64,40.582 -90.64,90.66 z m -12.27,0 c 0,-56.852 46.08,-102.918 102.91,-102.918 56.83,0 102.89,46.066 102.89,102.918 0,56.82 -46.06,102.891 -102.89,102.891 -56.83,0 -102.91,-46.071 -102.91,-102.891\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path444\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2990.59,584.57 v 9.782 c 34.66,3.136 62.22,30.91 65.08,65.668 h 9.79 c -2.9,-40.149 -34.82,-72.25 -74.87,-75.45\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path446\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2990.5,737.641 v 9.757 c 40.1,-3.156 72.05,-35.289 74.96,-75.457 h -9.79 c -2.86,34.801 -30.45,62.571 -65.17,65.7\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path448\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2978.65,594.25 v -9.77 c -40.43,2.61 -72.85,34.629 -76.06,74.911 h 9.77 c 3.17,-34.879 31.23,-62.571 66.29,-65.141\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path450\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2978.55,747.488 v -9.777 c -35.41,-2.641 -63.67,-30.949 -66.28,-66.371 h -9.77 c 2.65,40.801 35.26,73.449 76.05,76.148\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path452\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 2984.53,744.691 c 2.36,0 4.27,-1.941 4.27,-4.293 V 719.07 c 0,-2.328 -1.91,-4.269 -4.27,-4.269 -2.36,0 -4.28,1.941 -4.28,4.269 v 21.328 c 0,2.352 1.92,4.293 4.28,4.293\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path454\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2984.92,615.52 c 2.37,0 4.27,-1.918 4.27,-4.27 v -21.328 c 0,-2.363 -1.9,-4.274 -4.27,-4.274 -2.35,0 -4.25,1.911 -4.25,4.274 v 21.328 c 0,2.352 1.9,4.27 4.25,4.27\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path456\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 3036.63,670.02 h 21.34 c 2.35,0 4.27,-1.891 4.27,-4.258 0,-2.364 -1.92,-4.274 -4.27,-4.274 h -21.34 c -2.34,0 -4.25,1.91 -4.25,4.274 0,2.367 1.91,4.258 4.25,4.258\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path458\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2907.5,669.629 h 21.31 c 2.36,0 4.27,-1.91 4.27,-4.27 0,-2.347 -1.91,-4.257 -4.27,-4.257 h -21.31 c -2.37,0 -4.29,1.91 -4.29,4.257 0,2.36 1.92,4.27 4.29,4.27\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path460\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 3058,73.7695 h 28.89 V 229.371 H 3058 V 73.7695\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path462\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 3067.45,235.281 h 10 v 23.328 h -10 v -23.328\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],36],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path176\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 4057.19,358.148 -136.63,190.231 c -7.49,10.422 -20.23,15.25 -33.81,14.25 -1.28,0.07 -2.55,0.109 -3.85,0.109 h -101.46 c -2.51,0 -4.99,-0.148 -7.41,-0.457 -2.55,-0.062 -5.13,-0.32 -7.71,-0.82 l -74.72,-14.57 -33.85,102.941 c -7.78,23.668 -33.26,36.539 -56.91,28.758 -23.65,-7.781 -36.5,-33.258 -28.74,-56.91 l 46.27,-140.711 c 6.18,-18.809 23.68,-31.028 42.8,-31.028 2.85,0 5.75,0.289 8.65,0.84 l 67.24,13.11 V 275.879 250.41 26.4883 c 0,-14.6289 20.19,-26.4765812 45.07,-26.4765812 24.86,0 45.07,11.8476812 45.07,26.4765812 V 216.719 h 9.99 V 26.4883 c 0,-14.6289 20.19,-26.4765812 45.04,-26.4765812 24.83,0 45.07,11.8476812 45.07,26.4765812 V 250.41 275.879 376.141 l 52.75,-73.442 c 12.54,-17.469 39.99,-19.211 61.29,-3.91 21.33,15.293 28.39,41.871 15.85,59.359\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path178\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 3876.1,587.809 c 40.86,22.73 55.62,74.25 32.87,115.113 -22.65,40.848 -74.18,55.566 -115,32.898 -40.91,-22.718 -55.66,-74.238 -32.92,-115.039 22.68,-40.922 74.18,-55.621 115.05,-32.972\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"tie\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 3844.43,529.262 8.44,17.898 -8.09,5.309 h -19.17 l -8.42,-5.309 8.42,-17.898 -8.94,-90.082 18.32,-36.071 v 0.231 l 0.05,-0.231 18.34,36.071 -8.95,90.082\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"bubble\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 4152.29,876.59 h -142.64 c -18.11,0 -32.77,-14.68 -32.77,-32.789 v -55.86 l -41.22,-66.781 86.76,33.988 h 129.87 c 18.1,0 32.77,14.684 32.77,32.793 v 55.86 c 0,18.109 -14.67,32.789 -32.77,32.789\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],17],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"g\\\",true],[10,\\\"id\\\",\\\"Group_84\\\"],[10,\\\"data-name\\\",\\\"Group 84\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_26\\\"],[10,\\\"data-name\\\",\\\"Path 26\\\"],[10,\\\"d\\\",\\\"M346.815,228.23a2.085,2.085,0,0,1-2.085,2.085h0a2.085,2.085,0,0,1-2.084-2.085V166.3a2.084,2.084,0,0,1,2.084-2.084h0a2.084,2.084,0,0,1,2.085,2.084Z\\\"],[10,\\\"transform\\\",\\\"translate(-306 -115)\\\"],[10,\\\"fill\\\",\\\"#595651\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_27\\\"],[10,\\\"data-name\\\",\\\"Path 27\\\"],[10,\\\"d\\\",\\\"M366.349,228.348a1.351,1.351,0,0,1-.582,1.817h0a1.348,1.348,0,0,1-1.817-.581l-8.425-16.352a1.352,1.352,0,0,1,.582-1.818h0a1.351,1.351,0,0,1,1.818.582Z\\\"],[10,\\\"transform\\\",\\\"translate(-306 -115)\\\"],[10,\\\"fill\\\",\\\"#595651\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_28\\\"],[10,\\\"data-name\\\",\\\"Path 28\\\"],[10,\\\"d\\\",\\\"M323.113,228.348a1.349,1.349,0,0,0,.581,1.817h0a1.35,1.35,0,0,0,1.818-.581l8.424-16.352a1.35,1.35,0,0,0-.582-1.818h0a1.35,1.35,0,0,0-1.817.582Z\\\"],[10,\\\"transform\\\",\\\"translate(-306 -115)\\\"],[10,\\\"fill\\\",\\\"#595651\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_29\\\"],[10,\\\"data-name\\\",\\\"Path 29\\\"],[10,\\\"d\\\",\\\"M364.972,212.15c0,.688-.3,1.247-.681,1.247H325.173c-.376,0-.682-.559-.682-1.247V167.766c0-.689.306-1.248.682-1.248h39.118c.376,0,.681.559.681,1.248Z\\\"],[10,\\\"transform\\\",\\\"translate(-306 -115)\\\"],[10,\\\"fill\\\",\\\"#a14944\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_30\\\"],[10,\\\"data-name\\\",\\\"Path 30\\\"],[10,\\\"d\\\",\\\"M362.66,209.615c0,.609-.27,1.106-.6,1.106H327.406c-.332,0-.6-.5-.6-1.106V170.3c0-.61.27-1.1.6-1.1h34.651c.333,0,.6.494.6,1.1Z\\\"],[10,\\\"transform\\\",\\\"translate(-306 -115)\\\"],[10,\\\"fill\\\",\\\"#afafaf\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_31\\\"],[10,\\\"data-name\\\",\\\"Path 31\\\"],[10,\\\"d\\\",\\\"M386.476,179.96a8.4,8.4,0,1,0-11.417-3.271A8.4,8.4,0,0,0,386.476,179.96Z\\\"],[10,\\\"transform\\\",\\\"translate(-306 -115)\\\"],[10,\\\"fill\\\",\\\"#595651\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_32\\\"],[10,\\\"data-name\\\",\\\"Path 32\\\"],[10,\\\"d\\\",\\\"M398.352,207.359l-6.568-22.3a4.055,4.055,0,0,0-4.274-2.6c-.087,0-.176-.006-.266-.006H377.176l-.093,0a2.763,2.763,0,0,0-.271-.07l-22.762-4.727c-2.088-.434-4.214,1.282-4.742,3.834s.74,4.967,2.824,5.4l20.639,4.289v44.492c0,1.453,2,2.628,4.473,2.628s4.472-1.175,4.472-2.628V216.786h.991v18.878c0,1.453,2,2.628,4.472,2.628s4.47-1.175,4.47-2.628V212.347a5.324,5.324,0,0,0,3.276.052C397.417,211.663,398.954,209.4,398.352,207.359Z\\\"],[10,\\\"transform\\\",\\\"translate(-306 -115)\\\"],[10,\\\"fill\\\",\\\"#595651\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_33\\\"],[10,\\\"data-name\\\",\\\"Path 33\\\"],[10,\\\"d\\\",\\\"M383.012,186.649l.8-1.7c-.5-.3-1.6-1.2-1.6-1.2s-1.1.9-1.6,1.2l.8,1.7h-.053l-.7,9.989,1.551,2.979,1.549-2.979-.7-9.989Z\\\"],[10,\\\"transform\\\",\\\"translate(-306 -115)\\\"],[10,\\\"fill\\\",\\\"#a14944\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],19],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"g\\\",true],[10,\\\"id\\\",\\\"Group_8\\\"],[10,\\\"data-name\\\",\\\"Group 8\\\"],[10,\\\"transform\\\",\\\"translate(-91.403 -244.223)\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_22\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"data-name\\\",\\\"Path 22\\\"],[10,\\\"d\\\",\\\"M132.654,262.76c-2.068,0-3.81.822-4.334,1.939h8.669C136.462,263.582,134.72,262.76,132.654,262.76Z\\\"],[10,\\\"fill\\\",\\\"#595651\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_23\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"data-name\\\",\\\"Path 23\\\"],[10,\\\"d\\\",\\\"M116.608,260.055a8.446,8.446,0,1,0-11.482-3.289A8.445,8.445,0,0,0,116.608,260.055Z\\\"],[10,\\\"fill\\\",\\\"#595651\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_24\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"data-name\\\",\\\"Path 24\\\"],[10,\\\"d\\\",\\\"M117.287,262.556H107.163c-2.447,0-4.43,1.507-4.43,3.363v50.154c0,1.461,2.013,2.643,4.5,2.643s4.5-1.182,4.5-2.643V297.089h1v18.984c0,1.461,2.015,2.643,4.5,2.643s4.5-1.182,4.5-2.643V265.919C121.717,264.063,119.733,262.556,117.287,262.556Z\\\"],[10,\\\"fill\\\",\\\"#595651\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"rect\\\",true],[10,\\\"id\\\",\\\"Rectangle_4\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"data-name\\\",\\\"Rectangle 4\\\"],[10,\\\"width\\\",\\\"32.03\\\"],[10,\\\"height\\\",\\\"22.725\\\"],[10,\\\"transform\\\",\\\"translate(107.775 264.698)\\\"],[10,\\\"fill\\\",\\\"#a14944\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"rect\\\",true],[10,\\\"id\\\",\\\"Rectangle_5\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor1\\\"]],[10,\\\"data-name\\\",\\\"Rectangle 5\\\"],[10,\\\"width\\\",\\\"28.876\\\"],[10,\\\"height\\\",\\\"20.485\\\"],[10,\\\"transform\\\",\\\"translate(109.352 265.818)\\\"],[10,\\\"fill\\\",\\\"#afafaf\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_25\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"data-name\\\",\\\"Path 25\\\"],[10,\\\"d\\\",\\\"M110.914,287.236a4.54,4.54,0,0,1-.936-.1l-15-3.174a4.5,4.5,0,0,1-2.809-6.9l8.368-12.505a4.5,4.5,0,0,1,6.242-1.236c2.065,1.381-.279,8.5-.279,8.5l-3.154,4.713,8.5,1.8a4.5,4.5,0,0,1-.926,8.9Z\\\"],[10,\\\"fill\\\",\\\"#595651\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path14\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3614.65,887.191 c 0,-11.75 -9.52,-21.3 -21.29,-21.3 v 0 c -11.75,0 -21.28,9.55 -21.28,21.3 v 632.439 c 0,11.76 9.53,21.27 21.28,21.27 v 0 c 11.77,0 21.29,-9.51 21.29,-21.27 V 887.191\\\"],[8],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path16\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3814.14,885.988 c 3.49,-6.769 0.81,-15.097 -5.95,-18.566 v 0 c -6.74,-3.461 -15.05,-0.82 -18.55,5.957 l -86.04,166.971 c -3.48,6.77 -0.81,15.08 5.97,18.57 v 0 c 6.75,3.47 15.06,0.83 18.53,-5.95 l 86.04,-166.982\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path18\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3372.61,885.988 c -3.49,-6.769 -0.83,-15.097 5.94,-18.566 v 0 c 6.74,-3.461 15.07,-0.82 18.56,5.957 l 86.03,166.971 c 3.48,6.77 0.81,15.08 -5.95,18.57 v 0 c -6.76,3.47 -15.07,0.83 -18.56,-5.95 l -86.02,-166.982\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path20\\\"],[10,\\\"style\\\",\\\"fill:#e4e4e3;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3849.3,1406.61 c -3.26,37.86 -21.97,67.46 -45.44,67.47 -140.33,0 -280.67,0 -420.96,0 -23.5,0 -42.21,-29.61 -45.47,-67.47 -8.8,-108.47 -34.75,-223.1 -41.36,-330.78 h 594.59 c -6.58,107.68 -32.53,222.31 -41.36,330.78\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path22\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3331.39,1037 h 524.5 c 19.33,0 35.01,17.4 35.01,38.83 h -594.5 c 0,-21.43 15.66,-38.83 34.99,-38.83\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path24\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3661.01,1141.88 c 72.52,35.9 102.23,123.78 66.36,196.3 -13.76,27.76 -35.11,49.23 -60.3,63.18 l -71.05,-128.17 2.38,-146.51 c 21.09,0.31 42.43,5.22 62.61,15.2\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path26\\\"],[10,\\\"style\\\",\\\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3593.31,1126.15 -2.37,146.55 -138.7,47.24 c -12.13,-35.6 -10.65,-75.86 7.36,-112.23 25.93,-52.36 78.95,-82.4 133.71,-81.56\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path28\\\"],[10,\\\"style\\\",\\\"fill:#adabaa;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3527.04,1408.55 c -36,-17.8 -61.45,-48.46 -73.58,-83.71 l 138.55,-47.6 71.06,128.15 c -40.63,22.46 -91.25,25.31 -136.03,3.16\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path30\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4644.06,1182.28 -134.13,186.67 c -7.13,11.82 -20.2,20.52 -35.77,23.27 l -142.79,1.37 v 0 l -207.43,5.91 c -21.57,0.64 -39.65,-20.18 -40.41,-46.46 -0.75,-26.27 16.16,-48.12 37.67,-48.74 l 202.23,-5.76 c 0,0 -2.35,-214.96 -2.99,-217.89 l -49.17,-229.619 c -4.53,-21.07 12.59,-42.672 38.33,-48.191 25.77,-5.5 50.31,7.14 54.79,28.199 l 43.65,203.591 h 23.18 l 43.59,-203.591 c 4.55,-21.059 29.08,-33.699 54.76,-28.199 25.71,5.519 42.9,27.121 38.37,48.191 l -49.19,229.619 c -0.63,2.9 -2.96,116.96 -2.96,116.96 l 50.96,-70.89 c 12.55,-17.56 40.08,-19.31 61.43,-3.96 21.33,15.33 28.44,41.97 15.88,59.52\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path32\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4457.29,1419.34 c 37.54,20.82 51.01,68.11 30.21,105.57 -20.87,37.51 -68.09,51.04 -105.58,30.23 -37.5,-20.84 -51.03,-68.08 -30.22,-105.61 20.82,-37.51 68.12,-51 105.59,-30.19\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path34\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4066.45,1360.71 c -0.3,-3.78 -3.38,-6.6 -6.86,-6.32 l -378.62,31.41 c -3.45,0.31 -6.02,3.6 -5.72,7.39 v 0 c 0.32,3.78 3.39,6.6 6.85,6.31 l 378.65,-31.44 c 3.46,-0.28 6.01,-3.56 5.7,-7.35 v 0\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path36\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4464.1,577.941 c 37.63,25.539 47.46,76.7 21.92,114.309 -25.47,37.602 -76.63,47.422 -114.21,21.941 -37.69,-25.55 -47.51,-76.711 -21.98,-114.261 25.49,-37.66 76.65,-47.481 114.27,-21.989\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path38\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4639.27,334.512 -14.83,122 c -1.63,13.289 -9.24,25.136 -20.68,32.097 l -97.55,59.641 c -7.47,4.582 -15.74,6.609 -23.88,6.441 -2.2,0.059 -4.46,0 -6.71,-0.211 l -98.29,-8.761 c -1.68,-0.137 -3.35,-0.379 -4.98,-0.66 -5.94,-0.848 -11.69,-2.879 -16.85,-6.008 -7.68,-4.41 -13.47,-10.621 -16.34,-17.641 l -41.44,-70.238 -89.97,-35.223 c -22.54,-8.859 -33.64,-34.277 -24.81,-56.828 6.78,-17.289 23.31,-27.859 40.82,-27.859 5.32,0 10.72,1 15.99,3.047 l 104.02,40.781 c 1.82,0.691 3.54,1.558 5.21,2.492 l 10.73,-120.523 -44.06,-74.118 c -7.35,-12.359 -8.17,-27.543 -2.16,-40.652 L 4366.9,25.6211 c 7.38,-16.10157 23.27,-25.58985 39.91,-25.58985 6.09,0 12.28,1.27734 18.19,3.96875 22.03,10.0703 31.71,36.1094 21.62,58.1016 l -43.87,95.7964 32.83,55.223 13.7,1.231 -3.95,-22.301 c -1.36,-7.77 -0.59,-15.781 2.19,-23.153 l 53.41,-140.6089 c 6.65,-17.5 23.29,-28.25785 40.97,-28.25785 5.17,0 10.44,0.898438 15.56,2.83984 22.66,8.58981 34.01,33.92971 25.42,56.55861 l -49.1,129.2893 9.5,54.121 c 1.84,4.09 2.65,8.48 2.24,12.969 l -15.6,175.203 10.03,-6.133 12.28,-100.949 c 2.93,-24.039 24.78,-41.129 48.8,-38.231 1.46,0.18 2.9,0.442 4.27,0.762 21.75,4.82 36.7,25.469 33.97,48.051\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path40\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4604.33,281.992 h -19.69 v -20.031 h 19.69 v 20.031\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path42\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4611.47,255.93 c -1.16,2.289 -2.76,4.351 -4.71,6.031 v -5.5 h -24.58 v 5.5 c -1.96,-1.68 -3.57,-3.742 -4.71,-6.031 h -48.44 V 103.398 h 153.24 V 255.93 h -70.8\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path52\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3250.38,2170.32 c 46.47,14.3 72.6,63.5 58.3,109.99 -14.25,46.44 -63.44,72.52 -109.87,58.27 -46.51,-14.24 -72.65,-63.46 -58.34,-109.88 14.24,-46.52 63.46,-72.6 109.91,-58.38\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path54\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3451.55,2058.54 h -108.68 l -58.83,67.99 c -6.38,7.38 -14.54,12.28 -23.31,14.6 -1.92,0.64 -3.89,1.16 -5.95,1.61 l -103.21,21.92 c -24.91,5.29 -48.41,-5.76 -52.44,-24.69 l -60.16,-283.43 c -4.02,-18.93 12.94,-38.57 37.88,-43.85 l 103.19,-21.92 c 1.76,-0.37 3.52,-0.65 5.28,-0.87 l 64.48,-14.29 -48.65,-45.49 c -18.9,-17.7 -19.89,-47.36 -2.2,-66.26 7.35,-7.85 16.75,-12.62 26.59,-14.24 13.85,-2.28 28.6,1.68 39.66,12.01 l 113.61,106.27 c 12.69,11.88 17.79,29.83 13.22,46.61 -4.6,16.78 -18.1,29.63 -35.1,33.4 l -112.28,24.87 26.58,125.29 14.75,-17.07 c 8.9,-10.29 21.86,-16.2 35.45,-16.2 h 130.12 c 25.91,0 46.9,20.99 46.9,46.87 0,25.91 -20.99,46.87 -46.9,46.87\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path56\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3147.91,1789.27 h -167.23 v 322.96 c 0,17.44 -14.13,31.57 -31.57,31.57 -17.44,0 -31.57,-14.13 -31.57,-31.57 v -341.86 c 0,-1.14 0.07,-2.29 0.19,-3.43 -0.1,-1.1 -0.19,-2.19 -0.19,-3.33 0,-14.18 9.14,-25.67 20.4,-25.67 h 86.22 c -0.56,-1.42 -0.88,-2.97 -0.88,-4.58 v -83.19 h -28.8 c -7.07,0 -12.79,-5.72 -12.79,-12.8 0,-7.04 5.72,-12.77 12.79,-12.77 h 83.16 c 7.08,0 12.78,5.73 12.78,12.77 0,7.08 -5.7,12.8 -12.78,12.8 h -28.8 v 83.19 c 0,1.61 -0.32,3.16 -0.86,4.58 h 99.93 c 11.26,0 20.4,11.49 20.4,25.67 0,14.16 -9.14,25.66 -20.4,25.66\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path58\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3757.83,1624.6 h -338.26 v 313.86 h 338.26 V 1624.6\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path60\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3626.25,2280.17 v -331.46 c 18.3,0 33.14,14.84 33.14,33.14 v 265.18 c 0,18.29 -14.84,33.14 -33.14,33.14\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path62\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1326.54,2184.17 c -20.68,0 -38.1,-8.22 -43.34,-19.38 h 86.69 c -5.27,11.16 -22.69,19.38 -43.35,19.38\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path64\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1166.08,2211.22 c 40.79,22.69 55.51,74.09 32.81,114.88 -22.63,40.75 -74.04,55.44 -114.77,32.82 -40.82,-22.67 -55.55,-74.08 -32.86,-114.81 22.63,-40.83 74.04,-55.5 114.82,-32.89\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path66\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1172.87,2186.21 h -101.24 c -24.47,0 -44.31,-15.07 -44.31,-33.63 v -252.67 -25.41 -223.46 c 0,-14.6 20.14,-26.43 44.98,-26.43 24.81,0 44.98,11.83 44.98,26.43 v 189.84 h 9.96 v -189.84 c 0,-14.6 20.15,-26.43 44.96,-26.43 24.78,0 44.97,11.83 44.97,26.43 v 223.46 25.41 252.67 c 0,18.56 -19.84,33.63 -44.3,33.63\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path68\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1398.05,1937.54 h -320.3 v 227.25 h 320.3 v -227.25\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path70\\\"],[10,\\\"style\\\",\\\"fill:#adadab;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1382.28,1948.74 h -288.76 v 204.85 h 288.76 v -204.85\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path72\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1109.14,1939.41 c -3.09,0 -6.23,0.33 -9.36,0.99 l -150.053,31.74 c -14.618,3.08 -26.747,13.23 -32.379,27.07 -5.629,13.84 -4.02,29.56 4.289,41.97 l 83.683,125.05 c 13.82,20.65 41.77,26.18 62.41,12.36 20.66,-13.8 -2.78,-85.04 -2.78,-85.04 l -31.54,-47.13 84.99,-17.98 c 24.31,-5.14 39.84,-29.03 34.7,-53.33 -4.48,-21.17 -23.17,-35.7 -43.96,-35.7\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path74\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3468.15,2529.47 c 0,-11.51 -9.33,-20.85 -20.85,-20.85 v 0 c -11.51,0 -20.83,9.34 -20.83,20.85 v 619.29 c 0,11.51 9.32,20.84 20.83,20.84 v 0 c 11.52,0 20.85,-9.33 20.85,-20.84 v -619.29\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path76\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3663.49,2528.29 c 3.4,-6.62 0.79,-14.77 -5.82,-18.17 v 0 c -6.62,-3.42 -14.75,-0.81 -18.17,5.81 l -84.25,163.52 c -3.4,6.63 -0.79,14.77 5.82,18.18 v 0 c 6.63,3.41 14.75,0.8 18.18,-5.82 l 84.24,-163.52\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path78\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3231.13,2528.29 c -3.41,-6.62 -0.8,-14.76 5.81,-18.17 v 0 c 6.63,-3.42 14.76,-0.81 18.18,5.81 l 84.24,163.52 c 3.41,6.63 0.81,14.77 -5.82,18.18 v 0 c -6.62,3.41 -14.75,0.8 -18.17,-5.82 l -84.24,-163.52\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path80\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3649.72,2690.27 c 0,-6.88 -3.05,-12.47 -6.81,-12.47 h -391.18 c -3.76,0 -6.82,5.59 -6.82,12.47 v 443.84 c 0,6.89 3.06,12.48 6.82,12.48 h 391.18 c 3.76,0 6.81,-5.59 6.81,-12.48 v -443.84\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path82\\\"],[10,\\\"style\\\",\\\"fill:#adadab;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3626.6,2715.62 c 0,-6.09 -2.7,-11.05 -6.03,-11.05 h -346.51 c -3.32,0 -6.02,4.96 -6.02,11.05 v 393.14 c 0,6.1 2.7,11.04 6.02,11.04 h 346.51 c 3.33,0 6.03,-4.94 6.03,-11.04 v -393.14\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path84\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3864.76,3012.17 c 40.55,22.56 55.19,73.67 32.62,114.23 -22.5,40.53 -73.6,55.14 -114.13,32.63 -40.6,-22.53 -55.24,-73.65 -32.66,-114.15 22.49,-40.6 73.61,-55.19 114.17,-32.71\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path86\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3983.52,2738.18 -65.68,223.02 c -4.93,16.78 -22.72,26.96 -42.74,26.03 -0.87,0.04 -1.76,0.06 -2.66,0.06 h -100.68 c -0.3,0 -0.63,0 -0.93,-0.02 -0.89,0.27 -1.79,0.52 -2.71,0.7 l -227.62,47.27 c -20.88,4.34 -42.14,-12.82 -47.42,-38.34 -5.32,-25.44 7.4,-49.67 28.24,-53.96 l 206.4,-42.89 v -197.44 -25.27 -222.21 c 0,-14.52 20.02,-26.28 44.72,-26.28 24.67,0 44.72,11.76 44.72,26.28 v 188.78 h 9.91 v -188.78 c 0,-14.52 20.04,-26.28 44.72,-26.28 24.64,0 44.7,11.76 44.7,26.28 v 222.21 10.96 c 9.71,-3.46 21.24,-3.91 32.76,-0.52 24.92,7.36 40.29,29.96 34.27,50.4\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path88\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3830.12,2945.28 8.02,17.03 c -5.01,3 -16.03,12.02 -16.03,12.02 0,0 -11.02,-9.02 -16.04,-12.02 l 8.03,-17.03 h -0.53 l -6.96,-99.89 15.51,-29.79 15.49,29.79 -6.97,99.89 h -0.52\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path90\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1575.07,3845.16 c 32.42,13.25 47.97,50.25 34.71,82.67 -13.21,32.39 -50.19,47.94 -82.58,34.71 -32.46,-13.24 -48.03,-50.22 -34.75,-82.6 13.21,-32.46 50.2,-47.98 82.62,-34.78\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path92\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1714.19,3769.95 c -9.66,15.95 -30.42,21.05 -46.37,11.4 l -31.97,-19.36 -25.13,44.44 c -3.23,5.75 -7.93,10.17 -13.34,13.1 -4.85,3.13 -10.8,5.33 -17.37,6.13 l -75.46,9.06 c -2.92,0.34 -5.78,0.39 -8.53,0.18 -10.17,0.88 -20.61,-2.84 -27.98,-10.98 l -114.02,-125.91 c -12.52,-13.83 -11.46,-35.19 2.37,-47.7 7.79,-7.06 17.99,-9.8 27.64,-8.37 7.46,1.11 14.59,4.71 20.04,10.74 l 52.05,57.46 -12.44,-103.74 c -0.4,-3.31 0.06,-6.56 1.25,-9.63 0.15,-1.76 0.43,-3.53 0.87,-5.29 l 21.83,-88.06 -40.19,-62.48 c -10.09,-15.68 -5.56,-36.57 10.13,-46.67 5.65,-3.64 11.97,-5.37 18.23,-5.37 11.11,0 21.98,5.47 28.43,15.5 l 48.08,74.74 c 5.03,7.81 6.61,17.35 4.37,26.39 l -16.42,66.26 27.12,-3.25 c 2.53,-1.07 5.25,-1.87 8.1,-2.31 l 46.59,-7.17 -24.98,-73.25 c -6.03,-17.65 3.41,-36.83 21.05,-42.86 4.12,-1.4 8.31,-1.95 12.39,-1.78 13.48,0.6 25.86,9.31 30.48,22.84 l 37.98,111.39 c 3.23,9.45 2.11,19.84 -3.06,28.4 -5.19,8.54 -13.87,14.35 -23.76,15.88 l -62.25,9.58 7.71,64.24 c 4.47,-5.38 10.52,-9.27 17.39,-11.08 2.82,-0.74 5.69,-1.1 8.54,-1.1 6.12,0 12.18,1.66 17.49,4.88 l 61.74,37.37 c 15.96,9.66 21.06,30.41 11.4,46.38\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path94\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1940.45,3235.76 h -587.59 v 71.02 h 80.66 v 64.26 h 103.68 v 74.39 h 138.25 v 74.4 h 134.42 v 77.78 h 130.58 v -361.85\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path96\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2661.75,589.34 c 40.97,22.781 55.77,74.441 32.97,115.39 -22.73,40.942 -74.39,55.711 -115.29,32.969 -41.02,-22.758 -55.82,-74.418 -33.02,-115.34 22.73,-41 74.39,-55.738 115.34,-33.019\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path98\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 2819.69,337.102 2710.82,545.23 c -6.89,13.239 -22.01,19.989 -38.4,18.829 -1.29,0.089 -2.54,0.152 -3.84,0.152 h -95.67 l -84.09,8.48 16.58,16.848 c 17.5,17.82 17.26,46.441 -0.57,63.941 -17.8,17.469 -46.41,17.231 -63.91,-0.589 l -82.61,-84.071 c -12.19,-12.379 -16.18,-30.679 -10.27,-47.039 5.89,-16.34 20.68,-27.851 37.97,-29.601 l 136.36,-13.75 V 276.59 251.051 26.5508 C 2522.37,11.8906 2542.61,0 2567.53,0 c 24.93,0 45.2,11.8906 45.2,26.5508 V 217.281 h 9.99 V 26.5508 C 2622.72,11.8906 2642.99,0 2667.91,0 c 24.88,0 45.16,11.8906 45.16,26.5508 v 224.5002 25.539 58.851 l 22.22,-42.48 c 9.94,-19.09 37,-24.731 60.32,-12.539 23.27,12.187 34.05,37.578 24.08,56.68\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path100\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2507.49,680.492 -4.05,33.379 c -0.28,2.199 -2.26,3.77 -4.48,3.5 -2.21,-0.25 -3.77,-2.25 -3.53,-4.461 l 3.44,-28.148 c -1.61,0.289 -3.24,0.347 -4.96,0.136 -9.3,-1.128 -15.92,-9.597 -14.79,-18.878 l 5.47,-45.129 c 1.12,-9.289 9.59,-15.942 18.88,-14.809 9.3,1.137 15.93,9.609 14.8,18.898 l -5.47,45.129 c -0.5,4.121 -2.47,7.743 -5.31,10.383\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path102\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2627.16,534.02 8.47,17.972 -8.13,5.309 h -19.21 l -8.43,-5.309 8.43,-17.972 -8.96,-90.27 18.35,-36.191 v 0.23 l 0.08,-0.23 18.36,36.191 -8.96,90.27\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path104\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2062.84,572.609 c 39.38,21.911 53.58,71.52 31.67,110.891 -21.82,39.352 -71.46,53.52 -110.77,31.691 -39.41,-21.89 -53.64,-71.511 -31.73,-110.832 21.85,-39.41 71.46,-53.57 110.83,-31.75\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path106\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 2159.36,47.5508 2114.9,254.98 v 261.051 c 0,17.918 -19.15,32.438 -42.76,32.438 h -97.74 c -23.61,0 -42.75,-14.52 -42.75,-32.438 V 255.121 L 1887.19,47.5508 c -4.37,-20.2813 12.16,-41.01174 36.84,-46.28908 24.72,-5.3125 48.25,6.80859 52.62,27.07808 l 40.03,186.8012 h 13.17 l 40.02,-186.8012 c 4.3,-20.26949 27.86,-32.39058 52.6,-27.07808 24.77,5.27734 41.23,26.00778 36.89,46.28908\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path108\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2001.5,531.691 c -14.73,18.93 -42,22.36 -60.95,7.641 l -102.74,-79.871 c -9.23,-7.172 -15.16,-17.742 -16.49,-29.32 -1.34,-11.602 2.06,-23.27 9.41,-32.321 l 23.94,-29.539 72.83,48.09 -1.39,1.711 67.75,52.668 c 18.93,14.73 22.34,42 7.64,60.941\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path110\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2044.79,531.691 c 14.71,18.93 41.99,22.36 60.92,7.641 l 102.76,-79.871 c 9.2,-7.172 15.15,-17.742 16.47,-29.32 1.34,-11.602 -2.04,-23.27 -9.4,-32.321 l -23.96,-29.539 -72.81,48.09 1.38,1.711 -67.75,52.668 c -18.92,14.73 -22.34,42 -7.61,60.941\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path112\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2024.64,143.352 c -76.06,0 -137.7,61.628 -137.7,137.687 0,76.051 61.64,137.68 137.7,137.68 76.05,0 137.69,-61.629 137.69,-137.68 0,-76.059 -61.64,-137.687 -137.69,-137.687 z m 0,315.66 c -98.3,0 -177.97,-79.672 -177.97,-177.973 0,-98.32 79.67,-178 177.97,-178 98.29,0 177.97,79.68 177.97,178 0,98.301 -79.68,177.973 -177.97,177.973\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path114\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 1978.55,0.0117188 2024.64,281.039 2070.73,0.0117188 Z\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path116\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2243.83,300.238 c -5.84,0 -11.01,-2.679 -14.53,-6.797 h -164.97 c -1.9,6.028 -5.15,11.43 -9.34,15.93 l 81.43,143.527 c 5.34,1.051 10.2,4.211 13.09,9.313 5.23,9.211 2,20.93 -7.21,26.187 -9.23,5.211 -20.96,1.973 -26.2,-7.257 -2.89,-5.071 -3.12,-10.891 -1.26,-15.993 l -81.43,-143.507 c -2.81,0.629 -5.74,0.961 -8.77,0.961 -3.01,0 -5.96,-0.332 -8.77,-0.961 l -81.42,143.507 c 1.84,5.102 1.61,10.922 -1.26,15.993 -5.26,9.23 -16.98,12.468 -26.21,7.257 -9.2,-5.257 -12.44,-16.976 -7.21,-26.187 2.89,-5.102 7.76,-8.262 13.09,-9.313 l 81.43,-143.527 c -4.19,-4.5 -7.44,-9.902 -9.33,-15.93 h -164.98 c -3.51,4.118 -8.69,6.797 -14.54,6.797 -10.61,0 -19.19,-8.597 -19.19,-19.199 0,-10.617 8.58,-19.199 19.19,-19.199 5.85,0 11.03,2.652 14.54,6.781 h 164.98 c 1.89,-6.031 5.14,-11.43 9.33,-15.922 L 1912.86,109.16 c -5.33,-1.039 -10.2,-4.211 -13.09,-9.3084 -5.23,-9.2305 -2,-20.9297 7.21,-26.1719 9.23,-5.2305 20.95,-2 26.19,7.2305 2.89,5.0781 3.12,10.8984 1.27,15.9804 l 81.41,143.5074 c 2.83,-0.597 5.78,-0.937 8.79,-0.937 3.03,0 5.96,0.34 8.78,0.937 l 81.42,-143.5074 c -1.86,-5.082 -1.61,-10.9023 1.26,-15.9804 5.24,-9.2305 16.97,-12.461 26.2,-7.2305 9.21,5.2422 12.44,16.9414 7.21,26.1719 -2.89,5.0974 -7.75,8.2694 -13.08,9.3084 l -81.44,143.539 c 4.19,4.492 7.44,9.891 9.34,15.922 h 164.97 c 3.52,-4.129 8.69,-6.781 14.53,-6.781 10.61,0 19.2,8.582 19.2,19.199 0,10.602 -8.59,19.199 -19.2,19.199\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path118\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1863.24,357.891 c 8.57,-10.602 21.09,-16.071 33.75,-16.071 9.62,0 19.28,3.168 27.32,9.7 18.63,15.089 21.49,42.441 6.38,61.082 l -12.48,15.39 -72.82,-48.101 17.85,-22\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path120\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2183.05,357.891 c -8.59,-10.602 -21.13,-16.071 -33.78,-16.071 -9.59,0 -19.25,3.168 -27.31,9.7 -18.62,15.089 -21.49,42.441 -6.38,61.082 l 12.48,15.39 72.81,-48.101 -17.82,-22\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path136\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4247.44,3578.42 c -4.93,-0.99 -9.88,1.89 -11.38,6.79 -1.59,5.21 1.34,10.74 6.55,12.35 1.09,0.34 110.61,34.31 225.63,106.48 105.31,66.08 237.06,178.7 266.59,340 1,5.36 6.14,8.92 11.51,7.94 5.37,-0.99 8.92,-6.14 7.94,-11.52 -13.65,-74.58 -48.95,-145.37 -104.89,-210.36 -44.47,-51.65 -102.01,-99.79 -171.05,-143.05 -117.2,-73.46 -228.84,-108.05 -229.94,-108.39 -0.32,-0.1 -0.64,-0.18 -0.96,-0.24\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path138\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4702.03,4039.24 58.33,113.59 22.35,-127.64 -32.1,44.53 -48.58,-30.48\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path140\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4593.75,3839.69 c 41.99,23.35 57.14,76.27 33.78,118.26 -23.3,41.96 -76.23,57.1 -118.16,33.79 -42.05,-23.33 -57.19,-76.25 -33.84,-118.18 23.3,-42.04 76.23,-57.14 118.22,-33.87\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path142\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4769.09,4010.27 c -24.93,5.7 -49.76,-9.89 -55.49,-34.84 l -30.88,-135.29 -56.49,-30.75 c -6.66,2.88 -14.36,4.54 -22.58,4.54 h -104.23 c -2.61,0 -5.15,-0.17 -7.64,-0.48 -20.85,2.74 -40.37,-6.46 -46.76,-23.62 l -84.46,-225.39 c -7.71,-20.68 6.47,-45.14 31.69,-54.58 25.25,-9.45 51.99,-0.35 59.77,20.34 l 1.8,4.79 v -15.8 -26.16 -230.06 c 0,-15.04 20.72,-27.21 46.29,-27.21 25.54,0 46.3,12.17 46.3,27.21 v 195.44 h 10.25 v -195.44 c 0,-15.04 20.75,-27.21 46.29,-27.21 25.54,0 46.32,12.17 46.32,27.21 v 230.06 26.16 197.28 l 96.1,52.3 c 11.68,6.35 20.07,17.41 23.03,30.37 l 35.55,155.67 c 5.68,24.94 -9.92,49.78 -34.86,55.46\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path144\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3711.69,3848.11 c -41.4,23.04 -56.36,75.24 -33.32,116.66 22.99,41.38 75.19,56.3 116.54,33.32 41.48,-23.01 56.42,-75.21 33.39,-116.57 -22.98,-41.47 -75.18,-56.36 -116.61,-33.41\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path146\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3701.92,3810 h 102.82 c 3.07,0 6.09,-0.22 8.99,-0.67 l 80.19,41.35 23.56,74.66 c 7.61,24.06 33.27,37.4 57.33,29.8 24.08,-7.59 37.41,-33.25 29.81,-57.32 l -29.3,-92.8 c -3.67,-11.6 -11.81,-21.26 -22.63,-26.84 l -102.97,-53.1 v -231.6 c 0,-14.09 -11.24,-26.19 -27.3,-31.4 V 3262.6 c 0,-14.84 -20.44,-26.84 -45.65,-26.84 -9.8,0 -18.87,1.82 -26.31,4.91 -7.43,-3.09 -16.51,-4.91 -26.3,-4.91 -25.19,0 -45.67,12 -45.67,26.84 v 201.73 c -12.91,6 -21.55,16.81 -21.55,29.15 v 282.38 c 0,18.87 20.14,34.14 44.98,34.14\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path148\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4040.14,3847.21 c 6.33,2.11 13.17,-1.32 15.27,-7.66 l 18.06,-54.2 c 1.58,-4.74 0.06,-9.74 -3.44,-12.86 l 12.56,-37.78 -9.03,-3 -12.57,37.77 c -4.67,0.38 -8.88,3.5 -10.46,8.23 l -18.06,54.22 c -2.1,6.33 1.33,13.18 7.67,15.28\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path150\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4019.69,3823.43 c 5.58,1.86 11.64,-1.17 13.51,-6.77 l 15.96,-47.93 c 1.4,-4.19 0.06,-8.62 -3.05,-11.37 l 11.12,-33.39 -7.99,-2.66 -11.12,33.39 c -4.13,0.35 -7.85,3.09 -9.24,7.27 l -15.95,47.94 c -1.88,5.6 1.16,11.65 6.76,13.52\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path152\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3999.39,3798.54 c 4.82,1.59 10,-1 11.61,-5.82 l 13.7,-41.16 c 1.2,-3.58 0.04,-7.39 -2.61,-9.76 l 9.54,-28.67 -6.86,-2.29 -9.55,28.68 c -3.54,0.3 -6.73,2.66 -7.93,6.24 l -13.71,41.17 c -1.61,4.82 0.99,10.01 5.81,11.61\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path154\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3886.75,3747.76 h 215.37 l -77.49,-92.31 h -8.8 v -419.69 h -119.29 v 419.69 h -9.79 v 92.31\\\"],[8],[9],[0,\\\"\\\\n\\\\n           \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path208\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 530.012,1222.61 H 340.676 v 129.5 h 189.336 v -129.5\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path210\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 514.871,1360.71 H 355.805 v 108.79 h 159.066 v -108.79\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path212\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 498.441,1476.22 H 372.246 v 86.32 h 126.195 v -86.32\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path214\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 241.145,1352.86 c 34.359,23.94 42.859,71.18 18.918,105.54 -23.891,34.34 -71.122,42.82 -105.454,18.93 -34.41,-23.92 -42.906,-71.16 -18.964,-105.47 23.902,-34.42 71.125,-42.88 105.5,-19\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path216\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 459.199,1269.53 c -8.148,20.75 -31.586,30.98 -52.34,22.82 l -67.039,-26.32 -50.332,52.85 c -8.566,8.99 -20.289,13.16 -31.789,12.44 -2.683,0.15 -5.429,0.1 -8.226,-0.18 l -90.407,-9.15 c -21.855,-2.22 -38.199,-17.45 -36.511,-34.03 l 23.535,-232.59 c -0.324,-0.73 -0.578,-1.49 -0.774,-2.28 L 93.2422,835.879 c -3.0625,-12.758 12.0348,-27.277 33.7068,-32.488 21.656,-5.18 41.723,0.918 44.785,13.668 l 47.844,199.541 26.031,2.65 31.973,-73.129 -40.906,-87.012 c -9.496,-20.179 -0.832,-44.23 19.359,-53.718 5.551,-2.61 11.391,-3.84 17.153,-3.84 15.164,0 29.687,8.578 36.562,23.211 l 48.711,103.59 c 4.953,10.539 5.117,22.687 0.449,33.359 l -41.758,95.479 -13.136,129.86 c 7.238,-5.82 16.183,-8.93 25.297,-8.93 4.957,0 9.96,0.92 14.753,2.81 l 92.317,36.27 c 20.758,8.14 30.98,31.58 22.816,52.33\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path218\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2666.69,2221.91 c 41.52,23.1 56.52,75.44 33.42,116.98 -23.05,41.49 -75.39,56.44 -116.87,33.4 -41.57,-23.07 -56.56,-75.42 -33.46,-116.88 23.04,-41.57 75.39,-56.51 116.91,-33.5\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path220\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2804.26,1941.8 -81.5,239.94 c -3.81,11.25 -19.52,16.57 -37.87,14.1 -2.72,0.39 -5.52,0.61 -8.41,0.61 H 2573.4 c -24.92,0 -45.11,-15.34 -45.11,-34.25 v -250.54 c -0.95,-2.16 -1.44,-4.4 -1.44,-6.72 v -253.42 c 0,-14.87 20.5,-26.91 45.79,-26.91 25.26,0 45.8,12.04 45.8,26.91 v 193.31 h 10.13 v -193.31 c 0,-14.87 20.53,-26.91 45.8,-26.91 25.23,0 45.78,12.04 45.78,26.91 v 218.94 c 0.93,2.74 1.44,5.63 1.44,8.6 v 26.85 c 8.81,-8.92 28.17,-11.05 47.96,-4.33 23.91,8.12 39.48,26.13 34.71,40.22\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path222\\\"],[10,\\\"style\\\",\\\"fill:#b6ac8f;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2634.51,2164.01 8.57,18.2 -8.22,5.4 h -19.47 l -8.57,-5.4 8.55,-18.2 -9.07,-91.52 18.62,-36.67 v 0.23 l 0.05,-0.23 18.61,36.67 -9.07,91.52\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path224\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2584.36,1871.87 -111.61,45.33 67.45,166.06 111.61,-45.33 -67.45,-166.06\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path226\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2528.47,1897.65 c -10.23,0 -20.52,3.39 -29.04,10.39 l -73.45,60.23 c -17.86,14.65 -22.02,40.32 -9.69,59.86 l 92.67,146.93 c 13.5,21.4 41.8,27.8 63.19,14.3 21.4,-13.5 27.8,-41.79 14.31,-63.2 l -71.1,-112.69 42.18,-34.59 c 19.56,-16.03 22.41,-44.91 6.38,-64.47 -9.07,-11.04 -22.21,-16.76 -35.45,-16.76\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path228\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:0;fill-rule:nonzero;stroke:#006199;stroke-width:30\\\"],[10,\\\"d\\\",\\\"m 674.492,3158.06 c -50.211,-13.44 -100.437,-26.88 -150.648,-40.32 l 5.648,-63.05 c 51.801,-4.3 103.617,-8.58 155.426,-12.88 l -10.426,116.25\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path230\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 696.047,3029.86 c -2.442,-0.23 -4.617,1.59 -4.84,4.03 l -11.922,133.09 c -0.215,2.44 1.582,4.61 4.035,4.83 v 0 c 2.446,0.22 4.625,-1.6 4.836,-4.04 l 11.926,-133.08 c 0.227,-2.44 -1.59,-4.61 -4.035,-4.83 v 0\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path232\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 519.859,3049.83 c -2.449,-0.22 -4.527,0.59 -4.629,1.82 l -5.976,66.55 c -0.098,1.22 1.797,2.39 4.242,2.61 v 0 c 2.461,0.22 4.527,-0.6 4.633,-1.83 l 5.973,-66.54 c 0.113,-1.21 -1.793,-2.39 -4.243,-2.61 v 0\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path234\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 612.027,3050.18 -8.839,0.63 c -0.708,-10.16 -7,-17.98 -14.008,-17.49 l -19.895,1.39 c -7.027,0.5 -12.168,9.13 -11.449,19.28 l -8.828,0.61 c -0.981,-14.1 6.121,-26.1 15.887,-26.77 l 27.66,-1.96 c 9.769,-0.67 18.484,10.21 19.472,24.31\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path236\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:0;fill-rule:nonzero;stroke:#006199;stroke-width:30\\\"],[10,\\\"d\\\",\\\"m 135.32,2791.82 144.637,181.01 c 8.047,10.06 21.156,14.15 34.746,12.26 2.344,0.3 4.754,0.46 7.227,0.46 h 100.367 c 4.598,0 9.035,-0.54 13.207,-1.54 0.785,-0.18 1.562,-0.37 2.324,-0.59 l 110.391,-31.17 v 48.32 c 0,24.64 19.965,44.6 44.59,44.6 24.636,0 44.593,-19.96 44.593,-44.6 v -107.26 c 0,-13.98 -6.543,-27.14 -17.679,-35.57 -7.828,-5.93 -17.313,-9.04 -26.914,-9.04 -4.047,0 -8.125,0.56 -12.11,1.69 l -114.5,32.33 v -180.96 -25.19 -221.52 c 0,-14.48 -19.961,-26.2 -44.566,-26.2 -24.602,0 -44.59,11.72 -44.59,26.2 v 188.18 h -9.875 v -188.18 c 0,-14.48 -19.98,-26.2 -44.574,-26.2 -24.567,0 -44.574,11.72 -44.574,26.2 v 221.52 25.19 118.08 l -69.309,-86.72 c -13.262,-16.61 -40.473,-16.94 -60.746,-0.75 -20.301,16.19 -25.914,42.83 -12.645,59.45\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path238\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:0;fill-rule:nonzero;stroke:#006199;stroke-width:30\\\"],[10,\\\"d\\\",\\\"m 331.465,3010.34 c -40.426,22.49 -55.016,73.45 -32.535,113.88 22.449,40.4 73.398,54.96 113.781,32.52 40.473,-22.46 55.059,-73.41 32.57,-113.79 -22.429,-40.47 -73.383,-55.01 -113.816,-32.61\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path240\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3491.16,4615.47 c 39.19,21.82 53.34,71.22 31.55,110.42 -21.77,39.18 -71.19,53.3 -110.34,31.55 -39.24,-21.78 -53.4,-71.19 -31.59,-110.35 21.76,-39.25 71.17,-53.34 110.38,-31.62\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path242\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3645.71,4368.59 -109.66,212.62 c -4.21,8.18 -15.36,11.53 -28.52,9.76 -2.31,0.3 -4.7,0.46 -7.13,0.46 h -97.31 c -3.01,0 -5.92,-0.24 -8.75,-0.69 -17.75,3.18 -36.32,-5.03 -45.49,-21.71 l -51.26,-93.11 -52.76,15.31 c -22.93,6.66 -46.92,-6.53 -53.58,-29.48 -6.66,-22.94 6.53,-46.93 29.47,-53.58 l 85.99,-24.97 c 4,-1.15 8.06,-1.72 12.07,-1.72 15.44,0 30.13,8.32 37.87,22.4 l 3.85,6.99 v -119.06 c 0,-4.42 1.17,-8.63 3.29,-12.47 l 20.69,-206.05 c 1.43,-13.97 21.81,-23.34 45.57,-20.95 8.07,0.8 15.47,2.87 21.69,5.79 6.22,-2.92 13.64,-4.99 21.69,-5.79 23.77,-2.39 44.16,6.98 45.56,20.95 l 20.7,206.05 c 2.13,3.84 3.3,8.05 3.3,12.47 v 87.35 l 25.89,-50.2 c 6.42,-12.47 28.85,-13.69 50.06,-2.76 21.17,10.93 33.2,29.91 26.77,42.39\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path244\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2942.21,4615.47 c -39.2,21.82 -53.35,71.22 -31.56,110.42 21.76,39.18 71.18,53.3 110.34,31.55 39.24,-21.78 53.4,-71.19 31.59,-110.35 -21.76,-39.25 -71.17,-53.34 -110.37,-31.62\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path246\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2787.65,4368.59 109.65,212.62 c 4.22,8.18 15.37,11.53 28.52,9.76 2.32,0.3 4.71,0.46 7.13,0.46 h 97.33 c 2.99,0 5.92,-0.24 8.74,-0.69 17.75,3.18 36.31,-5.03 45.49,-21.71 l 51.26,-93.11 52.76,15.31 c 22.93,6.66 46.92,-6.53 53.59,-29.48 6.65,-22.94 -6.53,-46.93 -29.48,-53.58 l -85.99,-24.97 c -4,-1.15 -8.06,-1.72 -12.06,-1.72 -15.45,0 -30.13,8.32 -37.88,22.4 l -3.85,6.99 v -119.06 c 0,-4.42 -1.18,-8.63 -3.29,-12.47 l -20.69,-206.05 c -1.41,-13.97 -21.81,-23.34 -45.56,-20.95 -8.07,0.8 -15.48,2.87 -21.7,5.79 -6.23,-2.92 -13.64,-4.99 -21.7,-5.79 -23.75,-2.39 -44.16,6.98 -45.55,20.95 l -20.7,206.05 c -2.12,3.84 -3.3,8.05 -3.3,12.47 v 87.35 l -25.88,-50.2 c -6.43,-12.47 -28.87,-13.69 -50.07,-2.76 -21.17,10.93 -33.21,29.91 -26.77,42.39\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path248\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2825.37,4290.31 h -11.1 v 27.75 h 11.1 v -27.75\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path250\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2834.39,4131.52 h -29.14 v 153.94 h 29.14 v -153.94\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path252\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1318.23,2667.01 c 25.8,0 46.73,20.93 46.73,46.74 0,25.82 -20.93,46.73 -46.73,46.73 -25.82,0 -46.73,-20.91 -46.73,-46.73 0,-25.81 20.91,-46.74 46.73,-46.74\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path254\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1393.31,2771.73 c -11.1,0 -20.11,-8.09 -20.11,-18.09 h 0.01 v -45.69 c 0,-31.83 -24.62,-57.62 -54.99,-57.62 -30.35,0 -54.97,25.79 -54.97,57.62 v 45.69 h 0.01 c 0,10 -9.01,18.09 -20.12,18.09 -11.11,0 -20.12,-8.09 -20.12,-18.09 v -51.66 c 0,-32.18 19.54,-60.24 48.48,-75.01 v -198.12 h 43.04 v 88.24 h 7.38 v -88.24 h 43.04 v 198.12 c 28.93,14.77 48.47,42.83 48.47,75.01 v 51.66 c 0,10 -9,18.09 -20.12,18.09\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path256\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1659.73,3007.86 c 40.47,22.52 55.09,73.53 32.57,114.02 -22.46,40.45 -73.48,55.02 -113.9,32.56 -40.54,-22.5 -55.15,-73.51 -32.62,-113.94 22.45,-40.52 73.48,-55.07 113.95,-32.64\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path258\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1840.83,2780.39 -131.52,183.06 c -0.88,1.48 -1.9,2.9 -3.06,4.26 l -0.81,1.13 c -7.28,10.15 -19.65,14.93 -32.9,14.11 -1.08,0.05 -2.16,0.09 -3.26,0.09 H 1568.8 c -1.1,0 -2.19,-0.04 -3.27,-0.09 -13.24,0.82 -25.62,-3.96 -32.91,-14.11 l -0.82,-1.14 c -1.14,-1.35 -2.16,-2.77 -3.04,-4.24 l -131.51,-183.07 c -12.43,-17.28 -5.38,-43.65 15.74,-58.79 21.05,-15.15 48.31,-13.4 60.65,3.89 l 51.18,71.22 v -113.93 -9.1 -200.19 c 0,-24.67 18.59,-44.64 41.51,-44.64 22.91,0 41.5,19.97 41.5,44.64 v 166.82 h 22.42 v -166.82 c 0,-24.67 18.58,-44.64 41.48,-44.64 22.93,0 41.52,19.97 41.52,44.64 v 200.19 9.1 113.96 l 51.18,-71.25 c 12.36,-17.29 39.59,-19.04 60.73,-3.89 21.04,15.14 28.07,41.51 15.67,58.79\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path260\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1059.67,3010.82 c 40.48,22.51 55.08,73.53 32.58,114.01 -22.47,40.44 -73.49,55.03 -113.926,32.56 -40.511,-22.49 -55.121,-73.5 -32.617,-113.93 22.469,-40.53 73.483,-55.09 113.963,-32.64\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path262\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1235.04,2783.33 -135.37,188.45 c -7.74,10.78 -21.21,15.51 -35.36,13.89 -1.58,0.21 -3.19,0.33 -4.81,0.33 h -81.043 c -1.637,0 -3.242,-0.12 -4.82,-0.33 -14.16,1.62 -27.617,-3.11 -35.352,-13.89 L 802.906,2783.33 c -12.41,-17.28 -5.367,-43.63 15.742,-58.78 21.055,-15.16 48.329,-13.4 60.668,3.88 l 63.692,88.63 V 2781 l -50.61,-137.74 h 48.5 V 2473.5 c 0,-24.68 16.118,-44.65 36.008,-44.65 19.875,0 36.014,19.97 36.014,44.65 v 169.76 h 1.12 9.87 1.11 V 2473.5 c 0,-24.68 16.14,-44.65 36.03,-44.65 19.88,0 36.01,19.97 36.01,44.65 v 169.76 h 48.49 L 1094.94,2781 v 36.1 l 63.69,-88.67 c 12.37,-17.28 39.62,-19.04 60.74,-3.88 21.05,15.15 28.07,41.5 15.67,58.78\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path264\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4416.76,4650.29 c -41.58,23.13 -56.6,75.57 -33.48,117.16 23.11,41.57 75.53,56.57 117.07,33.48 41.66,-23.12 56.68,-75.55 33.54,-117.09 -23.09,-41.65 -75.53,-56.61 -117.13,-33.55\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path266\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4184.12,4446.26 109.08,54.56 63.79,102.33 c 9.68,15.52 27.1,23.25 44.12,21.33 1.92,0.19 3.87,0.29 5.84,0.29 h 103.27 c 0.79,0 1.58,-0.02 2.35,-0.04 16.93,0.66 32.23,-6.78 38.93,-20.34 1.13,-1.93 2.04,-3.93 2.68,-6.01 l 93.12,-214.18 c 8.73,-20.06 -4.06,-45 -28.58,-55.64 -24.43,-10.65 -51.43,-2.96 -60.08,17.08 l -3.24,7.43 v -24.85 l 48.42,-226.03 c 4.59,-21.42 -12.85,-43.32 -38.95,-48.91 -26.08,-5.6 -50.96,7.2 -55.56,28.61 l -40.86,190.66 h -19.71 l -40.85,-190.66 c -4.54,-21.41 -29.43,-34.21 -55.56,-28.61 -26.19,5.59 -43.57,27.49 -38.98,48.91 l 48.42,225.89 v 109.67 c -4.24,-5.54 -9.67,-10.08 -15.94,-13.21 l -120.66,-60.36 c -6.61,-3.3 -13.6,-4.86 -20.5,-4.86 -16.82,0 -33.05,9.29 -41.07,25.38 -11.36,22.66 -2.16,50.22 20.52,61.56\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path268\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3898.07,4229.23 c 0,0 0.39,-28.44 17.31,-47.4 0,0 18.14,-15.25 25.15,-37.92 0,0 17.3,-47.41 16.88,-54.82 0,0 1.67,-12.78 -4.95,-17.32 0,0 -13.17,-11.95 -3.29,-17.31 4.27,-2.3 16.89,-3.6 21.13,-1.28 5.75,3.14 7.21,14.5 9.06,20.29 2,6.28 5.31,15.24 2.79,21.8 0,0 -7,22.67 -7,34.62 0,0 2.06,13.2 -2.08,22.68 0,0 -2.87,8.24 -2.04,16.49 20.31,-1.99 44.31,-1.83 62.81,7.44 18.12,9.06 42.68,22.44 60.01,3.67 0,0 30.1,-32.56 37.92,-45.33 0,0 8.24,-7.83 12.37,-11.13 0,0 8.65,-14.43 8.24,-30.5 0,0 2.9,-12.37 0,-17.72 l -1.65,-9.07 c 0,0 -5.64,-14.02 2.96,-14.02 h 14.76 c 0,0 7.02,3.71 8.25,14.02 0,0 1.24,24.32 -2.07,37.1 0,0 -1.64,7.82 -0.81,13.18 0,0 0,7.83 -9.89,18.14 0,0 -18.15,25.14 -18.55,54.81 0,0 4.52,40.41 -9.07,58.12 l -1.64,3.72 c 0.32,-0.73 18.02,13.26 19.4,14.67 7.98,8.1 14.55,17.99 16.59,29.35 4.96,27.54 -13.24,64.72 -43.64,67.59 -11.49,1.08 -26.76,-3.57 -34.37,-12.47 -6.28,-7.36 -7.15,-18.05 -5.66,-27.27 0.64,-4.06 1.86,-8 3.27,-11.86 1.27,-3.4 5.73,-9.54 5.65,-13.02 0,0 0.83,39.57 25.14,31.33 0,0 34.22,-17.31 15.67,-45.75 0,0 -7.42,-13.2 -14,-18.97 0,0 -37.12,8.66 -61.43,-2.06 0,0 -55.65,-21.44 -91.91,0.81 -6.57,3.42 -12.92,7.45 -18.93,11.76 -8.48,6.08 -15.44,13.81 -22.37,21.54 -6.24,6.96 -13.85,13.86 -17.23,22.77 0,0 4.53,23.91 -9.89,48.23 0,0 -1.66,-22.68 -6.6,-30.92 0,0 -30.5,-7.41 -39.16,-19.37 l -24.33,-1.64 c 0,0 -16.9,0.82 -9.88,-12.38 0,0 8.24,-11.53 9.07,-16.06 0,0 2.05,-8.25 10.71,-9.49 0,0 32.98,0.42 39.97,-16.49 0,0 11.15,-9.9 14.85,-19.77 0,0 1.55,-3.51 2.48,-12.79\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path270\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3925.74,4303.51 228.5,83.95 -2.74,7.43 -228.49,-83.96 2.73,-7.42\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path272\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2349.43,3832.2 c 41.46,23.07 56.43,75.34 33.37,116.8 -23.02,41.44 -75.28,56.38 -116.7,33.36 -41.51,-23.04 -56.49,-75.31 -33.41,-116.72 23.01,-41.51 75.27,-56.43 116.74,-33.44\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path274\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2586.11,3622 -78.81,36.78 -110.19,131.6 c -9.68,11.55 -23.82,17.12 -37.8,16.29 -0.97,0.06 -1.98,0.09 -2.97,0.09 h -102.95 c -3.1,0 -6.12,-0.24 -9.05,-0.69 -21.67,3.8 -43.53,-8.54 -51.01,-30 l -79.61,-228.03 c -8.32,-23.85 4.26,-49.94 28.13,-58.26 4.99,-1.74 10.07,-2.57 15.07,-2.57 18.92,0 36.61,11.82 43.19,30.69 l 8.24,23.61 v -25.83 -25.84 -227.21 c 0,-14.85 20.47,-26.87 45.72,-26.87 25.24,0 45.73,12.02 45.73,26.87 v 193.02 h 10.13 v -193.02 c 0,-14.85 20.49,-26.87 45.72,-26.87 25.22,0 45.73,12.02 45.73,26.87 v 227.21 25.84 127.09 l 42.27,-50.5 c 4.33,-5.13 9.67,-9.26 15.76,-12.09 l 88.02,-41.08 c 6.27,-2.92 12.85,-4.3 19.3,-4.3 17.24,0 33.72,9.77 41.49,26.41 10.69,22.89 0.78,50.11 -22.11,60.79\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path276\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2604.89,3492.69 h -111.5 l 36.16,-256.93 h 133.03 l 36.19,256.93 h -93.88\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path278\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2545.05,3253.07 h 102.03 l 6.68,49.88 h -115.38 l 6.67,-49.88\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path280\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3035.96,1419.38 c 42.95,23.89 58.43,78.03 34.55,120.98 -23.83,42.93 -77.97,58.4 -120.88,34.56 -43.01,-23.87 -58.51,-78.01 -34.61,-120.9 23.84,-43 77.98,-58.45 120.94,-34.64\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path282\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3165.5,1126.36 -76.97,250.55 c -3.51,11.43 -18.79,17.4 -37.13,15.89 -1.76,0.14 -3.53,0.23 -5.32,0.23 h -106.64 c -2.88,0 -5.67,-0.21 -8.39,-0.59 -9.84,1.68 -18.39,-0.23 -23.35,-6.12 l -168.56,-200.74 c -9.89,-11.77 -1.64,-34.96 18.37,-51.76 20,-16.79 44.28,-20.93 54.18,-9.14 l 81.1,96.59 V 1091.5 1064.75 829.391 c 0,-15.379 21.21,-27.84 47.37,-27.84 26.13,0 47.36,12.461 47.36,27.84 v 199.939 h 10.5 V 829.391 c 0,-15.379 21.23,-27.84 47.35,-27.84 26.11,0 47.36,12.461 47.36,27.84 v 235.359 19.37 c 9.87,-2.66 22.62,-2.29 35.68,1.73 24.94,7.66 41.59,25.79 37.09,40.51\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path284\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2598.68,1163.96 c 25.21,14 34.29,45.77 20.28,70.96 -13.98,25.18 -45.74,34.25 -70.9,20.27 -25.23,-14 -34.32,-45.77 -20.31,-70.93 13.98,-25.21 45.74,-34.28 70.93,-20.3\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path286\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2755.7,1171.21 c -4.58,13.17 -14.57,21.71 -22.33,19.02 l -122.09,-42.37 c -2.13,0.41 -4.36,0.63 -6.64,0.63 h -62.56 c -2.01,0 -3.95,-0.16 -5.85,-0.47 -7.14,1.34 -13.32,-0.12 -16.07,-4.47 l -74.62,-118.34 c -4.37,-6.92 1.68,-18.61 13.47,-26.05 11.79,-7.43 24.93,-7.851 29.3,-0.93 l 26.41,41.9 v -19.59 0 l -24.89,-85.509 h 24.89 v -117.16 c 0,-9 12.44,-16.32 27.77,-16.32 15.32,0 27.78,7.32 27.78,16.32 v 117.16 h 6.17 v 0 -117.16 c 0,-9 12.45,-16.32 27.78,-16.32 15.31,0 27.78,7.32 27.78,16.32 v 117.16 h 24.88 L 2632,1020.54 v 0 80.99 l 117.94,40.93 c 7.77,2.71 10.33,15.59 5.76,28.75\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path288\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2625.32,1299.29 -41.23,-23.81 c -1.56,4.42 -5.78,7.6 -10.73,7.6 -4.96,0 -9.17,-3.18 -10.74,-7.6 l -41.21,23.81 v -55.2 l 41.21,23.81 c 1.57,-4.43 5.78,-7.61 10.74,-7.61 4.95,0 9.17,3.18 10.73,7.61 l 41.23,-23.81 v 55.2\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path296\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3156.11,3809.17 c 39.86,22.17 54.25,72.42 32.08,112.29 -22.13,39.83 -72.39,54.19 -112.2,32.08 -39.91,-22.16 -54.3,-72.41 -32.11,-112.22 22.13,-39.92 72.36,-54.25 112.23,-32.15\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path298\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3402.39,3760.4 c -14.71,16.46 -39.99,17.88 -56.44,3.17 l -63.21,-56.48 -85.5,68.25 c -6.77,5.41 -14.77,8.25 -22.82,8.67 -2.87,0.46 -5.86,0.71 -8.9,0.71 h -98.98 c -3.06,0 -6.05,-0.25 -8.92,-0.71 -8.04,-0.42 -16.04,-3.26 -22.82,-8.67 l -85.48,-68.25 -63.22,56.48 c -16.45,14.71 -41.72,13.29 -56.43,-3.17 -14.72,-16.46 -13.3,-41.74 3.15,-56.45 l 88.4,-78.99 c 7.58,-6.76 17.09,-10.17 26.64,-10.17 8.81,0 17.63,2.9 24.94,8.74 l 50.44,40.26 v -158.92 -24.85 -218.43 c 0,-14.27 19.69,-25.83 43.97,-25.83 24.25,0 43.95,11.56 43.95,25.83 v 185.57 h 9.74 v -185.57 c 0,-14.27 19.7,-25.83 43.94,-25.83 24.25,0 43.97,11.56 43.97,25.83 v 218.43 24.85 158.92 l 50.44,-40.26 c 7.31,-5.84 16.13,-8.74 24.94,-8.74 9.55,0 19.08,3.41 26.64,10.17 l 88.38,78.99 c 16.47,14.71 17.89,39.99 3.18,56.45\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path300\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3125.22,3749.64 8.23,17.46 -7.89,5.19 h -18.69 l -8.24,-5.19 8.22,-17.46 -8.72,-87.87 17.88,-35.2 v 0.23 l 0.05,-0.23 17.87,35.2 -8.71,87.87\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path302\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 717.844,459.141 h -84.168 c -8.449,0 -15.309,-6.86 -15.309,-15.321 v -1.851 c 0.051,-0.328 0.141,-0.598 0.172,-0.93 l 19.25,-137.07 c 2.367,-16.86 -5.687,-26.059 -19.422,-25.43 V 0.0117188 H 733.148 V 443.82 c 0,8.461 -6.855,15.321 -15.304,15.321\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path304\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 478.598,224.48 V 0.0117188 H 593.379 V 287.398 l -23.715,13 c -10.98,-16.039 -43.238,-57.937 -91.066,-75.918\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path306\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 342.559,248.539 c -2.317,-2.668 -3.719,-6.148 -3.719,-9.969 V 0.0117188 H 453.617 V 217.75 c -32.054,-5.281 -69.492,1.289 -111.058,30.789\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path308\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 623.168,318.879 605.309,446.18 c -3.184,22.66 -22.809,33.41 -43.61,23.902 L 444.762,416.691 c -20.801,-9.511 -18.196,-28.043 5.781,-41.179 l 19.84,-10.871 c -1.906,-91.09 -124.899,-94.77 -124.899,-94.77 114.594,-84.652 196.153,19.027 214.414,45.699 l 25.457,-13.968 c 23.969,-13.141 41.004,-5.364 37.813,17.277\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path310\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 215.969,584.852 c 40.664,22.609 55.34,73.878 32.719,114.527 -22.571,40.633 -73.817,55.293 -114.426,32.73 C 93.5547,709.512 78.8789,658.25 101.5,617.648 c 22.563,-40.699 73.809,-55.347 114.469,-32.796\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path312\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 505.051,619.738 c -9.469,22.883 -35.699,33.774 -58.59,24.293 L 239.234,558.262 c -4.3,1.078 -8.89,1.668 -13.668,1.668 H 124.617 c -4.058,0 -7.992,-0.438 -11.73,-1.219 C 94.9141,557.43 78.7305,545.332 73.1563,527.059 L 1.96875,293.898 c -7.23828,-23.699 6.10938,-48.757 29.80075,-56.007 4.3594,-1.34 8.7774,-1.95 13.1094,-1.95 13.9649,0 27.1328,6.579 35.582,17.598 V 249.148 26.3711 c 0,-14.5703 20.0701,-26.3593812 44.8321,-26.3593812 24.73,0 44.84,11.7890812 44.84,26.3593812 V 215.629 h 9.922 V 26.3711 c 0,-14.5703 20.101,-26.3593812 44.84,-26.3593812 24.714,0 44.832,11.7890812 44.832,26.3593812 V 249.148 274.48 473.801 l 211.039,87.328 c 22.886,9.48 33.761,35.723 24.285,58.609\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path314\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 184.457,534.219 8.406,17.812 -8.062,5.301 h -19.059 l -8.387,-5.301 8.372,-17.812 -8.887,-89.617 18.23,-35.903 v 0.242 l 0.051,-0.242 18.223,35.903 -8.887,89.617\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path316\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4762.58,1828.45 h -453.5 v -43.81 h 24.47 V 1755 c 0,-17.07 13.83,-30.92 30.93,-30.92 17.06,0 30.92,13.85 30.92,30.92 v 29.64 h 280.87 V 1755 c 0,-17.07 13.85,-30.92 30.92,-30.92 17.08,0 30.93,13.85 30.93,30.92 v 29.64 h 24.46 v 43.81\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path318\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4736.66,1942.44 -45.14,125.89 c 0,0 -57.01,19 -154.4,19 -97.42,0 -154.41,-19 -154.41,-19 l -45.13,-125.89 -28.5,-21.39 v -85.52 h 228.04 228.04 v 85.52 l -28.5,21.39\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path320\\\"],[10,\\\"style\\\",\\\"fill:#adadab;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4406.16,1884.82 c 0,-16.73 -13.54,-30.28 -30.28,-30.28 v 0 c -16.74,0 -30.29,13.55 -30.29,30.28 v 0 c 0,16.73 13.55,30.3 30.29,30.3 v 0 c 16.74,0 30.28,-13.57 30.28,-30.3 v 0\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path322\\\"],[10,\\\"style\\\",\\\"fill:#adadab;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4728.63,1884.82 c 0,-16.73 -13.56,-30.28 -30.27,-30.28 v 0 c -16.74,0 -30.3,13.55 -30.3,30.28 v 0 c 0,16.73 13.56,30.3 30.3,30.3 v 0 c 16.71,0 30.27,-13.57 30.27,-30.3 v 0\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path324\\\"],[10,\\\"style\\\",\\\"fill:#adadab;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4647.57,2061.22 c 0,0 -33.84,8.9 -110.45,8.9 -76.61,0 -110.47,-8.9 -110.47,-8.9 l -40.98,-99.78 c 69.5,12.48 151.45,14.24 151.45,14.24 0,0 81.95,-1.76 151.43,-14.24 l -40.98,99.78\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path326\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4777.7,1992.6 h -13.53 c -11.72,0 -21.25,-9.51 -21.25,-21.27 0,-0.64 0.13,-1.29 0.19,-1.94 l -22.37,-6.51 2.71,-9.29 22.7,6.62 c 3.74,-6.06 10.39,-10.12 18.02,-10.12 h 13.53 c 11.75,0 21.27,9.51 21.27,21.24 0,11.76 -9.52,21.27 -21.27,21.27\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path328\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4296.52,1992.6 h 13.55 c 11.72,0 21.24,-9.51 21.24,-21.27 0,-0.64 -0.13,-1.29 -0.19,-1.94 l 22.38,-6.51 -2.72,-9.29 -22.69,6.62 c -3.74,-6.06 -10.39,-10.12 -18.02,-10.12 h -13.55 c -11.73,0 -21.25,9.51 -21.25,21.24 0,11.76 9.52,21.27 21.25,21.27\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path330\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4128.27,2238.54 c 42.68,23.73 58.09,77.53 34.35,120.22 -23.68,42.65 -77.49,58.03 -120.12,34.34 -42.73,-23.73 -58.15,-77.52 -34.4,-120.15 23.7,-42.74 77.5,-58.09 120.17,-34.41\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path332\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4452.33,2222 c -12.63,22.75 -41.3,30.93 -64.03,18.28 l -106.56,-59.2 -125.33,28.49 c -5.56,1.79 -11.67,2.75 -18.09,2.75 h -105.95 c -1.4,0 -2.78,-0.03 -4.18,-0.12 -19.5,1.47 -38.67,-9.37 -46.82,-28.34 l -100.08,-232.54 c -10.26,-23.9 0.76,-51.6 24.64,-61.88 6.07,-2.58 12.39,-3.83 18.6,-3.83 18.24,0 35.61,10.66 43.27,28.47 l 18.23,42.35 v -43.71 -26.58 -233.87 c 0,-15.28 21.07,-27.66 47.06,-27.66 25.95,0 47.07,12.38 47.07,27.66 v 198.69 h 10.42 v -198.69 c 0,-15.28 21.1,-27.66 47.05,-27.66 25.94,0 47.07,12.38 47.07,27.66 v 233.87 26.58 193.85 l 93.72,-21.3 c 3.47,-0.79 6.95,-1.16 10.45,-1.16 7.94,0 15.83,1.99 22.85,5.93 l 122.32,67.93 c 22.72,12.64 30.91,41.3 18.29,64.03\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path334\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3878.03,1887.31 c 2.2,8.33 9.88,13.54 17.17,11.62 l 21.12,-5.55 c 7.28,-1.92 11.4,-10.25 9.2,-18.59 v 0 l 6.37,-1.67 v 0 c 3.02,11.42 -2.05,22.64 -11.27,25.06 l -26.77,7.05 c -9.25,2.46 -19.17,-4.83 -22.19,-16.25 0,0 0,0 0,-0.02 l 6.37,-1.66 c 0,0.01 0,0.01 0,0.01\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path336\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3963.17,1861.66 -15.56,4.11 -12.72,3.35 -66.77,17.57 -12.71,3.37 -15.57,4.1 c -14.96,3.93 -30.24,-4.99 -34.18,-19.92 l -14.59,-55.44 -4.67,-17.69 c -3.92,-14.93 4.99,-30.24 19.94,-34.16 l 15.56,-4.1 12.73,-3.34 66.78,-17.59 12.7,-3.37 15.58,-4.07 c 0.36,-0.11 0.71,-0.18 1.05,-0.27 0.06,0 0.12,-0.02 0.18,-0.03 0.35,-0.08 0.69,-0.14 1.04,-0.22 0.04,0 0.06,0 0.1,0 14.15,-2.46 28.06,6.28 31.77,20.44 l 19.27,73.11 c 3.94,14.92 -4.99,30.21 -19.93,34.15\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path338\\\"],[10,\\\"style\\\",\\\"fill:#adadab;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2224.9,2474.09 c 30.75,0 59.77,-7.52 85.29,-20.79 l -85.29,-164.26 149.01,-109.74 c -33.7,-45.69 -87.91,-75.31 -149.01,-75.31 -102.2,0 -185.05,82.86 -185.05,185.05 0,102.2 82.85,185.05 185.05,185.05\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path340\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2412.04,2255.77 c -4.69,-26.24 -15.36,-50.4 -30.57,-71.01 l -137.42,101.2 167.99,-30.19\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path342\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2321.56,2459.47 c 59.27,-30.84 99.75,-92.82 99.75,-164.25 0,-11.17 -0.99,-22.11 -2.87,-32.73 l -182.18,32.73 85.3,164.25\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path344\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1774.17,2240.28 c -40.21,22.36 -54.74,73.07 -32.36,113.27 22.32,40.21 73.01,54.68 113.18,32.37 40.26,-22.36 54.78,-73.04 32.4,-113.21 -22.32,-40.27 -73,-54.72 -113.22,-32.43\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path346\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1601.67,2016.02 115.54,179.25 c 9.41,14.58 25.91,21.81 42.05,20.08 1.78,0.16 3.58,0.26 5.42,0.26 h 99.85 c 3.17,0 6.26,-0.27 9.24,-0.76 2.92,0.35 5.93,0.4 8.97,0.15 l 109.65,-9.32 104.23,72.65 c 20.11,14.01 47.76,9.07 61.77,-11.04 14.01,-20.09 9.08,-47.75 -11.03,-61.76 l -117.38,-81.82 c -7.47,-5.19 -16.33,-7.96 -25.37,-7.96 -1.25,0 -2.51,0.05 -3.76,0.16 l -92.64,7.87 v -204.73 l 25.2,-245.01 c 2.51,-24.38 -15.22,-46.17 -39.6,-48.68 -2.39,-0.25 -4.78,-0.29 -7.11,-0.15 -21.37,1.21 -39.3,17.77 -41.56,39.75 l -21.61,210.12 h -16.61 l -16.6,-209.6 c -1.94,-24.44 -23.31,-42.67 -47.74,-40.72 -2.41,0.18 -4.75,0.56 -7.02,1.11 -20.81,5.06 -35.45,24.6 -33.7,46.61 l 19.14,241.55 v 123.32 l -44.74,-69.41 c -8.5,-13.16 -22.77,-20.33 -37.34,-20.33 -8.24,0 -16.57,2.28 -23.99,7.08 -20.6,13.28 -26.53,40.73 -13.26,61.33\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path348\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1805.33,2185.88 -8.3,17.61 7.97,5.24 h 18.85 l 8.3,-5.24 -8.29,-17.61 8.8,-88.64 -18.04,-35.51 v 0.22 l -0.04,-0.22 -18.03,35.51 8.78,88.64\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path350\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4303.55,2514.65 -101.92,-29.67 -67.42,20.51 -62.34,-76.64 290.8,0.13 -67.44,24.66 85.26,24.82 c -39.36,6.31 -68.77,19.82 -76.94,36.19\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path352\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4789.49,2428.85 -62.32,76.64 -67.42,-20.51 -101.93,29.67 c -8.15,-16.37 -37.58,-29.88 -76.93,-36.19 l 85.25,-24.82 -67.43,-24.66 290.78,-0.13\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path354\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4350.94,2691.65 h -132.52 l -25.85,39.13 c 0,-0.16 -0.02,-0.34 -0.02,-0.5 v -87.63 c 0,-12.96 10.51,-23.48 23.47,-23.48 h 137.32 c 12.97,0 23.48,10.52 23.48,23.48 v 87.63 c 0,0.16 -0.02,0.34 -0.02,0.5 l -25.86,-39.13\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path356\\\"],[10,\\\"style\\\",\\\"fill:#c9c7c5;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4345.85,2700.96 h -122.32 l -27.48,41.58 c -2.12,-3.43 -3.4,-7.45 -3.48,-11.76 l 25.85,-39.13 h 66.27 66.25 l 25.86,39.13 c -0.09,4.31 -1.37,8.33 -3.47,11.76 l -27.48,-41.58\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path358\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4284.69,2700.96 h 61.16 l 27.48,41.58 c -4.13,6.72 -11.5,11.22 -19.99,11.22 h -137.32 c -8.47,0 -15.85,-4.5 -19.97,-11.22 l 27.48,-41.58 h 61.16\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path360\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4274.46,2775.5 h 20.46 c 9.33,0 16.86,-7.35 17.33,-16.56 h 9.7 v 5.16 c 0,12.97 -10.5,23.48 -23.47,23.48 h -27.59 c -12.96,0 -23.47,-10.51 -23.47,-23.48 v -5.16 h 9.7 c 0.45,9.21 8.01,16.56 17.34,16.56\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path362\\\"],[10,\\\"style\\\",\\\"fill:#c9c7c5;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4265.54,2673.56 c 0,-10.57 8.57,-19.14 19.15,-19.14 10.56,0 19.14,8.57 19.14,19.14 v 13.31 h -38.29 v -13.31\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path364\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4290.52,2666.11 h -11.68 v 16.2 h 11.68 v -16.2\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path366\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4468.33,3048.25 c 37.03,20.6 50.4,67.29 29.81,104.33 -20.57,37.01 -67.25,50.36 -104.23,29.8 -37.09,-20.58 -50.47,-67.26 -29.87,-104.26 20.56,-37.08 67.26,-50.4 104.29,-29.87\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path368\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 4607.03,2816.85 4531,3000.3 c -6.13,14.77 -19.92,24.05 -34.83,25.12 -3.46,0.25 -126.07,0.17 -129.03,0.09 -15.67,-0.38 -30.37,-9.81 -36.76,-25.21 l -76.03,-183.45 c -8.64,-20.86 1.26,-44.76 22.12,-53.4 5.1,-2.12 10.4,-3.12 15.6,-3.12 16.04,0 31.26,9.49 37.77,25.22 l 15.03,36.29 v -73.91 c 0,-0.22 -0.01,-0.43 -0.01,-0.66 v -210.98 c 0,-22.55 18.29,-40.85 40.86,-40.85 22.58,0 40.87,18.3 40.87,40.85 v 175.62 h 8.99 v -175.62 c 0,-22.55 18.3,-40.85 40.86,-40.85 22.56,0 40.86,18.3 40.86,40.85 v 206.15 4.83 72.63 l 14.23,-34.35 c 6.52,-15.73 21.74,-25.22 37.76,-25.22 5.22,0 10.51,1 15.64,3.12 20.83,8.64 30.73,32.54 22.1,53.4\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path370\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4441.04,2997.05 8.89,18.89 -8.53,5.63 h -20.23 l -8.89,-5.63 8.89,-18.89 -9.45,-95.06 19.34,-38.08 v 0.24 l 0.05,-0.24 19.36,38.08 -9.43,95.06\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path372\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 991.543,3822.62 c 38.997,21.68 53.077,70.85 31.377,109.86 -21.65,38.98 -70.807,53.03 -109.764,31.39 -39.054,-21.68 -53.144,-70.85 -31.437,-109.8 21.644,-39.05 70.804,-53.09 109.824,-31.45\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path374\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1043.11,3500.56 c 0,-17.77 -18.97,-32.17 -42.37,-32.17 h -96.838 c -23.394,0 -42.359,14.4 -42.359,32.17 v 265.96 c 0,17.77 18.965,32.16 42.359,32.16 h 96.838 c 23.4,0 42.37,-14.39 42.37,-32.16 v -265.96\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path376\\\"],[10,\\\"style\\\",\\\"fill:#adadab;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 1006.03,3588.59 H 898.609 c -118.968,-54.67 -140.937,-274.23 -140.937,-274.23 -3.32,-69.87 194.652,-78.6 194.652,-78.6 0,0 197.966,8.73 194.646,78.6 0,0 -21.97,219.56 -140.94,274.23\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path378\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 962.797,3365.67 v 32.04 c 7,-4.54 10.051,-9.53 10.051,-16.23 0,-6.91 -3.489,-12.39 -10.051,-15.81 z m -28.828,98.64 c 0,6.85 4.816,13.23 14.648,16.03 v -33.73 c -10.121,5.05 -14.648,9.92 -14.648,17.7 z m 80.681,-79.88 c 0,25.64 -14.826,42.37 -46.947,54.25 -1.711,0.65 -3.328,1.26 -4.906,1.86 v 41.23 c 16.336,-0.45 28.719,-5.21 35.391,-8.55 l 9.202,32.93 c -10.476,4.96 -24.796,8.89 -44.593,9.11 v 19.18 h -14.18 v -19.89 c -35.25,-4.11 -56.472,-25.85 -56.472,-53.74 0,-26.44 19.964,-43.18 50.195,-53.96 2.238,-0.78 4.301,-1.54 6.277,-2.3 v -42.52 c -1.523,-0.12 -3.012,-0.25 -4.652,-0.25 -17.547,0 -34.813,5.65 -45.606,11.34 l -8.379,-33.74 c 10.274,-5.66 30.774,-11.34 51.551,-11.34 2.446,0 4.762,0.11 7.086,0.24 v -15.66 h 14.18 v 17.28 c 35.226,6.37 51.853,28.77 51.853,54.53\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path380\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 858.031,3488.48 c -12.093,0 -24.101,5.07 -32.609,14.94 l -87.281,101.24 c -14.918,17.32 -13.696,43.29 2.793,59.13 l 127.933,122.9 c 17.145,16.46 44.391,15.91 60.852,-1.24 16.457,-17.14 15.906,-44.38 -1.239,-60.84 l -98.531,-94.64 60.656,-70.37 c 15.512,-17.99 13.497,-45.16 -4.507,-60.68 -8.125,-7.02 -18.114,-10.43 -28.067,-10.44\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path382\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1046.6,3488.48 c 12.08,0 24.1,5.07 32.61,14.94 l 87.27,101.24 c 14.92,17.32 13.71,43.29 -2.78,59.13 l -127.94,122.9 c -17.15,16.46 -44.373,15.91 -60.854,-1.24 -16.461,-17.14 -15.906,-44.38 1.239,-60.84 l 98.525,-94.64 -60.64,-70.37 c -15.518,-17.99 -13.51,-45.16 4.5,-60.68 8.12,-7.02 18.13,-10.43 28.07,-10.44\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path384\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 961.313,3768.73 8.05,17.08 -7.73,5.09 h -18.281 l -8.047,-5.09 8.031,-17.08 -8.531,-85.98 17.492,-34.44 v 0.23 l 0.047,-0.23 17.484,34.44 -8.515,85.98\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path386\\\"],[10,\\\"style\\\",\\\"fill:#adadab;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 988.789,3595.57 h -81.594 l -65.675,105.47 h 73.636 l 33.828,-39.8 1.989,39.8 h 65.687 l -19.906,-52.73 47.756,52.73 39.81,-33.83 -95.531,-71.64\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path388\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 972.738,1396.48 c 41.372,23.02 56.292,75.15 33.292,116.52 -22.96,41.34 -75.092,56.23 -116.413,33.27 -41.402,-22.98 -56.336,-75.11 -33.324,-116.42 22.949,-41.41 75.094,-56.3 116.445,-33.37\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path390\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1228.28,1345.89 c -15.27,17.08 -41.5,18.55 -58.57,3.29 l -65.58,-58.59 -88.7,70.81 c -7.03,5.6 -15.33,8.55 -23.676,8.99 -2.981,0.48 -6.078,0.72 -9.25,0.72 H 879.809 c -3.164,0 -6.27,-0.24 -9.258,-0.72 -8.344,-0.44 -16.621,-3.39 -23.653,-8.99 l -88.71,-70.81 -65.571,58.59 c -17.082,15.26 -43.304,13.79 -58.578,-3.29 -15.262,-17.08 -13.797,-43.31 3.301,-58.58 l 91.703,-81.94 c 7.852,-7.02 17.738,-10.55 27.633,-10.55 9.144,0 18.289,3 25.879,9.07 l 52.332,41.76 v -164.9 -25.77 -226.609 c 0,-14.812 20.422,-26.82 45.609,-26.82 25.164,0 45.617,12.008 45.617,26.82 v 192.519 h 10.102 V 828.371 c 0,-14.812 20.441,-26.82 45.601,-26.82 25.154,0 45.614,12.008 45.614,26.82 v 226.609 25.77 164.9 l 52.34,-41.76 c 7.58,-6.07 16.72,-9.07 25.86,-9.07 9.91,0 19.8,3.53 27.65,10.55 l 91.7,81.94 c 17.09,15.27 18.56,41.5 3.3,58.58\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path392\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 940.695,1334.73 8.539,18.11 -8.199,5.39 h -19.383 l -8.539,-5.39 8.524,-18.11 -9.047,-91.17 18.558,-36.52 v 0.24 l 0.043,-0.24 18.536,36.52 -9.032,91.17\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path394\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2085.39,1442 c -57.27,16.64 -118.11,16.64 -175.38,0 13.1,-45.1 26.22,-90.19 39.32,-135.32 8.68,2.53 17.49,4.33 26.39,5.46 v -15.91 c 0,-7.54 3.81,-14.22 9.63,-18.17 V 801.559 h 24.72 v 476.501 c 5.8,3.95 9.62,10.63 9.62,18.17 v 15.91 c 8.89,-1.13 17.72,-2.93 26.39,-5.46 13.12,45.13 26.22,90.22 39.31,135.32\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path396\\\"],[10,\\\"style\\\",\\\"fill:#adabaa;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1957.95,1324.27 c 0.42,-1.49 0.01,-2.9 -0.9,-3.14 v 0 c -0.91,-0.26 -1.97,0.73 -2.39,2.21 l -30.75,109.32 c -0.42,1.48 -0.01,2.87 0.9,3.13 v 0 c 0.9,0.26 1.97,-0.72 2.39,-2.21 l 30.75,-109.31\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path398\\\"],[10,\\\"style\\\",\\\"fill:#adabaa;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1972.01,1327.68 c 0.25,-1.53 -0.32,-2.88 -1.25,-3.02 v 0 c -0.93,-0.16 -1.88,0.96 -2.13,2.48 l -17.91,112.14 c -0.24,1.52 0.33,2.87 1.27,3.01 v 0 c 0.93,0.15 1.88,-0.95 2.12,-2.47 l 17.9,-112.14\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path400\\\"],[10,\\\"style\\\",\\\"fill:#adabaa;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1986.62,1328.27 c 0.15,-1.53 -0.51,-2.84 -1.45,-2.93 v 0 c -0.93,-0.09 -1.83,1.08 -1.96,2.61 L 1972.46,1441 c -0.15,1.52 0.51,2.83 1.44,2.94 v 0 c 0.94,0.08 1.82,-1.1 1.97,-2.62 l 10.75,-113.05\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path402\\\"],[10,\\\"style\\\",\\\"fill:#adabaa;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2038.77,1325.22 c -0.43,-1.46 -0.03,-2.87 0.89,-3.13 v 0 c 0.91,-0.26 1.97,0.72 2.41,2.21 l 30.73,109.33 c 0.43,1.47 0.03,2.88 -0.89,3.15 v 0 c -0.91,0.23 -1.97,-0.75 -2.41,-2.24 l -30.73,-109.32\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path404\\\"],[10,\\\"style\\\",\\\"fill:#adabaa;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2024.7,1328.65 c -0.25,-1.52 0.31,-2.88 1.24,-3.02 v 0 c 0.94,-0.14 1.91,0.96 2.14,2.47 l 17.9,112.14 c 0.25,1.53 -0.32,2.87 -1.26,3.01 v 0 c -0.93,0.18 -1.89,-0.95 -2.12,-2.47 l -17.9,-112.13\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path406\\\"],[10,\\\"style\\\",\\\"fill:#adabaa;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2010.08,1329.23 c -0.12,-1.51 0.51,-2.83 1.45,-2.93 v 0 c 0.94,-0.09 1.83,1.08 1.97,2.61 l 10.75,113.06 c 0.14,1.52 -0.49,2.84 -1.44,2.93 v 0 c -0.94,0.09 -1.81,-1.07 -1.96,-2.61 l -10.77,-113.06\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path408\\\"],[10,\\\"style\\\",\\\"fill:#adabaa;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1999.94,1329.56 c 0,-1.53 -0.74,-2.79 -1.68,-2.79 v 0 c -0.95,0 -1.71,1.23 -1.74,2.76 l -1.03,113.56 c -0.03,1.52 0.74,2.79 1.68,2.8 v 0 c 0.93,0 1.71,-1.23 1.73,-2.76 l 1.04,-113.57\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path410\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2284.02,1397.6 c 41.41,23.04 56.37,75.28 33.34,116.72 -22.99,41.41 -75.23,56.32 -116.63,33.35 -41.5,-23.05 -56.43,-75.27 -33.4,-116.66 23,-41.49 75.23,-56.39 116.69,-33.41\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path412\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2367.09,1126.14 47.9,71.34 c 10.31,15.39 10.31,35.52 0,50.93 l -69.4,103.49 c -10.1,15.08 -27.62,22.22 -44.46,19.82 -2.39,0.28 -4.84,0.46 -7.35,0.46 h -102.87 c -2.14,0 -4.24,-0.12 -6.29,-0.34 -11.44,1.38 -22.53,-1.64 -30.46,-9.46 l -169.31,-166.65 c -15.54,-15.29 -13,-43.05 5.66,-62.02 18.66,-18.97 46.39,-21.89 61.93,-6.6 l 93.46,91.97 v -137.8 l -49.21,-229.69 c -4.58,-21.34 12.8,-43.149 38.8,-48.719 26.01,-5.582 50.79,7.18 55.36,28.527 l 40.72,189.912 h 21.56 l 40.67,-189.912 c 4.54,-21.347 29.33,-34.109 55.37,-28.527 26.06,5.57 43.41,27.379 38.83,48.719 l -49.21,229.54 v 25.81 c 11.15,2.43 21.42,8.97 28.3,19.2\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path414\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 462.945,1968.02 -23.961,26.29 c 2.672,6.27 1.696,13.8 -3.203,19.16 -6.676,7.33 -18.051,7.85 -25.371,1.17 -7.336,-6.68 -7.855,-18.05 -1.176,-25.37 4.883,-5.37 12.27,-7.05 18.77,-4.96 l 29.637,-32.53 56.367,-194.17 h 259.176 l 50.011,175.05 -360.25,35.36\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path416\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 603.066,1666.67 42.797,41.44 42.789,-41.44 z m 155.332,37.51 c -21.207,0 -38.535,-16.59 -39.722,-37.51 h -13.871 l 1.347,1.39 -50.82,49.19 50.82,49.2 -9.156,9.45 -51.133,-49.49 -51.125,49.49 -9.156,-9.45 50.816,-49.2 -50.816,-49.19 1.344,-1.39 h -8.199 c -1.176,20.92 -18.508,37.51 -39.707,37.51 -21.973,0 -39.786,-17.81 -39.786,-39.79 0,-21.96 17.813,-39.78 39.786,-39.78 18.843,0 34.613,13.1 38.722,30.69 h 141.922 c 4.125,-17.59 19.891,-30.69 38.734,-30.69 21.973,0 39.786,17.82 39.786,39.78 0,21.98 -17.813,39.79 -39.786,39.79\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path418\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 643.949,2013.19 H 520.496 v -37.84 l 123.453,-12.13 v 49.97\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path420\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 776.918,2013.19 H 653.461 v -50.9 l 123.457,-12.11 v 63.01\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path422\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 764.324,2076.71 h -89.086 v -54.9 h 89.086 v 54.9\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path424\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 725.563,2085.44 -84.711,27.6 17.019,52.2 84.703,-27.61 -17.011,-52.19\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path426\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 656.383,2096.23 H 535.602 v -74.42 h 120.781 v 74.42\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path428\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 201.965,2208.25 c 40.57,22.58 55.219,73.72 32.652,114.3 -22.523,40.55 -73.672,55.17 -114.195,32.65 -40.6212,-22.55 -55.2697,-73.69 -32.7032,-114.21 22.5192,-40.64 73.6642,-55.23 114.2462,-32.74\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path430\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 413.594,2057.12 246.41,2171.7 c -1.746,1.2 -3.555,2.22 -5.402,3.09 -7.809,5.33 -18.141,8.58 -29.465,8.58 H 110.797 c -24.3361,0 -44.0626,-14.99 -44.0626,-33.46 v -276.67 c 0,-13.11 9.9375,-24.45 24.3945,-29.94 v -192.4 c 0,-14.53 20.0471,-26.29 44.7501,-26.29 9.379,0 18.086,1.71 25.297,4.61 7.199,-2.9 15.902,-4.61 25.285,-4.61 24.668,0 44.75,11.76 44.75,26.29 v 192.4 c 14.457,5.49 24.398,16.83 24.398,29.94 v 200.6 l 115.289,-79.02 c 7.317,-5.01 15.743,-7.1 23.95,-6.52 11.109,0.76 21.765,6.43 28.547,16.33 11.796,17.2 7.402,40.7 -9.801,52.49\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path470\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1130.48,726.512 c -23.94,35.109 -69.93,43.148 -102.76,17.976 -32.786,-25.156 -39.954,-74.008 -16,-109.129 23.93,-35.078 69.96,-43.109 102.75,-17.961 32.79,25.161 39.97,74.043 16.01,109.114\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path472\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1376.5,472.25 c -6.49,20.059 -28.03,31.07 -48.08,24.582 l -77.88,-25.23 -62.84,100.07 c -7.1,11.297 -19.15,17.598 -31.56,17.867 v 0 h -0.25 c -0.45,0 -0.91,0 -1.38,0 h -24.81 l -0.06,-0.027 c -0.05,0.019 -0.11,0.027 -0.16,0.027 l -38.55,-87.547 -6.86,69.258 8.51,18.039 h -36.05 l 8.5,-18.039 -6.86,-69.25 -38.42,87.289 c -0.48,-0.09 -1.09,0.082 -1.56,0 h -53.018 v -0.09 C 941.32,587.801 922.367,568.141 922.133,543.98 h -0.016 v -0.441 -31.707 -141.961 0 -65.652 c 0,-25.27 20.492,-45.731 45.77,-45.731 3.336,0 6.617,0.371 9.781,1.043 V 26.7617 c 0,-14.7812 20.547,-26.7499812 45.892,-26.7499812 25.35,0 45.9,11.9687812 45.9,26.7499812 V 229.398 l 10.2,-0.019 V 26.7617 c 0,-14.7812 20.55,-26.7499812 45.89,-26.7499812 25.35,0 45.9,11.9687812 45.9,26.7499812 V 278.57 c 0,0.121 -0.03,0.262 -0.03,0.379 l 0.01,175.039 30.27,-48.168 c 7.12,-11.351 19.46,-17.879 32.33,-17.879 3.9,0 7.88,0.61 11.77,1.848 l 106.14,34.371 c 20.07,6.488 31.06,28.031 24.56,48.09\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path474\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1357.78,678.488 c 0,-8.918 -7.23,-16.168 -16.17,-16.168 -8.93,0 -16.15,7.25 -16.15,16.168 0,8.922 7.22,16.172 16.15,16.172 8.94,0 16.17,-7.25 16.17,-16.172\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path476\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1620.88,503.609 c -86.29,-65.168 -172.58,65.192 -258.89,0 0,51.731 0,103.481 0,155.211 86.31,65.168 172.6,-65.191 258.89,0 0,-51.73 0,-103.48 0,-155.211\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path478\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 1326.85,407.762 V 0.0117188 h 29.51 V 417.691 l -29.51,-9.929\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path480\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1356.36,656.082 h -29.51 V 503.609 l 29.51,6.18 v 146.293\\\"],[8],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"      \\\"],[9],[0,\\\"\\\\n   \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/du-de/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    errorService: service('error'),\n    store: service(),\n\n    parsedError: computed('error', function () {\n        return get(this, 'errorService').toError(get(this, 'error'));\n    }),\n\n    message: computed('error', function () {\n        return get(this, 'errorService').toString(get(this, 'error'));\n    }),\n\n    hittingWorktimes: computed('error', function () {\n        if (get(this, 'parsedError.meta.hits') === 'worktime') {\n            return get(this, 'store').query('worktime', {\n                id: get(this, 'parsedError.meta.ids').join(','),\n                sideload: true,\n            });\n        }\n        return null;\n    }),\n\n    hittingAbsences: computed('error', function () {\n        if (get(this, 'parsedError.meta.hits') === 'absence') {\n            return get(this, 'store').query('abcense', {\n                id: get(this, 'parsedError.meta.ids').join(','),\n                sideload: true,\n            });\n        }\n        return null;\n    }),\n\n    hittingComps: computed('error', function () {\n        if (get(this, 'parsedError.meta.hits') === 'comp') {\n            return get(this, 'store').query('worktime', {\n                id: get(this, 'parsedError.meta.ids').join(','),\n                sideload: true,\n            });\n        }\n        return null;\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"397ZxQOn\",\"block\":\"{\\\"symbols\\\":[\\\"worktime\\\",\\\"absence\\\",\\\"worktime\\\",\\\"&default\\\"],\\\"statements\\\":[[14,4],[0,\\\"\\\\n\\\\n\\\"],[1,[22,\\\"message\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[24,[\\\"hittingWorktimes\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"hittingWorktimes\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\" - \\\"],[1,[23,3,[\\\"project\\\",\\\"name\\\"]],false],[0,\\\" \\\"],[1,[23,3,[\\\"starttime\\\"]],false],[0,\\\" - \\\"],[1,[23,3,[\\\"endtime\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[24,[\\\"hittingAbsences\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"hittingAbsences\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\" - \\\"],[1,[23,2,[\\\"abcensetype\\\",\\\"name\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"moment-format\\\",[[23,2,[\\\"startdate\\\"]],\\\"L\\\"],null],false],[0,\\\" - \\\"],[1,[28,\\\"moment-format\\\",[[23,2,[\\\"enddate\\\"]],\\\"L\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[24,[\\\"hittingComps\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"hittingComps\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\" - \\\"],[1,[23,1,[\\\"project\\\",\\\"name\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"date\\\"]],\\\"L\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/error-message/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/export-modal/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmailSendModalComponent;\n\nimport Ember from 'ember';\n\nimport pdfmixin from '../../../mixins/worksitediary_pdf';\n\nimport { inject as service } from '@ember/service';\n\nimport { computed } from '@ember/object';\n\nimport { pluralize } from 'ember-inflector';\n\nEmailSendModalComponent = Ember.Component.extend(pdfmixin, {\n    analytics: Ember.inject.service(),\n    Collector: service('collector-service'),\n    localStorageWrapper: service(),\n    intl: service(),\n    store: service(),\n    dialogs: service(),\n    showApprovalLinkSelection: false,\n    emailSent: false,\n    count: 0,\n    type: 'export_pdf',\n    imgLocation: 'thumbnails',\n    layoutOption: 'topHeaders',\n    orientation: 'landscape',\n    init: function () {\n        var form;\n        this._super();\n        form = this.get('form');\n        if (this.get('initType') === 'email') {\n            this.set('modalTitle', this.get('intl').t('general.send_as_email'));\n            this.set('includeEmail', true);\n        } else {\n            this.set('modalTitle', this.get('intl').t('export.modal.title'));\n            this.set('type', this.get('initType'));\n        }\n        this.set('initType', null);\n        this.set('includeApprovalLink', false);\n        if (this.get('showApprovalLinkSelection')) {\n            this.set('includeApprovalLink', true);\n        }\n        //@set 'emailReportModalText', false\n        if (this.get('showApprovalLinkSelection')) {\n            this.set(\n                'emailContent',\n                this.get('intl').t('general.email_content_start') +\n                    ' ' +\n                    this.get('intl').t('menu.' + form) +\n                    '-' +\n                    this.get('intl').t('general.email_content_end', {\n                        sender:\n                            this.get('session.currentUser.firstname') +\n                            ' ' +\n                            this.get('session.currentUser.lastname'),\n                    }),\n            );\n        } else {\n            this.set('emailContent', '');\n        }\n        // Add the form name to the email title with menu combined with the form name\n        let formNameTranslation = this.get('intl').t(\"menu.\"+pluralize(form)?.camelize());\n        try {\n            // If form name is custom, then menu prefix is not needed\n            if (form?.includes('measurement-custom')) {\n                form = this.Collector.forms()[form.underscore()];\n                formNameTranslation = form.name;\n            }\n        } catch(err) {\n            formNameTranslation = this.get('intl').t(\"menu.\"+pluralize(form)?.camelize());\n        }\n        this.set(\n            'emailTitle',\n            this.get('intl').t(formNameTranslation) +\n                '-' +\n                this.get('intl').t('general.report')?.toLowerCase(),\n        );\n        this.set('showEmailModal', true);\n        if (!this.get('pdf_exports')) {\n            this.set('pdf_exports', [\n                {\n                    id: 'export_pdf',\n                    name: this.get('intl').t('report.actions.export_pdf'),\n                },\n                {\n                    id: 'export_pdf_full',\n                    name: this.get('intl').t('report.actions.export_pdf_full'),\n                },\n                {\n                    id: 'export_excel',\n                    name: this.get('intl').t('report.actions.export_excel'),\n                },\n            ]);\n        }\n        if (this.get('pdf_exports.length') === 1) {\n            this.set('type', this.get('pdf_exports')[0]['id']);\n        }\n        this.set('imgLocations', [\n            {\n                id: 'showImages',\n                name: this.get('intl').t('report.actions.include_images'),\n            },\n            {\n                id: 'afterReport',\n                name: this.get('intl').t('report.actions.include_images_after_report'),\n            },\n            {\n                id: 'thumbnails',\n                name: this.get('intl').t('report.actions.include_thumbnails'),\n            },\n            {\n                id: 'hideImages',\n                name: this.get('intl').t('report.actions.exclude_images'),\n            },\n        ]);\n        return this.set('layoutOptions', [\n            {\n                id: 'topHeaders',\n                name: this.get('intl').t('report.actions.pdf.headers_on_top'),\n            },\n            {\n                id: 'sideHeaders',\n                name: this.get('intl').t('report.actions.pdf.headers_on_side'),\n            },\n        ]);\n    },\n    validateEmail: function (email) {\n        return !/^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i.test(\n            email,\n        );\n    },\n    hideTemplates: Ember.computed('form', 'type', function () {\n        return this.get('type') === 'export_pdf_full' && ['diary'].includes(this.get('form')) || this.get('type') === 'export_excel';\n    }),\n    refreshRoute: function () {\n        var controller, route;\n        controller = Ember.getOwner(this).lookup('controller:application');\n        route = Ember.getOwner(this).lookup('route:' + Ember.get(controller, 'currentRouteName'));\n        return route.refresh();\n    },\n    actions: {\n        export: function () {\n            return this.sendAction('exportActions', {\n                type: this.get('type'),\n                template: this.get('currentTemplate'),\n                signature: this.get('signature'),\n                dateAndPlace: this.get('datePlace'),\n                statusInfo: this.get('showStatusinfo'),\n                extraParams: this.get('extraData'),\n                imgLocation: this.get('imgLocation'),\n                layoutOption: this.get('type') === 'export_pdf' ? this.get('layoutOption') : null,\n                orientation: this.get('orientation'),\n                addSumRow: this.get('addSumRow'),\n            });\n        },\n        sendEmail: function (title, content) {\n            var recipients, useraddr, validRecipients;\n            recipients = this.get('recipients');\n            validRecipients = [];\n            useraddr = this.get('session.currentUser.email');\n            if (this.get('sendToMe')) {\n                if (this.validateEmail(useraddr)) {\n                    this.get('dialogs').alert(this.get('intl').t('email.sending.own_email_error'));\n                } else {\n                    if (recipients) {\n                        recipients.push({\n                            error: false,\n                            tag: useraddr,\n                        });\n                    } else {\n                        recipients = [\n                            {\n                                error: false,\n                                tag: useraddr,\n                            },\n                        ];\n                    }\n                }\n            }\n            if (recipients) {\n                // check that all emails are valid\n                recipients.forEach((recipient, index) => {\n                    if (!recipient.error) {\n                        return validRecipients.push(recipient.tag);\n                    }\n                });\n            } else {\n                this.set('email_error', null);\n                return;\n            }\n            Ember.get(this, 'analytics').trackEvent({\n                category: 'Export-modal',\n                action: 'Send email',\n            });\n            //Handle actual email sending from where the action was initiated (need to fetch pdf)\n            return this.sendAction('sendEmailAction', validRecipients, title, content, {\n                type: this.get('type'),\n                template: this.get('currentTemplate'),\n                signature: this.get('signature'),\n                dateAndPlace: this.get('datePlace'),\n                statusInfo: this.get('showStatusInfo'),\n                approvalLink: this.get('includeApprovalLink'),\n                orientation: this.get('orientation'),\n                imgLocation: this.get('imgLocation'),\n            });\n        },\n        recipientsChanged: function (recipients) {\n            return this.set('recipients', recipients);\n        },\n        removeModal: function () {\n            this.set('emailSent', false);\n            this.set('action', null);\n            this.set('showEmailModal', false);\n            this.sendAction('removeModal');\n            return this.refreshRoute();\n        },\n    },\n});\n\nexport default EmailSendModalComponent;\n","export default Ember.HTMLBars.template({\"id\":\"HytIAoYR\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showEmailModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"modalTitle\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"emailSent\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"report.email_sent\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"emailError\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"email.sending_error\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[24,[\\\"email_error\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"includeEmail\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"saved.modal.email_address\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"email_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[22,\\\"email_error\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/fields/tag-input-field\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"tagListChanged\\\"],[\\\"user\\\",\\\"email\\\",[28,\\\"action\\\",[[23,0,[]],\\\"recipientsChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"email_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"saved.modal.title\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"placeholder\\\"],[\\\"form-control add-fields\\\",[24,[\\\"emailTitle\\\"]],[28,\\\"t\\\",[\\\"saved.modal.title.placeholder\\\"],null]]]],false],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"saved.modal.text\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"class\\\",\\\"rows\\\",\\\"value\\\",\\\"placeholder\\\"],[\\\"form-control add-fields\\\",6,[24,[\\\"emailContent\\\"]],[28,\\\"t\\\",[\\\"saved.modal.content.placeholder\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showApprovalLinkSelection\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-12\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"checkbox\\\"],[10,\\\"data-anchor\\\",\\\"export-modal-include-approval-link\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"label\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\"],[\\\"checkbox\\\",[24,[\\\"includeApprovalLink\\\"]]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.email_include_approval_link_with_count\\\"],[[\\\"count\\\"],[[24,[\\\"count\\\"]]]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-12\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"checkbox\\\"],[10,\\\"data-anchor\\\",\\\"export-modal-send-to-me\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"label\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\"],[\\\"checkbox\\\",[24,[\\\"sendToMe\\\"]]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.email_send_to_me\\\"],null],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[24,[\\\"pdf_exports\\\",\\\"length\\\"]],1],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export.type\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"anchorName\\\"],[[24,[\\\"pdf_exports\\\"]],\\\"form-control add-fields\\\",[24,[\\\"type\\\"]],\\\"export-modal-type\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[24,[\\\"type\\\"]],\\\"export_pdf\\\"],null],[28,\\\"not\\\",[[23,0,[\\\"hideSpecialPdf\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export.pdf_layout_style\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"anchorName\\\"],[[23,0,[\\\"layoutOptions\\\"]],\\\"form-control add-fields\\\",[28,\\\"mut\\\",[[24,[\\\"layoutOption\\\"]]],null],\\\"export-modal-layout-style\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[24,[\\\"type\\\"]],\\\"export_pdf\\\"],null],[28,\\\"not-eq\\\",[[23,0,[\\\"layoutOption\\\"]],\\\"sideHeaders\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export.images_location\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"anchorName\\\"],[[24,[\\\"imgLocations\\\"]],\\\"form-control add-fields\\\",[28,\\\"mut\\\",[[24,[\\\"imgLocation\\\"]]],null],\\\"export-modal-images-location\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hideTemplates\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[10,\\\"data-anchor\\\",\\\"export-modal-saved-templates\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"report-template-selector\\\",null,[[\\\"form\\\",\\\"columns\\\",\\\"settings\\\",\\\"currentTemplate\\\",\\\"style\\\"],[[24,[\\\"form\\\"]],[24,[\\\"columns\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"currentTemplate\\\"]],\\\"listOnly\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[24,[\\\"type\\\"]],\\\"export_excel\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[10,\\\"data-anchor\\\",\\\"export-modal-additional-fields-list\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-unstyled\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"signature\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-signature\\\"],null]]]],false],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[11,\\\"for\\\",[29,[[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-signature\\\"],null]]]],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"t\\\",[\\\"report.worktask.signature\\\"],null],false],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"datePlace\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-dateplace\\\"],null]]]],false],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[11,\\\"for\\\",[29,[[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-dateplace\\\"],null]]]],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"t\\\",[\\\"thereport.date_and_place\\\"],null],false],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"statusFieldIsVisible\\\"]],[28,\\\"eq\\\",[[24,[\\\"type\\\"]],\\\"export_pdf\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"showStatusinfo\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-statusinfo\\\"],null]]]],false],[0,\\\"\\\\n                                        \\\"],[7,\\\"label\\\",true],[11,\\\"for\\\",[29,[[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-statusinfo\\\"],null]]]],[8],[0,\\\"\\\\n                                            \\\"],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf.show_status_info\\\"],null],false],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showExcelSumCheckbox\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-unstyled\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"addSumRow\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-sumrow\\\"],null]]]],false],[0,\\\"\\\\n                                        \\\"],[7,\\\"label\\\",true],[11,\\\"for\\\",[29,[[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-signature\\\"],null]]]],[8],[0,\\\"\\\\n                                            \\\"],[1,[28,\\\"t\\\",[\\\"report.actions.export_excel.use_sumrows\\\"],null],false],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[24,[\\\"type\\\"]],\\\"export_pdf\\\"],null],[28,\\\"not-eq\\\",[[23,0,[\\\"layoutOption\\\"]],\\\"sideHeaders\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[10,\\\"data-anchor\\\",\\\"export-modal-orientation\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"pdf_orientation\\\"],[8],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.actions.pdf_orientation\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\"],[\\\"landscape\\\",[24,[\\\"orientation\\\"]]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-landscape_file\\\"],[10,\\\"style\\\",\\\"font-size: 30px;\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\"],[\\\"portrait\\\",[24,[\\\"orientation\\\"]]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-file\\\"],[10,\\\"style\\\",\\\"font-size: 30px;\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"includeEmail\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendEmail\\\",[24,[\\\"emailTitle\\\"]],[24,[\\\"emailContent\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"saved.modal.send_email\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export\\\"]],[8],[1,[28,\\\"t\\\",[\\\"export.modal.export\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/export-modal/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/famoco-editor/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Component;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nimport $ from 'jquery';\n\nComponent = Ember.Component.extend({\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    commandsUrl: config.APP.COMMANDS_URL,\n    loading: true,\n    token: null,\n    translations: {\n        debug: 'debug',\n        reloadModules: 'reload modules',\n        clearBuffer: 'clear buffer',\n        reloadEmber: 'reload ember',\n        getDebug: 'get debug',\n        getLastToConsole: 'get last done to console',\n        clearDevice: 'clear device and make available',\n    },\n    values: Ember.Object.create({\n        current: Ember.Object.create(),\n        initial: Ember.Object.create(),\n    }),\n    setValue: function (name, value) {\n        return this.get('values').set('current.' + name, value);\n    },\n    getValue: function (name) {\n        return this.get('values').get('current.' + name);\n    },\n    persistValues: function () {\n        return Object.keys(this.get('values.current')).forEach((key) => {\n            return this.get('values').set('initial.' + key, this.get('values.current.' + key));\n        });\n    },\n    isChanged: function (name) {\n        return this.get('values.current.' + name) !== this.get('values.initial.' + name);\n    },\n    tasksfield: Ember.computed(function () {\n        var field;\n        field = this.get('Collector').field('worktime', 'task');\n        field.value = this.getValue('useTasks');\n        field.prompt = this.get('intl').t('general.all');\n        return field;\n    }),\n    didReceiveAttrs: function () {\n        var environment;\n        environment = config.environment;\n        if (environment === 'development') {\n            environment = 'localhost';\n        }\n        if (config.APP.COLLECTOR_API_URL.indexOf('/release-') !== -1) {\n            environment = 'next';\n        }\n        return $.ajax({\n            url: this.get('commandsUrl') + '/gettoken/' + environment,\n            headers: {\n                Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n            },\n        }).then((back) => {\n            this.set('token', back.token);\n            $.ajax({\n                url: this.get('commandsUrl') + '/pending/famoco_' + this.get('imei'),\n                headers: {\n                    Authorization: this.get('token'),\n                },\n            }).then((pending) => {\n                if (pending.length > 0) {\n                    this.set('pending', true);\n                    return this.set('loading', false);\n                }\n            });\n            return this.getState();\n        });\n    },\n    getState: function () {\n        return $.ajax({\n            url: this.get('commandsUrl') + '/state/famoco_' + this.get('imei'),\n            headers: {\n                Authorization: this.get('token'),\n            },\n        }).then((state) => {\n            if (state[0] != null) {\n                this.set('lastPingTime', moment(state[0].created).format('LLL'));\n                this.setField(state[0].state.project);\n                this.setValue('tasksOn', state[0].state.tasks ? true : false);\n                this.setValue('useTasks', state[0].state.useTasks);\n                this.setValue('logged', state[0].state.loggedin);\n                this.persistValues();\n            } else {\n                this.setField(null);\n            }\n            return this.set('loading', false);\n        });\n    },\n    setField: function (value) {\n        var field, useform;\n        this.setValue('project', value);\n        useform = this.get('Collector').testNeeds(['worktime']) ? 'worktime' : 'presence';\n        field = this.get('Collector').field(useform, 'project');\n        field.value = value;\n        return this.set('field', field);\n    },\n    getRefreshToken: function () {\n        return this.get('Collector').ajax({\n            url: 'createToken',\n            method: 'POST',\n            data: {\n                clientid: 'famoco',\n            },\n            headers: {\n                Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n            },\n        });\n    },\n    addCommand: function (action) {\n        this.set('loading', true);\n        return $.ajax({\n            url: this.get('commandsUrl') + '/add/famoco_' + this.get('imei'),\n            method: 'post',\n            headers: {\n                Authorization: this.get('token'),\n            },\n            data: JSON.stringify(action),\n        });\n    },\n    login: function () {\n        return new Ember.RSVP.Promise((resolve) => {\n            if (this.getValue('logged')) {\n                resolve();\n                return;\n            }\n            return this.getRefreshToken().then((ret) => {\n                return this.addCommand({\n                    action: 'login',\n                    refresh_token: ret['refresh_token'],\n                    access_token: ret['access_token'],\n                }).then(() => {\n                    this.setValue('logged', true);\n                    return resolve();\n                });\n            });\n        });\n    },\n    actions: {\n        tasksChanged: function (selectedtasks) {\n            return this.setValue('useTasks', selectedtasks);\n        },\n        changeProject: function (project) {\n            return this.setValue('project', project.get('id'));\n        },\n        clearStorage: function () {\n            this.addCommand({\n                action: 'clearStorage',\n            });\n            if (this.get('close')) {\n                return this.close();\n            }\n        },\n        toggleTasks: function (onoff) {\n            return this.setValue('tasksOn', onoff);\n        },\n        sendCommands: function () {\n            return this.login().then(() => {\n                if (this.getValue('project') && this.isChanged('project')) {\n                    this.addCommand({\n                        action: 'setProject',\n                        projectId: this.getValue('project'),\n                    });\n                }\n                if (this.isChanged('tasksOn')) {\n                    this.addCommand({\n                        action: 'taskonoff',\n                        turnOn: this.getValue('tasksOn'),\n                    });\n                }\n                if (this.isChanged('useTasks')) {\n                    this.addCommand({\n                        action: 'settasksinuse',\n                        tasks: this.getValue('useTasks'),\n                    });\n                }\n                this.persistValues();\n                if (this.get('close')) {\n                    return this.close();\n                }\n            });\n        },\n        debug: function (action) {\n            this.addCommand({\n                action: action,\n            });\n            return this.set('loading', false);\n        },\n        getlast: function () {\n            return $.ajax({\n                url: this.get('commandsUrl') + '/last/famoco_' + this.get('imei'),\n                headers: {\n                    Authorization: this.get('token'),\n                },\n            }).then((back) => {\n                return console.log('last command', back);\n            });\n        },\n    },\n});\n\nexport default Component;\n","export default Ember.HTMLBars.template({\"id\":\"EvLPzt00\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"famoco.last_time_online\\\"],null],false],[0,\\\" \\\"],[1,[22,\\\"lastPingTime\\\"],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"h3\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"values\\\",\\\"current\\\",\\\"logged\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"famoco.logged_in\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"famoco.not_logged\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"pending\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"famoco.pending\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",null,[[\\\"field\\\",\\\"change\\\"],[[24,[\\\"field\\\"]],\\\"changeProject\\\"]]],false],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.tasks\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[24,[\\\"values\\\",\\\"current\\\",\\\"tasksOn\\\"]],\\\"btn-primary\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"toggleTasks\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"general.on\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"unless\\\",[[24,[\\\"values\\\",\\\"current\\\",\\\"tasksOn\\\"]],\\\"btn-primary\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"toggleTasks\\\",false]],[8],[1,[28,\\\"t\\\",[\\\"general.off\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"values\\\",\\\"current\\\",\\\"tasksOn\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"famoco.useTasks\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"component\\\",[\\\"collector/fields/multiselect-field\\\"],[[\\\"field\\\",\\\"class\\\",\\\"bubbleChange\\\"],[[24,[\\\"tasksfield\\\"]],\\\"form-control add-fields\\\",\\\"tasksChanged\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendCommands\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clearStorage\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.logout\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"development\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[24,[\\\"translations\\\",\\\"debug\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"debug\\\",\\\"reloadmodules\\\"]],[8],[1,[24,[\\\"translations\\\",\\\"reloadModules\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"debug\\\",\\\"clearbuffer\\\"]],[8],[1,[24,[\\\"translations\\\",\\\"clearBuffer\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"debug\\\",\\\"reload\\\"]],[8],[1,[24,[\\\"translations\\\",\\\"reloadEmber\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"debug\\\",\\\"debug\\\"]],[8],[1,[24,[\\\"translations\\\",\\\"getDebug\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"getlast\\\"]],[8],[1,[24,[\\\"translations\\\",\\\"getLastToConsole\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"debug\\\",\\\"makeVirgin\\\"]],[8],[1,[24,[\\\"translations\\\",\\\"clearDevice\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/famoco-editor/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport config from 'tt4/config/environment';\nimport moment from 'moment';\n\nexport default Component.extend({\n    ttapi: service(),\n    session: service(),\n    store: service(),\n    error: service(),\n    notifications: service(),\n    intl: service(),\n    cc: service(),\n    Collector: service('collector-service'),\n\n    dates: computed('date', function () {\n        return { from: get(this, 'date').split('_')[0], to: get(this, 'date').split('_')[1] };\n    }),\n\n    actions: {\n        export() {\n            this.notifyStarted();\n            if (get(this, 'close')) get(this, 'close')();\n            const date = get(this, 'dates').from + '_' + get(this, 'dates').to;\n            this.createRecord(date).then(this.callCC.bind(this, date));\n        },\n\n        valueChanged(value, field) {\n            set(this, field, value);\n        },\n    },\n\n    createRecord(date) {\n        const name = 'vismanet-' + this.niceDate(date);\n\n        const record = get(this, 'store').createRecord('export_salary', {\n            date: date,\n            export_description: get(this, 'export_description'),\n            export_name: name,\n        });\n        return record.save();\n    },\n\n    niceDate(dates) {\n        return (\n            moment(dates.split('_')[0]).format('L') + '-' + moment(dates.split('_')[1]).format('L')\n        );\n    },\n\n    callCC(date, record) {\n        const data = {};\n        if (config.environment === 'development') {\n            data.capi_url = 'http://capi/';\n            data.ttapi_url = 'http://ttapi/';\n            data.cc_url = 'http://ccbackend/trigger/';\n        } else {\n            data.capi_url = config.APP.COLLECTOR_API_URL + '/';\n            data.ttapi_url = this.ttapi.host + '/';\n            data.cc_url = this.cc.host + '/';\n        }\n\n        data.token = this.session.data.authenticated.access_token;\n        data.exportName = 'export-salary';\n        data.exportid = get(record, 'id');\n        data.date = date;\n        data.throwErrors = true;\n\n        if (get(this, 'Collector').testNeedsOne('products.severa')) {\n            this.triggerIntegration(data, 'general-severa-hours');\n        } else if (get(this, 'Collector').testNeedsOne('products.vismanet')) {\n            this.triggerIntegration(data, 'vismanet');\n        } else {\n            throw new Error('Product vismanet or severa not found from service');\n        }\n    },\n\n    notifyStarted() {\n        get(this, 'notifications').info(get(this, 'intl').t('fastexport.exporting'));\n    },\n\n    notifyError(error) {\n        get(this, 'notifications').clearAll();\n        get(this, 'error').notify(error);\n    },\n\n    notifyDone() {\n        get(this, 'notifications').clearAll();\n        get(this, 'notifications').success(get(this, 'intl').t('fastexport.success'), {\n            autoClear: true,\n        });\n    },\n    triggerIntegration(data, key) {\n        get(this, 'ttapi')\n            .request('ccrequest/' + key, {\n                // headers: {Authorization: \"Bearer \" + data.token}, TTAPI service already does this, why would we want to set it manually?\n                method: 'POST',\n                data: JSON.stringify(data),\n            })\n            .then(this.notifyDone.bind(this))\n            .catch(this.notifyError.bind(this));\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"r9Gk+c+Z\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\\n\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"fastexport.help\\\"],null],false],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"collector/field-container\\\",null,[[\\\"field\\\",\\\"change\\\"],[\\\"export_salary.export_description\\\",\\\"valueChanged\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export\\\"]],[8],[1,[28,\\\"t\\\",[\\\"fastexport.button\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/fast-exporter/template.hbs\"}});","import Component from '@ember/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\n/**\n * Admin/impersonate-only \"Fetch cards\" tool.\n *\n * For each selected user it hits the cardregister endpoint (via the `cardregister`\n * service) to register them in cardUpdaters and fetch their cards from VastuuGroup.\n * Requests run one user at a time with a live progress counter and a per-user results\n * modal (ok / skipped / error).\n *\n * Args:\n *   @users   selected users to process\n *   @onClose called when the results modal is dismissed\n */\nexport default class FetchCardsToolComponent extends Component {\n    tagName = '';\n\n    @service cardregister;\n    @service intl;\n    @service error;\n\n    @tracked open = true;\n    @tracked loading = true;\n    @tracked processed = 0;\n    @tracked total = 0;\n    @tracked results = [];\n\n    // Kick the fetch off once the component is in the DOM — not from the constructor,\n    // where the async work could not be awaited or handled.\n    didInsertElement() {\n        super.didInsertElement(...arguments);\n        this.run();\n    }\n\n    async run() {\n        const users = this.users?.toArray ? this.users.toArray() : this.users || [];\n        this.total = users.length;\n        this.processed = 0;\n        this.loading = true;\n\n        const results = [];\n        try {\n            // make sure employer (emp_id / emp_country) is loaded for each user first\n            await this.cardregister.loadEmployers(users);\n\n            for (const user of users) {\n                const result = await this.cardregister.fetchForUser(user);\n                results.push({ user, ...this.toView(result) });\n                this.results = results.slice();\n                this.processed = results.length;\n            }\n        } finally {\n            // never leave the modal stuck on the loading state, even if something throws\n            this.results = results;\n            this.loading = false;\n        }\n    }\n\n    /**\n     * Resolve a service result into something the template renders. Error strings are\n     * built here (intl key vs. raw request error) so the service stays UI-agnostic;\n     * ok / skipped pass through with their count / reason.\n     */\n    toView(result) {\n        if (result.status === 'error') {\n            return {\n                status: 'error',\n                message: result.errorKey\n                    ? this.intl.t('cardregister.errors.' + result.errorKey)\n                    : this.error.toString(result.error),\n            };\n        }\n        return result;\n    }\n\n    @action\n    close() {\n        this.open = false;\n        if (this.onClose) this.onClose();\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"E8az7Ar5\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\",\\\"result\\\"],\\\"statements\\\":[[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHidden\\\"],[[23,0,[\\\"open\\\"]],[23,0,[\\\"close\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.action.fetch_cards.title\\\"],null],false],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"user.action.fetch_cards.processing\\\"],[[\\\"done\\\",\\\"total\\\"],[[23,0,[\\\"processed\\\"]],[23,0,[\\\"total\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"results\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"user\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"user\\\",\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[10,\\\"data-anchor\\\",\\\"fetch-cards-result\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"pl-2 pt-2 pb-2 mt-2 mb-2 \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"status\\\"]],\\\"ok\\\"],null],\\\"alert-success\\\",\\\"alert-danger\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"status\\\"]],\\\"ok\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"t\\\",[\\\"user.action.fetch_cards.ok\\\"],[[\\\"count\\\"],[[23,2,[\\\"count\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"status\\\"]],\\\"skipped\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"user.action.fetch_cards.\\\",[23,2,[\\\"reason\\\"]]],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[23,2,[\\\"message\\\"]],false],[0,\\\"\\\\n                                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"user.action.fetch_cards.nothing\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[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\\\",[23,0,[\\\"close\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/fetch-cards-tool/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    summableFieldTypes: [\n        'date',\n        'hours',\n        'number',\n        'checkbox',\n        'decimal',\n        'price',\n        'big_price',\n        'minutes',\n        'dropdown_values',\n    ],\n    imageTypes: ['image/jpeg'],\n    showEmailModal: false,\n    errors: Ember.A([]),\n    loading: false,\n    emailSent: false,\n    translations: {\n        twentyfive: 25,\n        fifty: 50,\n        hundred: 100,\n    },\n    isMobile: Em.computed(function () {\n        return typeof cordova !== 'undefined' && cordova !== null;\n    }),\n    statusName: Ember.computed('intl.locale', 'status', function () {\n        if (this.get('intl').exists('status.' + this.get('status'))) {\n            return this.get('intl').t('status.' + this.get('status'));\n        } else {\n            return this.get('status');\n        }\n    }),\n    selectStatus: Em.computed('form', function () {\n        var c, field, intl, option, options;\n        if (!this.get('form')) {\n            return [];\n        }\n        c = this.get('Collector');\n        intl = this.get('intl');\n        field = c.field(this.get('form'), 'status');\n        options = (function () {\n            var j, len, ref, results;\n            ref = field.options;\n            results = [];\n            for (j = 0, len = ref.length; j < len; j++) {\n                option = ref[j];\n                if (intl.exists('status.' + option)) {\n                    results.push({\n                        id: option,\n                        name: intl.t('status.' + option),\n                    });\n                } else {\n                    results.push({\n                        id: option,\n                        name: option,\n                    });\n                }\n            }\n            return results;\n        })();\n        return options;\n    }),\n    didInsertElement: function () {\n        //close display-menu only if clicked outside of it\n        //        $('.display-menu').on 'click', (event) ->\n        //            if !$(this).hasClass 'open'\n        //                $(this).addClass 'open'\n        //            return\n        //        $('body').on 'click touchend', (e) ->\n        //            if !$('.display-menu').is(e.target) and $('.display-menu').has(e.target).length == 0 and $('.open').has(e.target).length == 0\n        //                $('.display-menu').removeClass 'open'\n        //            return\n        $('.dropdown-toggler').on('click', function (event) {\n            $('input.checkbox-button').prop('checked', false);\n            return $(this).toggleClass('open');\n        });\n        $('input.checkbox-button').on('click', function (event) {\n            return $('.dropdown-toggler').parent().addClass('open');\n        });\n        return $('li.dropdown-submenu ul.dropdown-menu li input').on('click', function (event) {\n            return $('.dropdown-toggler').parent().addClass('open');\n        });\n    },\n    didReceiveAttrs: function () {\n        var isEmptyArray, key, limitWasPassed, valuefromLS;\n        if (\n            this.get('settings.filters') &&\n            this.get('settings.filters').find((filter) => {\n                return filter.name === 'groupBy' && Ember.isPresent(filter.value);\n            })\n        ) {\n            this.set('groupBy', true);\n        } else {\n            this.set('groupBy', false);\n        }\n        if (this.get('settings.localStorageKey')) {\n            this.set('localStorageKey', this.get('settings.localStorageKey'));\n        }\n        if (this.get('localStorageKey')) {\n            key = this.get('localStorageKey') + '_defaultLimit';\n        } else if (this.get('content.firstObject.constructor.modelName')) {\n            key = this.get('content.firstObject.constructor.modelName') + '_defaultLimit';\n        }\n        this.set('defaultLimitKey', key);\n        // EP-13302: a caller that passes an explicit `limit` attribute is authoritative — it\n        // reflects how many rows the route actually fetched. Only fall back to the stored\n        // `_defaultLimit` value when no `limit` attribute was provided, so the stored value can\n        // never clobber a passed limit (which used to hide the Summary report's pager).\n        limitWasPassed = Ember.isPresent(this.attrs && this.attrs.limit);\n        valuefromLS = this.get('localStorageWrapper').getUserSetting(key);\n        // support for stupid getUserSetting function .. it returns empty array if value is not found at all\n        isEmptyArray = Ember.typeOf(valuefromLS) === 'array' && valuefromLS.length === 0;\n        if (!limitWasPassed && valuefromLS && !isEmptyArray) {\n            this.set('limit', valuefromLS);\n        } else {\n            if (!this.get('limit')) {\n                Ember.run.next(this, function () {\n                    return this.set('limit', '25');\n                });\n            }\n        }\n        if (this.get('defaultColumns')) {\n            return this.send('sendColumns', this.get('defaultColumns'));\n        }\n    },\n    moveElementInArray: function (obj, col, offset) {\n        var index, newIndex;\n        index = obj.indexOf(col);\n        obj.removeObject(col);\n        newIndex = index + offset;\n        if (newIndex > obj.length) {\n            newIndex = 0;\n        } else if (newIndex < 0) {\n            newIndex = obj.length;\n        }\n        return obj.insertAt(newIndex, col);\n    },\n    createExcel: function (exportParams, base64 = false) {\n        var tmp_rows;\n        Ember.get(this, 'analytics').trackEvent({\n            category: this.form + ' report actions',\n            action: 'Excel-export',\n            label: 'General-report',\n        });\n        tmp_rows = new Em.RSVP.Promise((resolve, reject) => {\n            var content, params;\n            if (this.get('checked').length > 0) {\n                content = this.get('checked');\n                return resolve(content);\n            } else {\n                params = {\n                    limit: 'all',\n                    sideload: true,\n                };\n                if (this.get('settings.filters')) {\n                    this.get('settings.filters').forEach((filter) => {\n                        var add;\n                        // haxx to set q-parameter correctly\n                        if (filter.get('bindto')) {\n                            return (params['q'] = filter.get('value'));\n                        } else if (\n                            this.get('customQueryparams') &&\n                            this.get('customQueryparamsKey') === filter.get('field')\n                        ) {\n                            return (params[this.get('customQueryparams')] = filter.get('value'));\n                        } else if (filter.get('value') && filter.get('subform')) {\n                            add = {};\n                            add[filter.get('field')] = filter.get('value');\n                            return (params[filter.get('form')] = add);\n                        } else if (filter.get('value') && filter.get('field') !== 'status') {\n                            return (params[filter.get('field')] = filter.get('value'));\n                        }\n                    });\n                }\n                if (this.get('settings.showStatus') === 'removed') {\n                    params.row_info_status = 'removed';\n                }\n                if (this.get('settings.sortByColumn')) {\n                    params.order = this.get('settings.sortByColumn');\n                }\n                if (this.get('status') !== 'all') {\n                    params.status = this.get('status');\n                }\n                return this.get('store')\n                    .query(this.get('form'), params)\n                    .then((rows) => {\n                        return resolve(rows);\n                    });\n            }\n        });\n        return tmp_rows.then((rows) => {\n            var columns, filteredColumns, sumRow;\n            filteredColumns = [];\n            columns = [];\n            if (exportParams.template) {\n                filteredColumns = exportParams.template.get('columns').split(',');\n            }\n            sumRow = false;\n            this.set('showLoader', true);\n            return this.possiblyCalculateSumRow(\n                rows,\n                false,\n                exportParams['addSumRow'],\n                this.get('settings.rowSettings.hideCheckbox'),\n            ).then((unformatted_sumrow) => {\n                var excelJSON, filters, form;\n                form = this.get('form');\n                this.get('defaultColumns')\n                    .concat(this.get('extraColumns'))\n                    .forEach((row) => {\n                        if (filteredColumns.length > 0 && filteredColumns.indexOf(row.ext) === -1) {\n                            return;\n                        }\n                        return columns.push(row);\n                    });\n                filters = this.getPdfFilters();\n                sumRow = unformatted_sumrow;\n                excelJSON = this.get('fileExports').createExcelJSONFromForm(\n                    form,\n                    rows,\n                    columns,\n                    filters,\n                    sumRow,\n                );\n                if (base64) {\n                    return this.get('fileExports').createBase64ExcelFromJSON(excelJSON);\n                } else {\n                    return this.get('fileExports')\n                        .createExcelFromJSON(excelJSON)\n                        .then(() => {\n                            this.set('showEmailModal', false);\n                            return this.set('showLoader', false);\n                        });\n                }\n            });\n        });\n    },\n    customQueryparams: Ember.computed(function () {\n        var formFeatures, forms;\n        forms = this.get('Collector').forms();\n        // some form have dash in their name so we need to change them to underscore\n        formFeatures = forms[this.get('form').underscore()].features;\n        if (formFeatures != null && formFeatures.custom_queryparams) {\n            return formFeatures.custom_queryparams;\n        }\n        return false;\n    }),\n    customQueryparamsKey: Ember.computed('customQueryparams', function () {\n        if (!this.get('customQueryparams')) {\n            return;\n        }\n        //Some forms have custom_queryparams divided by : for example pass_start:pass_end\n        if (this.get('customQueryparams').includes(':')) {\n            return this.get('customQueryparams').split(':')[0];\n        } else {\n            return this.get('customQueryparams').split('_')[0];\n        }\n    }),\n    showShareLink: Em.computed('session.currentUser', function () {\n        if (!this.get('session.currentUser')) {\n            return;\n        }\n        return this.get('form') === 'presence' && this.get('Collector').testNeeds(['userlevel=5']);\n    }),\n    layoutName: Ember.computed(function () {\n        if (this.get('templatename')) {\n            return this.get('templatename');\n        } else {\n            return 'components/general-report';\n        }\n    }),\n    showPdfExport: true,\n    showPdfExportFull: true,\n    filterMode: false,\n    //    date: moment().format('YYYY-MM-DD')\n    defaultChangeStatus: Em.computed(function () {\n        var obj;\n        obj = {};\n        obj.action = 'approved';\n        obj.btn_class = 'btn-primary';\n        obj.text = this.get('intl').t('report.approve_rows');\n        return obj;\n    }),\n    showDefaultChangeStatus: Ember.computed('canChangeStatus', 'statusTypes', function () {\n        var approvingIsAllowed;\n        if (!this.get('canChangeStatus')) {\n            return false;\n        }\n        approvingIsAllowed = this.get('statusTypes').mapBy('id').indexOf('approved') !== -1;\n        return approvingIsAllowed;\n    }),\n    defaultChangeStatusAction: 'approved',\n    canChangeStatus: Ember.computed(function () {\n        var field;\n        field = collector.getFormObject(this.get('form') + '.status');\n        if (this.get('status') && field) {\n            if (!field.features.readonly) {\n                return true;\n            }\n        }\n        return false;\n    }),\n    statusTypes: Em.computed('form', function () {\n        var c, field, fieldOptions, intl, option, options;\n        if (!this.get('form')) {\n            return [];\n        }\n        c = this.get('Collector');\n        intl = this.get('intl');\n        field = c.field(this.get('form'), 'status');\n        if (field.features.only_options) {\n            fieldOptions = field.features.only_options.split(',');\n        } else {\n            fieldOptions = field.options;\n        }\n        options = (function () {\n            var j, len, results;\n            results = [];\n            for (j = 0, len = fieldOptions.length; j < len; j++) {\n                option = fieldOptions[j];\n                if (intl.exists('status.' + option)) {\n                    results.push({\n                        id: option,\n                        name: intl.t('report.' + option + '_rows'),\n                    });\n                } else {\n                    results.push({\n                        id: option,\n                        name: intl.t('report.change_status') + option,\n                    });\n                }\n            }\n            return results;\n        })();\n        return options;\n    }),\n    offset: null,\n    didInsertElement: function () {\n        return this.set('offset', this.get('limit') * this.get('page'));\n    },\n    page: 1,\n    pageObserver: function () {\n        if (this.get('page') <= 0) {\n            //            @set 'currentController.page',1\n            return this.set('page', 1);\n        }\n    }.observes('page'),\n    pageCount: Ember.computed('content.meta.count', 'limit', 'count', function () {\n        var count;\n        count = Ember.isPresent(this.get('count'))\n            ? this.get('count')\n            : this.get('content.meta.count');\n        return Math.ceil(count / this.get('limit'));\n    }),\n    pages: Ember.computed('limit', 'content', function () {\n        var count, limit, pages;\n        count = Ember.isPresent(this.get('count'))\n            ? this.get('count')\n            : this.get('content.meta.count');\n        limit = this.get('limit');\n        pages = Math.ceil(count / limit);\n        if (pages > 0) {\n            return pages;\n        }\n        return false;\n    }),\n    columns: Ember.on(\n        'init',\n        Ember.observer(\n            'form',\n            'content.[]',\n            'intl.locale',\n            'groupBy',\n            'currentTemplate',\n            function () {\n                var _currentTemplate,\n                    column,\n                    columns,\n                    defaultColumns,\n                    extraColumns,\n                    field,\n                    form,\n                    form_objects,\n                    globalHide,\n                    i,\n                    intl,\n                    j,\n                    k,\n                    key,\n                    len,\n                    name,\n                    obj,\n                    objects,\n                    orderable,\n                    ref,\n                    showColumnsFromLS,\n                    shownColumns,\n                    static_fields,\n                    summableFieldTypes,\n                    summableFields,\n                    supportForOldFormat,\n                    tmpTemplate,\n                    translatedName,\n                    uses_mongo;\n                form = this.get('form');\n                shownColumns = [];\n                uses_mongo = this.get('Collector').uses_mongo(form);\n                // TODO: Hide some globally stupid fields that probably shouldn't even come from api\n                globalHide = ['send_sms', 'linker', 'user_linker', 'device'];\n                if (this.get('form_objects')) {\n                    objects = this.get('form_objects');\n                } else {\n                    objects = collector.getFormObjects(form);\n                }\n                if (this.get('type') === 'group') {\n                    objects = this.groupObjects(objects);\n                }\n                if (!objects) {\n                    return;\n                }\n                if (this.get('settings.localStorageKey')) {\n                    this.set('localStorageKey', this.get('settings.localStorageKey'));\n                }\n                if (this.get('localStorageKey')) {\n                    key = this.get('localStorageKey') + '_defaultColumns';\n                } else if (this.get('content.firstObject.constructor.modelName')) {\n                    key = this.get('content.firstObject.constructor.modelName') + '_defaultColumns';\n                }\n                supportForOldFormat = [];\n                if (localStorage.getItem(key)) {\n                    supportForOldFormat = JSON.parse(localStorage.getItem(key));\n                }\n                showColumnsFromLS = this.get('localStorageWrapper').getUserSetting(\n                    key,\n                    supportForOldFormat,\n                );\n                if (showColumnsFromLS && showColumnsFromLS.length > 0 && key) {\n                    shownColumns = showColumnsFromLS;\n                }\n                // skip default showColumns (and show all) if there are no columns defined in localstorage\n                //else if @get 'showColumns'\n                //    shownColumns = @get 'showColumns'\n\n                // save currentTemplate to localstorage so we can use it\n                _currentTemplate =\n                    this.get('content.firstObject.constructor.modelName') + '_currentTemplate';\n                if (this.get('currentTemplate')) {\n                    this.get('localStorageWrapper').setUserSetting(_currentTemplate, {\n                        columns: this.get('currentTemplate.columns'),\n                        name: this.get('currentTemplate.name'),\n                    });\n                    shownColumns = this.get('currentTemplate.columns').split(',');\n                }\n                // if currentTemplate is saved to localstorage, use it\n                if (this.get('localStorageWrapper').getUserSetting(_currentTemplate).columns) {\n                    tmpTemplate = this.get('localStorageWrapper').getUserSetting(_currentTemplate);\n                    shownColumns = tmpTemplate.columns.split(',');\n                }\n                if (shownColumns.length <= 0) {\n                    shownColumns = [];\n                    i = 0;\n                    for (k in objects) {\n                        obj = objects[k];\n                        i++;\n                        shownColumns.push(k);\n                    }\n                }\n                //@set('showColumns', shownColumns)\n                columns = Em.A([]);\n                defaultColumns = Em.A([]);\n                extraColumns = Em.A([]);\n                summableFieldTypes = this.get('summableFieldTypes');\n                summableFields = Em.A([]);\n                for (name in objects) {\n                    obj = objects[name];\n                    if (\n                        obj.features.hide_column ||\n                        obj.features.hide_tt4 ||\n                        name.slice(-6) === '_minus'\n                    ) {\n                        continue;\n                    }\n                    if (indexOf1.call(globalHide, name) >= 0) {\n                        continue;\n                    }\n                    if (this.get('settings.hideColumns')) {\n                        if (indexOf1.call(this.get('settings.hideColumns'), name) >= 0) {\n                            continue;\n                        }\n                    }\n                    translatedName = obj.name || this.get('intl').t('report.' + form + '.' + name);\n                    if (indexOf1.call(shownColumns, name) >= 0) {\n                    } else {\n                        //do not put defaultColumns here\n                        //defaultColumns.pushObject {name: translatedName, ext: name, obj: obj}\n                        if (\n                            !(\n                                name.indexOf('_minus', name.length - 6) !== -1 ||\n                                obj.features.hide_column\n                            )\n                        ) {\n                            if (obj.type !== 'multiselect_tmp') {\n                                if (!obj.ext) {\n                                    obj.ext = name;\n                                }\n                                extraColumns.pushObject({\n                                    name: translatedName,\n                                    ext: name,\n                                    obj: obj,\n                                });\n                            }\n                        }\n                    }\n                    columns.pushObject({\n                        name: translatedName,\n                        ext: name,\n                    });\n                    if (\n                        summableFieldTypes &&\n                        ((ref = obj.type), indexOf1.call(summableFieldTypes, ref) >= 0)\n                    ) {\n                        summableFields.pushObject({\n                            ext: name,\n                            type: obj.type,\n                        });\n                    }\n                }\n                // Add static columns here, like row_info stuff that is on every record\n                intl = this.get('intl');\n                static_fields = {\n                    'row_info.created': {\n                        name: intl.t('general.row_info.created'),\n                        ext: 'row_info.created',\n                        obj: {\n                            type: 'row_info',\n                            features: {},\n                            ext: 'row_info.created',\n                        },\n                        orderable: true,\n                    },\n                };\n                for (key in static_fields) {\n                    field = static_fields[key];\n                    if (indexOf1.call(shownColumns, key) >= 0) {\n                        continue;\n                    }\n                    extraColumns.pushObject(field);\n                    columns.pushObject(field);\n                }\n                // new way of showing columns\n                for (j = 0, len = shownColumns.length; j < len; j++) {\n                    column = shownColumns[j];\n                    if (static_fields[column] != null) {\n                        defaultColumns.pushObject(static_fields[column]);\n                        columns.pushObject(field);\n                        continue;\n                    }\n                    if (indexOf1.call(globalHide, column) >= 0) {\n                        continue;\n                    }\n                    if (this.get('settings.hideColumns')) {\n                        if (indexOf1.call(this.get('settings.hideColumns'), column) >= 0) {\n                            continue;\n                        }\n                    }\n                    // if form_objects are given as parameter, use them\n                    if (this.get('form_objects')) {\n                        form_objects = this.get('form_objects');\n                        obj = form_objects[column];\n                        translatedName = this.get('intl').t('report.' + form + '.' + column);\n                        if (obj.translation) {\n                            translatedName = this.get('intl').t(obj.translation);\n                        }\n                    } else if (column.indexOf('.') !== -1) {\n                        obj = collector.getFormObject(column);\n                        translatedName = this.get('intl').t('report.' + column);\n                    } else {\n                        obj = collector.getFormObject(form + '.' + column);\n                        translatedName = obj.name || this.getTranslation(form, column);\n                    }\n                    if (!obj) {\n                        continue;\n                    }\n                    if (\n                        obj.features.hide_column ||\n                        obj.features.hide_tt4 ||\n                        column.slice(-6) === '_minus'\n                    ) {\n                        continue;\n                    }\n                    if (uses_mongo && obj.type === 'database') {\n                        orderable = false;\n                    } else {\n                        orderable = true;\n                    }\n                    if (obj) {\n                        if (!obj.ext) {\n                            obj.ext = column;\n                        }\n                        defaultColumns.pushObject({\n                            name: htmlSafe(sanitize(translatedName)),\n                            ext: column,\n                            obj: obj,\n                            orderable: orderable,\n                        });\n                        columns.pushObject({\n                            name: htmlSafe(sanitize(translatedName)),\n                            ext: column,\n                        });\n                    }\n                }\n                if (this.get('groupBy')) {\n                    [defaultColumns, extraColumns] = this.getGroupColumns(\n                        defaultColumns,\n                        extraColumns,\n                    );\n                }\n                this.set('defaultColumns', defaultColumns);\n                this.set('extraColumns', extraColumns);\n                this.set('summableFields', summableFields);\n                return columns;\n            },\n        ),\n    ),\n    getGroupColumns: function (defaultColumns, extraColumns) {\n        var columnsToExtra, columnsToShow, defaultColumnsToShow;\n        if (!this.get('groupBy') || !this.get('content.firstObject')) {\n            return [defaultColumns, extraColumns];\n        }\n        defaultColumnsToShow = Object.keys(this.get('content.firstObject'));\n        columnsToShow = defaultColumnsToShow.map((ext) => {\n            return defaultColumns.find((column) => {\n                return ext === column.ext;\n            });\n        });\n        columnsToExtra = defaultColumnsToShow.map((ext) => {\n            return extraColumns.find((column) => {\n                return ext === column.ext;\n            });\n        });\n        columnsToShow = columnsToShow.compact().uniq();\n        columnsToExtra = columnsToExtra.compact().uniq();\n        return [columnsToShow, columnsToExtra];\n    },\n    getTranslation: function (form, column) {\n        if (form.substring(0, 18) === 'measurement-custom') {\n            // little hack to support measurement-custom form headers\n            form = 'tr';\n        }\n        //return @get('intl').t 'report.'+form+'.'+column\n        return this.get('Collector').getBestTranslation(form, column);\n    },\n    groupObjects: function (all_objects) {\n        var content, first_row, ret;\n        content = this.get('content');\n        if (content.length < 1) {\n            return null;\n        }\n        first_row = content[0];\n        ret = {};\n        $.each(all_objects, function (key, item) {\n            if (key in first_row) {\n                return (ret[key] = item);\n            }\n        });\n        return ret;\n    },\n    setLocalStorageColumns: function () {\n        var columns, key;\n        if (this.get('groupBy')) {\n            //If groupBy then dont set defaultColumns to local storage so they can be restored back when groupBy filter is removed\n            return;\n        }\n        //return if @get('currentTemplate') #Don't save template columns to LS so we can return to old state\n        columns = [];\n        if (this.get('localStorageKey')) {\n            key = this.get('localStorageKey') + '_defaultColumns';\n        } else if (this.get('content.firstObject.constructor.modelName')) {\n            key = this.get('content.firstObject.constructor.modelName') + '_defaultColumns';\n        }\n        this.get('defaultColumns').forEach(function (obj) {\n            return columns.push(obj.ext);\n        });\n        if (key) {\n            return this.get('localStorageWrapper').setUserSetting(key, columns);\n        }\n    }.observes('defaultColumns.[]'),\n    dates: Ember.computed('content', function () {\n        var dates, item, k, model, ret;\n        if (this.get('sortByDates')) {\n            model = this.get('content').sortBy('date');\n            dates = Em.A({});\n            model.forEach(function (item) {\n                var date;\n                date = item.get('date');\n                if (dates[date]) {\n                    return dates[date].rows.pushObject(item);\n                } else {\n                    return (dates[date] = {\n                        date: item.get('date'),\n                        rows: [item],\n                    });\n                }\n            });\n            ret = Em.A([]);\n            for (k in dates) {\n                item = dates[k];\n                ret.pushObject(item);\n            }\n            return ret;\n        }\n    }),\n    sumRow: Em.computed('content.[]', 'defaultColumns.[]', 'checked.[]', function () {\n        var columns, model, self, sortByDate, sumRow, summableFields, sums, unformatted_sumRow;\n        self = this;\n        sortByDate = null;\n        if (this.get('form') === 'abcense') {\n            sortByDate = this.get('content').sortBy('startdate');\n        } else {\n            sortByDate = this.get('content').sortBy('date');\n        }\n        if (this.get('checked.length') > 0) {\n            model = this.get('checked');\n        } else {\n            model = Ember.isPresent(this.get('content')) ? sortByDate : [];\n        }\n        columns = this.get('defaultColumns');\n        // TODO Should rewrite avi report to not use this general-report component\n        if (this.get('form') === 'avi') {\n            return;\n        }\n        if (!columns) {\n            return;\n        }\n        if (Ember.get(model, 'length') === 0) {\n            return;\n        }\n        summableFields = this.get('summableFields');\n        sumRow = Em.A([]);\n        unformatted_sumRow = Em.A([]);\n        if (!this.get('settings.rowSettings.hideCheckbox')) {\n            sumRow.pushObject('');\n            unformatted_sumRow.pushObject('');\n        }\n        sums = {};\n        model.forEach(function (item) {\n            return summableFields.forEach(function (field) {\n                var cell;\n                if (!(field.ext in sums)) {\n                    sums[field.ext] = 0;\n                }\n                if (item.get == null) {\n                    return;\n                }\n                cell = item.get(field.ext);\n                if (field.type === 'checkbox') {\n                    if (!sums[field.ext]) {\n                        sums[field.ext] = [0, 0];\n                    }\n                    if (item.get(field.ext)) {\n                        return sums[field.ext][0]++;\n                    } else {\n                        return sums[field.ext][1]++;\n                    }\n                } else if (field.type === 'dropdown_values') {\n                    if (!sums[field.ext]) {\n                        sums[field.ext] = [];\n                    }\n                    if (cell) {\n                        return sums[field.ext].push(cell);\n                    }\n                } else if (field.type === 'date') {\n                    if (Ember.typeOf(cell) === 'string' && cell.substring(0, 6) === 'count:') {\n                        return (sums[field.ext] += parseInt(cell.substring(6)));\n                    } else {\n                        sums[field.ext] = '';\n                    }\n                } else {\n                    return (sums[field.ext] += cell);\n                }\n            });\n        });\n        columns.forEach(function (column) {\n            var dropdownSums, field, sumToFixed;\n            field = column.ext;\n            dropdownSums = [];\n            if (column.obj.type === 'checkbox') {\n                sumRow.pushObject(\n                    self.Collector.format(true, column.obj, null, model) +\n                        ': ' +\n                        sums[field][0] +\n                        ' / ' +\n                        self.Collector.format(false, column.obj, null, model) +\n                        ': ' +\n                        sums[field][1],\n                );\n                return unformatted_sumRow.pushObject(\n                    self.Collector.format(true, column.obj, null, model) +\n                        ': ' +\n                        sums[field][0] +\n                        ' / ' +\n                        self.Collector.format(false, column.obj, null, model) +\n                        ': ' +\n                        sums[field][1],\n                );\n            } else if (field in sums) {\n                if (\n                    column.obj.type === 'number' &&\n                    !isNaN(sums[field]) &&\n                    !Number.isInteger(sums[field])\n                ) {\n                    sumToFixed = sums[field].toFixed(1);\n                    sumRow.pushObject(self.Collector.format(sumToFixed, column.obj, null, model));\n                    //unformatted_sumRow.pushObject self.Collector.format(sums[field], column.obj, null, model, 'sumrow').toFixed(1)\n                    //unformatted_sumRow.pushObject sums[field]\n                    return unformatted_sumRow.pushObject(\n                        self.Collector.format(sumToFixed, column.obj, null, model, 'sumrow'),\n                    );\n                } else if (column.obj.type === 'dropdown_values') {\n                    sums[field].forEach(function (opt) {\n                        return (dropdownSums[opt] = (dropdownSums[opt] || 0) + 1);\n                    });\n                    sumRow.pushObject(\n                        self.Collector.format(\n                            dropdownSums,\n                            column.obj,\n                            null,\n                            model,\n                            false,\n                            self.get('form'),\n                        ),\n                    );\n                    return unformatted_sumRow.pushObject(\n                        self.Collector.format(\n                            dropdownSums,\n                            column.obj,\n                            null,\n                            model,\n                            'sumrow',\n                            self.get('form'),\n                        ),\n                    );\n                } else {\n                    sumRow.pushObject(self.Collector.format(sums[field], column.obj, null, model));\n                    //unformatted_sumRow.pushObject self.Collector.format(sums[field], column.obj, null, model, 'sumrow')\n                    return unformatted_sumRow.pushObject(sums[field]);\n                }\n            } else {\n                sumRow.pushObject('');\n                return unformatted_sumRow.pushObject('');\n            }\n        });\n        this.set('unformatted_sumRow', unformatted_sumRow);\n        return sumRow;\n    }),\n    possiblyCalculateSumRow: function (\n        content,\n        format,\n        calculateSumRow = false,\n        hideFirstCheckbox = false,\n    ) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var columns, model, self, sortByDate, sumRow, summableFields, sums, unformatted_sumRow;\n            if (!calculateSumRow) {\n                resolve(false);\n            }\n            self = this;\n            sortByDate = null;\n            if (this.get('form') === 'abcense') {\n                sortByDate = content.sortBy('startdate');\n            } else {\n                sortByDate = content.sortBy('date');\n            }\n            if (this.get('checked.length') > 0) {\n                model = this.get('checked');\n            } else {\n                model = Ember.isPresent(content) ? sortByDate : [];\n            }\n            columns = this.get('defaultColumns');\n            // TODO Should rewrite avi report to not use this general-report component\n            if (this.get('form') === 'avi') {\n                return;\n            }\n            if (!columns) {\n                return;\n            }\n            if (Ember.get(model, 'length') === 0) {\n                return;\n            }\n            summableFields = this.get('summableFields');\n            sumRow = Em.A([]);\n            unformatted_sumRow = Em.A([]);\n            if (!hideFirstCheckbox) {\n                sumRow.pushObject('');\n                unformatted_sumRow.pushObject('');\n            }\n            sums = {};\n            model.forEach(function (item) {\n                return summableFields.forEach(function (field) {\n                    var cell;\n                    if (!(field.ext in sums)) {\n                        sums[field.ext] = 0;\n                    }\n                    if (item.get == null) {\n                        return;\n                    }\n                    cell = item.get(field.ext);\n                    if (field.type === 'checkbox') {\n                        if (!sums[field.ext]) {\n                            sums[field.ext] = [0, 0];\n                        }\n                        if (item.get(field.ext)) {\n                            return sums[field.ext][0]++;\n                        } else {\n                            return sums[field.ext][1]++;\n                        }\n                    } else if (field.type === 'dropdown_values') {\n                        if (!sums[field.ext]) {\n                            sums[field.ext] = [];\n                        }\n                        if (cell) {\n                            return sums[field.ext].push(cell);\n                        }\n                    } else if (field.type === 'date') {\n                        if (Ember.typeOf(cell) === 'string' && cell.substring(0, 6) === 'count:') {\n                            return (sums[field.ext] += parseInt(cell.substring(6)));\n                        } else {\n                            sums[field.ext] = '';\n                        }\n                    } else {\n                        return (sums[field.ext] += cell);\n                    }\n                });\n            });\n            columns.forEach(function (column) {\n                var dropdownSums, field;\n                field = column.ext;\n                dropdownSums = [];\n                if (column.obj.type === 'checkbox') {\n                    sumRow.pushObject(\n                        self.Collector.format(true, column.obj, null, model) +\n                            ': ' +\n                            sums[field][0] +\n                            ' / ' +\n                            self.Collector.format(false, column.obj, null, model) +\n                            ': ' +\n                            sums[field][1],\n                    );\n                    return unformatted_sumRow.pushObject(\n                        self.Collector.format(true, column.obj, null, model) +\n                            ': ' +\n                            sums[field][0] +\n                            ' / ' +\n                            self.Collector.format(false, column.obj, null, model) +\n                            ': ' +\n                            sums[field][1],\n                    );\n                } else if (field in sums) {\n                    if (\n                        column.obj.type === 'number' &&\n                        !isNaN(sums[field]) &&\n                        !Number.isInteger(sums[field])\n                    ) {\n                        sumRow.pushObject(\n                            parseFloat(\n                                self.Collector.format(sums[field], column.obj, null, model),\n                            ).toFixed(1),\n                        );\n                        //unformatted_sumRow.pushObject self.Collector.format(sums[field], column.obj, null, model, 'sumrow').toFixed(1)\n                        //unformatted_sumRow.pushObject sums[field]\n                        return unformatted_sumRow.pushObject(\n                            parseFloat(\n                                self.Collector.format(\n                                    sums[field],\n                                    column.obj,\n                                    null,\n                                    model,\n                                    'sumrow',\n                                ),\n                            ).toFixed(1),\n                        );\n                    } else if (column.obj.type === 'dropdown_values') {\n                        sums[field].forEach(function (opt) {\n                            return (dropdownSums[opt] = (dropdownSums[opt] || 0) + 1);\n                        });\n                        sumRow.pushObject(\n                            self.Collector.format(\n                                dropdownSums,\n                                column.obj,\n                                null,\n                                model,\n                                false,\n                                self.get('form'),\n                            ),\n                        );\n                        return unformatted_sumRow.pushObject(\n                            self.Collector.format(\n                                dropdownSums,\n                                column.obj,\n                                null,\n                                model,\n                                'sumrow',\n                                self.get('form'),\n                            ),\n                        );\n                    } else {\n                        sumRow.pushObject(\n                            self.Collector.format(sums[field], column.obj, null, model),\n                        );\n                        //unformatted_sumRow.pushObject self.Collector.format(sums[field], column.obj, null, model, 'sumrow')\n                        return unformatted_sumRow.pushObject(sums[field]);\n                    }\n                } else {\n                    sumRow.pushObject('');\n                    return unformatted_sumRow.pushObject('');\n                }\n            });\n            if (format) {\n                return resolve(sumRow);\n            } else {\n                console.log(unformatted_sumRow);\n                return resolve(unformatted_sumRow);\n            }\n        });\n    },\n    hasPreviousPage: Ember.computed('offset', 'page', 'content', 'limit', function () {\n        return this.get('offset') !== 0;\n    }),\n    hasNextPage: Ember.computed('offset', 'limit', 'page', 'content', function () {\n        return this.get('offset') + this.get('limit') < this.get('content.meta.count');\n    }),\n    checked: Em.on('init', function () {\n        return this.set('checked', Em.A([]));\n    }),\n    checkClass: Em.computed('checked.[]', function () {\n        if (this.get('checked.length') === 0) {\n            return 'unchecked';\n        } else if (this.get('checked.length') === this.get('content.length')) {\n            return 'checked';\n        } else {\n            return 'unchecked';\n        }\n    }),\n    typeObserver: function () {\n        if (this.get('type') === 'group') {\n            return this.set('showCheckbox', false);\n        }\n    }.observes('type'),\n    getExportCols: function (row, cols) {\n        var col, j, len, obj;\n        obj = Em.Object.create();\n        for (j = 0, len = cols.length; j < len; j++) {\n            col = cols[j];\n            obj.set(col, row[col]);\n        }\n        return obj;\n    },\n    showGpsButton: Ember.computed('_showGpsButton', 'defaultColumns.[]', function () {\n        var defaultfields, extrafields, gpsfound;\n        if (this.get('_showGpsButton')) {\n            return true;\n        }\n        gpsfound = false;\n        defaultfields = this.get('defaultColumns');\n        if (!defaultfields) {\n            return;\n        }\n        if (this.get('form') === !'worktime') {\n            return;\n        }\n        defaultfields.forEach(function (field) {\n            if (field.ext === 'location' || field.ext === 'end_location') {\n                return (gpsfound = true);\n            }\n        });\n        extrafields = this.get('extraColumns');\n        extrafields.forEach(function (field) {\n            if (field.ext === 'location' || field.ext === 'end_location') {\n                return (gpsfound = true);\n            }\n        });\n        return gpsfound;\n    }),\n    selectedRows: Ember.computed('checked.[]', function () {\n        return this.get('checked').mapBy('id').join(',');\n    }),\n    updateMarkers: Em.observer('checked.[]', function () {\n        if (this.get('showGpsMap')) {\n            return this.setMapMarkers();\n        }\n    }),\n    setProjectMarkers: function (projects) {\n        var d, locs;\n        d = new $.Deferred();\n        locs = [];\n        projects.forEach((project) => {\n            var id, loc, projLoc;\n            if (project.get('location_map')) {\n                id = project.get('id');\n                projLoc = project.get('location_map');\n                loc = {};\n                loc.project = JSON.parse(projLoc);\n                loc.project.label = project.get('name');\n                return locs.push(loc);\n            }\n        });\n        this.set('projectmarkers', locs);\n        d.resolve();\n        return d;\n    },\n    setWorktimeMarkers: function (rows) {\n        var d, i, locs, totalLength;\n        d = new $.Deferred();\n        locs = [];\n        i = 0;\n        totalLength = rows.get('length');\n        rows.forEach((row) => {\n            var creator, name, project, user;\n            if (!row.get('location') && !row.get('end_location') && !row.get('location_map')) {\n                totalLength--;\n                return;\n            }\n            project = row.get('project');\n            user = row.get('user');\n            if (user) {\n                name = user.get('lastname') + ' ' + user.get('firstname');\n            } else {\n                creator = row.get('creator');\n                name = creator.get('lastname') + ' ' + creator.get('firstname');\n            }\n            return this.get('store')\n                .query('project', {\n                    id: project.get('id'),\n                })\n                .then((projects) => {\n                    var loc, projLoc, record;\n                    record = projects.get('firstObject');\n                    projLoc = record.get('location_map');\n                    loc = {};\n                    if (row.get('location')) {\n                        loc.wStartLoc = JSON.parse(row.get('location'));\n                    }\n                    loc.wLabel = name;\n                    if (row.get('end_location')) {\n                        loc.wEndLoc = JSON.parse(row.get('end_location'));\n                    }\n                    if (projLoc) {\n                        loc.project = JSON.parse(projLoc);\n                        loc.project.label = project.get('name');\n                    }\n                    locs.push(loc);\n                    if (++i === totalLength) {\n                        this.set('wtmarkers', locs);\n                        return d.resolve();\n                    }\n                });\n        });\n        return d;\n    },\n    setMapMarkers: function () {\n        var rows;\n        //get data from checked (if there is checked)\n        if (this.get('checked').length > 0) {\n            rows = this.get('checked');\n        } else {\n            rows = this.get('content');\n        }\n        if (rows.get('firstObject.project')) {\n            //timetracker list route\n            return this.setWorktimeMarkers(rows); //projects route\n        } else {\n            return this.setProjectMarkers(rows);\n        }\n    },\n    moreLinksClass: Em.computed('checked.[]', function () {\n        if (this.get('checked.length') === 0) {\n            return 'disabled';\n        }\n    }),\n    canLock: Em.computed(function () {\n        return this.get('Collector').testNeeds(['userlevel=5']);\n    }),\n    getPdfFilters: function (rows) {\n        var c, filter, filterName, filterValue, j, len, pdf_filters_body, ref, value, values;\n        c = this.get('Collector');\n        if (Em.isEmpty(this.get('settings.filters'))) {\n            return [];\n        }\n        pdf_filters_body = [];\n        ref = this.get('settings.filters');\n        for (j = 0, len = ref.length; j < len; j++) {\n            filter = ref[j];\n            if (filter.get('value') && filter.get('name') !== 'groupBy') {\n                if (Ember.isArray(filter.get('value')) && filter.get('value.length') === 0) {\n                    continue;\n                }\n                if (filter.get('type') === 'database') {\n                    if (typeof filter.get('value') !== 'string') {\n                        value = [];\n                    } else {\n                        value = filter.get('value').split(',');\n                    }\n                } else {\n                    value = filter.get('value');\n                }\n                if (filter.get('bindto') && !filter.get('field')) {\n                    filterValue = value;\n                    filterName = this.get('intl').t('filters.free_search');\n                } else {\n                    if (Ember.isArray(value)) {\n                        values = '';\n                        value.forEach(function (id, index) {\n                            id = parseInt(id);\n                            values += c._format_(\n                                id,\n                                filter.get('form'),\n                                filter.get('field'),\n                                'pdf',\n                                rows,\n                            );\n                            if (index + 1 < value.length) {\n                                return (values += ', ');\n                            }\n                        });\n                        filterValue = values;\n                    } else {\n                        filterValue = c._format_(\n                            value,\n                            filter.get('form'),\n                            filter.get('field'),\n                            'pdf',\n                            rows,\n                        );\n                    }\n                    filterName = this.get('intl').t(filter.get('form') + '.' + filter.get('name'));\n                }\n                if (filterValue != null && filterValue) {\n                    filterValue = filterValue;\n                }\n                //if empty name (own fields), get name from collector service\n                if (Em.isEmpty(filterName)) {\n                    filterName = c.field(filter.get('form'), filter.get('field')).translated_name;\n                }\n                if (this.get('full_pdf_export')) {\n                    pdf_filters_body.push([\n                        {\n                            text: filterName + ': ' + filterValue,\n                            style: 'headertext',\n                        },\n                    ]);\n                } else {\n                    pdf_filters_body.push([filterName + ':', filterValue]);\n                }\n            }\n        }\n        if (pdf_filters_body.length && this.get('full_pdf_export')) {\n            //add some margin between filters and rest of the pdf\n            pdf_filters_body.push([\n                {\n                    text: '',\n                    style: 'marginTop',\n                },\n            ]);\n        }\n        return pdf_filters_body;\n    },\n    littleBitUglyPdfExportMethod: function (\n        format = null,\n        includeAllPages = false,\n        topHeader = false,\n        exportParams,\n    ) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var getImageUri, pdf_filters, self, store;\n            self = this;\n            store = this.get('store');\n            this.set('full_pdf_export', false);\n            pdf_filters = null;\n            getImageUri = function (value, index) {\n                var d, img;\n                d = new $.Deferred();\n                img = new Image();\n                img.onload = function () {\n                    var canvas, ctx, dataUrl;\n                    canvas = document.createElement('canvas');\n                    canvas.width = this.width;\n                    canvas.height = this.height;\n                    ctx = canvas.getContext('2d');\n                    ctx.drawImage(img, 0, 0);\n                    dataUrl = canvas.toDataURL();\n                    return d.resolve({\n                        data: dataUrl,\n                        index: index,\n                    });\n                };\n                img.setAttribute('crossOrigin', 'anonymous');\n                img.src = config.APP.COLLECTOR_API_URL + '/' + value.thumb;\n                return d;\n            };\n            return this.Collector.getLogo().then((logo) => {\n                var columns,\n                    company,\n                    d,\n                    filteredColumns,\n                    get_status_info,\n                    pdf_output,\n                    pdf_output_last,\n                    report_name_text,\n                    row_ids,\n                    templateColumnsNotInDefault,\n                    title_row,\n                    tmp_rows,\n                    widths;\n                company = self.get('session.currentUser.company');\n                if (company == null) {\n                    company = '';\n                }\n                report_name_text = company;\n                pdf_output = [];\n                pdf_output_last = [];\n                //title row\n                title_row = [];\n                columns = [];\n                widths = [];\n                row_ids = [];\n                filteredColumns = [];\n                get_status_info = false;\n                if (exportParams.template) {\n                    filteredColumns = exportParams.template.get('columns').split(',');\n                }\n                templateColumnsNotInDefault = this.get('extraColumns').filter((column) => {\n                    return filteredColumns.includes(Ember.get(column, 'ext'));\n                });\n                this.get('defaultColumns')\n                    .concat(templateColumnsNotInDefault)\n                    .forEach(function (row) {\n                        var ref, status_last_changed, title_text;\n                        if (filteredColumns.length > 0 && filteredColumns.indexOf(row.ext) === -1) {\n                            return;\n                        }\n                        columns.push(row.obj);\n                        if (\n                            (ref = Em.get(row, 'obj.type')) === 'textbox' ||\n                            ref === 'textarea' ||\n                            ref === 'textarea_varchar'\n                        ) {\n                            widths.push(80);\n                        } else {\n                            widths.push('auto');\n                        }\n                        if (row.name.string != null) {\n                            title_row.push(row.name.string);\n                        } else {\n                            title_row.push(row.name);\n                        }\n                        if (row.obj.type === 'status' && Ember.get(exportParams, 'statusInfo')) {\n                            get_status_info = true;\n                            status_last_changed = {\n                                type: 'textbox',\n                                ext: 'status_last_changed',\n                                clickable: false,\n                            };\n                            columns.push(status_last_changed);\n                            widths.push('auto');\n                            title_text = self.get('intl').t('export.pdf.status_last_change');\n                            return title_row.push(title_text.toString());\n                        }\n                    });\n                pdf_output.push(title_row);\n                d = $.Deferred();\n                tmp_rows = new Em.RSVP.Promise((resolve, reject) => {\n                    var key, param, params, ref;\n                    //d = $.Deferred();\n                    if (self.get('checked').length > 0 && !includeAllPages) {\n                        return resolve(self.get('checked'));\n                    } else {\n                        params = {\n                            limit: 'all',\n                            sideload: true,\n                        };\n                        // support for additional query-params\n                        if (exportParams.extraParams) {\n                            ref = exportParams.extraParams;\n                            for (key in ref) {\n                                param = ref[key];\n                                params[key] = param;\n                            }\n                        }\n                        if (self.get('settings.filters')) {\n                            self.get('settings.filters').forEach(function (filter) {\n                                if (filter.get('value') && filter.get('field') !== 'status') {\n                                    if (filter.get('bindto') && !filter.get('field')) {\n                                        return (params[filter.get('bindto')] = filter.get('value'));\n                                    } else if (\n                                        filter.get('form') !== self.get('form').underscore()\n                                    ) {\n                                        return (params[\n                                            filter.get('form').concat('[', filter.get('field'), ']')\n                                        ] = filter.get('value'));\n                                    } else if (\n                                        self.get('customQueryparams') &&\n                                        self.get('customQueryparamsKey') === filter.get('field')\n                                    ) {\n                                        return (params[self.get('customQueryparams')] =\n                                            filter.get('value'));\n                                    } else {\n                                        return (params[filter.get('field')] = filter.get('value'));\n                                    }\n                                }\n                            });\n                        }\n                        if (self.get('settings.sortByColumn')) {\n                            params.order = self.get('settings.sortByColumn');\n                        }\n                        // when data is grouped always use the grouping as order .. copied from app\\pods\\timetracker\\worktime-list\\route.coffee\n                        if (params.groupBy) {\n                            params.order = params.groupBy;\n                        }\n                        if (self.get('status') !== 'all') {\n                            params.status = self.get('status');\n                        }\n                        return self\n                            .get('store')\n                            .query(self.get('form'), params)\n                            .then((rows) => {\n                                return resolve(rows);\n                            });\n                    }\n                });\n                tmp_rows.then(\n                    (rows) => {\n                        var statuspromise;\n                        if (get_status_info) {\n                            row_ids = rows.mapBy('id');\n                            statuspromise = self.get('Collector').ttapi({\n                                url: 'get_status_info',\n                                method: 'post',\n                                data: {\n                                    ids: row_ids,\n                                    form: self.get('form'),\n                                },\n                            });\n                        } else {\n                            statuspromise = new Em.RSVP.Promise((resolve) => {\n                                return resolve();\n                            });\n                        }\n                        return statuspromise.then((statusrows) => {\n                            var pdf_filters_body;\n                            // add filters to pdf-page\n                            pdf_filters_body = self.getPdfFilters(rows);\n                            if (pdf_filters_body.length) {\n                                pdf_filters = {\n                                    table: {\n                                        body: pdf_filters_body,\n                                    },\n                                    layout: 'noBorders',\n                                };\n                            }\n                            rows.forEach(function (row) {\n                                var statusrow;\n                                if (typeof row.getProperties !== 'function') {\n                                    row = Em.Object.create(row);\n                                }\n                                if (get_status_info) {\n                                    statusrow = statusrows[row.id];\n                                    if (statusrow) {\n                                        row.set(\n                                            'status_last_changed',\n                                            moment(statusrow.datetime).format('L') +\n                                                ' ' +\n                                                moment(statusrow.datetime).format('LT') +\n                                                '\\n' +\n                                                statusrow.user,\n                                        );\n                                    } else {\n                                        row.set('status_last_changed', '');\n                                    }\n                                }\n                                if (\n                                    exportParams.imgLocation != null &&\n                                    exportParams.imgLocation === 'afterReport'\n                                ) {\n                                    pdf_output.push(\n                                        self.formatCollectorFieldsToPdfArray(\n                                            columns,\n                                            row,\n                                            'row',\n                                            false,\n                                            false,\n                                            false,\n                                            'thumbnails',\n                                        ),\n                                    );\n                                    return pdf_output_last.push(\n                                        self.formatImagesToPdf(columns, row, true),\n                                    );\n                                } else if (exportParams.imgLocation != null) {\n                                    return pdf_output.push(\n                                        self.formatCollectorFieldsToPdfArray(\n                                            columns,\n                                            row,\n                                            'row',\n                                            false,\n                                            false,\n                                            false,\n                                            exportParams.imgLocation,\n                                        ),\n                                    );\n                                } else {\n                                    return pdf_output.push(\n                                        self.formatCollectorFieldsToPdfArray(\n                                            columns,\n                                            row,\n                                            'row',\n                                            false,\n                                            false,\n                                            false,\n                                            'showImages',\n                                        ),\n                                    );\n                                }\n                            });\n                            return Em.RSVP.Promise.all(pdf_output).then(function (output) {\n                                if (pdf_output_last) {\n                                    return Em.RSVP.Promise.all(pdf_output_last).then(\n                                        function (output_last) {\n                                            var element, img, imgTable, j, l, len, len1;\n                                            imgTable = [];\n                                            for (j = 0, len = output_last.length; j < len; j++) {\n                                                element = output_last[j];\n                                                for (l = 0, len1 = element.length; l < len1; l++) {\n                                                    img = element[l];\n                                                    imgTable.push(img['value']);\n                                                }\n                                            }\n                                            //table: {\n                                            //    body: [\n                                            //        [img[\"name\"], img[\"value\"]]\n                                            //    ]\n                                            //}\n                                            //pageBreak: \"before\"\n                                            return d.resolve(\n                                                output,\n                                                rows,\n                                                includeAllPages,\n                                                imgTable,\n                                            );\n                                        },\n                                    );\n                                } else {\n                                    return d.resolve(output, rows, includeAllPages);\n                                }\n                            });\n                        });\n                    },\n                    function () {\n                        return d.reject();\n                    },\n                );\n                return d.then(function (\n                    pdf_output,\n                    allRowsForExport,\n                    includeAllPages = false,\n                    output_last = [],\n                ) {\n                    var assetsfolder,\n                        checkedRows,\n                        docDefinition,\n                        dropdownSums,\n                        first,\n                        hideCheckbox,\n                        orientation,\n                        pdf_content,\n                        rowidList,\n                        sumRow,\n                        sumTheseRows,\n                        sumrows,\n                        sums;\n                    //return\n                    // add sum row to pdf\n                    sumRow = [];\n                    first = false;\n                    hideCheckbox = self.get('settings.rowSettings.hideCheckbox');\n                    sums = {};\n                    checkedRows = self.get('checked');\n                    //console.log checkedRows\n                    sumTheseRows =\n                        checkedRows.length > 0 && !includeAllPages ? checkedRows : allRowsForExport;\n                    rowidList = [];\n                    sumTheseRows.forEach(function (item) {\n                        rowidList.push(item.get('id'));\n                        return self.get('summableFields').forEach(function (field) {\n                            var cell;\n                            if (!(field.ext in sums)) {\n                                sums[field.ext] = 0;\n                            }\n                            cell = item.get(field.ext);\n                            if (field.type === 'checkbox') {\n                                if (!sums[field.ext]) {\n                                    sums[field.ext] = [0, 0];\n                                }\n                                if (item.get(field.ext)) {\n                                    return sums[field.ext][0]++;\n                                } else {\n                                    return sums[field.ext][1]++;\n                                }\n                            } else if (field.type === 'dropdown_values') {\n                                if (!sums[field.ext]) {\n                                    sums[field.ext] = [];\n                                }\n                                if (cell) {\n                                    return sums[field.ext].push(cell);\n                                }\n                            } else if (field.type === 'date') {\n                                if (\n                                    Ember.typeOf(cell) === 'string' &&\n                                    cell.substring(0, 6) === 'count:'\n                                ) {\n                                    return (sums[field.ext] += parseInt(cell.substring(6)));\n                                } else {\n                                    sums[field.ext] = '';\n                                }\n                            } else {\n                                return (sums[field.ext] += cell);\n                            }\n                        });\n                    });\n                    sumrows = Em.A([]);\n                    dropdownSums = [];\n                    columns.forEach(function (column) {\n                        var field;\n                        field = column.ext;\n                        if (column.type === 'checkbox') {\n                            return sumrows.pushObject(\n                                self.Collector.format(true, column, null, checkedRows) +\n                                    ': ' +\n                                    sums[field][0] +\n                                    ' / ' +\n                                    self.Collector.format(false, column, null, checkedRows) +\n                                    ': ' +\n                                    sums[field][1],\n                            );\n                        } else if (column.type === 'dropdown_values') {\n                            sums[field].forEach(function (opt) {\n                                return (dropdownSums[opt] = (dropdownSums[opt] || 0) + 1);\n                            });\n                            return sumrows.pushObject(\n                                self.Collector.format(\n                                    dropdownSums,\n                                    column,\n                                    null,\n                                    checkedRows,\n                                    'sumrow',\n                                    self.get('form'),\n                                ),\n                            );\n                        } else if (field in sums) {\n                            return sumrows.pushObject(\n                                self.Collector.format(\n                                    sums[field],\n                                    column,\n                                    null,\n                                    checkedRows,\n                                    'sumrow',\n                                ),\n                            );\n                        } else {\n                            return sumrows.pushObject('');\n                        }\n                    });\n                    sumrows.forEach(function (str) {\n                        if (!first || self.get('type') === 'group') {\n                            return sumRow.push('' + str);\n                        }\n                    });\n                    pdf_output.push(sumRow);\n                    pdf_content = [];\n                    if (!logo) {\n                        logo = self.get('moveniumLogo');\n                    }\n                    pdf_content.push({\n                        columns: [\n                            {\n                                fit: [120, 40],\n                                image: logo,\n                                margin: [0, 0, 0, 20],\n                            },\n                            {\n                                width: '*',\n                                text: report_name_text,\n                                alignment: 'right',\n                                fontSize: 14,\n                                margin: [0, 0, 0, 10],\n                            },\n                        ],\n                    });\n                    if (topHeader) {\n                        pdf_content.push({\n                            text: topHeader,\n                            fontSize: 20,\n                        });\n                    }\n                    if (pdf_filters) {\n                        pdf_content.push(pdf_filters);\n                        pdf_content.push({\n                            text: ' ', // add one empty row\n                        });\n                    }\n                    //table\n                    pdf_content.push({\n                        table: {\n                            headerRows: 1,\n                            widths: widths,\n                            body: pdf_output,\n                        },\n                        layout: 'lightHorizontalLines',\n                        fontSize: 10,\n                    });\n                    if (Ember.get(exportParams, 'signature')) {\n                        pdf_content.push({\n                            style: 'marginTop',\n                            table: {\n                                widths: ['auto', 140, 30, 'auto', 140],\n                                body: [\n                                    [\n                                        {\n                                            border: [false, true, false, false],\n                                            text:\n                                                self.get('intl').t('report.worktask.signature') +\n                                                ':',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: '',\n                                        },\n                                        {\n                                            border: [false, false, false, false],\n                                            text: '',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: self.get('intl').t('thereport.print_name') + ':',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: '',\n                                        },\n                                    ],\n                                ],\n                            },\n                        });\n                    }\n                    if (Ember.get(exportParams, 'dateAndPlace')) {\n                        pdf_content.push({\n                            style: 'marginTop',\n                            table: {\n                                widths: ['auto', 140, 55, 'auto', 140],\n                                body: [\n                                    [\n                                        {\n                                            border: [false, true, false, false],\n                                            text: self.get('intl').t('thereport.date') + ':',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: '',\n                                        },\n                                        {\n                                            border: [false, false, false, false],\n                                            text: '',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: self.get('intl').t('thereport.place') + ':',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: '',\n                                        },\n                                    ],\n                                ],\n                            },\n                        });\n                    }\n                    orientation = Ember.get(exportParams, 'orientation')\n                        ? Ember.get(exportParams, 'orientation')\n                        : 'landscape';\n                    pdf_content.push(output_last);\n                    docDefinition = {\n                        footer: (currentPage, pageCount) => {\n                            return self.getFooter(currentPage, pageCount);\n                        },\n                        content: pdf_content,\n                        pageSize: 'A4',\n                        pageOrientation: orientation,\n                        pageMargins: [15, 15, 15, 15],\n                        styles: {\n                            footer: {\n                                fontSize: 8,\n                                color: 'grey',\n                            },\n                            marginTop: {\n                                margin: [0, 40, 0, 0],\n                            },\n                        },\n                    };\n                    //console.log(JSON.stringify(docDefinition, null, 4))\n                    //return\n                    if (format === 'base64') {\n                        assetsfolder = getAssetFolder('assets');\n                        return getScriptsInOrder([\n                            assetsfolder + 'pdfmake_v0.1.68.min.js',\n                            assetsfolder + 'vfs_fonts_v0.1.68.min.js',\n                        ]).then(() => {\n                            return createPdf(docDefinition)._createDoc({}, () => {\n                                var item, j, len, pageSize, ref;\n                                ref = docDefinition.content;\n                                for (j = 0, len = ref.length; j < len; j++) {\n                                    item = ref[j];\n                                    if (item.table != null && item._maxWidth > 842) {\n                                        pageSize = {\n                                            height: item._maxWidth,\n                                            width: item._maxWidth / Math.sqrt(2),\n                                        };\n                                        continue;\n                                    }\n                                }\n                                docDefinition.pageSize = pageSize;\n                                return createPdf(docDefinition).getBase64(function (cb) {\n                                    if (includeAllPages) {\n                                        return resolve({\n                                            pdf: cb,\n                                            rowids: rowidList,\n                                        });\n                                    } else {\n                                        return resolve(cb);\n                                    }\n                                });\n                            });\n                        });\n                    } else {\n                        return resolve(docDefinition);\n                    }\n                });\n            });\n        });\n    },\n    getPdfAttachmentForEmail: function (includeAllPages, params) {\n        if (\n            this.get('form') === 'diary' &&\n            this.get('checked.length') > 0 &&\n            Ember.get(params, 'type') === 'export_pdf_full'\n        ) {\n            return this.export_special_pdf('diary', moment.locale(), params);\n        } else if (this.get('form') === 'diaryreport' && this.get('checked.length') > 0) {\n            return this.createWorksitediaryPdf(this.get('checked'), 'base64');\n        } else if (Ember.get(params, 'type') === 'export_pdf_full') {\n            return this.getTtapiPdf('base64', params);\n        } else if (Ember.get(params, 'type') === 'export_excel') {\n            return this.createExcel(params, true);\n        } else {\n            return this.littleBitUglyPdfExportMethod(\n                'base64',\n                includeAllPages,\n                this.get('emailTitle'),\n                params,\n            );\n        }\n    },\n    thereIsCheckedRows: Ember.computed.gt('checked.length', 0),\n    formContainsApprovedStatus: Ember.computed('form', function () {\n        var field, fields, found;\n        fields = this.get('Collector').fields(this.get('form'));\n        found = false;\n        for (field in fields) {\n            if (\n                fields[field].type === 'status' &&\n                !fields[field].features.readonly &&\n                indexOf1.call(fields[field].options, 'approved') >= 0\n            ) {\n                found = true;\n            }\n        }\n        return found;\n    }),\n    statusFieldIsVisible: Ember.computed('defaultColumns.[]', function () {\n        if (this.get('defaultColumns') && this.get('defaultColumns').findBy('ext', 'status')) {\n            return true;\n        }\n    }),\n    showApprovalLinkSelection: Ember.computed('thereIsCheckedRows', function () {\n        if (this.get('thereIsCheckedRows') && this.get('formContainsApprovedStatus')) {\n            return true;\n        } else if (this.get('customerSettings').checkSetting('email_approval_for_all')) {\n            return true;\n        }\n        return false;\n    }),\n    showMassedit: Ember.computed('settings.massedit', function () {\n        if (!this.get('Collector').testNeeds(['userlevel=3,4,5,6'])) {\n            return false;\n        }\n        return this.get('settings.massedit');\n    }),\n    _addHistoryForSentRows: function (email, form, rowids) {\n        var text;\n        text = this.get('intl').t('general.history_approval_link_sent', {\n            email: email,\n        });\n        return rowids.forEach((rowid) => {\n            return this.get('Collector').ajax({\n                method: 'put',\n                url: form + 's/' + rowid,\n                data: JSON.stringify({\n                    _history: text,\n                }),\n            });\n        });\n    },\n    _getParamsForFetchingRows: function (exclude = []) {\n        var params;\n        params = {\n            sideload: true,\n        };\n        if (!(indexOf1.call(exclude, 'limit') >= 0)) {\n            params.limit = 'all';\n        }\n        if (this.get('settings.filters')) {\n            this.get('settings.filters').forEach((filter) => {\n                var key;\n                if (filter.get('value') && filter.get('field') !== 'status') {\n                    if (filter.get('bindto') && !filter.get('field')) {\n                        return (params[filter.get('bindto')] = filter.get('value'));\n                    } else if (filter.get('form') !== this.get('form')) {\n                        key = filter.get('form') + '[' + filter.get('field') + ']';\n                        return (params[key] = filter.get('value'));\n                    } else {\n                        return (params[filter.get('field')] = filter.get('value'));\n                    }\n                }\n            });\n        }\n        if (this.get('settings.sortByColumn') && !(indexOf1.call(exclude, 'sort') >= 0)) {\n            params.order = this.get('settings.sortByColumn');\n        }\n        if (this.get('status') !== 'all') {\n            params.status = this.get('status');\n        }\n        return params;\n    },\n    allPagesSelected: Ember.computed(\n        'content.meta.count',\n        'checked.length',\n        'content.length',\n        function () {\n            return (\n                this.get('content.meta.count') > this.get('checked.length') &&\n                this.get('checked.length') === this.get('content.length')\n            );\n        },\n    ),\n    emailSendingCount: Ember.computed(\n        'allPagesSelected',\n        'content.meta.count',\n        'checked.length',\n        function () {\n            if (this.get('allPagesSelected')) {\n                return this.get('content.meta.count');\n            } else {\n                return this.get('checked.length');\n            }\n        },\n    ),\n    validateEmail: function (email) {\n        return !/^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i.test(\n            email,\n        );\n    },\n    export_special_pdf: function (name, lang = 'fi', params) {\n        var postParams, url;\n        url = 'pdf/' + name;\n        postParams = {\n            form: this.get('form'),\n            lang: lang,\n            filters: JSON.stringify(this.getRawFilters()),\n            type: 'base64',\n        };\n        if (this.get('checked').length > 0) {\n            postParams.id = this.get('checked').mapBy('id').join(',');\n        }\n        if (params.signature) {\n            postParams.signature = params.signature;\n        }\n        if (params.dateAndPlace) {\n            postParams.dateAndPlace = params.dateAndPlace;\n        }\n        return this.get('Collector').ttapi({\n            method: 'post',\n            dataType: 'text',\n            url: url,\n            data: postParams,\n        });\n    },\n    getRawFilters: function () {\n        var params;\n        params = {};\n        if (this.get('settings.filters')) {\n            this.get('settings.filters').forEach((filter) => {\n                var add;\n                if (Ember.isArray(filter.get('value')) && filter.get('value').length === 0) {\n                } else if (filter.get('bindto')) {\n                    return (params['q'] = filter.get('value'));\n                } else if (filter.get('value') && filter.get('subform')) {\n                    add = {};\n                    add[filter.get('field')] = filter.get('value');\n                    return (params[filter.get('form')] = add);\n                } else if (filter.get('value') && filter.get('field') !== 'status') {\n                    return (params[filter.get('field')] = filter.get('value'));\n                }\n            });\n        }\n        return params;\n    },\n    getTtapiPdf: function (format = null, params = {}, type = 'row') {\n        var filters, postParams, rawFilters, ref, url;\n        url = 'pdf/' + type;\n        if (params.extraParams) {\n            rawFilters = this.getRawFilters();\n            if ((ref = params.extraParams.type) === 'tr' || ref === 'mvr') {\n                if (rawFilters.date) {\n                    delete rawFilters.date;\n                }\n            }\n            filters = Object.assign(rawFilters, params.extraParams);\n        } else {\n            filters = this.getRawFilters();\n        }\n        postParams = {\n            form: this.form.includes('measurement-custom') ? this.form.underscore() : this.form,\n            lang: moment.locale(),\n            filters: JSON.stringify(filters),\n        };\n        if (this.get('checked').length !== 0) {\n            postParams.id = this.get('checked').mapBy('id').join(',');\n        }\n        if (params.template) {\n            postParams.template = Ember.get(params, 'template.id');\n        }\n        if (params.signature) {\n            postParams.signature = params.signature;\n        }\n        if (params.dateAndPlace) {\n            postParams.dateAndPlace = params.dateAndPlace;\n        }\n        if (format) {\n            postParams.type = format;\n        }\n        return this.get('Collector').ttapi({\n            method: 'post',\n            dataType: 'text',\n            url: url,\n            data: postParams,\n        });\n    },\n    statusChanged: function (toStatus) {\n        if (\n            toStatus === 'approved' &&\n            this.get('Collector').testNeeds(['products.vismanet||products.severa']) &&\n            this.form === 'worktime'\n        ) {\n            return this.set('showFastExporter', true);\n        }\n    },\n    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\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        },\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 config from 'tt4/config/environment';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport getScript from 'tt4/utils/getScript';\nimport { surveyTraits, shouldInitSurvicate } from 'tt4/utils/survicate-config';\n\nconst SURVICATE_SRC =\n    'https://survey.survicate.com/workspaces/0ce395b917d5328ff607cb3378de1e6c/web_surveys.js';\n\nexport default Component.extend({\n    session: service(),\n    intl: service(),\n    initapp: service(),\n    flags: service(),\n    gui: service(),\n\n    init() {\n        this._super(...arguments);\n        const initapp = get(this, 'initapp');\n        if (get(initapp, 'appReady')) {\n            this.initSurvicate();\n        } else {\n            initapp.on('appReady', () => {\n                this.initSurvicate();\n            });\n        }\n    },\n\n    async initSurvicate() {\n        const session = get(this, 'session');\n        const scope = get(session, 'session.content.authenticated.scope');\n        const userlevel = get(session, 'currentUser.userlevel');\n\n        const shouldInit = shouldInitSurvicate({\n            showSurveyFlag: this.flags.test('show-survey'),\n            isAuthenticated: get(session, 'isAuthenticated'),\n            scope,\n            userlevel,\n        });\n\n        if (!shouldInit) {\n            return;\n        }\n\n        const user = get(session, 'currentUser');\n        const intl = get(this, 'intl');\n        const locale = get(intl, 'primaryLocale');\n\n        // browser info — mirrors wootric-survey's UAParser usage\n        const { UAParser } = window;\n        const parser = new UAParser();\n        const bo = parser.setUA(navigator.userAgent).getResult();\n\n        const gui = get(this, 'gui');\n        const isCordova = get(gui, 'isCordova');\n\n        // user_OS: native platform on Cordova, normalized UAParser os.name on web.\n        let userOS;\n        if (isCordova) {\n            userOS = get(gui, 'platform');\n        } else if (bo.os.name) {\n            userOS = bo.os.name === 'Mac OS' ? 'macOS' : bo.os.name;\n        }\n\n        const traits = {\n            ...surveyTraits(user, locale),\n            product: config.brand == 'otta' ? 'Otta' : 'Movenium',\n            user_platform: isCordova ? 'mobile' : 'web',\n        };\n\n        if (userOS) {\n            traits.user_OS = userOS;\n        }\n\n        // user_device: Cordova device model only; omitted on web.\n        // eslint-disable-next-line no-undef\n        if (isCordova && typeof device !== 'undefined' && device.model) {\n            traits.user_device = device.model; // eslint-disable-line no-undef\n        }\n\n        window._sva = window._sva || {};\n        window._sva.traits = traits;\n        window._sva.forcedLanguage = locale;\n\n        await getScript(SURVICATE_SRC);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"NcR2g5+e\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/survicate-survey/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed } from '@ember/object';\nimport menu from '../../../mixins/menu';\n\nexport default Component.extend(menu, {\n    router: service(),\n    subMenus: computed('form', function () {\n        let form = this.form;\n        // lets use this only for worktime-modal (and also presences) for now\n        if (form == 'presence' || form == 'worktime') {\n            if (form == 'worktime') form = 'timetracker';\n            else form = 'presences';\n            return this.getSubMenus([form, 'add']);\n        } else return [];\n    }),\n    actions: {\n        transitionAndClose(route) {\n            this.closeModal();\n            this.router.transitionTo(route[0]);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"da8RmxwS\",\"block\":\"{\\\"symbols\\\":[\\\"sublink\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"subMenus\\\",\\\"length\\\"]],1],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons tab-submenu\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subMenus\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"modal\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"title\\\",\\\"tagName\\\",\\\"query\\\"],[\\\"submenu-item\\\",[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],\\\"div\\\",[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[23,1,[\\\"modal\\\"]]]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"submenu-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionAndClose\\\",[23,1,[\\\"link\\\"]]]],[8],[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/tab-component/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { htmlSafe } from '@ember/string';\nimport { computed, get, set } from '@ember/object';\n\nexport default Component.extend({\n    ttapi: service(),\n    collector: service('collector-service'),\n    intl: service(),\n\n    givenPassword: '',\n    givenFullname: '',\n    errorMessage: null,\n\n    forms: computed(function () {\n        const forms = get(this, 'whiteListForms').filter((form) => {\n            return get(this, 'collector').testNeeds([form]);\n        });\n\n        const ret = forms.map((form) => {\n            return { name: form, date: moment().subtract(5, 'years').format('YYYY-MM-DD') };\n        });\n\n        return ret;\n    }),\n\n    boldFullname: computed(function () {\n        return htmlSafe(\n            '<b>' + get(this, 'user.firstname') + ' ' + get(this, 'user.lastname') + '</b>',\n        );\n    }),\n\n    init() {\n        this._super(...arguments);\n        this.whiteListForms = ['worktime', 'abcense', 'presence', 'trnotice'];\n    },\n\n    actions: {\n        removeData() {\n            set(this, 'errorMessage', null);\n            const userid = get(this, 'user.id');\n\n            set(this, 'loading', true);\n\n            get(this, 'ttapi')\n                .request('terminate/' + userid, {\n                    method: 'post',\n                    data: {\n                        password: get(this, 'givenPassword'),\n                        nametest: get(this, 'givenFullname'),\n                        terminate: get(this, 'forms'),\n                    },\n                })\n                .then(() => this._setHistory(userid))\n                .catch((error) => this._setErrorMessage(error));\n        },\n\n        close() {\n            this.close();\n        },\n    },\n\n    addHistory: function (forms, userid) {\n        const intl = get(this, 'intl');\n        let formsAndDates = [];\n\n        forms.forEach(function (form) {\n            formsAndDates.push(\n                intl.t('forms.' + form.name) +\n                    intl.t('users.teminate_older_than') +\n                    ': ' +\n                    form.date,\n            );\n        });\n\n        let text = intl.t('users.terminated_data_history', {\n            formsAndDates: formsAndDates.join(', '),\n        });\n\n        get(this, 'Collector').ajax({\n            method: 'put',\n            url: 'users/' + userid,\n            data: JSON.stringify({\n                _history: text,\n            }),\n        });\n    },\n    _setHistory(userid) {\n        this.addHistory(get(this, 'forms'), userid);\n        set(this, 'loading', false);\n        set(this, 'done', true);\n    },\n\n    _setErrorMessage(error) {\n        set(this, 'loading', false);\n        set(this, 'errorMessage', error.payload.message);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"j1u+w/q6\",\"block\":\"{\\\"symbols\\\":[\\\"form\\\"],\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"users.terminate_data\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"general.done\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"users.terminate_this_data\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"forms\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"users.teminate_older_than\\\"],[[\\\"form\\\"],[[28,\\\"collector-form-name\\\",[[23,1,[\\\"name\\\"]]],null]]]],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"date\\\",[23,1,[\\\"date\\\"]],\\\"pull-right\\\"]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"users.terminate_give_fullname\\\"],[[\\\"name\\\"],[[24,[\\\"boldFullname\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control\\\",[24,[\\\"givenFullname\\\"]]]]],false],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"general.grant_with_password\\\"],null],false],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"password\\\",\\\"form-control\\\",[24,[\\\"givenPassword\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[22,\\\"errorMessage\\\"],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeData\\\"]],[8],[1,[28,\\\"t\\\",[\\\"users.terminate_data_now\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/term-inator/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\ninterface ITestTypescript {\n    text: string;\n    number: number;\n}\n\nexport default class TestTypescriptComponent extends Component<ITestTypescript> {\n    @tracked protected message: string;\n\n    constructor(owner: unknown, args: ITestTypescript) {\n        super(owner, args);\n        this.message = 'Your text is: ' + this.args.text;\n    }\n\n    get anotherMessage() {\n        return 'A number: ' + this.args.number;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"kWcYLFvs\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[23,0,[\\\"message\\\"]],false],[0,\\\" \\\"],[1,[23,0,[\\\"anotherMessage\\\"]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/test-typescript/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\nimport podNames from 'ember-component-css/pod-names';\nimport { debounce, scheduleOnce } from '@ember/runloop';\nimport { tracked } from '@glimmer/tracking';\nimport config from 'tt4/config/environment';\n\nexport default class TopMenuComponent extends Component {\n    @service skvReport;\n    @service menu;\n    @service intl;\n    @tracked topMenu = [];\n    @tracked visibleItems = [];\n    @tracked hiddenItems = [];\n    @tracked currentLocale = this.intl.locale || 'fi'; // Track current locale\n    padding = 150; // we have to manually set padding because we don't know the width of the final menu\n\n    constructor() {\n        super(...arguments);\n        // kind of a hack, but we need to know the padding and margin of the items so we can use it in the menu service for width calculations\n        // could be done better, but it works for now\n        this.menu.paddingPlusMarginForItem = config.brand === 'otta' ? 40 : 20;\n        // we add a resize event listener to the window to recalculate the menu when the screen size changes\n        window.addEventListener('resize', this.debouncedResize);\n        // Listen for locale change\n        this.intl.on('localeChanged', this.handleLocaleChange.bind(this));\n        // we need to wait for the component to be rendered before we can calculate the width of the menu container\n        // because we use the width of the window and the width of other elements to calculate it\n        scheduleOnce('afterRender', this, 'refreshMenu');\n    }\n\n    get skvReportLink() {\n        return this.skvReport.skvReportLink;\n    }\n\n    // Called when the locale changes\n    handleLocaleChange() {\n        this.currentLocale = this.intl.locale; // Update tracked property\n        this.refreshMenu(); // Refresh menu to update translations\n    }\n    // sets the width of the menu container and the padding for each item and uses the menu service to get the menus\n    @action\n    refreshMenu() {\n        this.menu.containerWidth =\n            window.innerWidth -\n            document.querySelector('.icons-right').offsetWidth -\n            document.querySelector('.topmenu-branding-logo').offsetWidth -\n            this.padding;\n        this.topMenu = this.menu.getMenus();\n    }\n\n    //make sure to remove the event listener when the component is destroyed\n    willDestroy() {\n        super.willDestroy(...arguments);\n        window.removeEventListener('resize', this.debouncedResize);\n    }\n\n    // when screen size is changed, debounce the resize event to prevent multiple calls\n    @action\n    debouncedResize() {\n        debounce(this, this.refreshMenu, 150);\n    }\n\n    get styleNamespace() {\n        return podNames['top-menu'];\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"p8OJUn9M\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\",\\\"menuItem\\\",\\\"menuItem\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]],\\\" top-menu-container\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"topMenu\\\",\\\"visibleItems\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"link-to\\\",[[12,\\\"class\\\",\\\"visible-menu-item\\\"],[12,\\\"data-anchor\\\",[29,[\\\"top-menu-item-\\\",[23,4,[\\\"id\\\"]]]]]],[[\\\"@params\\\"],[[23,4,[\\\"link\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[23,4,[\\\"translated\\\"]],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[4]},null],[4,\\\"if\\\",[[23,0,[\\\"topMenu\\\",\\\"hiddenItems\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"top-menu-more-container\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"button\\\"]],[],[[\\\"@class\\\"],[[29,[\\\"top-menu-more-button \\\",[28,\\\"if\\\",[[23,0,[\\\"menu\\\",\\\"moreIsActive\\\"]],\\\"more-active\\\",\\\"\\\"],null]]]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"report.more_button\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"caret\\\"],[8],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[4,\\\"each\\\",[[23,0,[\\\"topMenu\\\",\\\"hiddenItems\\\"]]],null,{\\\"statements\\\":[[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[5,\\\"link-to\\\",[[12,\\\"class\\\",\\\"hidden-menu-item\\\"],[12,\\\"data-anchor\\\",[29,[\\\"top-menu-item-\\\",[23,3,[\\\"id\\\"]]]]]],[[\\\"@params\\\"],[[23,3,[\\\"link\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[23,3,[\\\"translated\\\"]],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"project.skv_number\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[23,0,[\\\"skvReportLink\\\"]]],[10,\\\"target\\\",\\\"_blank\\\"],[10,\\\"class\\\",\\\"hidden-menu-item\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"menu.skv_web_report\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"project.skv_number\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[23,0,[\\\"skvReportLink\\\"]]],[10,\\\"target\\\",\\\"_blank\\\"],[10,\\\"class\\\",\\\"visible-menu-item\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"menu.skv_web_report\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/top-menu/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { tracked } from '@glimmer/tracking';\nimport { action, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport config from 'tt4/config/environment';\nimport { htmlSafe } from '@ember/string';\n\nexport default class TrialPeriodIconComponent extends Component {\n    @tracked modalValues;\n    @tracked shouldShowModal;\n    @tracked isCanceling;\n    @service router;\n    @service session;\n    @service dialogs;\n    @service intl;\n\n    constructor() {\n        super(...arguments);\n        this.router.on('routeWillChange', () => {\n            if (this.args.trialMode == 'locked') {\n                this.shouldShowModal = true;\n                this.modalValues = this.getModalValues(this.args.trialMode, this.args.daysLeft);\n            }\n        });\n    }\n\n    get showModal() {\n        // this is because we need to show forced modal if mode is \"locked\"\n        if (this.args.trialMode == 'locked' && this.shouldShowModal !== false) {\n            this.modalValues = this.getModalValues(this.args.trialMode, this.args.daysLeft);\n            return true;\n        } else if (this.shouldShowModal) {\n            return true;\n        }\n        return false;\n    }\n\n    get styleNamespace() {\n        return podNames['trial-period-icon'];\n    }\n\n    get alertText() {\n        if (this.args.trialMode == 'locked') return 'billing.trial_alert_service_locked';\n        else if (this.args.trialMode == 'payment_failed' && this.args.daysLeft < 0)\n            return 'billing.trial_alert_add_billing';\n        return 'billing.trial_ok_title';\n    }\n\n    get showNumber() {\n        // 30 - 34 + 30\n        // -4 + 30 = 26\n        if (this.args.daysLeft < 0) {\n            let number = this.args.daysUntilLock + this.args.daysLeft;\n            return number > 0 ? number : 0;\n        }\n        return this.args.daysLeft;\n    }\n\n    get trialEndText() {\n        return htmlSafe(\n            this.intl.t('billing.trial_subscription_canceled', {\n                date: '<b>' + moment().add(this.showNumber, 'days').format('L') + '</b>',\n            }),\n        );\n    }\n\n    get showAlert() {\n        return (\n            this.args.trialMode == 'locked' ||\n            (this.args.trialMode == 'payment_failed' && this.args.daysLeft < 0)\n        );\n    }\n\n    getModalValues(type, days) {\n        let values = [];\n        values['mode'] = type;\n        if (type == 'locked') {\n            values['mode'] = 'locked';\n            values['trialText'] = 'billing.service_locked_text';\n            values['modalTitle'] = 'billing.service_locked_title';\n        } else if (type == 'payment_failed' && days < 0) {\n            values['mode'] = 'payment_failed';\n            values['trialText1'] = 'billing.trial_end_text_title';\n            values['trialText2'] = 'billing.trial_end_text';\n            values['modalTitle'] = 'billing.trial_end_title';\n        } else if (type == 'normal_trial' || days >= 0) {\n            values['mode'] = 'normal_trial';\n            values['trialText'] = 'billing.trial_ok_text';\n            values['modalTitle'] = 'billing.trial_ok_title';\n        }\n        return values;\n    }\n\n    @action\n    showModalAction() {\n        this.modalValues = this.getModalValues(this.args.trialMode, this.args.daysLeft);\n        this.shouldShowModal = true;\n    }\n    @action\n    async cancelSubscription() {\n        this.isCanceling = false;\n        let con = await this.dialogs.confirm(this.intl.t('billing.subscription_cancel_question'));\n        if (con) {\n            this.isCanceling = true;\n            await fetch(config.APP.BILLING_URL + '/cancel_subscription', {\n                headers: {\n                    Authorization:\n                        'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n                },\n                method: 'POST',\n            });\n            this.isCanceling = false;\n            this.shouldShowModal = false;\n            //this.canTrialBeCanceled = false;\n            this.args.setTrialStatus('disabled');\n        }\n    }\n\n    @action\n    gotoProfile() {\n        this.shouldShowModal = false;\n        this.router.transitionTo('settings.general-v2', {\n            queryParams: {\n                main: 'companyProfile',\n                sub: 'info',\n            },\n        });\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"of0tZPJO\",\"block\":\"{\\\"symbols\\\":[\\\"@canSubscriptionBeCanceled\\\",\\\"@trialMode\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"flex-column no-wrap-column\\\"],[12,\\\"role\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"showModalAction\\\"]]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"trial-text pr-1\\\"],[8],[1,[28,\\\"t\\\",[[23,0,[\\\"alertText\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"not-eq\\\",[[23,2,[]],\\\"locked\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"trial-days-number\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[23,0,[\\\"showNumber\\\"]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"trial-text-days pl-3\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.days\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Lock small-lock\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showAlert\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"trial-alert blink\\\"],[8],[1,\\\"!\\\",false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,0,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"shouldShowModal\\\"]]],null],false],null],[28,\\\"t\\\",[[23,0,[\\\"modalValues\\\",\\\"modalTitle\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,0,[\\\"modalValues\\\",\\\"mode\\\"]],\\\"normal_trial\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"trial-big-number ok-number\\\"],[8],[1,[23,0,[\\\"showNumber\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[[23,0,[\\\"modalValues\\\",\\\"trialText\\\"]]],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[23,1,[]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"billing.trial_cancel_text\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column trial-center-button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[23,1,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\",\\\"@saveButtonText\\\"],[[23,0,[\\\"isCanceling\\\"]],[23,0,[\\\"cancelSubscription\\\"]],\\\"btn btn-m-link btn-block btn-lg\\\",[28,\\\"t\\\",[\\\"billing.cancel_subscription\\\"],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"canceled-text\\\"],[8],[1,[22,\\\"trialEndText\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,0,[\\\"modalValues\\\",\\\"mode\\\"]],\\\"payment_failed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"trial-big-number not-ok-number\\\"],[8],[1,[23,0,[\\\"showNumber\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[[23,0,[\\\"modalValues\\\",\\\"trialText1\\\"]]],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[[23,0,[\\\"modalValues\\\",\\\"trialText2\\\"]]],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-block btn-primary flex-item-40\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"gotoProfile\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"billing.goto_profile\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-20\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel flex-item-40\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"shouldShowModal\\\"]]],null],false],null]]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,0,[\\\"modalValues\\\",\\\"mode\\\"]],\\\"locked\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Lock not-ok-number trial-big-number padded-icon\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[[23,0,[\\\"modalValues\\\",\\\"trialText\\\"]]],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column trial-center-button\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-block btn-primary flex-item-40\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"gotoProfile\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"billing.goto_profile\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"billing.billing.service_locked_text_not_admin\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"            \\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/trial-period-icon/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { action, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class UpgradeIconComponent extends Component {\n    @service session;\n    @service intl;\n    @service ttapi;\n    @service('collector-service') Collector;\n    @tracked email_message_sent;\n    @tracked sending;\n    @tracked showModal;\n    @tracked more_info;\n    @tracked sender;\n    @tracked debug_email;\n\n    constructor() {\n        super(...arguments);\n        this.email_message_sent = false;\n        this.sending = false;\n        this.sender = this.session.currentUser.email;\n    }\n\n    get styleNamespace() {\n        return podNames['upgrade-icon'];\n    }\n\n    get isDisabled() {\n        if (this.Collector.testNeedsOne('devMode') && !this.debug_email) return true;\n        else if (!this.sender) return true;\n        return false;\n    }\n\n    @action\n    async sendEmail() {\n        this.sending = true;\n        let mail = this.debug_email\n            ? this.debug_email\n            : this.intl.t('upgrade_service.send-to-email');\n\n        await this.ttapi.request('/sendEmail', {\n            method: 'post',\n            data: {\n                email: mail,\n                title:\n                    this.intl.t('upgrade_service.email-title') +\n                    ' - ' +\n                    get(this, 'session.currentUser.company') +\n                    ' (' +\n                    get(this, 'session.currentUser.partnerid') +\n                    ')',\n                content:\n                    this.intl.t('upgrade_service.email_content') +\n                    '\\r\\n' +\n                    this.more_info +\n                    '\\r\\n' +\n                    this.sender,\n            },\n        });\n        this.sending = false;\n        this.email_message_sent = true;\n    }\n\n    @action\n    closeModal() {\n        this.showModal = false;\n        this.sending = false;\n        this.email_message_sent = false;\n        this.more_info = '';\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"h/jc4Jtb\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]],\\\" flex-column\\\"]]],[12,\\\"role\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showModal\\\"]]],null]],null]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"upgrade-text\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"upgrade_service.icon-title\\\"],null],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"lightbulb-div\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Lightbulb\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,0,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],[23,0,[\\\"closeModal\\\"]]],null],[28,\\\"t\\\",[\\\"upgrade_service.dialog-title\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"email_message_sent\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"upgrade_service.message-sent\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"upgrade-info-text\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"upgrade_service.info-text\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"dev-helper\\\",null,null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"header\\\"],[8],[1,[28,\\\"t\\\",[\\\"saved.modal.email\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control input-lg\\\"],[12,\\\"type\\\",\\\"text\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"debug_email\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"header\\\"],[8],[1,[28,\\\"t\\\",[\\\"feedback.modal.sender\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control input-lg\\\"],[12,\\\"type\\\",\\\"text\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"sender\\\"]]]]],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"header\\\"],[8],[1,[28,\\\"t\\\",[\\\"upgrade_service.more_info\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[5,\\\"textarea\\\",[[12,\\\"rows\\\",\\\"6\\\"],[12,\\\"class\\\",\\\"form-control input-lg\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"more_info\\\"]]]]],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[5,\\\"addon/loading-button\\\",[],[[\\\"@classes\\\",\\\"@disabled\\\",\\\"@loading\\\",\\\"@onClick\\\"],[\\\"btn btn-m-link btn-block\\\",[23,0,[\\\"isDisabled\\\"]],[23,0,[\\\"sending\\\"]],[23,0,[\\\"sendEmail\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"saved.modal.send_email\\\"],null],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/upgrade-icon/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    valid: computed('record.date', function () {\n        return get(this, 'record.date') ? moment(get(this, 'record.date')).format('MM/YYYY') : null;\n    }),\n\n    cardType: computed('record.type', function () {\n        let type = 'work';\n        let color = '#4AC94A';\n\n        for (var item1 of this.firstAid) {\n            if (this.record && this.record.type.toLowerCase().indexOf(item1) > -1) {\n                type = 'firstaid';\n                color = '#E64444';\n            }\n        }\n        for (var item2 of this.safety) {\n            if (this.record && this.record.type.toLowerCase().indexOf(item2) > -1) {\n                type = 'safety';\n                color = '#3B9C8B';\n            }\n        }\n        for (var item3 of this.vehicle) {\n            if (this.record && this.record.type.toLowerCase().indexOf(item3) > -1) {\n                type = 'vehicle';\n                color = '#4353B2';\n            }\n        }\n        return {\n            type: type,\n            color: color,\n        };\n    }),\n    didReceiveAttrs() {\n        this.firstAid = ['Ensiavun', 'Ensiapu', 'ea1', 'ea2'];\n        this.safety = ['turva', 'pelastus', 'road', 'fire', 'safety'];\n        this.vehicle = ['ajo-oikeus', 'ajolupa', 'liikenteen', 'driver'];\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"KNowdPfh\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"xmlns:xlink\\\",\\\"http://www.w3.org/1999/xlink\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"viewBox\\\",\\\"0 0 757 394\\\"],[11,\\\"width\\\",[28,\\\"if\\\",[[24,[\\\"width\\\"]],[24,[\\\"width\\\"]]],null]],[8],[0,\\\"\\\\n  \\\"],[7,\\\"defs\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"radialGradient\\\",true],[10,\\\"id\\\",\\\"radial-gradient\\\"],[10,\\\"cx\\\",\\\"0.5\\\"],[10,\\\"cy\\\",\\\"0.5\\\"],[10,\\\"r\\\",\\\"0.5\\\"],[10,\\\"gradientUnits\\\",\\\"objectBoundingBox\\\"],[8],[0,\\\"\\\\n      \\\"],[7,\\\"stop\\\",true],[10,\\\"offset\\\",\\\"0\\\"],[10,\\\"stop-color\\\",\\\"#464646\\\"],[8],[9],[0,\\\"\\\\n      \\\"],[7,\\\"stop\\\",true],[10,\\\"offset\\\",\\\"0.423\\\"],[10,\\\"stop-color\\\",\\\"#5b5b5b\\\"],[10,\\\"stop-opacity\\\",\\\"0.278\\\"],[8],[9],[0,\\\"\\\\n      \\\"],[7,\\\"stop\\\",true],[10,\\\"offset\\\",\\\"1\\\"],[10,\\\"stop-color\\\",\\\"#5b5b5b\\\"],[10,\\\"stop-opacity\\\",\\\"0\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"linearGradient\\\",true],[10,\\\"id\\\",\\\"linear-gradient\\\"],[10,\\\"x1\\\",\\\"0.964\\\"],[10,\\\"y1\\\",\\\"0.061\\\"],[10,\\\"x2\\\",\\\"0.046\\\"],[10,\\\"y2\\\",\\\"0.925\\\"],[10,\\\"gradientUnits\\\",\\\"objectBoundingBox\\\"],[8],[0,\\\"\\\\n      \\\"],[7,\\\"stop\\\",true],[10,\\\"offset\\\",\\\"0\\\"],[10,\\\"stop-color\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n      \\\"],[7,\\\"stop\\\",true],[10,\\\"offset\\\",\\\"1\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n  \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"rect\\\",true],[10,\\\"id\\\",\\\"Rectangle_599\\\"],[10,\\\"data-name\\\",\\\"Rectangle 599\\\"],[10,\\\"width\\\",\\\"757\\\"],[10,\\\"height\\\",\\\"70\\\"],[10,\\\"transform\\\",\\\"translate(0 324)\\\"],[10,\\\"opacity\\\",\\\"0.88\\\"],[10,\\\"fill\\\",\\\"url(#radial-gradient)\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"rect\\\",true],[10,\\\"id\\\",\\\"Rectangle_622\\\"],[10,\\\"data-name\\\",\\\"Rectangle 622\\\"],[10,\\\"width\\\",\\\"578\\\"],[10,\\\"height\\\",\\\"362\\\"],[10,\\\"rx\\\",\\\"30\\\"],[10,\\\"transform\\\",\\\"translate(677 362) rotate(180)\\\"],[11,\\\"fill\\\",[24,[\\\"cardType\\\",\\\"color\\\"]]],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"rect\\\",true],[10,\\\"id\\\",\\\"Rectangle_706\\\"],[10,\\\"data-name\\\",\\\"Rectangle 706\\\"],[10,\\\"width\\\",\\\"578\\\"],[10,\\\"height\\\",\\\"362\\\"],[10,\\\"rx\\\",\\\"30\\\"],[10,\\\"transform\\\",\\\"translate(677 362) rotate(180)\\\"],[10,\\\"opacity\\\",\\\"0.2\\\"],[10,\\\"fill\\\",\\\"url(#linear-gradient)\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_2292\\\"],[10,\\\"data-name\\\",\\\"Path 2292\\\"],[10,\\\"d\\\",\\\"M11795.367,2079H12077a30,30,0,0,1,30,30v155.08Z\\\"],[10,\\\"transform\\\",\\\"translate(12206.367 2441.079) rotate(180)\\\"],[10,\\\"opacity\\\",\\\"0.27\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"text\\\",true],[10,\\\"data-name\\\",\\\"competence\\\"],[10,\\\"transform\\\",\\\"translate(262 20)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"font-size\\\",\\\"26\\\"],[10,\\\"font-family\\\",\\\"Lato-Regular, Lato\\\"],[10,\\\"class\\\",\\\"inlineSVG\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"tspan\\\",true],[10,\\\"x\\\",\\\"0\\\"],[10,\\\"y\\\",\\\"26\\\"],[10,\\\"class\\\",\\\"inline\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tspan\\\",true],[10,\\\"x\\\",\\\"0\\\"],[10,\\\"dy\\\",\\\"0em\\\"],[8],[1,[28,\\\"inline-text\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\",\\\"owner\\\"],[\\\"card\\\",\\\"type\\\",[24,[\\\"record\\\",\\\"type\\\"]],[24,[\\\"record\\\",\\\"owner\\\"]]]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"tspan\\\",true],[10,\\\"x\\\",\\\"0\\\"],[10,\\\"dy\\\",\\\"1em\\\"],[8],[1,[28,\\\"inline-text-2\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\",\\\"owner\\\"],[\\\"card\\\",\\\"type\\\",[24,[\\\"record\\\",\\\"type\\\"]],[24,[\\\"record\\\",\\\"owner\\\"]]]]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\" \\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"text\\\",true],[10,\\\"data-name\\\",\\\"name\\\"],[10,\\\"transform\\\",\\\"translate(147 249)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"font-size\\\",\\\"35\\\"],[10,\\\"font-family\\\",\\\"Lato-Italic, Lato\\\"],[10,\\\"font-style\\\",\\\"italic\\\"],[8],[7,\\\"tspan\\\",true],[10,\\\"x\\\",\\\"0\\\"],[10,\\\"y\\\",\\\"0\\\"],[8],[1,[24,[\\\"record\\\",\\\"name\\\"]],false],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"text\\\",true],[10,\\\"data-name\\\",\\\"Validity\\\"],[10,\\\"transform\\\",\\\"translate(431 338)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"font-size\\\",\\\"24\\\"],[10,\\\"font-family\\\",\\\"Lato-Regular, Lato\\\"],[8],[7,\\\"tspan\\\",true],[10,\\\"x\\\",\\\"0\\\"],[10,\\\"y\\\",\\\"0\\\"],[8],[4,\\\"if\\\",[[24,[\\\"valid\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"cardregister.valid\\\"],null],false],[0,\\\": \\\"],[1,[22,\\\"valid\\\"],false]],\\\"parameters\\\":[]},null],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"cardType\\\",\\\"type\\\"]],\\\"firstaid\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Plus\\\"],[10,\\\"d\\\",\\\"M58.708,3.188a55.522,55.522,0,1,0,55.525,55.52A55.521,55.521,0,0,0,58.708,3.188Zm29.612,63.6H66.784V88.319H50.632V66.784H29.1V50.632H50.632V29.1H66.784V50.632H88.319Z\\\"],[10,\\\"transform\\\",\\\"translate(119.823 16.812)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"cardType\\\",\\\"type\\\"]],\\\"safety\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"g\\\",true],[10,\\\"id\\\",\\\"Handshake\\\"],[10,\\\"transform\\\",\\\"translate(131.12 35.9)\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_10\\\"],[10,\\\"data-name\\\",\\\"Path 10\\\"],[10,\\\"d\\\",\\\"M72.436,13.72V43.46s-6.4,1.129-7.529,1.506-5.27,1.506-8.282-1.506L35.919,22.755s-2.635-2.635-7.153-.376c-4.141,2.259-10.541,5.647-13.176,6.776-2.259,1.129-9.035-7.529-5.27-9.788C15.967,15.979,28.767,8.826,34.037,6.191c3.012-1.506,5.27-1.882,9.788,1.882,5.27,4.518,9.788,8.282,9.788,8.282a7.668,7.668,0,0,0,4.141.753Z\\\"],[10,\\\"transform\\\",\\\"translate(25.444 0.039)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_11\\\"],[10,\\\"data-name\\\",\\\"Path 11\\\"],[10,\\\"d\\\",\\\"M32.613,36.864a5.259,5.259,0,0,0-5.647-1.129,5.156,5.156,0,0,0-.753-5.647,5.591,5.591,0,0,0-5.27-1.506c.376-1.882.376-3.765-1.129-5.27a4.662,4.662,0,0,0-5.27-1.129c.376-1.882.376-3.765-1.129-5.27-2.259-2.259-5.647-2.259-8.282.376-2.259,2.259-4.141,6.4-1.882,9.035s4.518,1.129,6.4.376c-.376,1.882-2.259,3.765,0,6.023,1.882,2.635,4.518,1.129,6.4.376-.376,1.882-1.882,3.765,0,6.023s4.894,1.129,7.153.376c-.753,1.882-2.635,4.141-.376,6.776,2.259,2.259,7.153,1.129,9.412-1.129S34.872,39.123,32.613,36.864Z\\\"],[10,\\\"transform\\\",\\\"translate(6.163 28.093)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_12\\\"],[10,\\\"data-name\\\",\\\"Path 12\\\"],[10,\\\"d\\\",\\\"M21.653,21.174a4.58,4.58,0,0,1,0,6.023,4.58,4.58,0,0,1-6.023,0c-1.506-1.506-1.506-4.518,0-6.4A4.2,4.2,0,0,1,21.653,21.174Z\\\"],[10,\\\"transform\\\",\\\"translate(40.087 40.395)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_13\\\"],[10,\\\"data-name\\\",\\\"Path 13\\\"],[10,\\\"d\\\",\\\"M23.953,19.48a4.58,4.58,0,0,1,0,6.023,4.58,4.58,0,0,1-6.023,0c-1.506-1.506-1.506-4.518,0-6.4C19.435,17.6,22.07,17.975,23.953,19.48Z\\\"],[10,\\\"transform\\\",\\\"translate(46.445 36.065)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_14\\\"],[10,\\\"data-name\\\",\\\"Path 14\\\"],[10,\\\"d\\\",\\\"M25.853,17.58a4.58,4.58,0,0,1,0,6.023,4.58,4.58,0,0,1-6.023,0c-1.506-1.506-1.506-4.518,0-6.4A4.574,4.574,0,0,1,25.853,17.58Z\\\"],[10,\\\"transform\\\",\\\"translate(51.698 30.813)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_15\\\"],[10,\\\"data-name\\\",\\\"Path 15\\\"],[10,\\\"d\\\",\\\"M20.182,22.537a4.58,4.58,0,0,1,0,6.023,4.58,4.58,0,0,1-6.023,0L11.9,26.3c1.129-1.506,1.129-2.259,2.259-3.765A3.918,3.918,0,0,1,20.182,22.537Z\\\"],[10,\\\"transform\\\",\\\"translate(32.899 44.303)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"id\\\",\\\"Ellipse_1\\\"],[10,\\\"data-name\\\",\\\"Ellipse 1\\\"],[10,\\\"cx\\\",\\\"5.647\\\"],[10,\\\"cy\\\",\\\"5.647\\\"],[10,\\\"r\\\",\\\"5.647\\\"],[10,\\\"transform\\\",\\\"translate(31.999 18.653)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_16\\\"],[10,\\\"data-name\\\",\\\"Path 16\\\"],[10,\\\"d\\\",\\\"M77.551,48.393,58.728,29.57s-3.012-3.012-6.4-1.129c-2.635,1.129-6.023,2.635-8.659,3.765a14.9,14.9,0,0,1-5.647,1.882A9.967,9.967,0,0,1,28.235,24.3a10.345,10.345,0,0,1,4.518-8.282c3.765-2.635,12.8-7.529,12.8-7.529S42.917,5.1,36.893,5.1s-18.447,8.282-18.447,8.282a10.441,10.441,0,0,1-8.659.376L0,10.37V44.252a50.28,50.28,0,0,1,5.27,1.882,15.545,15.545,0,0,1,2.635-4.141c4.141-4.141,10.917-4.141,14.682,0a8.974,8.974,0,0,1,2.259,4.141,8.974,8.974,0,0,1,4.141,2.259,8.974,8.974,0,0,1,2.259,4.141,8.974,8.974,0,0,1,4.141,2.259,11.01,11.01,0,0,1,2.635,4.518,9.747,9.747,0,0,1,4.141,2.635A10.478,10.478,0,0,1,44.8,70.6c1.129,1.882,7.906-1.882,8.282-3.765-5.647-5.647-6.023-6.023-5.27-6.776s1.506.753,7.529,7.153c.753.753,10.164-1.882,6.023-6.023-5.647-5.647-6.4-6.776-6.023-7.153s3.012,2.259,9.035,8.282c3.012,0,7.153-5.27,6.023-6.023-7.153-7.153-6.776-7.529-6.4-7.906s.376-.376,7.529,6.776C72.657,55.922,79.057,49.9,77.551,48.393Z\\\"],[10,\\\"transform\\\",\\\"translate(0 0)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"cardType\\\",\\\"type\\\"]],\\\"vehicle\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_10\\\"],[10,\\\"data-name\\\",\\\"Path 10\\\"],[10,\\\"d\\\",\\\"M253.132,16.523c-.405-.405-.81-.2-1.216.2L243,25.641a1.013,1.013,0,0,0-.2,1.418c.405.2.608,0,1.013-.405l9.118-8.915C253.335,17.334,253.538,16.929,253.132,16.523Zm5.876-2.634L248.067,24.831c-.405.405-.608.608-.2,1.013s.81.2,1.216-.2L259.819,14.9c.405-.405.608-.81.2-1.216S259.414,13.687,259.008,13.889ZM306.22,23.21h-6.079a3.242,3.242,0,0,0-2.229,1.013l-4.863-11.144A10.334,10.334,0,0,0,283.728,7h-46.2a10.334,10.334,0,0,0-9.321,6.079l-4.863,11.144a3.242,3.242,0,0,0-2.229-1.013h-6.079A3.039,3.039,0,0,0,212,26.249v1.824a3.242,3.242,0,0,0,3.039,3.242h5.268l-2.634,6.079a31.812,31.812,0,0,0-1.621,10.131V61.708h0v16.21A5.876,5.876,0,0,0,222.131,84h6.079a5.876,5.876,0,0,0,6.079-6.079V73.866H286.97v4.052A5.876,5.876,0,0,0,293.049,84h6.079a5.876,5.876,0,0,0,6.079-6.079V61.708h0V47.525a31.811,31.811,0,0,0-1.621-10.131l-2.634-6.079h5.268a3.242,3.242,0,0,0,3.039-3.242V26.249A3.039,3.039,0,0,0,306.22,23.21ZM232.06,14.7a5.674,5.674,0,0,1,5.471-3.647h46.2A5.673,5.673,0,0,1,289.2,14.7l6.484,14.589H225.576Zm48.832,42.956H240.367V47.525h40.525Zm-40.93-14.184L234.9,33.341h51.466L281.3,43.472Zm-18.641-4.458,2.431-5.673h9.118l5.066,10.131a2.229,2.229,0,0,0-1.621,2.026H220.1a24.719,24.719,0,0,1,1.216-6.484ZM220.1,49.551h16.21v8.1H220.1Zm81.049,28.367a1.824,1.824,0,0,1-2.026,2.026h-6.079a1.824,1.824,0,0,1-2.026-2.026V73.866h2.026a13.778,13.778,0,0,0,6.079-2.837V66.976a7.5,7.5,0,0,1-6.079,2.837H228.21a7.5,7.5,0,0,1-6.079-2.837v4.458a13.171,13.171,0,0,0,6.079,2.431h2.026v4.052a1.824,1.824,0,0,1-2.026,2.026h-6.079a1.824,1.824,0,0,1-2.026-2.026v-8.1h0v-8.1h0V59.682h18.033a1.013,1.013,0,1,0,0,2.026h45.185a1.013,1.013,0,1,0,0-2.026h17.831Zm0-20.262h-16.21v-8.1h16.21Zm0-12.157h-16.21a2.229,2.229,0,0,0-1.621-2.026l5.066-10.131h9.118l2.431,5.673a24.724,24.724,0,0,1,1.216,6.484Z\\\"],[10,\\\"transform\\\",\\\"translate(-81.259 25)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[10,\\\"fill-rule\\\",\\\"evenodd\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Worker\\\"],[10,\\\"d\\\",\\\"M89.028,94.716v3.174c0,11.54-22.1,14.168-42.841,14.168-20.711,0-43.1-2.624-43.1-14.168V94.716c0-8.474,15.278-17.056,28.292-21.765.941-.343,5.438-2.793,2.923-9.384-5.824-5.954-9.792-11.722-9.792-24.731H67.745c0,12.875-4.068,18.7-9.857,24.662h.035c-2.459,7.481,1.474,9.254,2.1,9.458C73.681,77.474,89.028,85.987,89.028,94.716ZM70.706,25.136c0-9.28-6.349-17.4-15.768-20.269-1.466-.447-4.54,16.691-4.54,16.691V2.712A2.6,2.6,0,0,0,47.922.058H44.206a2.6,2.6,0,0,0-2.48,2.654V21.559S38.633,4.429,37.159,4.88c-9.4,2.871-15.742,10.984-15.742,20.256,0,2.372-5.711-.989-5.711,9.363H76.418C76.418,24.052,70.706,27.508,70.706,25.136Z\\\"],[10,\\\"transform\\\",\\\"translate(133.972 12.942)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"record\\\",\\\"owner\\\"]],\\\"partner\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"edit\\\"]],[23,0,[\\\"record\\\"]]]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[4,\\\"if\\\",[[24,[\\\"delete\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Delete\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"delete\\\"]],[23,0,[\\\"record\\\"]]]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/user-competences/card/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\n\nexport default Component.extend({\n    store: service(),\n    dialogs: service(),\n    intl: service(),\n    ttapi2: service(),\n    error: service(),\n\n    tagName: '',\n\n    show_request_error: false,\n\n    async didReceiveAttrs() {\n        set(this, 'cardsPromise', this.loadCompetences());\n        await this.setLastupdated();\n    },\n\n    actions: {\n        add() {\n            const competence = this.store.createRecord('card', {\n                taxnumber: get(this, 'user.taxnumber'),\n                name: get(this, 'user.firstname') + ' ' + get(this, 'user.lastname'),\n                owner: 'partner',\n            });\n            set(this, 'editCompetence', competence);\n        },\n\n        addSame() {\n            // Cannot call collector copyRecord because of JSONAPI data\n            set(\n                this,\n                'editCompetence',\n                this.store.createRecord('card', this.editCompetence.toJSON()),\n            );\n        },\n\n        async reload() {\n            set(this, 'cardsPromise', this.loadCompetences());\n        },\n\n        async delete(record) {\n            if (await this.dialogs.confirm(this.intl.t('general.remove_row')))\n                record.destroyRecord();\n        },\n\n        async update() {\n            set(this, 'updating', true);\n            try {\n                const userCountry = get(this, 'user.homecountry') || 'FI';\n                const empCountry = get(this, 'user.employer.emp_country') || 'FI';\n\n                await this.ttapi2.request(\n                    'cardregister/updateOnePerson?' +\n                    'taxnumber=' + get(this, 'user.taxnumber') +\n                    '&userCountry=' + userCountry +\n                    '&vatin=' + get(this, 'user.employer.emp_id') +\n                    '&empCountry=' + empCountry,\n\n                    {\n                        dataType: 'json',\n                        contentType: 'application/json',\n                        method: 'POST',\n                    },\n                );\n                this.send('reload');\n                await this.setLastupdated();\n            } catch (e) {\n                // we only need payload from error to get the error message\n                // eslint-disable-next-line no-unused-vars\n                const { response, jqXHR, payload } = e;\n                this.error.notify({\n                    payload: {\n                        message: this.intl.t(\n                            `cardregister.errors.${payload ? payload : 'unknown'}`,\n                        ),\n                    },\n                });\n            } finally {\n                set(this, 'updating', false);\n            }\n        },\n    },\n\n    async loadCompetences() {\n        let start = moment();\n\n        // sometimes employer is not fully loaded so fetch emp_id if missing\n        if (!get(this, 'user.employer.emp_id') && get(this, 'user.id'))\n            await this.store.query('user', {\n                id: get(this, 'user.id'),\n                sideload: ['employer.emp_id', 'employer.emp_country'],\n            });\n        if (get(this, 'user.taxnumber')) {\n            const userCountry = get(this, 'user.homecountry') || 'FI';\n            const empCountry = get(this, 'user.employer.emp_country') || 'FI';\n\n            let resp = await this.store.query('card', {\n                taxnumber: get(this, 'user.taxnumber'),\n                userCountry,\n                vatin: get(this, 'user.employer.emp_id'),\n                empCountry,\n            });\n            var stop = moment();\n            if (stop.diff(start) / 1000 > 8) {\n                this.show_request_error = true;\n            }\n            return resp;\n        }\n    },\n\n    async setLastupdated() {\n        if (!get(this, 'user.taxnumber')) return set(this, 'lastupdated', '-');\n        const res = await this.ttapi2.request(\n            'cardregister/getCardUpdaters?taxnumber=' + get(this, 'user.taxnumber'),\n            {\n                dataType: 'json',\n                contentType: 'application/json',\n            },\n        );\n        const updater = res.data?.firstObject;\n        if (!updater) set(this, 'lastupdated', '-');\n        else\n            set(\n                this,\n                'lastupdated',\n                moment(updater.attributes.updated).format('DD.MM.YYYY HH:mm:ss'),\n            );\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"r9ebs1lf\",\"block\":\"{\\\"symbols\\\":[\\\"card\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[23,0,[\\\"cardsPromise\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"show_request_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"cardregister.request-timeout1\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"cardregister.request-timeout2\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,2,[[28,\\\"await\\\",[[23,0,[\\\"cardsPromise\\\"]]],null],[28,\\\"component\\\",[\\\"user-competences/card\\\"],[[\\\"class\\\",\\\"delete\\\",\\\"edit\\\"],[\\\"card\\\",[28,\\\"action\\\",[[23,0,[]],\\\"delete\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editCompetence\\\"]]],null]],null]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[28,\\\"await\\\",[[23,0,[\\\"cardsPromise\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"user-competences/card\\\",null,[[\\\"record\\\",\\\"class\\\",\\\"delete\\\",\\\"edit\\\"],[[23,1,[]],\\\"card\\\",[28,\\\"action\\\",[[23,0,[]],\\\"delete\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editCompetence\\\"]]],null]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"cardregister-buttons\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add\\\"]],[8],[1,[28,\\\"t\\\",[\\\"cardregister.add\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[5,\\\"addon/loading-button\\\",[],[[\\\"@classes\\\",\\\"@loading\\\",\\\"@onClick\\\"],[\\\"cardregister-update-button\\\",[23,0,[\\\"updating\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"update\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"cardregister.update\\\"],null],false],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"cardregister.lastupdated\\\"],null],\\\":\\\"],null],false],[0,\\\" \\\"],[7,\\\"i\\\",true],[8],[1,[23,0,[\\\"lastupdated\\\"]],false],[9],[9],[0,\\\"\\\\n    \\\\n    \\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"editCompetence\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"close\\\",\\\"header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editCompetence\\\"]]],null],null],null],[28,\\\"t\\\",[\\\"cardregister.competence\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"close\\\",\\\"rowAdded\\\",\\\"rowEdited\\\",\\\"addNew\\\",\\\"addSame\\\"],[\\\"card\\\",[24,[\\\"editCompetence\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editCompetence\\\"]]],null],null],null],[28,\\\"action\\\",[[23,0,[]],\\\"reload\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"reload\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"add\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"addSame\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/user-competences/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { htmlSafe } from '@ember/template';\nimport { tracked } from '@glimmer/tracking';\nimport { computed } from '@ember/object';\nimport environment from 'tt4/config/environment';\n\nexport default class UserDeletionComponent extends Component {\n  @service store;\n  @service collectorService;\n  @service collector;\n  @service capi;\n  @service ttapi;\n  @service intl;\n  @service ajax;\n\n  @tracked givenPassword = '';\n  @tracked givenFullname = '';\n  @tracked isDeleting = false;\n  @tracked errorMessage = null;\n  @tracked successMessage = null;\n  @tracked isLoading = false;\n  @tracked redirectTimeout = 10;\n  whiteListForms = ['worktime', 'abcense', 'presence', 'trnotice'];\n  shouldRedirect = false;\n  @computed('whiteListForms')\n  get forms() {\n    const forms = this.whiteListForms.filter((form) => {\n      return this.collectorService.testNeeds([form]);\n    });\n    const ret = forms.map((form) => {\n        return { name: form, date: moment().format('YYYY-MM-DD')};\n    });\n    return ret;\n  }\n  @computed('args.user.{firstname,lastname}')\n  get boldFullname() {\n      return htmlSafe(\n          `[<b>${this.args.user.firstname} ${this.args.user.lastname}</b>]`\n      );\n  }\n  @action\n    close() {\n        this.args.close();\n    }\n    @action\n    async deleteUser() {\n      this.isDeleting = true;\n      this.errorMessage = null;\n      this.successMessage = null;\n      this.isLoading = true;\n      try {\n        let user = this.args.user;\n        let userId = user.id;\n        let password = this.givenPassword;\n        let nametest = this.givenFullname;\n        let terminate = this.forms;\n        await this.ttapi.request(`terminate-user/${userId}`, {\n          method: 'post',\n          data: {\n            password,\n            nametest,\n            terminate\n          }\n        });\n        this.successMessage = 'User and all related data successfully deleted.';\n        this.shouldRedirect = true;\n      } catch (error) {\n        this.shouldRedirect = false;\n        this.errorMessage = `Error deleting user: ${error.payload.message}`;\n      } finally {\n        this.isLoading = false;\n        this.isDeleting = false;\n        if (this.shouldRedirect) {\n          this.startCountDownAndRedirect();\n        }\n      }\n    }\n    @action\n    startCountDownAndRedirect() {\n        // Start the countdown\n        // Disable redirect when executing tests\n        if (environment.environment === 'test') {\n            return;\n        }\n        const countdown = setInterval(() => {\n        if (this.redirectTimeout > 0) {\n            this.redirectTimeout--;\n        } else {\n            clearInterval(countdown);\n            // Redirect user back to users route.\n            window.location.href = '/';\n        }\n        }, 1000);\n    }\n\n\n}\n","export default Ember.HTMLBars.template({\"id\":\"FIXzw4I6\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"nice-modal\\\",[[12,\\\"data-anchor\\\",\\\"user-deletion-modal\\\"]],[[\\\"@header\\\",\\\"@close\\\"],[[28,\\\"t\\\",[\\\"user.hard_delete_user\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"successMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"general.done\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"data-anchor\\\",\\\"success-message-box\\\"],[10,\\\"class\\\",\\\"alert alert-success\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"user.hard_delete_user_success\\\"],null],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"general.redirect_in_seconds\\\"],[[\\\"seconds\\\"],[[24,[\\\"redirectTimeout\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.hard_delete_user_information\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"full-name\\\"],[8],[1,[28,\\\"t\\\",[\\\"users.hard_delete_fullname\\\"],[[\\\"name\\\",\\\"htmlSafe\\\"],[[24,[\\\"boldFullname\\\"]],true]]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control given-fullname\\\",[24,[\\\"givenFullname\\\"]]]]],false],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"general.grant_with_password\\\"],null],false],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"password\\\",\\\"form-control\\\",[24,[\\\"givenPassword\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[22,\\\"errorMessage\\\"],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"data-anchor\\\",\\\"delete-user-button\\\"],[12,\\\"class\\\",\\\"btn btn-danger btn-block btn-lg\\\"],[12,\\\"disabled\\\",[23,0,[\\\"isDeleting\\\"]]],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"deleteUser\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"users.hard_delete_button\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"data-anchor\\\",\\\"delete-user-cancel-button\\\"],[12,\\\"class\\\",\\\"btn btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/user-deletion/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/user-icon2/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserIcon2Component;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nUserIcon2Component = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    classNames: ['inline-block'],\n    image_url: Em.computed('user', function () {\n        return config.APP.COLLECTOR_API_URL + '/' + this.get('user.image.firstObject.thumb');\n    }),\n    text: Em.computed('user', function () {\n        return this.get('user.firstname') + ' ' + this.get('user.lastname');\n    }),\n    shortText: Em.computed('text', function () {\n        return this.get('Collector').shortFormat(this.get('text'), 2);\n    }),\n    color: Em.computed('text', function () {\n        return this.get('Collector').randomizeColor(this.get('text'));\n    }),\n});\n\nexport default UserIcon2Component;\n","export default Ember.HTMLBars.template({\"id\":\"aDdKhy6X\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"route\\\",\\\"model\\\"],[\\\"users.edit\\\",[24,[\\\"user\\\"]]]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"image\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"user-icon img-circle\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url(\\\\\\\"\\\",[22,\\\"image_url\\\"],\\\"\\\\\\\")\\\"]]],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"user-icon img-circle\\\"],[11,\\\"style\\\",[29,[\\\"background-color: \\\",[22,\\\"color\\\"]]]],[8],[1,[22,\\\"shortText\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"delay\\\",\\\"text\\\"],[800,[24,[\\\"text\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/user-icon2/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/user-selector/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Component;\n\nimport Ember from 'ember';\n\nimport { inject as service } from '@ember/service';\n\nComponent = Ember.Component.extend({\n    analytics: Ember.inject.service(),\n    Collector: service('collector-service'),\n    store: service(),\n    offset: 0,\n    count: null,\n    usersFromBackend: null,\n    loading: true, // should be in load-mode until we have fetched all users\n    offsetPlusOne: Ember.computed('offset', function () {\n        return this.get('offset') + 1;\n    }),\n    fetchUsers: async function () {\n        const params = {\n            form: 'worktime',\n            field: 'user',\n            order: 'lastname,firstname',\n            employer: this.get('employerid'),\n            limit: 'all',\n        };\n        if (!this.get('Collector').testNeedsOne('employer')) {\n            delete params.employer;\n        }\n        this.set('loading', true);\n        let ret = await this.get('store').query('user', params);\n        this.set('usersFromBackend', ret.toArray());\n        if (this.get('userid')) {\n            const offset = this.tryToGetOffsetFor(this.get('userid'));\n            this.set('offset', offset);\n            this.updateUser();\n        } else {\n            this.set('user', ret.objectAt(this.offset));\n        }\n        this.set('count', Ember.get(ret, 'meta.count'));\n        this.set('loading', false);\n    },\n    didReceiveAttrs: function () {\n        // employer has been changed from outside of this component so we need to fetch new users and reset offset\n        if (\n            this.get('employerid') !== null &&\n            this.get('employerid') !== this.get('employer') &&\n            this.get('Collector').testNeedsOne('employer')\n        ) {\n            this.set('employer', this.get('employerid'));\n            // run fetchUsers on the next runloop because we don't want race conditions\n            Ember.run.next(this, function () {\n                this.fetchUsers();\n            });\n        } else if (this.get('userid') !== null && this.get('userid') !== this.get('user.id')) {\n            // if user has been changed from outside of this component we need to update the offset and user\n            if (this.get('usersFromBackend') === null) {\n                Ember.run.next(this, function () {\n                    this.fetchUsers();\n                });\n            } else {\n                const offset = this.tryToGetOffsetFor(this.get('userid'));\n                this.set('offset', offset);\n                this.updateUser();\n            }\n        }\n    },\n    // get the correct offset for the user\n    tryToGetOffsetFor: function (userid) {\n        var users = this.get('usersFromBackend');\n        if (!users || !userid) {\n            return 0;\n        }\n        return users.indexOf(users.findBy('id', userid) || users.get('firstObject'));\n    },\n    updateUser: function (userid = null) {\n        const user = this.get('usersFromBackend').objectAt(this.get('offset'));\n        this.set('user', user);\n        this.userChanged(user.get('id'));\n    },\n    showSelector: Ember.computed('count', 'limit', 'maxLimit', function () {\n        const { count, limit } = this.getProperties('count', 'limit');\n        const MAX_USER_LIMIT_FOR_SHOWING_SELECTOR = 1000;\n        // Do not show selector if there are more users than maxLimit, to avoid performance issues and usability problems.\n        if (count >= MAX_USER_LIMIT_FOR_SHOWING_SELECTOR) {\n            return false;\n        }\n        // If there are fewer users than maxLimit, show selector based on 'limit' attribute.\n\n        // The 'limit' attribute is a UI limitation for showing the selector, not a query parameter.\n        // Show the selector only if limit is not set and the number of users is within this limit.\n        if (!limit || count <= limit) {\n            return true;\n        }\n        return false;\n    }),\n    thereIsNextOne: Ember.computed('offset', 'count', function () {\n        return this.get('offset') + 1 < this.get('count');\n    }),\n    thereIsPreviousOne: Ember.computed('offset', 'count', function () {\n        return this.get('offset') > 0;\n    }),\n    actions: {\n        previous: function () {\n            Ember.get(this, 'analytics').trackEvent({\n                category: 'User-selector',\n                action: 'Previous user',\n            });\n            this.set('offset', this.get('offset') - 1);\n            return this.updateUser();\n        },\n        next: function () {\n            Ember.get(this, 'analytics').trackEvent({\n                category: 'User-selector',\n                action: 'Next user',\n            });\n            this.set('offset', this.get('offset') + 1);\n            return this.updateUser();\n        },\n    },\n});\n\nexport default Component;\n","export default Ember.HTMLBars.template({\"id\":\"VvA2q3DZ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showSelector\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"btn-group \\\",[22,\\\"classes\\\"]]]],[10,\\\"role\\\",\\\"group\\\"],[10,\\\"aria-label\\\",\\\"...\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"disabled\\\",[29,[[28,\\\"unless\\\",[[24,[\\\"thereIsPreviousOne\\\"]],\\\"disabled\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"previous\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CircledLeft2\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-default user-button\\\"],[10,\\\"type\\\",\\\"button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[5,\\\"loader-icon\\\",[],[[\\\"@slim\\\",\\\"@class\\\"],[true,\\\"loader\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"user\\\",[[24,[\\\"user\\\",\\\"id\\\"]],\\\"icon\\\"],null],false],[0,\\\" \\\"],[7,\\\"h2\\\",true],[8],[1,[24,[\\\"user\\\",\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"user\\\",\\\"firstname\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"selected-page\\\"],[8],[1,[22,\\\"offsetPlusOne\\\"],false],[9],[0,\\\" / \\\"],[1,[22,\\\"count\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"disabled\\\",[29,[[28,\\\"unless\\\",[[24,[\\\"thereIsNextOne\\\"]],\\\"disabled\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"next\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CircledRight2\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/user-selector/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Component.extend({\n    router: service(),\n\n    actions: {\n        signin() {\n            get(this, 'router').transitionTo({ queryParams: { wizard: 'vismanet-wizard' } });\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"CVKrMovx\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"signin\\\"]],[8],[1,[28,\\\"t\\\",[\\\"export-salary.vismanet.settings.signin\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"sync\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"vismanet-sync\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"sync\\\"]]],null],true]],[8],[1,[28,\\\"t\\\",[\\\"export-salary.vismanet.settings.sync\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/vismanet-signin/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get, computed } from '@ember/object';\nimport config from 'tt4/config/environment';\nimport { inject as service } from '@ember/service';\nimport Ember from 'ember';\n\nexport default Component.extend({\n    cc: service(),\n    session: service(),\n    error: service(),\n\n    syncstate: null,\n\n    capi_url: computed(function () {\n        return config.environment === 'development'\n            ? 'http://capi/'\n            : config.APP.COLLECTOR_API_URL + '/';\n    }),\n\n    init() {\n        this._super();\n        if (!Ember.testing)\n            this.syncFromVismanet().then(this.syncok.bind(this), this.syncfailed.bind(this));\n    },\n\n    syncok() {\n        set(this, 'syncstate', 'success');\n        set(this, 'done', true);\n    },\n\n    syncfailed(reason) {\n        set(this, 'syncstate', 'danger');\n        set(this, 'errorMessage', get(this, 'error').toString(reason));\n    },\n\n    syncFromVismanet() {\n        return this.cc.request('general_vismanet', {\n            headers: {\n                Authorization: 'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n            },\n            data: {\n                capi_url: get(this, 'capi_url'),\n            },\n        });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"Tw5TevlD\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\\n    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export-salary.vismanet.settings.synced\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[22,\\\"errorMessage\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/vismanet-sync/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/weather-component/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsWeatherComponent;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nCollectorFieldsWeatherComponent = Ember.Component.extend({\n    weather: Ember.inject.service(),\n    gps: Ember.inject.service(),\n    init: function () {\n        this._super(...arguments);\n        return Ember.set(this, 'ownWeather', {});\n    },\n    fetchingWeather: false,\n    store: Ember.inject.service(),\n    translations: {\n        temp: '°C',\n        wspeed: 'm/s',\n        percent: '%',\n    },\n    getWeather: Em.computed('project', 'date', function () {\n        if (this.get('isNew') && this.get('project')) {\n            return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n                promise: new Ember.RSVP.Promise((resolve) => {\n                    var date, proj;\n                    proj = this.get('project');\n                    date = this.get('date');\n                    if (proj.get('location_map')) {\n                        return this.get('weather')\n                            .fetchWeatherByProject(proj, date)\n                            .then((weather) => {\n                                Ember.run.next(this, () => {\n                                    return this.set('value', weather);\n                                });\n                                return resolve(true);\n                            });\n                    } else {\n                        return this.get('store')\n                            .findRecord('project', proj.id, {\n                                reload: true,\n                            })\n                            .then((project) => {\n                                var projectLocation;\n                                projectLocation = project.get('location_map');\n                                if (projectLocation) {\n                                    return this.get('weather')\n                                        .fetchWeatherByProject(project, date)\n                                        .then((weather) => {\n                                            Ember.run.next(this, () => {\n                                                return this.set('value', weather);\n                                            });\n                                            return resolve(this.get('gpsWeather'));\n                                        });\n                                } else {\n                                    return resolve(this.get('gpsWeather'));\n                                }\n                            });\n                    }\n                }),\n            });\n        } else {\n            return this.get('value');\n        }\n    }),\n    gpsWeather: Ember.computed(\n        'gps.lockedPosition',\n        'gps.lockedLatitude',\n        'gps.lockedLongitude',\n        'gps.lockedAccuracy',\n        'date',\n        function () {\n            var position;\n            if (!this.get('gps.lockedPosition')) {\n                Ember.run.next(this, () => {\n                    return this.set('value', null);\n                });\n                return null;\n            } else {\n                position = {\n                    latitude: this.get('gps.lockedLatitude'),\n                    longitude: this.get('gps.lockedLongitude'),\n                    accuracy: this.get('gps.lockedAccuracy'),\n                };\n                return this.get('weather')\n                    .fetchByGPS(position, this.get('date'))\n                    .then((weather) => {\n                        Ember.run.next(this, () => {\n                            return this.set('value', weather);\n                        });\n                        return true;\n                    });\n            }\n        },\n    ),\n    /*\n  i left these here if code above doesn't work for some reason and observers are needed..\n   * I hate myself :'(\n  dateObserver: Em.observer 'date', ->\n      if @get('project')\n          @set 'weatherNow', null\n          console.log \"date changed\"\n          @get('weather').fetchWeatherPosition(@get('project'),@get('date')).then (weather) =>\n              @set 'value', weather\n              @set 'weatherNow', weather\n\n  projectObserver: Em.observer 'project', ->\n      if @get('project')\n          @set 'weatherNow', null\n          console.log \"project changed\"\n          @get('weather').fetchWeatherPosition(@get('project')).then (weather) =>\n              @set 'value', weather\n              @set 'weatherNow', weather\n          #console.log @get 'project'\n   */\n    actions: {\n        updateWeather: function () {\n            var json;\n            // if weather-datatype changes, change this also\n            json = {};\n            json.temperature = this.get('ownWeather.temperature');\n            json.humidity = this.get('ownWeather.humidity');\n            json.windspeed = this.get('ownWeather.windspeed');\n            json.weather = this.get('ownWeather.weather');\n            if (this.get('ownWeather.temperature') && this.get('ownWeather.humidity')) {\n                json.dew_point = this.get('weather').calcDewPoint(json.temperature, json.humidity);\n                this.set('ownWeather.dew_point', json.dew_point);\n            }\n            return this.set('value', json);\n        },\n        toggleOverrideWeather: function () {\n            if (this.get('overrideWeather')) {\n                this.get('weather').fetchWeatherPosition();\n            } else if (this.get('weather.temperature')) {\n                this.set('ownWeather', this.get('weather'));\n            }\n            this.toggleProperty('overrideWeather');\n            return false;\n        },\n        changeWeatherType: function (type) {\n            this.set('ownWeather.weather', type);\n            return this.send('updateWeather');\n        },\n    },\n});\n\nexport default CollectorFieldsWeatherComponent;\n","export default Ember.HTMLBars.template({\"id\":\"dQ+tj/7R\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"weather-info\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"overrideWeather\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"getWeather\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move move-\\\",[24,[\\\"value\\\",\\\"weather\\\"]],\\\" weather-icon\\\"]]],[8],[9],[0,\\\"\\\\n                    \\\"],[1,[24,[\\\"value\\\",\\\"temperature\\\"]],false],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[0,\\\", \\\"],[1,[24,[\\\"value\\\",\\\"windspeed\\\"]],false],[1,[24,[\\\"translations\\\",\\\"wspeed\\\"]],false],[0,\\\", \\\"],[1,[24,[\\\"value\\\",\\\"humidity\\\"]],false],[1,[24,[\\\"translations\\\",\\\"percent\\\"]],false],[0,\\\", \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.abbr_dew_point\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"value\\\",\\\"dew_point\\\"]],false],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.fetching_weather\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"weather-brand\\\"],[8],[0,\\\"—\\\"],[1,[28,\\\"t\\\",[\\\"general.weather_provider\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[4,\\\"if\\\",[[24,[\\\"isNew\\\"]]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleOverrideWeather\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"general.edit\\\"],null]],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-inline\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-default dropdown-toggle\\\"],[10,\\\"data-toggle\\\",\\\"dropdown\\\"],[10,\\\"aria-haspopup\\\",\\\"true\\\"],[10,\\\"aria-expanded\\\",\\\"false\\\"],[10,\\\"type\\\",\\\"button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"ownWeather\\\",\\\"weather\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move move-\\\",[24,[\\\"ownWeather\\\",\\\"weather\\\"]],\\\" dropdown-weather-icon\\\"]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.weather_type\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"caret\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"dropdown-menu\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"Clouds\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Clouds dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.clouds\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"FogDay\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-FogDay dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.fog\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"LightRain\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-LightRain dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.light_rain\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"LightSnow\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-LightSnow dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.light_snow\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"PartlyCloudyDay\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PartlyCloudyDay dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.part_cloud\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"Rain\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Rain dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.rain\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"Snow\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Snow dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.snow\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"Sun\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Sun dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.sun\\\"],null],false],[9],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[\\\"text\\\",\\\"form-control short-weather-input\\\",[24,[\\\"ownWeather\\\",\\\"temperature\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateWeather\\\",[24,[\\\"ownWeather\\\"]]],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[\\\"text\\\",\\\"form-control short-weather-input\\\",[24,[\\\"ownWeather\\\",\\\"windspeed\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateWeather\\\",[24,[\\\"ownWeather\\\"]]],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[1,[24,[\\\"translations\\\",\\\"wspeed\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[\\\"text\\\",\\\"form-control short-weather-input\\\",[24,[\\\"ownWeather\\\",\\\"humidity\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateWeather\\\",[24,[\\\"ownWeather\\\"]]],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[1,[24,[\\\"translations\\\",\\\"percent\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.abbr_dew_point\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"ownWeather\\\",\\\"dew_point\\\"]],false],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleOverrideWeather\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-NoEdit\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/weather-component/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    collector: service('collector-service'),\n\n    actionList: null,\n    selectedActions: null,\n\n    jsonstr: '',\n\n    hook: computed(\n        'url',\n        'long',\n        'delay',\n        'randomdelay',\n        'delayTime',\n        'selectedActions.[]',\n        'sideloads',\n        'sideloadstr',\n        function () {\n            const settings = [];\n            if (get(this, 'delay'))\n                settings.push(\n                    (get(this, 'randomdelay') ? 'randomdelay:' : 'delay:') + get(this, 'delayTime'),\n                );\n            if (get(this, 'long')) settings.push('long');\n\n            const hook = {\n                url: get(this, 'url'),\n                actions: get(this, 'selectedActions'),\n                settings: settings,\n            };\n\n            if (get(this, 'sideloads'))\n                hook.sideloads = get(this, 'sideloadstr')\n                    ? get(this, 'sideloadstr').split(',')\n                    : [];\n\n            hook.v = 2;\n\n            return hook;\n        },\n    ),\n\n    json: computed('hook', function () {\n        return JSON.stringify(get(this, 'hook'));\n    }),\n\n    init() {\n        this._super();\n\n        set(this, 'texts', {\n            url: 'URL',\n            actions: 'Actions',\n            long: 'Long',\n            long_help: 'If webhook execution can take over 6s this should be on.',\n            delay: 'Delay',\n            delay_help: 'Wait some amount of time before executing webhook.',\n            delay_seconds: 'Give delay time in seconds:',\n            delay_randomize: 'Randomize:',\n            sideloads: 'Sideloads',\n        });\n\n        if (get(this, 'jsonstr')) this.load_hook(JSON.parse(get(this, 'jsonstr')));\n    },\n\n    didReceiveAttrs() {\n        const actionList = ['insert', 'delete', 'edit'];\n        const fields = get(this, 'collector').fieldArray(get(this, 'form'));\n        fields.forEach((item) => actionList.push('edit.' + item.name));\n\n        fields.forEach((item) => actionList.push('insert.' + item.name));\n\n        set(this, 'actionList', actionList);\n    },\n\n    actions: {\n        save() {\n            this.save(get(this, 'json'));\n        },\n\n        createOnEnter(select, e) {\n            if (e.keyCode === 13 && select.isOpen && !select.highlighted && select.searchText) {\n                if (!get(this, 'selectedActions').includes(select.searchText)) {\n                    get(this, 'actionList').pushObject(select.searchText);\n                    select.actions.choose(select.searchText);\n                }\n            }\n        },\n    },\n\n    load_hook(hook) {\n        set(this, 'selectedActions', hook.actions);\n        set(this, 'url', hook.url);\n\n        if (hook.settings.includes('long')) set(this, 'long', true);\n\n        if (hook.sideloads) {\n            set(this, 'sideloads', true);\n            set(this, 'sideloadstr', hook.sideloads.join(','));\n        }\n\n        const delay = hook.settings.find((item) => item.startsWith('delay:'));\n        const randomdelay = hook.settings.find((item) => item.startsWith('randomdelay:'));\n\n        if (randomdelay) {\n            set(this, 'delay', true);\n            set(this, 'randomdelay', true);\n            set(this, 'delayTime', randomdelay.substring(12));\n        } else if (delay) {\n            set(this, 'delay', true);\n            set(this, 'delayTime', delay.substring(6));\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"TW0vK+1x\",\"block\":\"{\\\"symbols\\\":[\\\"opt\\\",\\\"&default\\\"],\\\"statements\\\":[[14,2],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[24,[\\\"texts\\\",\\\"url\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control add-fields\\\",[28,\\\"mut\\\",[[24,[\\\"url\\\"]]],null]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[24,[\\\"texts\\\",\\\"actions\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@selected\\\",\\\"@options\\\",\\\"@onkeydown\\\",\\\"@onChange\\\"],[[23,0,[\\\"selectedActions\\\"]],[23,0,[\\\"actionList\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"createOnEnter\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"selectedActions\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[1,[23,1,[]],false],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"settings\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row setting\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9 setting-name\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[8],[1,[24,[\\\"texts\\\",\\\"long\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"hint\\\"],[8],[1,[24,[\\\"texts\\\",\\\"long_help\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3 pull-right\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"class\\\",\\\"onToggle\\\",\\\"theme\\\",\\\"size\\\"],[[24,[\\\"long\\\"]],\\\"pull-right\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"long\\\"]]],null]],null],\\\"material\\\",\\\"large\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row setting\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9 setting-name\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[8],[1,[24,[\\\"texts\\\",\\\"delay\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"hint\\\"],[8],[1,[24,[\\\"texts\\\",\\\"delay_help\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"class\\\",\\\"onToggle\\\",\\\"theme\\\",\\\"size\\\"],[[24,[\\\"delay\\\"]],\\\"pull-right\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"delay\\\"]]],null]],null],\\\"material\\\",\\\"large\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"delay\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row subsetting\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[24,[\\\"texts\\\",\\\"delay_seconds\\\"]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"pull-right\\\",[28,\\\"mut\\\",[[24,[\\\"delayTime\\\"]]],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row subsetting\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[24,[\\\"texts\\\",\\\"delay_randomize\\\"]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"class\\\",\\\"onToggle\\\",\\\"theme\\\"],[[24,[\\\"randomdelay\\\"]],\\\"pull-right\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"randomdelay\\\"]]],null]],null],\\\"material\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row setting\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9 setting-name\\\"],[8],[1,[24,[\\\"texts\\\",\\\"sideloads\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"class\\\",\\\"onToggle\\\",\\\"theme\\\",\\\"size\\\"],[[24,[\\\"sideloads\\\"]],\\\"pull-right\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"sideloads\\\"]]],null]],null],\\\"material\\\",\\\"large\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"sideloads\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row subsetting\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"value\\\"],[[28,\\\"mut\\\",[[24,[\\\"sideloadstr\\\"]]],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"preview\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"json\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"delete\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"delete\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.remove\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/webhook-editor/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    collector: service('collector-service'),\n    store: service(),\n\n    hooks: computed(function () {\n        return get(this, 'store')\n            .peekAll('form-setting')\n            .filter((item) => {\n                const correct_form = get(item, 'form.external_type') === get(this, 'form');\n                const is_webhook = get(item, 'name') === 'webhook';\n                return correct_form && is_webhook;\n            });\n    }),\n\n    formRecord: computed('form', function () {\n        return get(this, 'store')\n            .peekAll('form')\n            .find((item) => get(item, 'external_type') === get(this, 'form'));\n    }),\n\n    init() {\n        this._super();\n        set(this, 'texts', {\n            webhooks: 'Webhooks',\n            add: 'Add',\n        });\n    },\n\n    actions: {\n        async add(hook) {\n            await get(this, 'store')\n                .createRecord('form-setting', {\n                    form: get(this, 'formRecord'),\n                    name: 'webhook',\n                    value: hook,\n                })\n                .save();\n            this.notifyPropertyChange('hooks');\n            set(this, 'showAdd', false);\n        },\n\n        edit(hook) {\n            set(this, 'edit', hook);\n        },\n\n        async save(hook, json) {\n            set(hook, 'value', json);\n            await hook.save();\n            this.notifyPropertyChange('hooks');\n            set(this, 'edit', false);\n        },\n\n        async delete(hook) {\n            await hook.destroyRecord();\n            this.notifyPropertyChange('hooks');\n            set(this, 'edit', false);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"oDSVYkFR\",\"block\":\"{\\\"symbols\\\":[\\\"hook\\\",\\\"&default\\\"],\\\"statements\\\":[[14,2],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[24,[\\\"texts\\\",\\\"webhooks\\\"]],false],[0,\\\" \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAdd\\\"]]],null],true]],[8],[1,[24,[\\\"texts\\\",\\\"add\\\"]],false],[9],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"hooks\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",\\\"list-group-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"edit\\\",[23,1,[]]]],[8],[1,[28,\\\"component\\\",[\\\"webhook-list/webhook\\\"],[[\\\"hook\\\"],[[23,1,[\\\"value\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAdd\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"close\\\",\\\"header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAdd\\\"]]],null],false],null],\\\"Add webhook\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"webhook-editor\\\",null,[[\\\"form\\\",\\\"save\\\"],[[24,[\\\"form\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"add\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"close\\\",\\\"header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"edit\\\"]]],null],null],null],\\\"Edit webhook\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"webhook-editor\\\",null,[[\\\"form\\\",\\\"jsonstr\\\",\\\"save\\\",\\\"delete\\\"],[[24,[\\\"form\\\"]],[24,[\\\"edit\\\",\\\"value\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"edit\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"delete\\\",[24,[\\\"edit\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/webhook-list/template.hbs\"}});","import Component from '@ember/component';\nimport { get, computed } from '@ember/object';\n\nexport default Component.extend({\n    parsed: computed('hook', function () {\n        return JSON.parse(get(this, 'hook'));\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"m0edhF7Z\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"url\\\"],[8],[1,[24,[\\\"parsed\\\",\\\"url\\\"]],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"value\\\"],[8],[1,[22,\\\"hook\\\"],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/webhook-list/webhook/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    ttapi2: service(),\n\n    logrows: computed('rowid', function () {\n        return get(this, 'ttapi2').request('webhooklog?rowid=' + get(this, 'rowid'));\n    }),\n});\n","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    shortUrl: computed('row.hook.url', function () {\n        return get(this, 'row.hook.url').replace('cc.movenium.com/backend/trigger', '@cc');\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"bi8A74XF\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label label-default\\\"],[11,\\\"title\\\",[28,\\\"moment-format\\\",[[24,[\\\"row\\\",\\\"timestamp\\\"]],\\\"LLL\\\"],null]],[8],[0,\\\" \\\"],[1,[28,\\\"moment-from-now\\\",[[24,[\\\"row\\\",\\\"timestamp\\\"]]],null],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n    \\\"],[1,[22,\\\"shortUrl\\\"],false],[0,\\\"\\\\n   \\\\n    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"glyphicon glyphicon-chevron-down pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"show\\\"]]],null],[28,\\\"not\\\",[[24,[\\\"show\\\"]]],null]]],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"label \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"row\\\",\\\"response\\\",\\\"statusCode\\\"]],200],null],\\\"label-success\\\",\\\"label-danger\\\"],null],\\\" pull-right\\\"]]],[8],[1,[24,[\\\"row\\\",\\\"response\\\",\\\"statusCode\\\"]],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row info\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"pre\\\",true],[8],[1,[28,\\\"show-json\\\",[[24,[\\\"row\\\"]],4],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/webhook-log/row/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"YQJzEIVA\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"&default\\\"],\\\"statements\\\":[[14,2],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[24,[\\\"logrows\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.webhook\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"logrows\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"webhook-log/row\\\",null,[[\\\"row\\\"],[[23,1,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/webhook-log/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/week-report2/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WeekReport2Component;\n\nimport Ember from 'ember';\n\nWeekReport2Component = Ember.Component.extend({\n    intl: Em.inject.service(),\n    gui: Em.inject.service(),\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    sum: Em.computed('model', function () {\n        var arr, totalAbsenceDays, totalAbsenceHours, totalWorkHours;\n        totalWorkHours = 0;\n        totalAbsenceDays = 0;\n        totalAbsenceHours = 0;\n        this.get('model').forEach((row) => {\n            if (Ember.typeOf(row) === 'object') {\n                if (row['dayamount']) {\n                    return totalAbsenceDays++;\n                } else {\n                    return (totalAbsenceHours += row['hours']);\n                }\n            } else {\n                return (totalWorkHours += row.get('work_hours'));\n            }\n        });\n        arr = [];\n        arr['totalWorkHours'] = totalWorkHours;\n        arr['totalAbsenceDays'] = totalAbsenceDays;\n        arr['totalAbsenceHours'] = totalAbsenceHours;\n        return arr;\n    }),\n    saldosInUse: Ember.computed(function () {\n        return this.get('Collector').testNeeds(['products.saldo']);\n    }),\n    currentSaldo: Ember.computed('model', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                return this.get('Collector')\n                    .ttapi({\n                        url: 'saldo/get_saldo?userid=' + this.session.currentUser.id,\n                    })\n                    .then((back) => {\n                        return resolve({\n                            value: back['saldo'] / 60,\n                        });\n                    });\n            }),\n        });\n    }),\n    actions: {\n        click: function (row) {\n            // worktime is instance\n            if (Ember.typeOf(row) === 'instance') {\n                if (\n                    this.get('Collector').canAddWorktime(row.get('date')) &&\n                    this.get('rowClicked')\n                ) {\n                    return this.rowClicked(row);\n                } else {\n                }\n            } else {\n                if (this.get('rowClicked')) {\n                    return this.rowClicked(row);\n                }\n            }\n        },\n    },\n});\n\nexport default WeekReport2Component;\n","export default Ember.HTMLBars.template({\"id\":\"g+mWHkFE\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 totals\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"weekreport.total_work_hours\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"worktime\\\",\\\"work_hours\\\",[24,[\\\"sum\\\",\\\"totalWorkHours\\\"]]]]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 totals\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saldosInUse\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"saldo.usersaldo\\\"],null],false],[0,\\\":\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentSaldo\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"currentSaldo\\\",\\\"value\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 totals right\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"weekreport.total_absence_days\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",\\\"dayamount\\\",[24,[\\\"sum\\\",\\\"totalAbsenceDays\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense.absence_hours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"weekreport.total_absence_hours\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",\\\"absence_hours\\\",[24,[\\\"sum\\\",\\\"totalAbsenceHours\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"report.no_rows\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 week-report-row\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"click\\\",[23,1,[]]],null]],[8],[0,\\\"\\\\n\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"project-image\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"abcensetype\\\",\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"project-icon img-circle absence-circle\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cup\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"project-icon\\\",null,[[\\\"project\\\"],[[23,1,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worktime-info\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"worktime-info-row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[[28,\\\"if\\\",[[23,1,[\\\"project\\\"]],\\\"date\\\",\\\"startdate\\\"],null],[28,\\\"if\\\",[[23,1,[\\\"project\\\"]],\\\"worktime\\\",\\\"abcense\\\"],null],[23,1,[\\\"date\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[\\\"date\\\",\\\"worktime\\\",[23,1,[\\\"date\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"worktime-info-row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"work_hours\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[\\\"work_hours\\\",\\\"worktime\\\",[23,1,[\\\"work_hours\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"starttime\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[\\\"starttime\\\",\\\"worktime\\\",[23,1,[\\\"starttime\\\"]]]]],false],[0,\\\" - \\\"],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[\\\"endtime\\\",\\\"worktime\\\",[23,1,[\\\"endtime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[\\\"starttime\\\",\\\"abcense\\\",[23,1,[\\\"starttime\\\"]]]]],false],[0,\\\" - \\\"],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[\\\"endtime\\\",\\\"abcense\\\",[23,1,[\\\"endtime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"task\\\",\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                ,\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"task-container\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checklist\\\"],[8],[9],[0,\\\"  \\\"],[1,[23,1,[\\\"task\\\",\\\"name\\\"]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"worktime-info-row\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move move-\\\",[28,\\\"if\\\",[[23,1,[\\\"project\\\"]],\\\"MySites\\\",\\\"Cup\\\"],null]]]],[8],[9],[0,\\\" \\\"],[1,[28,\\\"if\\\",[[23,1,[\\\"project\\\"]],[23,1,[\\\"project\\\",\\\"name\\\"]],[23,1,[\\\"abcensetype\\\",\\\"name\\\"]]],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"row-separator\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/week-report2/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { A } from '@ember/array';\nimport { next } from '@ember/runloop';\nimport config from 'tt4/config/environment';\nexport default class WizardBuilderBillingComponent extends Component {\n    @service session;\n    @service admintool;\n    @service intl;\n\n    @tracked header;\n    @tracked savedErrors;\n    @tracked validFields;\n    @tracked billingtype;\n    @tracked currentPage;\n    @tracked result;\n    @tracked isSaving;\n    @tracked isCanceling;\n\n    texts = { subscribe: 'subscribe' };\n\n    operators = [\n        { id: 'apix', name: 'Apix Messaging Oy (003723327487)' },\n        { id: 'basware', name: 'BasWare Einvoices Oy (BAWCFI22)' },\n        { id: 'basware_oyj', name: 'BasWare Oyj (003705925424)' },\n        { id: 'cgi', name: 'CGI - Logica (003703575029)' },\n        { id: 'danske_bank', name: 'Danske Bank Oyj (DABAFIHH)' },\n        { id: 'enfo', name: 'Enfo Oy (003718062728)' },\n        { id: 'enfo_oyj', name: 'Enfo Oyj (003714377140)' },\n        { id: 'inex', name: 'InExchange Factorum AB (INEXCHANGE)' },\n        { id: 'liaison', name: 'LIAISON Technologies Oy (003708599126)' },\n        { id: 'maventa', name: 'Maventa Services (003721291126)' },\n        { id: 'nordea', name: 'Nordea (NDEAFIHH)' },\n        { id: 'notebeat', name: 'Notebeat Oy (003717203971)' },\n        { id: 'op', name: 'OP-Pohjola-ryhmä (OKOYFIHH)' },\n        { id: 'opus', name: 'OpusCapita Group Oy - Itella (003710948874)' },\n        { id: 'pagero', name: 'Pagero (003723609900)' },\n        { id: 'pop', name: 'POP Pankit (POPFFI22)' },\n        { id: 's_pankki', name: 'S-Pankki Oy (SBANFIHH)' },\n        { id: 'sampo', name: 'Sampo Pankki Oyj (PSPBFIHH)' },\n        { id: 'handelsbank', name: 'Svenska HAndelsbanken AB (HANDFIHH)' },\n        { id: 'saasto', name: 'Säästöpankit (ITELFIHH)' },\n        { id: 'tapiola', name: 'Tapiola Pankki (TAPIFI22)' },\n        { id: 'teliasonera', name: 'TeliaSonera Finland Oyj (003714756079)' },\n        { id: 'tieto', name: 'Tieto Oyj (003701011385)' },\n        { id: 'aland', name: 'Ålandsbanken Abp (AABAFI22)' },\n        { id: 'opus_solutions', name: 'OpusCapita Solutions Oy (E204503)' },\n    ];\n\n    get currentPageComponent() {\n        return 'wizard-builder/billing/page' + this.currentPage;\n    }\n\n    constructor() {\n        super(...arguments);\n        this.currentPage = 1;\n        this.billingtype = 'card';\n        this.productName = this.intl.t('products.mini_entry');\n        this.savedErrors = A();\n        this.validFields = A();\n        this.isSaving = false;\n        this.header = 'billing_info.set_billing_info';\n    }\n\n    get productSums() {\n        return get(this, 'admintool').ajax({\n            url: 'get_prices_for_mini_entry',\n            headers: {\n                Authorization: 'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n            },\n            type: 'GET',\n            data: {\n                country: get(this, 'session.currentUser.company_info.country'),\n            },\n        });\n    }\n\n    @action\n    validateName(name_on_card) {\n        if (!name_on_card) {\n            if (this.validFields.indexOf('name') > -1) this.validFields.removeObject('name');\n            this.savedErrors.pushObject({\n                id: 'name',\n                text: this.intl.t('validation.error.mandatory'),\n            });\n        } else if (name_on_card) {\n            if (this.validFields.indexOf('name') == -1) this.validFields.pushObject('name');\n            var foundError = this.savedErrors.findBy('id', 'name');\n            if (foundError) this.savedErrors.removeObject(foundError);\n        }\n    }\n\n    get isValid() {\n        if (this.billingtype == 'card') {\n            return this.validFields.length == 4;\n        }\n        return true;\n    }\n\n    @action\n    validateErrors(event) {\n        if (event.error) {\n            if (this.validFields.indexOf(event.elementType) > -1) {\n                this.validFields.removeObject(event.elementType);\n            }\n            this.savedErrors.pushObject({ id: event.elementType, text: event.error.message });\n        } else if (event.complete) {\n            if (this.validFields.indexOf(event.elementType) == -1) {\n                this.validFields.pushObject(event.elementType);\n            }\n            var foundError = this.savedErrors.findBy('id', event.elementType);\n            if (foundError) this.savedErrors.removeObject(foundError);\n        }\n    }\n\n    @action\n    async save(billingData) {\n        await get(this, 'admintool').ajax({\n            url: 'billinginfo',\n            headers: {\n                Authorization: 'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n            },\n            data: billingData,\n            type: 'PUT',\n        });\n        this.isSaving = false;\n    }\n\n    @action\n    transitionToNextPage() {\n        this.header = 'billing_info.billing_ok';\n        this.result = 'billing_ok';\n        this.currentPage = 2;\n    }\n\n    @action\n    closeAndShowNotice() {\n        if (this.currentPage != 1) {\n            this.close();\n            return;\n        }\n        this.currentPage = 2;\n        this.result = 'billing_not_ok';\n        this.header = 'billing_info.not_ok_header';\n    }\n    @action\n    close() {\n        this.args.close();\n        // need to do reloading 1ms after closing modal because then \"wizard=billing\" has been removed from url (otherwise reloading would just open billing-modal again)\n        next(this, () => window.location.reload());\n    }\n\n    @action\n    changeBillingType(type) {\n        this.billingtype = type;\n    }\n    @action\n    async closeAndSaveCustomer() {\n        this.isCanceling = true;\n        const data = {\n            email: get(this, 'session.currentUser.email'),\n            company_name: get(this, 'session.currentUser.company_info.company_name'),\n        };\n        await fetch(config.APP.BILLING_URL + '/subscribe', {\n            headers: {\n                Authorization: 'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n            },\n            method: 'POST',\n            body: JSON.stringify(data),\n        });\n        this.isCanceling = false;\n        this.closeAndShowNotice();\n    }\n}\n","import Component from '@glimmer/component';\nimport { action, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport fetch from 'fetch';\nimport $ from 'jquery';\nimport config from 'tt4/config/environment';\nimport podNames from 'ember-component-css/pod-names';\nimport { tracked } from '@glimmer/tracking';\nimport { captureException } from '@sentry/browser';\nimport { scheduleOnce } from '@ember/runloop';\n\nexport default class WizardBuilderBillingPage1Component extends Component {\n    @service session;\n    @service admintool;\n    @service intl;\n\n    @tracked type;\n    @tracked header;\n    @tracked savedErrors;\n    @tracked disabled;\n    @tracked validFields;\n    @tracked billingtype;\n    @tracked isSaving;\n    @tracked card_error;\n\n    texts = { subscribe: 'subscribe' };\n\n    constructor() {\n        super(...arguments);\n        this.load();\n    }\n\n    get styleNamespace() {\n        return podNames['wizard-builder/billing'];\n    }\n\n    get isValid() {\n        if (this.billingtype == 'card') {\n            return this.validFields.length == 4;\n        }\n        return true;\n    }\n\n    async load() {\n        // we have to load and save all stripe-stuff here, not in the parent-component\n        // because we cannot send card-data from this component to any other component\n        // this is a bit against DDAU, but what you gonna do?\n        this.loaded = false;\n        if (typeof Stripe === 'undefined') {\n            await $.getScript('https://js.stripe.com/v3/'); // eslint-disable-line\n        }\n\n        this.stripe = Stripe(config.APP.STRIPE_KEY);\n        let elements = this.stripe.elements();\n\n        var elementStyles = {\n            base: {\n                color: '#212121',\n                fontSize: '16px',\n                fontSmoothing: 'antialiased',\n                '::placeholder': {\n                    color: '#737373',\n                },\n                ':-webkit-autofill': {\n                    color: '#737373',\n                },\n            },\n            invalid: {\n                color: '#FF0000',\n\n                '::placeholder': {\n                    color: '#FFCCA5',\n                },\n            },\n        };\n\n        this.cardElement = elements.create('cardNumber', { style: elementStyles });\n        this.cardExpiryElement = elements.create('cardExpiry', { style: elementStyles });\n        this.cardCVCElement = elements.create('cardCvc', { style: elementStyles });\n\n        // we mount card elements only after rendering is done\n        scheduleOnce('afterRender', this, 'mountCardElements');\n    }\n\n    mountCardElements() {\n        this.cardElement.mount('#card-number');\n        this.cardExpiryElement.mount('#card-expiry');\n        this.cardCVCElement.mount('#card-cvc');\n\n        let self = this;\n\n        [this.cardElement, this.cardExpiryElement, this.cardCVCElement].forEach(function (element) {\n            element.on('change', function (event) {\n                self.args.validateErrors(event);\n            });\n        });\n    }\n\n    @action\n    async save() {\n        let billingData = {};\n        billingData['billingtype'] = this.args.billingtype;\n        if (this.args.billingtype == 'einvoice') {\n            billingData['e_invoice_operator'] = this.e_invoice_operator;\n            billingData['e_invoice_address'] = this.e_invoice_address;\n            billingData['invoice_ref'] = this.invoice_ref;\n            await this.args.save(billingData);\n        } else if (this.args.billingtype == 'card') {\n            await this.args.save(billingData);\n            await this.saveToStripeSecure(); // we have to do this here because we cannot send card values to parent-component because of stripe\n        }\n        if (!this.card_error) this.args.transitionToNextPage();\n    }\n\n    /**\n     * Handles creating new and updating old subscriptions\n     */\n    async createOrUpdateSubscription(paymentMethodId = false) {\n        const data = {\n            email: get(this, 'session.currentUser.email'),\n            company_name: get(this, 'session.currentUser.company_info.company_name'),\n            name_on_card: this.name_on_card,\n            paymentMethodId: paymentMethodId ? paymentMethodId : null,\n        };\n        const response = await fetch(config.APP.BILLING_URL + '/subscribe', {\n            headers: {\n                Authorization: 'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n            },\n            method: 'POST',\n            body: JSON.stringify(data),\n        });\n        const subscription = await response.json();\n        //console.log(subscription);\n        return subscription;\n    }\n\n    async updatePaymentMethod(clientSecret) {\n        const result = await this.stripe.confirmCardSetup(clientSecret, {\n            payment_method: {\n                card: this.cardElement,\n                billing_details: {\n                    name: this.name_on_card,\n                },\n            },\n        });\n        try {\n            let subscription = await this.createOrUpdateSubscription(\n                result.setupIntent.payment_method,\n            );\n\n            // we have to confirm card payment also if invoice is in \"requires_confirmation\" state\n            if (\n                typeof subscription.attributes.subscription.latest_invoice != 'string' &&\n                subscription.attributes.subscription.latest_invoice.payment_intent.status ==\n                    'requires_confirmation'\n            ) {\n                await this.stripe.confirmCardPayment(\n                    subscription.attributes.subscription.latest_invoice.payment_intent\n                        .client_secret,\n                    {\n                        payment_method:\n                            subscription.attributes.subscription.latest_invoice.payment_intent\n                                .payment_method,\n                    },\n                );\n            }\n            this.card_error = false;\n        } catch (error) {\n            captureException(error); // try to catch possible errors in sentry\n            if (error.error)\n                this.card_error = this.intl.exists('billing_info.' + error.error)\n                    ? this.intl.t('billing_info.' + error.error)\n                    : this.intl.t('billing_info.card_error');\n            else this.card_error = this.intl.t('billing_info.card_error');\n        }\n        return result;\n    }\n\n    async saveToStripeSecure() {\n        this.isSaving = true;\n        try {\n            let subscription = await this.createOrUpdateSubscription();\n            let result;\n\n            if (subscription.clientSecret && subscription.clientSecret.indexOf('seti_') > -1) {\n                result = await this.updatePaymentMethod(subscription.clientSecret);\n                if (result.error) {\n                    this.card_error = this.intl.t('billing_info.card_error');\n                } else {\n                    this.card_error = false;\n                }\n            }\n        } catch (error) {\n            captureException(error); // try to catch possible errors in sentry\n            if (error.error)\n                this.card_error = this.intl.exists('billing_info.' + error.error)\n                    ? this.intl.t('billing_info.' + error.error)\n                    : this.intl.t('billing_info.card_error');\n            else this.card_error = this.intl.t('billing_info.card_error');\n        }\n        this.isSaving = false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"GPX3OaQg\",\"block\":\"{\\\"symbols\\\":[\\\"error\\\",\\\"error\\\",\\\"error\\\",\\\"error\\\",\\\"@productName\\\",\\\"@productSums\\\",\\\"@savedErrors\\\",\\\"@validateName\\\",\\\"@isValid\\\",\\\"@isCanceling\\\",\\\"@closeAndSaveCustomer\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-box-billing\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.input_card_info\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"rounded-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"form\\\",true],[10,\\\"id\\\",\\\"card-form\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"card-number\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.card_number\\\"],null],false],[0,\\\"*\\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"id\\\",\\\"card-number\\\"],[10,\\\"class\\\",\\\"form-control\\\"],[8],[0,\\\"\\\\n                        \\\"],[2,\\\" A Stripe Element will be inserted here. \\\"],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"find-by\\\",[\\\"id\\\",\\\"cardNumber\\\",[23,7,[]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,4,[]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[10,\\\"id\\\",\\\"card-number-error\\\"],[8],[1,[23,4,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-40\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"card-expiry\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.card_expiry\\\"],null],false],[0,\\\"*\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"id\\\",\\\"card-expiry\\\"],[10,\\\"class\\\",\\\"form-control\\\"],[8],[0,\\\"\\\\n                                \\\"],[2,\\\" A Stripe Element will be inserted here. \\\"],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"find-by\\\",[\\\"id\\\",\\\"cardExpiry\\\",[23,7,[]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[10,\\\"id\\\",\\\"card-number-error\\\"],[8],[1,[23,3,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-10\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-40\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"card-cvc\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.card_cvc\\\"],null],false],[0,\\\"*\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"id\\\",\\\"card-cvc\\\"],[10,\\\"class\\\",\\\"form-control\\\"],[8],[0,\\\"\\\\n                                \\\"],[2,\\\" A Stripe Element will be inserted here. \\\"],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"find-by\\\",[\\\"id\\\",\\\"cardCvc\\\",[23,7,[]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[10,\\\"id\\\",\\\"card-number-error\\\"],[8],[1,[23,2,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"name-on-card\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.name_on_card\\\"],null],false],[0,\\\"*\\\"],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"placeholder\\\",\\\"class\\\",\\\"key-up\\\",\\\"value\\\"],[\\\"text\\\",[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"user.lastname\\\"],null],\\\" \\\",[28,\\\"t\\\",[\\\"user.firstname\\\"],null]],null],\\\"form-control\\\",[28,\\\"action\\\",[[23,0,[]],[23,8,[]]],null],[23,0,[\\\"name_on_card\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"find-by\\\",[\\\"id\\\",\\\"name\\\",[23,7,[]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[10,\\\"id\\\",\\\"card-number-error\\\"],[8],[1,[23,1,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"card_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[10,\\\"id\\\",\\\"card-errors\\\"],[8],[1,[22,\\\"card_error\\\"],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-box-billing\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.subscription_info\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"rounded-box\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[23,6,[]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[23,6,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"table\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[23,5,[]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"number big-number\\\"],[8],[1,[28,\\\"currency_by_country\\\",[[23,6,[\\\"mini_entry\\\"]],[24,[\\\"session\\\",\\\"currentUser\\\",\\\"company_info\\\",\\\"country\\\"]]],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.per_month\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"number medium-number\\\"],[8],[0,\\\"+\\\"],[1,[28,\\\"currency_by_country\\\",[[23,6,[\\\"per_user\\\"]],[24,[\\\"session\\\",\\\"currentUser\\\",\\\"company_info\\\",\\\"country\\\"]]],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.user_per_month\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"additional-info\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"billing_info.additional_info\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.price_error\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\",\\\"@disabled\\\",\\\"@saveButtonText\\\"],[[23,0,[\\\"isSaving\\\"]],[23,0,[\\\"save\\\"]],\\\"btn btn-m-link btn-block btn-lg\\\",[28,\\\"not\\\",[[23,9,[]]],null],[28,\\\"t\\\",[\\\"general.save\\\"],null]]]],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\",\\\"@saveButtonText\\\"],[[23,10,[]],[23,11,[]],\\\"btn btn-m-cancel btn-block btn-lg\\\",[28,\\\"t\\\",[\\\"billing_info.skip_billing\\\"],null]]]],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/billing/page1/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class WizardBuilderBillingPage2Component extends Component {\n    get styleNamespace() {\n        return podNames['wizard-builder/billing'];\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"0X/lT/uq\",\"block\":\"{\\\"symbols\\\":[\\\"@close\\\",\\\"@result\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[]],\\\"billing_ok\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notice\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.saved_ok\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,1,[]]]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[]],\\\"billing_not_ok\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notice\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.not_ok\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,1,[]]]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/billing/page2/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"fOJ4iKyS\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"wizard-builder/wizard\\\",[],[[\\\"@darkMode\\\",\\\"@pages\\\",\\\"@close\\\",\\\"@currentPage\\\",\\\"@header\\\"],[true,2,[28,\\\"fn\\\",[[24,[\\\"closeAndSaveCustomer\\\"]]],null],[22,\\\"currentPage\\\"],[28,\\\"t\\\",[[24,[\\\"header\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[[23,0,[\\\"currentPageComponent\\\"]]],[[\\\"validateName\\\",\\\"validateErrors\\\",\\\"cardElements\\\",\\\"validFields\\\",\\\"savedErrors\\\",\\\"billingtype\\\",\\\"result\\\",\\\"productName\\\",\\\"productSum\\\",\\\"additionalSum\\\",\\\"changeBillingType\\\",\\\"close\\\",\\\"save\\\",\\\"elements\\\",\\\"isValid\\\",\\\"operators\\\",\\\"productSums\\\",\\\"closeAndSaveCustomer\\\",\\\"transitionToNextPage\\\",\\\"isCanceling\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateName\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"validateErrors\\\"],null],[24,[\\\"cardElements\\\"]],[23,0,[\\\"validFields\\\"]],[23,0,[\\\"savedErrors\\\"]],[23,0,[\\\"billingtype\\\"]],[23,0,[\\\"result\\\"]],[23,0,[\\\"productName\\\"]],[23,0,[\\\"productSum\\\"]],[23,0,[\\\"additionalSum\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeBillingType\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[23,0,[\\\"elements\\\"]],[23,0,[\\\"isValid\\\"]],[23,0,[\\\"operators\\\"]],[28,\\\"await\\\",[[23,0,[\\\"productSums\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeAndSaveCustomer\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"transitionToNextPage\\\"],null],[23,0,[\\\"isCanceling\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/billing/template.hbs\"}});","import Component from '@ember/component';\nimport { get, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    router: service(),\n    collector: service('collector-service'),\n    componentName: computed('name', function () {\n        if (get(this, 'name').substring(0, 5) === 'help-') return 'wizard-builder/help-wizard';\n        return 'wizard-builder/' + get(this, 'name');\n    }),\n    actions: {\n        transitionToOnboarding() {\n            if (this.collector.testNeeds(['modules.timetracker', 'modules.absences'])) {\n                get(this, 'router').transitionTo({ queryParams: { wizard: 'onboarding-wizard' } });\n            } else {\n                this.close();\n            }\n        },\n        closeAndTransitionToRoute(route) {\n            get(this, 'router').transitionTo(route);\n        },\n    },\n});\n","import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    gui: service(),\n    store: service(),\n    intl: service(),\n    cdn: service(),\n\n    currentPage: 1,\n\n    currentPageImage: computed('currentPage', function () {\n        return this.cdn.url(\n            'images/dashboard/help/' + this.intl.primaryLocale + '/' + this.currentPage + '.png',\n        );\n    }),\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"7W4H/f7/\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.dashboard-info.page\\\",[24,[\\\"page\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dashboard-wizard-one-image\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"responsive\\\"],[11,\\\"src\\\",[22,\\\"image\\\"]],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/dashboard-info-wizard/page/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"8cDcdCXt\",\"block\":\"{\\\"symbols\\\":[\\\"wizard\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/wizard\\\",null,[[\\\"pages\\\",\\\"header\\\",\\\"close\\\",\\\"currentPage\\\",\\\"pageChange\\\"],[6,[28,\\\"t\\\",[\\\"wizard.dashboard-info.header\\\"],null],[24,[\\\"close\\\"]],[24,[\\\"currentPage\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"currentPage\\\"]]],null]],null]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content-header\\\"]],\\\"expected `wizard.content-header` to be a contextual component but found a string. Did you mean `(component wizard.content-header)`? ('tt4/pods/components/wizard-builder/dashboard-info-wizard/template.hbs' @ L2:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"pl-5\\\"],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"wizard.dashboard-info.header.\\\",[24,[\\\"currentPage\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dashboard-content pl-5 pr-5\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"wrapped-content\\\"],[8],[1,[28,\\\"component\\\",[\\\"wizard-builder/dashboard-info-wizard/page\\\"],[[\\\"image\\\",\\\"page\\\"],[[24,[\\\"currentPageImage\\\"]],[24,[\\\"currentPage\\\"]]]]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[1,[23,1,[\\\"buttons\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/dashboard-info-wizard/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { set } from '@ember/object';\nimport fetch from 'fetch';\nimport { htmlSafe } from '@ember/string';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class ExportInfoWizardComponent extends Component {\n    @tracked currentPage = 1;\n    @tracked isLoading = true;\n    @tracked pageCount = 0;\n\n    texts = { notfound: 'no pages found for ' };\n\n    constructor() {\n        super(...arguments);\n        this.load();\n    }\n\n    get currentPageIndex() {\n        return this.currentPage - 1;\n    }\n\n    get styleNamespace() {\n        return podNames['wizard-builder/help-wizard'];\n    }\n\n    async load() {\n        const pages = [];\n\n        for (let i = 1; i <= 15; i++) {\n            const key = `${this.args.name}-${i}-${moment.locale()}`;\n            const fileUrl = `https://cloud-writer-prod.s3.amazonaws.com/${key}.html`;\n\n            const response = await fetch(fileUrl);\n            const html = await response.text();\n            if (response.status === 403) break;\n            pages.push(htmlSafe(html));\n        }\n\n        set(this, 'pages', pages);\n        set(this, 'pageCount', pages.length);\n        this.isLoading = false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"+hxqQtIR\",\"block\":\"{\\\"symbols\\\":[\\\"wizard\\\",\\\"@name\\\",\\\"@close\\\"],\\\"statements\\\":[[5,\\\"wizard-builder/wizard\\\",[],[[\\\"@pages\\\",\\\"@header\\\",\\\"@close\\\",\\\"@currentPage\\\",\\\"@pageChange\\\"],[[23,0,[\\\"pageCount\\\"]],[28,\\\"t\\\",[\\\"dashboard.show_info\\\"],null],[23,3,[]],[23,0,[\\\"currentPage\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"currentPage\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"pageCount\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,0,[\\\"texts\\\",\\\"notfound\\\"]],false],[0,\\\" \\\"],[1,[23,2,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"get\\\",[[23,0,[\\\"pages\\\"]],[23,0,[\\\"currentPageIndex\\\"]]],null],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[1,[23,1,[\\\"buttons\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/help-wizard/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\nimport config from 'tt4/config/environment';\n\n/*\n\n    How to construct an onboarding wizard page:\n    ember g component wizard-builder/onboarding-wizard/pages/<pageName> --pod\n\n    template.hbs:\n    {{#wizard-builder/onboarding-wizard/components/onboarding-wizard-page as |page|}}\n\n        {{#page.header as |header|}}\n            {{#header.icon}}\n                {{party-parrot}}\n            {{/header.icon}}\n            {{#header.title}} {{!-- big blue text --}}\n                {{t \"wizard.onboarding.<pageName>.header_title\"}}\n            {{/header.title}}\n            {{#header.text}} {{!-- smaller gray text --}}\n                {{t \"wizard.onboarding.<pageName>.header_text\"}}\n            {{/header.text}}\n        {{/page.header}}\n\n        {{#page.content-container as |container| }}\n            {{!-- Content can basically be anything you want, just write it here --}}\n\n            {{!-- Add as many setting cards as you need --}}\n            {{#container.setting-card as |card|}}\n\n                {{#card.title as |cardTitle|}}\n                    {{cardTitle.text text=(t \"wizard.onboarding.somethingTitle\")}}\n                    {{cardTitle.toggle toggled=somethingOnThisPageToggled}}\n                    {{cardTitle.info-button}}\n                {{/card.title}}\n\n                {{!-- disabled will gray out the content, this should be used only if you add toggle to title --}}\n                {{#card.content disabled=(not somethingOnThisPageToggled) as |content|}}\n\n                    {{!-- basic list of things --}}\n                    {{#content.setting-list}}\n\n                        <li> items here </li>\n                        <li>\n                        {{!-- custom input field}}\n                        {{content.input\n                            disabled=(not somethingOnThisPageToggled)\n                            value=valueForThisField\n                            type=\"text\"\n                        }}\n                        </li>\n                    {{/content.setting-list}}\n\n                    {{!-- nicely :) styled radio buttons --}}\n                    {{#content.radio-group}}\n                        {{#radio-button value=\"someValue\" groupValue=radioGroupvalue changed=(action \"groupValueChanged\")}}\n                            <div class=\"label pull-left\"></div><div class=\"inline pull-right\">{{t \"wizard.onboarding.somePage.setting.someSetting\"}}</div>\n                        {{/radio-button}}\n                        {{!-- add as many radio buttons as you need}}\n                    {{/content.radio-group}}\n\n                    {{!-- table for showing form rows}}\n                    {{#content.table form=form columns=columns rows=rows as |table|}}\n                        {{table.header}}\n                        {{table.rows}}\n                    {{/content.table}}\n\n                    {{!-- modal for adding new records --}}\n                    <button class=\"btn btn-primary add-saldo-absence-type-button\" {{action 'openModal'}}>{{t \"wizard.onboarding.somePage.addSomething\"}}</button>\n                    {{#page.mini-modal header=(t \"wizard.onboarding.somePage.add_new\") showModal=openModal save=(action (mut openModal))}}\n                        {{#collector/form-add only=\"name,otherfield\" form=\"form\" showSaved=false record=thisRecord close=(action (mut openModal)) as |form|}}\n                            {{#form.fields as |field|}}\n                                {{field.container}}\n                            {{/form.fields}}\n                            {{form.buttons}}\n                        {{/collector/form-add}}\n                    {{/page.mini-modal}}\n\n                {{/card.content}}\n\n            {{/container.setting-card}}\n\n        {{/page.content-container}}\n\n    {{/wizard-builder/onboarding-wizard/components/onboarding-wizard-page }}\n\n\n\n\n*/\n\nexport default Component.extend({\n    Collector: service('collector-service'),\n    store: service(),\n    capi: service(),\n    ttapi: service(),\n    dialogs: service(),\n    intl: service(),\n    initapp: service(),\n    analytics: service(),\n    welcomeTour: service(),\n    localStorageWrapper: service(),\n    currentPage: 1,\n\n    somethingHasBeenChanged: false,\n    loading: false,\n\n    currentPageComponent: computed('currentPage', function () {\n        let currentPage = get(this, 'currentPage');\n        return 'wizard-builder/onboarding-wizard/pages/' + get(this, 'pages')[currentPage - 1];\n    }),\n\n    TranslatedCurrentPageHeader: computed('currentPage', function () {\n        if (get(this, 'pageNames')) {\n            let pages = get(this, 'pageNames').map((name) => {\n                return 'wizard.page.' + name;\n            });\n            return pages[get(this, 'currentPage') - 1];\n        }\n        return null;\n    }),\n\n    hideNext: computed('currentPage', function () {\n        return get(this, 'currentPage') <= 1;\n    }),\n    showStartButton: computed('currentPage', function () {\n        return get(this, 'currentPage') <= 1;\n    }),\n\n    pageNames: computed('pages', function () {\n        let pages = get(this, 'pages');\n        return pages.map((page) => 'onboarding.' + page);\n    }),\n\n    init() {\n        this._super();\n        let pages = [\n            'welcome',\n            'timetracker-settings',\n            'salary-settings',\n            'overtime-settings',\n            'saldo-settings',\n            'project-settings',\n            'summary',\n        ];\n        if (this.Collector.testNeeds(['serviceCountry@se'])) {\n            // Remove overtime settings page from Swedish services\n            pages = pages.filter((item) => item !== 'overtime-settings');\n        }\n\n        this.pages = pages;\n        this.settings = {\n            calculateIfOvertimeEvening: false,\n            calculateIfOvertimeNight: false,\n            daily50: '8',\n            daily100: '10',\n            dailyOvertime: false,\n            editTime: 0,\n            eveningEnd: '21:00',\n            eveningStart: '16:00',\n            kilokm_typemeterProduct: false,\n            nightEnd: '06:00',\n            nightStart: '21:00',\n            overtimeCalculateAlways: false,\n            overtimeTimebased: false,\n            overtimehours: false,\n            pause: null,\n            perdiem: null,\n            saldoAutocutter: false,\n            saldoMaximum: '40',\n            saldoMinimum: '20',\n            saldoDailymaximum: '4',\n            saldoProduct: false,\n            splitOvertimehours: false,\n            timeAddingType: 'hybrid',\n            weeklyMaximum: '8',\n            weeklyOvertime: false,\n            saldoStart: moment().format('YYYY-MM-DD'),\n            product: config.brand == 'otta' ? 'Otta' : 'Visma Movenium',\n        };\n    },\n\n    actions: {\n        startWizard() {\n            this.incrementProperty('currentPage');\n        },\n        collectSettingsToObject(setting, value) {\n            set(this, 'somethingHasBeenChanged', true);\n            set(this, 'settings.' + setting, value);\n        },\n        async executeSettings() {\n            get(this, 'analytics').trackEvent({\n                category: 'Onboarding-wizard',\n                action: 'executeSettings',\n            });\n            set(this, 'loading', true);\n            await get(this, 'store').findAll('form', { reload: true });\n            await this.executeTimetrackingPage();\n            await this.exucuteSalarySettingsPage();\n            await this.exucuteOvertimeSettingsPage();\n            await this.executeSaldoSettingsPage();\n\n            await get(this, 'capi').request('forms'); // make /forms request to make all the settings on\n\n            get(this, 'initapp').clearInit();\n            // We wan't to launch the wootric survay after the reload so need to put this into localstorage\n            localStorage.setItem('survey', 'wizard');\n            this.startTourIfNeeded(true);\n            await this.close();\n            location.reload();\n        },\n        async closingWizard() {\n            let currentPageName = get(this, 'currentPageComponent').split('/')[3];\n            get(this, 'analytics').trackEvent({\n                category: 'Wizard-closing-page',\n                action: currentPageName,\n            });\n\n            if (get(this, 'somethingHasBeenChanged')) {\n                const executeChanges = await get(this, 'dialogs').confirm(\n                    get(this, 'intl').t('wizard.onboarding.close'),\n                );\n                if (executeChanges) this.send('executeSettings');\n            } else {\n                this.close();\n                this.startTourIfNeeded();\n            }\n        },\n    },\n\n    async executeTimetrackingPage() {\n        //time adding types\n        const addingTypes = {\n            startandend: [\n                '!products.timetracker_hybrid',\n                '!products.timetracker_hours',\n                '!products.timetracker_clockcard',\n            ],\n            hours: [\n                '!products.timetracker_hybrid',\n                'products.timetracker_hours',\n                '!products.timetracker_clockcard',\n            ],\n            hybrid: [\n                'products.timetracker_hybrid',\n                '!products.timetracker_hours',\n                '!products.timetracker_clockcard',\n            ],\n            clockcard: [\n                '!products.timetracker_hybrid',\n                '!products.timetracker_hours',\n                'products.timetracker_clockcard',\n            ],\n        };\n        await get(this, 'Collector').setProducts(addingTypes[get(this, 'settings.timeAddingType')]);\n\n        //date interval setting\n        await this.setFormFieldSetting(\n            'worktime',\n            'date',\n            'date_interval',\n            get(this, 'settings.editTime'),\n        );\n\n        //pause setting\n        if (get(this, 'settings.pause')) {\n            await Promise.all(get(this, 'Collector').setProducts(['products.pause']));\n            await get(this, 'capi').request('forms'); // make /forms request to make module_handler to update forms\n            await get(this, 'store').findAll('form', { reload: true });\n            await this.setFormFieldSetting(\n                'worktime',\n                'pause',\n                'default_value',\n                get(this, 'settings.pause'),\n            );\n        } else {\n            await get(this, 'Collector').setProducts(['!products.pause']);\n        }\n    },\n\n    async exucuteSalarySettingsPage() {\n        // salary-perdiem\n        const perdiemProducts = {\n            none: ['!products.timetracker_perdiem', '!products.timetracker_perdiem_meal'],\n            def: ['products.timetracker_perdiem', '!products.timetracker_perdiem_meal'],\n            meal: ['!products.timetracker_perdiem', 'products.timetracker_perdiem_meal'],\n        };\n        const perdiem = get(this, 'settings.perdiem') ? get(this, 'settings.perdiem') : 'none';\n        await get(this, 'Collector').setProducts(perdiemProducts[perdiem]);\n\n        // km_type\n        const km_typeProducts = {\n            none: ['!products.timetracker_km', '!products.timetracker_kmsade'],\n            km: ['products.timetracker_km', '!products.timetracker_kmsade'],\n            kmsade: ['!products.timetracker_km', 'products.timetracker_kmsade'],\n            kmandsade: ['products.timetracker_km', 'products.timetracker_kmsade'],\n        };\n        const km_type = get(this, 'settings.km_type') ? get(this, 'settings.km_type') : 'none';\n        await get(this, 'Collector').setProducts(km_typeProducts[km_type]);\n    },\n\n    async exucuteOvertimeSettingsPage() {\n        const rules = [];\n        const products = [];\n\n        // dailyOvertime\n        if (get(this, 'settings.dailyOvertime')) {\n            products.push('products.overtime_daily');\n\n            const daily50 = '' + get(this, 'settings.daily50');\n            const daily100 = '' + get(this, 'settings.daily100');\n            rules.push({ name: '_50', values: { from: daily50, to: daily100, salarytypes: '' } });\n            rules.push({ name: '_100', values: { from: daily100, salarytypes: '' } });\n        }\n\n        // weeklyOvertime\n        if (get(this, 'settings.weeklyOvertime')) {\n            products.push('products.overtime_weekly');\n            const weeklyOvertime = get(this, 'settings.weeklyMaximum');\n\n            rules.push({\n                name: '_week50',\n                values: { from: 0, to: weeklyOvertime, salarytypes: '' },\n            });\n            rules.push({ name: '_week100', values: { from: weeklyOvertime, salarytypes: '' } });\n        }\n\n        // overtime_time_based\n        if (get(this, 'settings.overtimeTimebased')) {\n            products.push('products.overtime_weekly');\n\n            const evening = {\n                name: '_evening',\n                values: {\n                    from: get(this, 'settings.eveningStart'),\n                    to: get(this, 'settings.eveningEnd'),\n                    salarytypes: '',\n                },\n            };\n            if (!get(this, 'settings.calculateIfOvertimeEvening'))\n                evening.values.do_not_calculate_if_overtime = true;\n            const night = {\n                name: '_night',\n                values: {\n                    from: get(this, 'settings.nightStart'),\n                    to: get(this, 'settings.nightEnd'),\n                    salarytypes: '',\n                },\n            };\n            if (!get(this, 'settings.calculateIfOvertimeNight'))\n                night.values.do_not_calculate_if_overtime = true;\n            if (get(this, 'settings.overtimeCalculateAlways')) {\n                evening.values.calculate_compensations_always = true;\n                night.values.calculate_compensations_always = true;\n            }\n\n            rules.push(evening, night);\n        }\n\n        //overtime_splitted\n        if (get(this, 'settings.splitOvertimehours')) {\n            products.push('products.overtime_splitted');\n            rules.push({ name: '_overtimehours', values: { salarytypes: '' } });\n            rules.push({ name: '_basichours', values: { salarytypes: '' } });\n        }\n\n        // save overtime rules\n        if (rules.length > 0) {\n            await get(this, 'ttapi').request('overtime/settings', {\n                method: 'post',\n                data: { rules: JSON.stringify(rules) },\n            });\n        }\n\n        // set products on\n        if (products.length > 0) {\n            products.push('products.overtime');\n            await get(this, 'Collector').setProducts(products);\n        }\n    },\n\n    async executeSaldoSettingsPage() {\n        if (get(this, 'settings.saldoProduct')) {\n            let saldoAbsence = await this.createSaldoAbsence();\n\n            const saldoSetOn = get(this, 'Collector').setProducts(['products.saldo']);\n\n            const saldoSettingOK = get(this, 'ttapi').request('saldo/saldoSettings', {\n                method: 'post',\n                data: {\n                    startdate: get(this, 'settings.saldoStart'),\n                    minimum: parseInt(get(this, 'settings.saldoMinimum'), 10) * 60,\n                    maximum: parseInt(get(this, 'settings.saldoMaximum'), 10) * 60,\n                    dailymaximum: parseFloat(get(this, 'settings.saldoDailymaximum'), 10) * 60,\n                    saldo_absence_id: get(saldoAbsence, 'id'),\n                    auto_cut: get(this, 'settings.saldoAutocutter'),\n                },\n            });\n\n            // wait for both to resolve\n            await saldoSetOn;\n            await saldoSettingOK;\n        }\n    },\n    async createSaldoAbsence() {\n        let saldoAbsences = await get(this, 'store')\n            .peekAll('abcensetype')\n            .filterBy('name', get(this, 'intl').t('saldo.saldo_absence'));\n\n        if (isEmpty(saldoAbsences)) {\n            return await get(this, 'store')\n                .createRecord('abcensetype', { name: get(this, 'intl').t('saldo.saldo_absence') })\n                .save();\n        } else {\n            return get(saldoAbsences, 'firstObject');\n        }\n    },\n\n    async setCapiProduct(products) {\n        await get(this, 'Collector').setProducts(products);\n    },\n\n    async setFormFieldSetting(formName, fieldName, settingName, value) {\n        let form = get(this, 'store').peekAll('form').filterBy('external_type', formName);\n        let fields = get(form, 'firstObject.fields').filterBy('external_type', fieldName);\n        let settings = get(fields, 'firstObject.settings').filterBy('name', settingName);\n\n        if (isEmpty(settings)) {\n            await get(this, 'store')\n                .createRecord('form-field-setting', {\n                    field: get(fields, 'firstObject'),\n                    name: settingName,\n                    value: value,\n                })\n                .save();\n        } else {\n            let setting = get(settings, 'firstObject');\n            set(setting, 'value', value);\n            await setting.save();\n        }\n    },\n\n    startTourIfNeeded(executeSettings) {\n        if (!isEmpty(this.localStorageWrapper.getUserSetting('tourShown'))) return;\n        executeSettings\n            ? localStorage.setItem('welcome-tour', 'startTour')\n            : this.welcomeTour.start();\n    },\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'div',\n    classNames: ['content-container-flex'],\n});\n","import Component from '@ember/component';\nimport { get } from '@ember/object';\n\nexport default Component.extend({\n    classNames: ['setting-card'],\n\n    init() {\n        this._super();\n        if (get(this, 'size')) {\n            get(this, 'classNames').push('fixed-height-' + get(this, 'size'));\n        }\n    },\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({\n    classNameBindings: ['disabled:faded'],\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({\n    classNames: ['radio-group'],\n});\n","export default Ember.HTMLBars.template({\"id\":\"w0/q1bp0\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/radio-group/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'ul',\n    classNames: ['setting-list'],\n\n    classNameBindings: ['disabled:faded'],\n});\n","export default Ember.HTMLBars.template({\"id\":\"8BF01lrN\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/setting-list/template.hbs\"}});","import Component from '@ember/component';\nimport { set } from '@ember/object';\n\nexport default Component.extend({\n    tagName: 'span',\n    classNames: ['setting-value-input'],\n    type: 'text',\n\n    actions: {\n        changeDate(event) {\n            //format date to locale DD MM YYYY\n            let date = event.target.value;\n            set(this, 'value', date);\n            this.changeValue(date);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"IBPzuUuq\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"type\\\"]],\\\"date\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"change\\\",\\\"value\\\",\\\"disabled\\\",\\\"showNativeControl\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"changeDate\\\"],null],[28,\\\"moment-format\\\",[[24,[\\\"value\\\"]],\\\"L\\\"],null],[24,[\\\"disabled\\\"]],false]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"type\\\",\\\"disabled\\\",\\\"change\\\"],[[24,[\\\"value\\\"]],[24,[\\\"type\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"changeValue\\\"]],[24,[\\\"value\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/setting-value-input/template.hbs\"}});","import Component from '@ember/component';\nimport { get, computed } from '@ember/object';\n\nexport default Component.extend({\n    classNames: ['settings-table-div'],\n    classNameBindings: ['showScroll:div-overflow'],\n\n    showScroll: computed('rows', function () {\n        let rows = get(this, 'rows');\n        return rows.length >= 20;\n    }),\n});\n","import Component from '@ember/component';\nimport { get, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { assert } from '@ember/debug';\n\nexport default Component.extend({\n    intl: service(),\n\n    tagName: 'thead',\n    classNames: ['settings-table-header'],\n\n    translatedColumns: computed('columns', function () {\n        let columns = get(this, 'columns');\n        let form = get(this, 'form');\n        assert(\n            'You must give columns as an array to the table component like {{#table columns=[\"name\", \"address\", \"zip\"]}}',\n            Array.isArray(columns),\n        );\n        assert(\n            'You must give a form to the table component like {{#table form=\"form\"}}',\n            typeof form === 'string' && form != '',\n        );\n        let translated = columns.map((column) => {\n            return get(this, 'intl').t('report.' + get(this, 'form') + '.' + column);\n        });\n        return translated;\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"NlIIr1Ev\",\"block\":\"{\\\"symbols\\\":[\\\"column\\\"],\\\"statements\\\":[[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"translatedColumns\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"th\\\",true],[8],[1,[23,1,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/header/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'tr',\n    classNames: ['settings-table-row'],\n\n    actions: {\n        rowAction(action, row) {\n            this.action(action, row);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"YddEyFkB\",\"block\":\"{\\\"symbols\\\":[\\\"button\\\",\\\"column\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[24,[\\\"form\\\"]],[23,2,[]],[28,\\\"get\\\",[[24,[\\\"row\\\"]],[23,2,[]]],null]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[4,\\\"each\\\",[[24,[\\\"rowActions\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[[23,1,[\\\"icon\\\"]]]]],[3,\\\"action\\\",[[23,0,[]],\\\"rowAction\\\",[23,1,[\\\"action\\\"]],[24,[\\\"row\\\"]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/row/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"KPcV5Im/\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"&default\\\"],\\\"statements\\\":[[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"settings-table\\\"],[8],[0,\\\"\\\\n    \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"header\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/header\\\"],[[\\\"form\\\",\\\"columns\\\"],[[24,[\\\"form\\\"]],[24,[\\\"columns\\\"]]]]]]]]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"rows\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"rows\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/row\\\"],[[\\\"row\\\",\\\"columns\\\",\\\"form\\\"],[[23,1,[]],[24,[\\\"columns\\\"]],[24,[\\\"form\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"839udNQC\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1,[[28,\\\"hash\\\",null,[[\\\"radio-group\\\",\\\"setting-list\\\",\\\"toggle\\\",\\\"input\\\",\\\"table\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/content/radio-group\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/content/setting-list\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/title/toggle\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/content/setting-value-input\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table\\\"],null]]]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"2MNdQQgp\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1,[[28,\\\"hash\\\",null,[[\\\"title\\\",\\\"content\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/title\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/content\\\"],null]]]]]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    classNames: ['card-title-flex'],\n\n    toggleable: true,\n    toggled: false,\n});\n","import Component from '@ember/component';\nimport { get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    analytics: service(),\n\n    tooltipDirection: 'right',\n    classNames: ['wizard-info-button'],\n\n    init() {\n        this._super(...arguments);\n        this.popperOptions = {\n            modifiers: {\n                preventOverflow: {\n                    escapeWithReference: false,\n                },\n            },\n        };\n    },\n\n    actions: {\n        trackAnalyticsEvent() {\n            get(this, 'analytics').trackEvent({\n                category: 'Onboarding-wizard',\n                action: 'info-button',\n            });\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"b5trazul\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"trackAnalyticsEvent\\\"],null]],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\",\\\"event\\\",\\\"side\\\",\\\"popperOptions\\\"],[[24,[\\\"text\\\"]],\\\"click\\\",[24,[\\\"tooltipDirection\\\"]],[23,0,[\\\"popperOptions\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/info-button/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"buR4shPM\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"text\\\",\\\"toggle\\\",\\\"info-button\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/title/text\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/title/toggle\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/title/info-button\\\"],null]]]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    classNames: ['setting-card-title'],\n});\n","export default Ember.HTMLBars.template({\"id\":\"MX4opDdH\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"text\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/text/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\nexport default Component.extend({\n    toggled: false,\n    showLabels: true,\n    didRender() {\n        this._super();\n        if (!get(this, 'toggleSize')) set(this, 'toggleSize', 'medium');\n    },\n    actions: {\n        sendChange(value) {\n            value = !value;\n            set(this, 'toggled', value);\n            this.changeValue(value);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"9kyOl9MG\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"x-toggle\\\",null,[[\\\"theme\\\",\\\"size\\\",\\\"onLabel\\\",\\\"offLabel\\\",\\\"showLabels\\\",\\\"value\\\",\\\"onToggle\\\",\\\"disabled\\\"],[\\\"material\\\",[24,[\\\"toggleSize\\\"]],[28,\\\"t\\\",[\\\"settings.on\\\"],null],[28,\\\"t\\\",[\\\"settings.off\\\"],null],[24,[\\\"showLabels\\\"]],[24,[\\\"toggled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"sendChange\\\",[24,[\\\"toggled\\\"]]],null],[24,[\\\"disabled\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/toggle/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"gEr6XYdw\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1,[[28,\\\"hash\\\",null,[[\\\"setting-card\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card\\\"],null]]]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    classNames: ['header-flex-container'],\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"cG8w+SNk\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"header-content-icon\\\"],[8],[14,1],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/header-icon/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"L11cCWwM\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/header-text/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"PIIb4kPQ\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/header-title/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"yy3z01dd\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"icon\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-header/header-icon\\\"],null]]]]]],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n    \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"title\\\",\\\"text\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-header/header-title\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-header/header-text\\\"],null]]]]]],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"eGGpYKuf\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flexbox\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"side\\\"],[8],[1,[28,\\\"du-de\\\",null,[[\\\"number\\\"],[[24,[\\\"dude\\\"]]]]],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"center\\\"],[8],[1,[22,\\\"text\\\"],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"side\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/flex-header/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    showModal: false,\n\n    actions: {\n        save() {\n            this.save();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"eItzDIIW\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"header\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showModal\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[14,1],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/mini-modal/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\n\nexport default Component.extend({\n    currentPage: 1,\n\n    actions: {\n        pageChange(page) {\n            set(this, 'currentPage', page);\n            if (get(this, 'pageChange')) get(this, 'pageChange')(page);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"c4z5zoQ7\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1,[[28,\\\"hash\\\",null,[[\\\"header\\\",\\\"flex-header\\\",\\\"content-container\\\",\\\"mini-modal\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-header\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/flex-header\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/mini-modal\\\"],null]]]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/onboarding-wizard-page/template.hbs\"}});","import Component from '@ember/component';\nimport { get } from '@ember/object';\n\nexport default Component.extend({\n    init() {\n        this._super();\n        let settings = get(this, 'settings');\n\n        this.splittedToggled = settings.overtimehours;\n        this.dailyToggled = settings.dailyOvertime;\n        this.weeklyToggled = settings.weeklyOvertime;\n\n        //right\n        this.timeBasedToggled = settings.overtimeTimebased;\n\n        //left\n        this.splitOvertimeHours = settings.splitOvertimehours;\n        this.daily50 = settings.daily50;\n        this.daily100 = settings.daily100;\n        this.weeklyMaximum = settings.weeklyMaximum;\n\n        //right\n        this.eveningStart = settings.eveningStart;\n        this.eveningEnd = settings.eveningEnd;\n        this.calculateIfOvertimeEvening = settings.calculateIfOvertimeEvening;\n        this.nightStart = settings.nightStart;\n        this.nightEnd = settings.nightEnd;\n        this.calculateIfOvertimeNight = settings.calculateIfOvertimeNight;\n        this.calculateAlways = settings.overtimeCalculateAlways;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"b7zoDJTg\",\"block\":\"{\\\"symbols\\\":[\\\"page\\\",\\\"container\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\",\\\"header\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/onboarding-wizard/components/onboarding-wizard-page\\\",null,null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"header\\\"]],\\\"expected `page.header` to be a contextual component but found a string. Did you mean `(component page.header)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L2:C7) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,15,[\\\"text\\\"]],\\\"expected `header.text` to be a contextual component but found a string. Did you mean `(component header.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L3:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.header_text\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[15]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content-container\\\"]],\\\"expected `page.content-container` to be a contextual component but found a string. Did you mean `(component page.content-container)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L8:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"left-overtime-flex\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L11:C15) \\\"],null]],[[\\\"column\\\"],[true]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,12,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L12:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,14,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L13:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.overtimehours\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,14,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L14:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.overtimehours.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[14]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,12,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L17:C19) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,13,[\\\"setting-list\\\"]],\\\"expected `content.setting-list` to be a contextual component but found a string. Did you mean `(component content.setting-list)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L18:C23) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[8],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,13,[\\\"toggle\\\"]],\\\"expected `content.toggle` to be a contextual component but found a string. Did you mean `(component content.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L21:C52) \\\"],null]],[[\\\"toggled\\\",\\\"toggleSize\\\",\\\"showLabels\\\",\\\"changeValue\\\"],[[24,[\\\"splitOvertimeHours\\\"]],\\\"medium\\\",false,[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"splitOvertimehours\\\"],null]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.split_overtimehours\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[13]},null]],\\\"parameters\\\":[12]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L28:C15) \\\"],null]],[[\\\"column\\\"],[true]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L29:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,11,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L30:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.daily_overtime\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,11,[\\\"toggle\\\"]],\\\"expected `cardTitle.toggle` to be a contextual component but found a string. Did you mean `(component cardTitle.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L31:C22) \\\"],null]],[[\\\"toggled\\\",\\\"changeValue\\\"],[[24,[\\\"dailyToggled\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"dailyOvertime\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,11,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L32:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.daily_overtime.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[11]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L35:C19) \\\"],null]],[[\\\"disabled\\\"],[[28,\\\"not\\\",[[24,[\\\"dailyToggled\\\"]]],null]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"setting-list\\\"]],\\\"expected `content.setting-list` to be a contextual component but found a string. Did you mean `(component content.setting-list)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L36:C23) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L38:C30) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"dailyToggled\\\"]]],null],[24,[\\\"daily50\\\"]],\\\"number\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"daily50\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.daily_50\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L42:C30) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"dailyToggled\\\"]]],null],[24,[\\\"daily100\\\"]],\\\"number\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"daily100\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.daily_100\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[10]},null]],\\\"parameters\\\":[9]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L49:C15) \\\"],null]],[[\\\"column\\\"],[true]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L50:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L51:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.weekly_overtime\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"toggle\\\"]],\\\"expected `cardTitle.toggle` to be a contextual component but found a string. Did you mean `(component cardTitle.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L52:C22) \\\"],null]],[[\\\"toggled\\\",\\\"changeValue\\\"],[[24,[\\\"weeklyToggled\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"weeklyOvertime\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L53:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.weekly_overtime.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L56:C19) \\\"],null]],[[\\\"disabled\\\"],[[28,\\\"not\\\",[[24,[\\\"weeklyToggled\\\"]]],null]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"setting-list\\\"]],\\\"expected `content.setting-list` to be a contextual component but found a string. Did you mean `(component content.setting-list)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L57:C23) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L59:C30) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"weeklyToggled\\\"]]],null],[24,[\\\"weeklyMaximum\\\"]],\\\"number\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"weeklyMaximum\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.weekly_maximum\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[7]},null]],\\\"parameters\\\":[6]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"right-overtime-flex\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L68:C15) \\\"],null]],[[\\\"column\\\"],[true]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L69:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L70:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.time_based\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"toggle\\\"]],\\\"expected `cardTitle.toggle` to be a contextual component but found a string. Did you mean `(component cardTitle.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L71:C22) \\\"],null]],[[\\\"toggled\\\",\\\"changeValue\\\"],[[24,[\\\"timeBasedToggled\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"overtimeTimebased\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L72:C22) \\\"],null]],[[\\\"tooltipDirection\\\",\\\"text\\\"],[\\\"left\\\",[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.time_based.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L75:C19) \\\"],null]],[[\\\"disabled\\\"],[[28,\\\"not\\\",[[24,[\\\"timeBasedToggled\\\"]]],null]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"setting-list\\\"]],\\\"expected `content.setting-list` to be a contextual component but found a string. Did you mean `(component content.setting-list)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L76:C23) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[2,\\\" For input fields:\\\\n                            the type is dynamic: input is type=\\\\\\\"time\\\\\\\" if the main setting is toggled=true, else text if toggled=false\\\\n                            because we don't want to show --:-- when they are disabled \\\"],[0,\\\"\\\\n                        \\\"],[2,\\\" Evening overtime \\\"],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L82:C30) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"timeBasedToggled\\\"]]],null],[24,[\\\"eveningStart\\\"]],\\\"time\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"eveningStart\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.time_based.evening_start\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L93:C30) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"timeBasedToggled\\\"]]],null],[24,[\\\"eveningEnd\\\"]],\\\"time\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"eveningEnd\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.time_based.evening_end\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"toggle\\\"]],\\\"expected `content.toggle` to be a contextual component but found a string. Did you mean `(component content.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L105:C34) \\\"],null]],[[\\\"disabled\\\",\\\"toggled\\\",\\\"toggleSize\\\",\\\"showLabels\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"timeBasedToggled\\\"]]],null],[24,[\\\"calculateIfOvertimeEvening\\\"]],\\\"medium\\\",false,[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"calculateIfOvertimeEvening\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.calculate_overtime_if_evening\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[2,\\\" Night overtime \\\"],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L119:C30) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"timeBasedToggled\\\"]]],null],[24,[\\\"nightStart\\\"]],\\\"time\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"nightStart\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.time_based.night_start\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L130:C30) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"timeBasedToggled\\\"]]],null],[24,[\\\"nightEnd\\\"]],\\\"time\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"nightEnd\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.time_based.night_end\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"toggle\\\"]],\\\"expected `content.toggle` to be a contextual component but found a string. Did you mean `(component content.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L142:C34) \\\"],null]],[[\\\"disabled\\\",\\\"toggled\\\",\\\"toggleSize\\\",\\\"showLabels\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"timeBasedToggled\\\"]]],null],[24,[\\\"calculateIfOvertimeNight\\\"]],\\\"medium\\\",false,[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"calculateIfOvertimeNight\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.calculate_if_overtime_evening\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"toggle\\\"]],\\\"expected `content.toggle` to be a contextual component but found a string. Did you mean `(component content.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L155:C34) \\\"],null]],[[\\\"disabled\\\",\\\"toggled\\\",\\\"toggleSize\\\",\\\"showLabels\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"timeBasedToggled\\\"]]],null],[24,[\\\"calculateAlways\\\"]],\\\"medium\\\",false,[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"overtimeCalculateAlways\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.calculate_always\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-dude\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"du-de\\\",null,[[\\\"number\\\"],[35]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[3]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\nimport { max } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n    collector: service('collector-service'),\n\n    columns: null,\n    // projects: [{\n    //     \"number\": \"1234\",\n    //     \"name\": \"Eka Projekti\",\n    //     \"address\": \"Puupolku 4F\",\n    //     \"zip\": \"67575\",\n    //     \"city\": \"Puukylä\"\n    // }],\n    projects: null,\n    projectRecord: null,\n    contactPerson: null,\n\n    init() {\n        this._super();\n        //if we're re-running the wizard we want to get all projects that may have been created\n        let projects = get(this, 'store').findAll('project').then(this._getProjects.bind(this));\n        this.projects = projects;\n        this.only = 'number,name,address,zip,city,proj_type';\n        this.columns = ['number', 'name', 'address', 'zip', 'city'];\n        if (this.collector.testNeedsOne('products.rakentajanpaketti')) {\n            this.contactPerson = get(this.store.peekAll('export_contact_person'), 'firstObject');\n        }\n    },\n\n    actions: {\n        openAddProjectModal() {\n            //get biggest project number+1 to autofill number field\n            let newProjectNumber = get(this, 'maxProjectNumber') + 1;\n            set(\n                this,\n                'projectRecord',\n                get(this, 'store').createRecord('project', { number: newProjectNumber }),\n            );\n            set(this, 'showProjectAddModal', true);\n        },\n\n        saveProject() {\n            set(this, 'showProjectAddModal', false);\n        },\n    },\n    async _getProjects(data) {\n        this.projectNumbers = await data.mapBy('number');\n        let projectsLength = await data.length;\n        this.maxProjectNumber = projectsLength !== 0 ? max('projectNumbers') : 0;\n        return data;\n    },\n\n    willDestroy() {\n        this._super(...arguments);\n        if (this.contactPerson) {\n            set(this.contactPerson, 'validation', 'off');\n            this.contactPerson.save();\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"gJ29XdZg\",\"block\":\"{\\\"symbols\\\":[\\\"page\\\",\\\"container\\\",\\\"card\\\",\\\"form\\\",\\\"cardTitle\\\",\\\"card\\\",\\\"content\\\",\\\"form\\\",\\\"table\\\",\\\"cardTitle\\\",\\\"header\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/onboarding-wizard/components/onboarding-wizard-page\\\",null,null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"header\\\"]],\\\"expected `page.header` to be a contextual component but found a string. Did you mean `(component page.header)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L2:C7) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,11,[\\\"text\\\"]],\\\"expected `header.text` to be a contextual component but found a string. Did you mean `(component header.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L3:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"           \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.projects.header_text\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[11]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content-container\\\"]],\\\"expected `page.content-container` to be a contextual component but found a string. Did you mean `(component page.content-container)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L8:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L10:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L11:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L12:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.projects\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L13:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.projects.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[10]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L16:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"table\\\"]],\\\"expected `content.table` to be a contextual component but found a string. Did you mean `(component content.table)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L18:C19) \\\"],null]],[[\\\"form\\\",\\\"columns\\\",\\\"rows\\\"],[\\\"project\\\",[24,[\\\"columns\\\"]],[24,[\\\"projects\\\"]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,9,[\\\"header\\\"]],false],[0,\\\"\\\\n                    \\\"],[1,[23,9,[\\\"rows\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[9]},null],[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary add-project-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openAddProjectModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.projects.add_new_project\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"mini-modal\\\"]],\\\"expected `page.mini-modal` to be a contextual component but found a string. Did you mean `(component page.mini-modal)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L24:C19) \\\"],null]],[[\\\"header\\\",\\\"showModal\\\",\\\"save\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.projects.add_new\\\"],null],[24,[\\\"showProjectAddModal\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveProject\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"collector/form-add\\\",null,[[\\\"only\\\",\\\"form\\\",\\\"showSaved\\\",\\\"record\\\",\\\"close\\\"],[[24,[\\\"only\\\"]],\\\"project\\\",false,[24,[\\\"projectRecord\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showProjectAddModal\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,8,[\\\"fields\\\"]],false],[0,\\\"\\\\n                        \\\"],[1,[23,8,[\\\"buttons\\\"]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.rakentajanpaketti\\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L40:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L41:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L42:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.taxman_contact_person\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L43:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.taxman_contact_person.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L46:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"preserveRecordOnDestroy\\\"],[\\\"export_contact_person\\\",[24,[\\\"contactPerson\\\"]],true]],{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,4,[\\\"fields\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[1,[28,\\\"du-de\\\",null,[[\\\"number\\\"],[2]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n    dialogs: service(),\n    intl: service(),\n\n    init() {\n        this._super();\n        this.columns = ['period_name', 'period_start_date', 'period_end_date'];\n        this.rowActions = [{ action: 'removeRow', icon: 'move move-Delete' }];\n        this.wagePeriods = get(this, 'store').findAll('wage_period');\n        this.perdiemToggled = get(this, 'settings.perdiem');\n        this.kmToggled = get(this, 'settings.km_type');\n    },\n    actions: {\n        perdiemToggled(value) {\n            set(this, 'settings.perdiem', value === true ? 'def' : null);\n            this.settingChanged('perdiem', get(this, 'settings.perdiem'));\n        },\n\n        km_typeToggled(value) {\n            set(this, 'settings.km_type', value === true ? 'km' : null);\n            this.settingChanged('km_type', get(this, 'settings.km_type'));\n        },\n\n        rowActions(action, row) {\n            if (action == 'removeRow') {\n                get(this, 'dialogs')\n                    .confirm(get(this, 'intl').t('general.remove_row'))\n                    .then(this._removeRowIfcon.bind(this, row));\n            }\n        },\n    },\n    _removeRowIfcon(row, con) {\n        if (con) {\n            row.destroyRecord();\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"BfqeCS26\",\"block\":\"{\\\"symbols\\\":[\\\"page\\\",\\\"container\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\",\\\"card\\\",\\\"content\\\",\\\"periods\\\",\\\"table\\\",\\\"cardTitle\\\",\\\"header\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/onboarding-wizard/components/onboarding-wizard-page\\\",null,null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"header\\\"]],\\\"expected `page.header` to be a contextual component but found a string. Did you mean `(component page.header)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L2:C7) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,14,[\\\"text\\\"]],\\\"expected `header.text` to be a contextual component but found a string. Did you mean `(component header.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L3:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.salary.header_text\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[14]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content-container\\\"]],\\\"expected `page.content-container` to be a contextual component but found a string. Did you mean `(component page.content-container)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L8:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L10:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L11:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,13,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L12:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.salary.salary_periods\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,13,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L13:C18) \\\"],null]],[[\\\"tooltipDirection\\\",\\\"text\\\"],[\\\"right\\\",[28,\\\"t\\\",[\\\"wizard.onboarding.salary.salary_periods.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[13]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L15:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"table\\\"]],\\\"expected `content.table` to be a contextual component but found a string. Did you mean `(component content.table)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L16:C19) \\\"],null]],[[\\\"form\\\",\\\"columns\\\",\\\"rows\\\"],[\\\"wage_period\\\",[24,[\\\"columns\\\"]],[24,[\\\"wagePeriods\\\"]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,12,[\\\"header\\\"]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,12,[\\\"rows\\\"]],\\\"expected `table.rows` to be a contextual component but found a string. Did you mean `(component table.rows)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L18:C22) \\\"],null]],[[\\\"rowActions\\\",\\\"action\\\"],[[24,[\\\"rowActions\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"rowActions\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[12]},null],[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary add-wagePeriod-button\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAddWagePeriods\\\"]]],null],true]],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.salary.add_new_wage_period\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"mini-modal\\\"]],\\\"expected `page.mini-modal` to be a contextual component but found a string. Did you mean `(component page.mini-modal)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L22:C19) \\\"],null]],[[\\\"header\\\",\\\"showModal\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.wage_periods.add_new\\\"],null],[24,[\\\"showAddWagePeriods\\\"]]]],{\\\"statements\\\":[[4,\\\"salary-periods-add\\\",null,[[\\\"showAdd\\\",\\\"saved\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAddWagePeriods\\\"]]],null]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAddWagePeriods\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,11,[\\\"submenu\\\"]],false],[0,\\\"\\\\n                        \\\"],[1,[23,11,[\\\"single\\\"]],false],[0,\\\"\\\\n                        \\\"],[1,[23,11,[\\\"many\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[11]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[10]},null]],\\\"parameters\\\":[9]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!serviceCountry@se\\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L33:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L34:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L35:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.salary.perdiem\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"toggle\\\"]],\\\"expected `cardTitle.toggle` to be a contextual component but found a string. Did you mean `(component cardTitle.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L36:C22) \\\"],null]],[[\\\"toggled\\\",\\\"changeValue\\\"],[[24,[\\\"perdiemToggled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"perdiemToggled\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L37:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.salary.perdiem.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L40:C19) \\\"],null]],[[\\\"disabled\\\"],[[28,\\\"not\\\",[[24,[\\\"perdiemToggled\\\"]]],null]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"radio-group\\\"]],\\\"expected `content.radio-group` to be a contextual component but found a string. Did you mean `(component content.radio-group)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L41:C23) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"def\\\",[24,[\\\"settings\\\",\\\"perdiem\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"perdiem\\\"],null]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.salary.perdiem_def\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"meal\\\",[24,[\\\"settings\\\",\\\"perdiem\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"perdiem\\\"],null]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.salary.perdiem_meal\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"img-bottom\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"du-de\\\",null,[[\\\"number\\\"],[26]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L58:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L59:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L60:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.salary.km_type\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"toggle\\\"]],\\\"expected `cardTitle.toggle` to be a contextual component but found a string. Did you mean `(component cardTitle.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L61:C18) \\\"],null]],[[\\\"toggled\\\",\\\"changeValue\\\"],[[24,[\\\"kmToggled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"km_typeToggled\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L62:C18) \\\"],null]],[[\\\"tooltipDirection\\\",\\\"text\\\"],[\\\"left\\\",[28,\\\"t\\\",[\\\"wizard.onboarding.salary.km.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L65:C15) \\\"],null]],[[\\\"size\\\",\\\"disabled\\\"],[\\\"normal\\\",[28,\\\"not\\\",[[24,[\\\"kmToggled\\\"]]],null]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"radio-group\\\"]],\\\"expected `content.radio-group` to be a contextual component but found a string. Did you mean `(component content.radio-group)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L66:C19) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"disabled\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"km\\\",[28,\\\"not\\\",[[24,[\\\"kmToggled\\\"]]],null],[24,[\\\"settings\\\",\\\"km_type\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"kilometers\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.salary.km\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"disabled\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"kmsade\\\",[28,\\\"not\\\",[[24,[\\\"kmToggled\\\"]]],null],[24,[\\\"settings\\\",\\\"km_type\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"kilometers\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.salary.kmsade\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"disabled\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"kmandsade\\\",[28,\\\"not\\\",[[24,[\\\"kmToggled\\\"]]],null],[24,[\\\"settings\\\",\\\"km_type\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"kilometers\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.salary.kmandsade\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { get, set, computed } from '@ember/object';\n\nexport default Component.extend({\n    store: service(),\n    collector: service('collector-service'),\n    customerSettings: service(),\n    dialogs: service(),\n    intl: service(),\n\n    saldoAbsenceId: null,\n\n    absenceTypes: computed('saldoToggled', async function () {\n        let toggled = get(this, 'saldoToggled');\n\n        let absenceTypes = get(this, 'store').peekAll('abcensetype');\n\n        let saldoAbsenceId = get(this, 'saldoAbsenceId');\n        let saldoAbsence = null;\n\n        //we check if saldo absence already exists in absencetypes\n        if (saldoAbsenceId) {\n            saldoAbsence = absenceTypes.filter((type) => type.id == saldoAbsenceId);\n        }\n\n        //we just turned saldos on and we don't have an existing saldo absence, we need to create one\n        if (toggled) {\n            //if we have a saldo absence id but we do not have a saldo absence in absence types\n            if (saldoAbsenceId && !saldoAbsence) {\n                let record = get(this, 'store').createRecord('abcensetype', {\n                    name: get(this, 'intl').t('saldo.saldo_absence'),\n                });\n                await record.save();\n            }\n        }\n\n        return absenceTypes;\n    }),\n\n    init() {\n        this._super();\n        let columns = ['name', 'usesholiday'];\n        this.columns = columns;\n        this.rowActions = [\n            { action: 'removeRow', icon: 'move move-Delete' },\n            { action: 'editRow', icon: 'move move-Pencil' },\n        ];\n\n        //fetch all possible absencetypes to store\n        get(this, 'store').findAll('abcensetype');\n\n        //check if we already have saldos on (if rerunning wizard)\n        /*if(get(this,'collector').testNeedsOne('products.saldo')){\n            get(this, 'collector').ttapi({\n                \"url\": \"saldo/saldoSettings\"\n            }).then(this.setSaldoSettings.bind(this))\n        }*/\n    },\n\n    actions: {\n        openAbsenceModal() {\n            set(this, 'absenceRecord', get(this, 'store').createRecord('abcensetype', {}));\n            set(this, 'showAbsenceAddModal', true);\n        },\n\n        rowActions(action, row) {\n            if (action == 'removeRow') {\n                get(this, 'dialogs')\n                    .confirm(get(this, 'intl').t('general.remove_row'))\n                    .then(this._removeRowIfcon.bind(this, row));\n            }\n\n            if (action == 'editRow') {\n                set(this, 'absenceRecord', row);\n                set(this, 'showAbsenceAddModal', true);\n            }\n        },\n    },\n\n    setSaldoSettings(saldo) {\n        if (saldo.length === 0) return;\n\n        set(this, 'settings.saldoStart', saldo.startDate);\n        set(this, 'settings.saldoMinimum', saldo.minimum / 60);\n        set(this, 'settings.saldoMaximum', saldo.maximum / 60);\n        set(this, 'settings.saldoDailymaximum ', saldo.dailymaximum / 60);\n        set(this, 'settings.autoCutter', saldo.auto_cut);\n\n        set(this, 'settings.saldoAbsenceId', saldo.saldo_absence_id);\n\n        //toggle saldos on\n        this.toggleProperty('saldoToggled');\n    },\n\n    checkIfSaldoAbsenceExists() {\n        let saldoAbsenceId = get(this, 'saldoAbsenceId');\n\n        if (!get(this, 'absenceTypes')) return;\n        let saldoAbsence = get(this, 'absenceTypes').filter((type) => type.id == saldoAbsenceId);\n\n        if (saldoAbsence) return true;\n        return false;\n    },\n\n    _removeRowIfcon(row, con) {\n        if (con) {\n            row.destroyRecord();\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"IaIcsJT7\",\"block\":\"{\\\"symbols\\\":[\\\"page\\\",\\\"container\\\",\\\"card\\\",\\\"content\\\",\\\"form\\\",\\\"table\\\",\\\"cardTitle\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/onboarding-wizard/components/onboarding-wizard-page\\\",null,null,{\\\"statements\\\":[[0,\\\"    \\\\n    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"flex-header\\\"]],\\\"expected `page.flex-header` to be a contextual component but found a string. Did you mean `(component page.flex-header)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L3:C6) \\\"],null]],[[\\\"dude\\\",\\\"text\\\"],[15,[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.header_text\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content-container\\\"]],\\\"expected `page.content-container` to be a contextual component but found a string. Did you mean `(component page.content-container)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L5:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L7:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L8:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L9:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.saldo\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"toggle\\\"]],\\\"expected `cardTitle.toggle` to be a contextual component but found a string. Did you mean `(component cardTitle.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L10:C18) \\\"],null]],[[\\\"toggled\\\",\\\"changeValue\\\"],[[24,[\\\"settings\\\",\\\"saldoProduct\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"saldoProduct\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L11:C18) \\\"],null]],[[\\\"tooltipDirection\\\",\\\"text\\\"],[\\\"right\\\",[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.saldo.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[10]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L14:C15) \\\"],null]],[[\\\"disabled\\\"],[[28,\\\"not\\\",[[24,[\\\"settings\\\",\\\"saldoProduct\\\"]]],null]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"setting-list\\\"]],\\\"expected `content.setting-list` to be a contextual component but found a string. Did you mean `(component content.setting-list)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L15:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L17:C26) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"settings\\\",\\\"saldoProduct\\\"]]],null],[24,[\\\"settings\\\",\\\"saldoStart\\\"]],\\\"date\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"saldoStart\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.start\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L28:C26) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"settings\\\",\\\"saldoProduct\\\"]]],null],[24,[\\\"settings\\\",\\\"saldoMinimum\\\"]],\\\"number\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"saldoMinimum\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.minimum\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L39:C26) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"settings\\\",\\\"saldoProduct\\\"]]],null],[24,[\\\"settings\\\",\\\"saldoMaximum\\\"]],\\\"number\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"saldoMaximum\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.maximum\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L50:C26) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"settings\\\",\\\"saldoProduct\\\"]]],null],[24,[\\\"settings\\\",\\\"saldoDailymaximum\\\"]],\\\"number\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"saldoDailymaximum\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.dailymaximum\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"toggle\\\"]],\\\"expected `content.toggle` to be a contextual component but found a string. Did you mean `(component content.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L62:C30) \\\"],null]],[[\\\"disabled\\\",\\\"toggled\\\",\\\"toggleSize\\\",\\\"showLabels\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"settings\\\",\\\"saldoProduct\\\"]]],null],[24,[\\\"settings\\\",\\\"autocutter\\\"]],\\\"medium\\\",false,[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"saldoAutocutter\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.autocut\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[9]},null]],\\\"parameters\\\":[8]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L80:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L81:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L82:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.absence\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L83:C18) \\\"],null]],[[\\\"tooltipDirection\\\",\\\"text\\\"],[\\\"left\\\",[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.absences.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L86:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"table\\\"]],\\\"expected `content.table` to be a contextual component but found a string. Did you mean `(component content.table)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L87:C19) \\\"],null]],[[\\\"form\\\",\\\"columns\\\",\\\"rows\\\"],[\\\"abcensetype\\\",[24,[\\\"columns\\\"]],[24,[\\\"absenceTypes\\\"]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,6,[\\\"header\\\"]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"rows\\\"]],\\\"expected `table.rows` to be a contextual component but found a string. Did you mean `(component table.rows)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L89:C22) \\\"],null]],[[\\\"rowActions\\\",\\\"action\\\"],[[24,[\\\"rowActions\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"rowActions\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary add-saldo-absence-type-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openAbsenceModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.add_absencetype\\\"],null],false],[9],[0,\\\"\\\\n                \\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"mini-modal\\\"]],\\\"expected `page.mini-modal` to be a contextual component but found a string. Did you mean `(component page.mini-modal)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L94:C19) \\\"],null]],[[\\\"header\\\",\\\"showModal\\\",\\\"save\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.add_new_absencetype\\\"],null],[24,[\\\"showAbsenceAddModal\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAbsenceAddModal\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"                \\\\n\\\"],[4,\\\"collector/form-add\\\",null,[[\\\"only\\\",\\\"form\\\",\\\"showSaved\\\",\\\"record\\\",\\\"close\\\"],[\\\"name,usesholiday\\\",\\\"abcensetype\\\",false,[24,[\\\"absenceRecord\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAbsenceAddModal\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,5,[\\\"fields\\\"]],false],[0,\\\"\\\\n                        \\\"],[1,[23,5,[\\\"buttons\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\\n\\\\n\\\"]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"3R6l8P1z\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"wizard-builder/onboarding-wizard/components/onboarding-wizard-page\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"summary-flex\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"du-de\\\",null,[[\\\"number\\\",\\\"size\\\"],[1,300]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.summary.onboarding_complete\\\"],[[\\\"product\\\",\\\"htmlSafe\\\"],[[24,[\\\"settings\\\",\\\"product\\\"]],true]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary complete-button\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"executeSettings\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.summary.confirm_onboarding_completion\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"box\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/pages/summary/template.hbs\"}});","import Component from '@ember/component';\nimport { get } from '@ember/object';\nimport { typeOf } from '@ember/utils';\n\nexport default Component.extend({\n    //radio-groups will set these automatically when you change them so you can just get these directly\n    init() {\n        this._super();\n\n        let settings = get(this, 'settings');\n\n        if (typeOf(settings.pause) == 'string') {\n            this.pause = 'custom';\n            this.customPause = parseInt(settings.pause);\n        } else {\n            this.pause = settings.pause;\n        }\n\n        if (typeOf(settings.editTime) == 'string') {\n            this.editTime = 'custom';\n            this.customEditTime = parseInt(settings.editTime);\n        } else {\n            this.editTime = settings.editTime;\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"L+wiXvfu\",\"block\":\"{\\\"symbols\\\":[\\\"page\\\",\\\"container\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/onboarding-wizard/components/onboarding-wizard-page\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"flex-header\\\"]],\\\"expected `page.flex-header` to be a contextual component but found a string. Did you mean `(component page.flex-header)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L3:C6) \\\"],null]],[[\\\"dude\\\",\\\"text\\\"],[3,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.header_text\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content-container\\\"]],\\\"expected `page.content-container` to be a contextual component but found a string. Did you mean `(component page.content-container)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L5:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L7:C11) \\\"],null]],[[\\\"size\\\"],[\\\"normal\\\"]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L8:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,11,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L9:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.time_adding_type\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,11,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L10:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.adding_type.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[11]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L12:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"radio-group\\\"]],\\\"expected `content.radio-group` to be a contextual component but found a string. Did you mean `(component content.radio-group)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L13:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\\n\\\"],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"hybrid\\\",[24,[\\\"settings\\\",\\\"timeAddingType\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"timeAddingType\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.setting.hybrid\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"clockcard\\\",[24,[\\\"settings\\\",\\\"timeAddingType\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"timeAddingType\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.setting.clockcard\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"startandend\\\",[24,[\\\"settings\\\",\\\"timeAddingType\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"timeAddingType\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.setting.startandend\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"hours\\\",[24,[\\\"settings\\\",\\\"timeAddingType\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"timeAddingType\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.setting.hours\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[10]},null]],\\\"parameters\\\":[9]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L33:C11) \\\"],null]],[[\\\"size\\\"],[\\\"normal\\\"]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L34:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L35:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.edit_time\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L36:C18) \\\"],null]],[[\\\"tooltipDirection\\\",\\\"text\\\"],[\\\"right\\\",[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.edit_time.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L39:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"radio-group\\\"]],\\\"expected `content.radio-group` to be a contextual component but found a string. Did you mean `(component content.radio-group)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L40:C19) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[0,[24,[\\\"editTime\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"editTime\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.edit_time.same_day\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[2,[24,[\\\"editTime\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"editTime\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.edit_time.tomorrow\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[3,[24,[\\\"editTime\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"editTime\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.edit_time.two_days\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\"],[\\\"custom\\\",[24,[\\\"editTime\\\"]]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.edit_time.custom.text_start\\\"],null],false],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L54:C30) \\\"],null]],[[\\\"value\\\",\\\"type\\\",\\\"disabled\\\",\\\"changeValue\\\"],[[24,[\\\"customEditTime\\\"]],\\\"number\\\",[28,\\\"not\\\",[[28,\\\"is-equal\\\",[[24,[\\\"editTime\\\"]],\\\"custom\\\"],null]],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"editTime\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.edit_time.custom.text_end\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[7]},null],[0,\\\"            \\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L69:C11) \\\"],null]],[[\\\"size\\\"],[\\\"normal\\\"]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L70:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L71:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L72:C18) \\\"],null]],[[\\\"tooltipDirection\\\",\\\"text\\\"],[\\\"left\\\",[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L74:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"radio-group\\\"]],\\\"expected `content.radio-group` to be a contextual component but found a string. Did you mean `(component content.radio-group)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L75:C19) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[null,[24,[\\\"pause\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"pause\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.none\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[15,[24,[\\\"pause\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"pause\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.15\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[30,[24,[\\\"pause\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"pause\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.30\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[45,[24,[\\\"pause\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"pause\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.45\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[60,[24,[\\\"pause\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"pause\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.60\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\"],[\\\"custom\\\",[24,[\\\"pause\\\"]]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.custom.text_start\\\"],null],false],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L95:C30) \\\"],null]],[[\\\"value\\\",\\\"type\\\",\\\"disabled\\\",\\\"changeValue\\\"],[[24,[\\\"customPause\\\"]],\\\"number\\\",[28,\\\"not\\\",[[28,\\\"is-equal\\\",[[24,[\\\"pause\\\"]],\\\"custom\\\"],null]],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"pause\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.custom.text_end\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    actions: {\n        startOnboardingWizard() {\n            this.startWizard();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"h4/FqvzE\",\"block\":\"{\\\"symbols\\\":[\\\"page\\\",\\\"container\\\",\\\"card\\\",\\\"card\\\",\\\"card\\\",\\\"card\\\",\\\"header\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/onboarding-wizard/components/onboarding-wizard-page\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"header\\\"]],\\\"expected `page.header` to be a contextual component but found a string. Did you mean `(component page.header)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L3:C7) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"icon\\\"]],\\\"expected `header.icon` to be a contextual component but found a string. Did you mean `(component header.icon)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L4:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"du-de\\\",null,[[\\\"number\\\"],[36]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"title\\\"]],\\\"expected `header.title` to be a contextual component but found a string. Did you mean `(component header.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L7:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.welcome.header_title\\\"],[[\\\"product\\\"],[[24,[\\\"settings\\\",\\\"product\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"text\\\"]],\\\"expected `header.text` to be a contextual component but found a string. Did you mean `(component header.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L10:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.welcome.header_text\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[7]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content-container\\\"]],\\\"expected `page.content-container` to be a contextual component but found a string. Did you mean `(component page.content-container)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L15:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"start-button-div\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xl btn-primary start-wizard-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"startOnboardingWizard\\\"]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.start\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L23:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L24:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-lg btn-primary disabled text-center\\\"],[10,\\\"disabled\\\",\\\"\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"general.next\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L29:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.welcome.next_button_info\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L37:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L38:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-lg btn-primary disabled\\\"],[10,\\\"disabled\\\",\\\"\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"general.previous\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L44:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.welcome.previous_button_info\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L51:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L52:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info welcome-page-info-button-example\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L56:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.welcome.info_button_info\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L62:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L64:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-lg btn-danger disabled\\\"],[10,\\\"disabled\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.exit\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L68:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.welcome.exit_button_info\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Am/Xj8Zu\",\"block\":\"{\\\"symbols\\\":[\\\"wizard\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/wizard\\\",null,[[\\\"pages\\\",\\\"header\\\",\\\"close\\\",\\\"currentPage\\\",\\\"pageChange\\\"],[7,[28,\\\"t\\\",[[24,[\\\"TranslatedCurrentPageHeader\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"closingWizard\\\"],null],[24,[\\\"currentPage\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"currentPage\\\"]]],null]],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"steps\\\"]],\\\"expected `wizard.steps` to be a contextual component but found a string. Did you mean `(component wizard.steps)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/template.hbs' @ L5:C10) \\\"],null]],[[\\\"pageNames\\\"],[[24,[\\\"pageNames\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content\\\"]],\\\"expected `wizard.content` to be a contextual component but found a string. Did you mean `(component wizard.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/template.hbs' @ L6:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"component\\\",[[24,[\\\"currentPageComponent\\\"]]],[[\\\"settingChanged\\\",\\\"startWizard\\\",\\\"executeSettings\\\",\\\"settings\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"collectSettingsToObject\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"startWizard\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"executeSettings\\\"],null],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"buttons\\\"]],\\\"expected `wizard.buttons` to be a contextual component but found a string. Did you mean `(component wizard.buttons)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/template.hbs' @ L15:C10) \\\"],null]],[[\\\"showStartButton\\\",\\\"hideNext\\\",\\\"hideDone\\\"],[[24,[\\\"showStartButton\\\"]],[24,[\\\"hideNext\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"eL7jSx74\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"component\\\",[[24,[\\\"componentName\\\"]]],[[\\\"close\\\",\\\"name\\\",\\\"transitionToOnboarding\\\",\\\"closeAndTransitionToRoute\\\"],[[24,[\\\"close\\\"]],[24,[\\\"name\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"transitionToOnboarding\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeAndTransitionToRoute\\\"],null]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/template.hbs\"}});","import Component from '@ember/component';\nimport { get, computed } from '@ember/object';\n\nexport default Component.extend({\n    currentPage: 1,\n\n    currentPageComponent: computed('currentPage', function () {\n        return 'wizard-builder/test-wizard/page' + get(this, 'currentPage');\n    }),\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({\n    placeholder: 'this is page number 1',\n});\n","export default Ember.HTMLBars.template({\"id\":\"bUFd9A9Q\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"placeholder\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/test-wizard/page1/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    placeholder: 'this is page number 2',\n});\n","export default Ember.HTMLBars.template({\"id\":\"zal8X6Oj\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"placeholder\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/test-wizard/page2/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"nYn30o0l\",\"block\":\"{\\\"symbols\\\":[\\\"wizard\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/wizard\\\",null,[[\\\"pages\\\",\\\"header\\\",\\\"close\\\",\\\"pageChange\\\"],[2,\\\"test wizard\\\",[24,[\\\"close\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"currentPage\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[1,[23,1,[\\\"steps\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content\\\"]],\\\"expected `wizard.content` to be a contextual component but found a string. Did you mean `(component wizard.content)`? ('tt4/pods/components/wizard-builder/test-wizard/template.hbs' @ L3:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[[24,[\\\"currentPageComponent\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[1,[23,1,[\\\"buttons\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/test-wizard/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    gui: service(),\n    store: service(),\n\n    currentPage: 1,\n\n    currentPageComponent: computed('currentPage', function () {\n        return 'wizard-builder/vismanet-wizard/page' + get(this, 'currentPage');\n    }),\n\n    init() {\n        this._super();\n        if (get(this, 'gui.saveVismanetCode')) set(this, 'currentPage', 2);\n\n        this.checkNormalHoursSalarytypeIsOn();\n    },\n\n    checkNormalHoursSalarytypeIsOn() {\n        get(this, 'store')\n            .query('salarytype', { shortcut: 'hours_hourly' })\n            .then(this.turnOnNormalHoursSalaryTypeIfNotOn.bind(this));\n    },\n\n    turnOnNormalHoursSalaryTypeIfNotOn(rows) {\n        if (!get(rows, 'firstObject')) this.turnOnNormalHoursSalaryType();\n    },\n\n    turnOnNormalHoursSalaryType() {\n        get(this, 'store')\n            .createRecord('salarytype', {\n                control: 'work_hours;salarytype=$this',\n                inuse: true,\n                key: 'VT',\n                name: 'Tuntityö',\n                shortcut: 'hours_hourly',\n            })\n            .save();\n    },\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"ri5Z3KJY\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/Visma.net-Financials.svg\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.vismanet.welcome\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/vismanet-wizard/page1/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\nimport config from 'tt4/config/environment';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    gui: service(),\n    error: service(),\n    session: service(),\n    ajax: service(),\n\n    placeholder: 'this is ge number 2',\n\n    init() {\n        this._super();\n        this.partnerId = this.session.currentUser.partnerid\n        if (get(this, 'gui.saveVismanetCode')) {\n            this.signin(get(this, 'gui.saveVismanetCode'));\n            set(this, 'gui.saveVismanetCode', null);\n        } else this.gotoSignIn();\n    },\n\n    gotoSignIn() {\n        set(this, 'transtionToVismanet', true);\n\n        let params = ['scope=vismanet', 'redirectRoute=vismanet', 'partnerid=' + this.partnerId];\n\n        window.open(config.APP.VISMASSOURL + '?' + params.join('&'), '_system');\n    },\n\n    signin(credentials) {\n        const token = this.session.data.authenticated.access_token;\n\n        const data = {\n            credentials: credentials,\n            key: 'vismanet',\n        };\n\n        this.ajax\n            .request(config.APP.ONLY_CC_URL + '/saveCredentials', {\n                method: 'post',\n                headers: {\n                    Authorization: 'Bearer ' + token,\n                },\n                data: JSON.stringify(data),\n            })\n            .then(this.signedIn.bind(this), this.signinFailed.bind(this));\n    },\n\n    signedIn(resp) {\n        if (resp.error) {\n            set(this, 'errorMessage', get(this, 'error').toString(resp));\n            return;\n        }\n\n        set(this, 'done', true);\n    },\n\n    signinFailed(reason) {\n        set(this, 'errorMessage', get(this, 'error').toString(reason));\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"PxSMprOM\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.vismanet.loginDone\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[22,\\\"errorMessage\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"transtionToVismanet\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.vismanet.moveToVismanet\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.vismanet.signingIn\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/vismanet-wizard/page2/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nimport config from 'tt4/config/environment';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    gui: service(),\n    error: service(),\n    cc: service(),\n    session: service(),\n\n    capi_url: computed(function () {\n        return config.environment === 'development'\n            ? 'http://capi/'\n            : config.APP.COLLECTOR_API_URL + '/';\n    }),\n\n    init() {\n        this._super();\n        this.syncFromVismanet().then(this.syncReady.bind(this), this.syncFailed.bind(this));\n    },\n\n    syncFromVismanet() {\n        return get(this, 'cc').request('general_vismanet', {\n            headers: {\n                Authorization: 'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n            },\n            data: {\n                capi_url: get(this, 'capi_url'),\n            },\n        });\n    },\n\n    syncReady() {\n        set(this, 'done', true);\n    },\n\n    syncFailed(reason) {\n        set(this, 'errorMessage', get(this, 'error').toString(reason));\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"7up9PqSE\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\\n    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export-salary.vismanet.settings.signedin\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[22,\\\"errorMessage\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.vismanet.sync\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/vismanet-wizard/page3/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"lAAc4nCp\",\"block\":\"{\\\"symbols\\\":[\\\"wizard\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/wizard\\\",null,[[\\\"pages\\\",\\\"header\\\",\\\"close\\\",\\\"currentPage\\\",\\\"pageChange\\\"],[3,\\\"Login to Visma.net\\\",[24,[\\\"close\\\"]],[24,[\\\"currentPage\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"currentPage\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[1,[23,1,[\\\"steps\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"centered-content\\\"]],\\\"expected `wizard.centered-content` to be a contextual component but found a string. Did you mean `(component wizard.centered-content)`? ('tt4/pods/components/wizard-builder/vismanet-wizard/template.hbs' @ L3:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[[24,[\\\"currentPageComponent\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[1,[23,1,[\\\"buttons\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/vismanet-wizard/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, setProperties, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { Promise } from 'rsvp';\nimport { A } from '@ember/array';\nimport config from '../../../../config/environment';\n\nexport default Component.extend({\n    ajax: service(),\n    admintool: service(),\n    error: service(),\n    session: service(),\n    store: service(),\n    cdn: service(),\n    router: service(),\n    collector: service('collector-service'),\n    ttapi: service(),\n\n    loading: false,\n    show: false,\n\n    errors: A(),\n\n    mandatoryFields: A(['password', 'company_name', 'phone']),\n\n    termsAndConditionsLink: computed(function () {\n        if (moment.locale() == 'fi') return config.termsAndConditions.fi;\n        if (moment.locale() == 'se' || moment.locale() == 'sv')\n            return config.termsAndConditions.se;\n        return config.termsAndConditions.en;\n    }),\n\n    init() {\n        this._super();\n        this.show = false;\n        this.validation_error = false;\n        //prefill inputs with whatever data we already have\n        const userPromise = this.store.query('user', {\n            id: get(this, 'session.currentUser.id'),\n            sideload: true,\n        });\n        const companyPromise = this.store.findAll('company_info');\n\n        Promise.all([companyPromise, userPromise]).then(this.prefillData.bind(this));\n    },\n\n    actions: {\n        handlePhoneValidation(isValid) {\n            if (isValid) {\n                set(this, 'phone_error', false);\n            } else {\n                set(this, 'phone_error', true);\n            }\n        },\n        saveData() {\n            if (get(this, 'phone_error') == true) {\n                return;\n            }\n            set(this, 'saving', true);\n\n            get(this, 'store')\n                .findAll('company_info')\n                .then(this.saveCompanyInfo.bind(this))\n                .catch(this._handleError.bind(this));\n\n            get(this, 'store')\n                .query('user', { id: get(this, 'session.currentUser.id'), sideload: true })\n                .then(this.saveUserInfo.bind(this))\n                .catch(this._handleError.bind(this));\n\n            set(this, 'saving', false);\n\n            // if mini-entry we need to ask for billing-information also\n            if (this.collector.testNeeds(['products.mini_entry'])) {\n                get(this, 'router').transitionTo({ queryParams: { wizard: 'billing' } });\n                this.close();\n            }\n            // Send some data to pub/sub (service-created-2)\n            this.sendToSns();\n\n            //Had to make it like this, so it works in mess-ages too\n            this.transitionToOnboarding();\n        },\n        valueUpdated(field, value) {\n            set(this, field, value);\n            this.validate(field);\n            set(this, 'phone_error', false); // reset phone error\n        },\n        checkPasswords() {\n            if (\n                (!get(this, 'password') || get(this, 'password').length < 8) &&\n                get(this, 'errors').indexOf('password_length') == -1\n            ) {\n                get(this, 'errors').pushObject('password_length');\n            } else if (\n                get(this, 'password') &&\n                get(this, 'password').length >= 8 &&\n                get(this, 'errors').indexOf('password_length') != -1\n            ) {\n                get(this, 'errors').removeObject('password_length');\n            }\n            this.notifyPropertyChange('errors');\n        },\n        validatePhone() {\n            if (get(this, 'phone_error') || get(this, 'phone_error') == undefined) {\n                set(this, 'phone_error', true);\n                get(this, 'errors').pushObject('phone');\n            } else {\n                get(this, 'errors').removeObject('phone');\n            }\n\n        },\n        validateAllAndSave() {\n            for (var field of get(this, 'mandatoryFields')) {\n                this.validate(field);\n            }\n            this.send('checkPasswords');\n            if (!get(this, 'phone') || get(this, 'phone') == '' || get(this, 'phone') == undefined) {\n                return\n            }\n            this.send('validatePhone');\n            if (get(this, 'errors').length == 0) {\n                this.send('saveData');\n            }\n        },\n    },\n\n    validate(field) {\n        if (get(this, 'mandatoryFields').indexOf(field) != -1) {\n            this.toggleError(field);\n        }\n        this.notifyPropertyChange('errors');\n    },\n    toggleError(field) {\n        if (\n            (!get(this, field) || get(this, field) == '') &&\n            get(this, 'errors').indexOf(field) == -1\n        ) {\n            get(this, 'errors').pushObject(field);\n        } else if (get(this, field) && get(this, 'errors').indexOf(field) != -1) {\n            get(this, 'errors').removeObject(field);\n        }\n    },\n\n    prefillData(data) {\n        const company = data[0];\n        const user = data[1];\n\n        if (get(company, 'firstObject.company_name') === 'empty')\n            set(company, 'firstObject.company_name', null);\n        if (get(user, 'firstObject.phone') === 'empty') set(user, 'firstObject.phone', null);\n\n        set(this, 'companyName', get(company, 'firstObject.company_name'));\n        set(this, 'company_name', get(company, 'firstObject.company_name'));\n\n        set(this, 'firstname', get(user, 'firstObject.firstname'));\n        set(this, 'lastname', get(user, 'firstObject.lastname'));\n        set(this, 'phone', get(user, 'firstObject.phone'));\n\n        set(this, 'show', true);\n    },\n\n    saveCompanyInfo(cinfoObj) {\n        let cinfo = get(cinfoObj, 'firstObject');\n        set(cinfo, 'company_name', get(this, 'company_name'));\n        set(cinfo, 'validation', 'off');\n\n        if (get(this, 'Collector').testNeedsOne('employer')) {\n            get(this, 'store')\n                .findAll('employer')\n                .then(this._makeFirstEmployer.bind(this))\n                .catch(this._handleError.bind(this));\n        }\n        cinfo.save().then(this.saveToAt2());\n    },\n    saveUserInfo(userInfoObj) {\n        if (get(this, 'password') != get(this, 'password_again')) {\n            set(this, 'password_error', true);\n        }\n        let userInfo = get(userInfoObj, 'firstObject');\n        set(userInfo, 'firstname', get(this, 'firstname'));\n        set(userInfo, 'lastname', get(this, 'lastname'));\n        set(userInfo, 'phone', get(this, 'phone'));\n        set(userInfo, 'password', get(this, 'password'));\n        set(userInfo, 'validation', 'off');\n        userInfo.save();\n    },\n    _returnFirstEmployer(data) {\n        if (data.firstObject && data.firstObject.company) {\n            set(this, 'companyName', data.firstObject.company);\n        } else {\n            set(this, 'companyName', null);\n        }\n        set(this, 'loading', false);\n    },\n    _rejectEmployerData(reason) {\n        get(this, 'error').notify(reason);\n        set(this, 'loading', false);\n    },\n    _makeFirstEmployer(emp) {\n        let first_emp = get(emp, 'firstObject');\n        setProperties(first_emp, {\n            name: get(this, 'companyName'),\n            validation: 'off',\n        });\n        if (this.ytj_info) {\n            setProperties(first_emp, {\n                emp_address: this.ytj_info.company_address,\n                emp_zip: this.ytj_info.company_zip,\n                emp_city: this.ytj_info.company_city,\n            });\n        }\n        first_emp.save();\n    },\n    _handleError(error) {\n        get(this, 'error').notify(error);\n    },\n    saveToAt2() {\n        new Promise((resolve, reject) => {\n            get(this, 'admintool')\n                .ajax({\n                    url: 'set_own_info',\n                    headers: {\n                        Authorization:\n                            'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n                    },\n                    data: {\n                        name: get(this, 'companyName'),\n                    },\n                    type: 'POST',\n                })\n                .then(this._resolveData.bind(this, resolve))\n                .catch(this._rejectData.bind(this, reject));\n        });\n    },\n    _resolveData(resolve, data) {\n        resolve(data);\n    },\n    _rejectData(reject, reason) {\n        reject(reason);\n    },\n    sendToSns() {\n        const data = {\n            company_name: this.company_name,\n            firstname: this.firstname,\n            lastname: this.lastname,\n            phone: this.phone,\n            email: this.session.currentUser.email,\n            partnerid: this.session.currentUser.partnerid,\n        };\n        this.ttapi.request('/sendSnsServiceCreated2Data', {\n            method: 'post',\n            data,\n        });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"OEnzMAMg\",\"block\":\"{\\\"symbols\\\":[\\\"wizard\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"show\\\"]]],null,{\\\"statements\\\":[[4,\\\"wizard-builder/wizard\\\",null,[[\\\"header\\\",\\\"close\\\",\\\"hideClose\\\"],[[28,\\\"t\\\",[\\\"general.welcome-wizard\\\"],null],[24,[\\\"close\\\"]],true]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content-header\\\"]],\\\"expected `wizard.content-header` to be a contextual component but found a string. Did you mean `(component wizard.content-header)`? ('tt4/pods/components/wizard-builder/welcome-wizard/template.hbs' @ L3:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.welcome-wizard.header\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"centered-content\\\"]],\\\"expected `wizard.centered-content` to be a contextual component but found a string. Did you mean `(component wizard.centered-content)`? ('tt4/pods/components/wizard-builder/welcome-wizard/template.hbs' @ L7:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"left-col\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"rounded-box\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.company_info\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"input-fields\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"welcome-wizard-label\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"company_info.company_name\\\"],null],false],[0,\\\"*\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"welcome-wizard-field \\\",[28,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"company_name\\\",[24,[\\\"errors\\\"]]],null],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"company_name\\\",[24,[\\\"errors\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"has-error-icon glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"company_name\\\",[24,[\\\"errors\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"welcome_wizard.validation_error.company_name\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"type\\\",\\\"keyUp\\\"],[\\\"form-control add-fields\\\",[24,[\\\"companyName\\\"]],\\\"text\\\",[28,\\\"action\\\",[[23,0,[]],\\\"valueUpdated\\\",\\\"company_name\\\",[24,[\\\"companyName\\\"]]],null]]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"rounded-box\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.own_account\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"input-fields\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"welcome-wizard-label\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"user.firstname\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"welcome-wizard-field\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\",\\\"keyUp\\\"],[\\\"form-control add-fields\\\",\\\"text\\\",[24,[\\\"firstname\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"valueUpdated\\\",\\\"firstname\\\",[24,[\\\"firstname\\\"]]],null]]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"welcome-wizard-label\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"user.lastname\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"welcome-wizard-field\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\",\\\"keyUp\\\"],[\\\"form-control add-fields\\\",\\\"text\\\",[24,[\\\"lastname\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"valueUpdated\\\",\\\"lastname\\\",[24,[\\\"lastname\\\"]]],null]]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"relative-position\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"welcome-wizard-label\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"register.phone\\\"],null],false],[0,\\\"*\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"welcome-wizard-field\\\"],[8],[0,\\\"\\\\n                                \\\"],[5,\\\"components/phone-number\\\",[],[[\\\"@name\\\",\\\"@value\\\",\\\"@onValidate\\\",\\\"@onKeyUp\\\",\\\"@canBeEmpty\\\"],[[22,\\\"phone\\\"],[23,0,[\\\"phone\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"handlePhoneValidation\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"validatePhone\\\"],null],false]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"phone_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"welcome_wizard.validation_error.phone\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"welcome-wizard-label\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"report.user.password\\\"],null],false],[0,\\\"*\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"welcome-wizard-field \\\",[28,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"password_length\\\",[24,[\\\"errors\\\"]]],null],\\\"has-error\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"password_length\\\",[24,[\\\"errors\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"password_length\\\",[24,[\\\"errors\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"t\\\",[\\\"welcome_wizard.validation_error.password_length\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"type\\\",\\\"keyUp\\\",\\\"autocomplete\\\"],[\\\"form-control add-fields\\\",[24,[\\\"password\\\"]],\\\"password\\\",[28,\\\"action\\\",[[23,0,[]],\\\"checkPasswords\\\"],null],\\\"new-password\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"password_length\\\",[24,[\\\"errors\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"has-error-icon glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"right-col\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"du-de\\\",null,[[\\\"number\\\",\\\"custom_size\\\",\\\"noTransforming\\\",\\\"noScaling\\\"],[19,200,true,true]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"tos-item\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.tos_text\\\"],null],false],[0,\\\" \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[22,\\\"termsAndConditionsLink\\\"]],[10,\\\"target\\\",\\\"_blank\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.tos_link\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"bottom\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"buttons\\\"]],\\\"expected `wizard.buttons` to be a contextual component but found a string. Did you mean `(component wizard.buttons)`? ('tt4/pods/components/wizard-builder/welcome-wizard/template.hbs' @ L113:C18) \\\"],null]],[[\\\"onlySave\\\",\\\"save\\\"],[true,[28,\\\"action\\\",[[23,0,[]],\\\"validateAllAndSave\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/welcome-wizard/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    analytics: service(),\n\n    arrowRight: '⮞',\n    arrowLeft: '⮜',\n\n    hidePrevious: computed('currentPage', function () {\n        return get(this, 'currentPage') <= 1;\n    }),\n\n    lastPage: computed('currentPage', 'pages', function () {\n        return get(this, 'currentPage') === get(this, 'pages');\n    }),\n\n    actions: {\n        next() {\n            get(this, 'analytics').trackEvent({ category: 'Wizard', action: 'next' });\n            get(this, 'pageChange')(get(this, 'currentPage') + 1);\n        },\n\n        previous() {\n            get(this, 'analytics').trackEvent({ category: 'Wizard', action: 'previous' });\n            get(this, 'pageChange')(get(this, 'currentPage') - 1);\n        },\n\n        done() {\n            if (get(this, 'done')) get(this, 'done')();\n            get(this, 'close')();\n        },\n        save() {\n            this.save();\n        },\n        close() {\n            get(this, 'close')();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"dBYHvg1S\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"onlySave\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg done-button\\\"],[12,\\\"disabled\\\",[22,\\\"disabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-lg btn-danger close-wizard-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.exit\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"lastPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-primary btn-lg done-button pull-right \\\",[28,\\\"if\\\",[[24,[\\\"hideDone\\\"]],\\\"invisible\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"done\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.done\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"hideNext\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg next-button pull-right\\\"],[12,\\\"disabled\\\",[22,\\\"isDisabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"next\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.next\\\"],null],false],[0,\\\" \\\"],[1,[22,\\\"arrowRight\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[4,\\\"unless\\\",[[24,[\\\"hidePrevious\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg previous-button pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"previous\\\"]],[8],[1,[22,\\\"arrowLeft\\\"],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"general.previous\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/wizard/buttons/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"SE/ONmSG\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n    \\\"],[14,1],[0,\\\"    \\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/wizard/centered-content/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    analytics: service(),\n    currentPage: 1,\n\n    actions: {\n        pageChange(page) {\n            get(this, 'analytics').trackEvent({ category: 'Wizard', action: 'pageChange' });\n\n            set(this, 'currentPage', page);\n            if (get(this, 'pageChange')) get(this, 'pageChange')(page);\n        },\n    },\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"PHsYBaya\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content-header\\\"],[8],[0,\\\"\\\\n    \\\"],[14,1],[0,\\\"    \\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/wizard/content-header/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'div',\n    classNames: ['content'],\n});\n","export default Ember.HTMLBars.template({\"id\":\"RhrMhZkW\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"    \\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/wizard/content/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { assert } from '@ember/debug';\n\nexport default Component.extend({\n    current: 0,\n\n    steps: computed(function () {\n        var list = [];\n        let pages = Array.isArray(get(this, 'pageNames'))\n            ? get(this, 'pageNames').length\n            : get(this, 'pages');\n        assert('Wizard must have either pages(number) or pageNames(array)', pages != null);\n        for (var i = 1; i <= pages; i++) {\n            list.push(i);\n        }\n        return list;\n    }),\n\n    translatedPageNames: computed('pageNames', function () {\n        if (get(this, 'pageNames')) {\n            let pages = get(this, 'pageNames').map((name) => {\n                return 'wizard.page.' + name;\n            });\n            return pages;\n        } else {\n            return get(this, 'steps');\n        }\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"/2RmzLtF\",\"block\":\"{\\\"symbols\\\":[\\\"name\\\",\\\"step\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"stepwizard\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"stepwizard-row setup-panel\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"steps\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"stepwizard-step\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"useSubmenus\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons submenu-steps\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"currentPage\\\"]],[28,\\\"add\\\",[[23,2,[]],1],null]],null],\\\"active\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"isDisabled\\\"]],\\\"disabled\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"pageChange\\\"]],[28,\\\"add\\\",[[23,2,[]],1],null]],null]]],[8],[1,[28,\\\"t\\\",[[28,\\\"get\\\",[[24,[\\\"translatedPageNames\\\"]],[23,2,[]]],null]],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-circle \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"currentPage\\\"]],[28,\\\"add\\\",[[23,2,[]],1],null]],null],\\\"btn-primary\\\",\\\"btn-default\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"pageChange\\\"]],[28,\\\"add\\\",[[23,2,[]],1],null]],null]]],[8],[1,[28,\\\"add\\\",[[23,2,[]],1],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"nonames\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"translatedPageNames\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"t\\\",[[28,\\\"get\\\",[[24,[\\\"translatedPageNames\\\"]],[23,2,[]]],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"t\\\",[\\\"general.page\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"add\\\",[[23,2,[]],1],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[4,\\\"if\\\",[[23,0,[\\\"infoText\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info step-wizard-info-button\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\",\\\"event\\\",\\\"side\\\"],[[23,0,[\\\"infoText\\\"]],\\\"click\\\",\\\"left\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/wizard/steps/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"sbFyHloR\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"nice-modal\\\",null,[[\\\"narrowBottom\\\",\\\"header\\\",\\\"hideClose\\\",\\\"close\\\",\\\"darkMode\\\"],[true,[24,[\\\"header\\\"]],[24,[\\\"hideClose\\\"]],[24,[\\\"close\\\"]],[24,[\\\"darkMode\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"steps\\\",\\\"content-header\\\",\\\"content\\\",\\\"centered-content\\\",\\\"buttons\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/wizard/steps\\\"],[[\\\"pages\\\",\\\"currentPage\\\",\\\"pageChange\\\"],[[24,[\\\"pages\\\"]],[24,[\\\"currentPage\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"pageChange\\\"],null]]]],[28,\\\"component\\\",[\\\"wizard-builder/wizard/content-header\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/wizard/content\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/wizard/centered-content\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/wizard/buttons\\\"],[[\\\"pages\\\",\\\"close\\\",\\\"currentPage\\\",\\\"pageChange\\\"],[[24,[\\\"pages\\\"]],[24,[\\\"close\\\"]],[24,[\\\"currentPage\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"pageChange\\\"],null]]]]]]]]],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/wizard/template.hbs\"}});","import Component from '@ember/component';\nimport config from 'tt4/config/environment';\nimport { inject as service } from '@ember/service';\nimport { get, computed } from '@ember/object';\nimport moment from 'moment';\nimport collector from 'tt4/classes/collector';\nimport getScript from 'tt4/utils/getScript';\n\nexport default Component.extend({\n    session: service(),\n    intl: service(),\n    initapp: service(),\n    flags: service(),\n\n    testMode: false,\n\n    enabled: computed(function () {\n        return (\n            this.flags.test('show-survey') &&\n            get(this, 'initapp.appReady') &&\n            !get(this, 'session.session.content.authenticated.scope')\n        );\n    }),\n    init() {\n        this._super(...arguments);\n        if (this.flags.test('show-survey')) {\n            const initapp = get(this, 'initapp');\n            if (get(initapp, 'appReady')) {\n                this.initWootric();\n            } else {\n                initapp.on('appReady', () => {\n                    this.initWootric();\n                });\n            }\n        }\n    },\n\n    async initWootric() {\n        if (!get(this, 'session.session.content.authenticated.scope')) {\n            if (config.environment === 'development' || get(this, 'testMode') === true) {\n                window.wootric_survey_immediately = true;\n                window.wootric_no_surveyed_cookie = true;\n            }\n            const user = get(this, 'session.currentUser');\n            const intl = get(this, 'intl');\n\n            // browser info\n            const { UAParser } = window;\n            const parser = new UAParser();\n            const bo = parser.setUA(navigator.userAgent).getResult();\n\n            // eg. 'Firefox 68.0 / Gecko 68.0 / Windows 10'\n            const browserString = `${bo.browser.name} ${bo.browser.version} / ${bo.engine.name} ${bo.engine.version} / ${bo.os.name} ${bo.os.version}`;\n\n            window.wootricSettings = {\n                email: get(user, 'email'),\n                created_at: moment(get(user, 'row_info.created')).format('X'),\n                language: get(intl, 'primaryLocale'),\n                dashboard_language: get(intl, 'primaryLocale'),\n                modal_footprint: 'compact',\n                disclaimer: {\n                    text: intl.t('wootric.disclamer.text').toString(),\n                    link: 'https://www.visma.com/privacy/customer-feedback/',\n                    link_word: intl.t('wootric.disclamer.link_word').toString(),\n                },\n                properties: {\n                    role: get(user, 'userlevel'),\n                    product: config.brand == 'otta' ? 'Otta' : 'Movenium',\n                    country: get(user, 'company_info.country')\n                        ? get(user, 'company_info.country').toUpperCase()\n                        : 'N/A',\n                    customer: get(user, 'company'),\n                    vatin: get(user, 'company_info.company_vatin'),\n                    partnerid: get(user, 'partnerid'),\n                    modules: JSON.stringify(collector.products),\n                    platform: typeof cordova !== 'undefined' ? device.platform : browserString, // eslint-disable-line\n                },\n            };\n\n            if (localStorage.getItem('survey') !== null) {\n                this.surveyType = localStorage.getItem('survey');\n                localStorage.removeItem('survey');\n            }\n\n            if (this.WootricSurvey) {\n                this.run(this.surveyType);\n            } else {\n                await getScript('https://cdn.wootric.com/wootric-sdk.js');\n                this.WootricSurvey = WootricSurvey;\n                this.run(this.surveyType);\n            }\n        }\n    },\n\n    run(type = 'NPS') {\n        const intl = this.intl;\n        const brand = config.brand;\n        WootricSurvey.stop();\n        if (type === 'NPS') {\n            window.wootricSettings.account_token = 'NPS-EU-bca074ee';\n            window.wootricSettings.wootric_recommend_target = intl\n                .t('wootric.question.target')\n                .toString();\n            (window.wootricSettings.product_name =\n                brand == 'otta'\n                    ? intl.t('wootric.otta.product_name').toString()\n                    : intl.t('wootric.default.product_name').toString()),\n                (window.customMessages = {\n                    followup_questions_list: {\n                        detractor_question: intl\n                            .t(`wootric.${brand}.followup.detractor`)\n                            .toString(),\n                        passive_question: intl.t(`wootric.${brand}.followup.passive`).toString(),\n                        promoter_question: intl.t(`wootric.${brand}.followup.promoter`).toString(),\n                    },\n                    placeholder_texts_list: {\n                        detractor_text: intl\n                            .t(`wootric.${brand}.question.placeholder.detractor`)\n                            .toString(),\n                        passive_text: intl\n                            .t(`wootric.${brand}.question.placeholder.passive`)\n                            .toString(),\n                        promoter_text: intl\n                            .t(`wootric.${brand}.question.placeholder.promoter`)\n                            .toString(),\n                    },\n                });\n        } else if (type === 'wizard') {\n            window.wootricSettings.account_token = 'NPS-EU-b52c0bfb';\n            window.wootricSettings.event_name = 'wizard';\n            window.wootricSettings.product_name = null;\n        }\n        WootricSurvey.run(window.wootricSettings);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"+R/s7eCa\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wootric-survey/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed, get } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport { typeOf } from '@ember/utils';\n\nexport default Component.extend({\n    intl: service(),\n    store: service(),\n    gui: service(),\n\n    year: computed('date', function () {\n        const date = this.date.split('_')[0];\n        return moment(date).year();\n    }),\n\n    months: computed('workdayDays', function () {\n        if (!this.workdayDays) return;\n        let months = [];\n        const midweekHolidayPayOn = this.Collector.testNeedsOne('products.midweek_holiday_pay');\n        for (let i = 1; i < 13; i++) {\n            const number = i;\n\n            const month = moment(i, 'MM').year(this.year).startOf('month');\n            const minDate = month.toDate();\n            // \"center of the month\" date is formed by adding at least 1 day to start of month\n            // to make sure we're inside the correct month regardless of timezones\n            const center = month.add(1, 'day').toDate();\n            const maxDate = month.endOf('month').toDate();\n\n            const filteredDays = this.workdayDays.filter(\n                (day) => moment(day.date).month() + 1 === i,\n            );\n            let days = {};\n            let specialDays = [];\n\n            filteredDays.forEach((day) => {\n                let dayObj = {\n                    minutes: get(day, 'minutes'),\n                    own: get(day, 'own'),\n                    absence_minutes:\n                        day.absence_minutes == null ? day.minutes : day.absence_minutes,\n                };\n                if (midweekHolidayPayOn)\n                    dayObj['midweek_holiday_pay'] = get(day, 'midweek_holiday_pay');\n                days[get(day, 'date')] = dayObj;\n                if (day.minutes == 0) specialDays.push(day.date);\n            });\n            months.push({ number, center, days, minDate, maxDate, specialDays });\n        }\n\n        return months;\n    }),\n\n    init() {\n        this._super();\n        assert(\n            'Workday-days component needs workdays (array or instance)! Give me @workdayDays={{this.workdayDays}}',\n            typeOf(this.workdayDays) === 'array' || typeOf(this.workdayDays) === 'instance',\n        );\n    },\n\n    actions: {\n        selectDay(date) {\n            const formattedDate = moment(date).format('YYYY-MM-DD');\n\n            const dayRule = this.workdayDays.find((rule) => {\n                return rule.date === formattedDate;\n            });\n\n            this.showDayRule(formattedDate, dayRule);\n        },\n\n        changeYear(amount) {\n            this.changeYear(this.year + amount);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"p+1/IylK\",\"block\":\"{\\\"symbols\\\":[\\\"month\\\",\\\"calendar\\\",\\\"day\\\",\\\"day\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workdayDays-nav\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"workday_calendar.day_rules\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xl workdaynav-control\\\"],[12,\\\"name\\\",\\\"workdayDays-nav-last-year\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeYear\\\",-1]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"if\\\",[[23,0,[\\\"gui\\\",\\\"isBelowMd\\\"]],\\\"<<\\\",[28,\\\"t\\\",[\\\"workday_calendar.nav.previous\\\"],null]],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[8],[1,[23,0,[\\\"year\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xl workdaynav-control\\\"],[12,\\\"name\\\",\\\"workdayDays-nav-next-year\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeYear\\\",1]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"if\\\",[[23,0,[\\\"gui\\\",\\\"isBelowMd\\\"]],\\\">>\\\",[28,\\\"t\\\",[\\\"workday_calendar.nav.next\\\"],null]],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-container\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"months\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[5,\\\"power-calendar\\\",[],[[\\\"@locale\\\",\\\"@center\\\",\\\"@selected\\\",\\\"@onSelect\\\"],[[23,0,[\\\"intl\\\",\\\"primaryLocale\\\"]],[23,1,[\\\"center\\\"]],[22,\\\"selected\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"selectDay\\\"],[[\\\"value\\\"],[\\\"date\\\"]]]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"calendar-month text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"moment-format\\\",[[23,2,[\\\"center\\\"]],\\\"MMMM\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"days\\\"]],[],[[\\\"@startOfWeek\\\",\\\"@minDate\\\",\\\"@maxDate\\\"],[1,[23,1,[\\\"minDate\\\"]],[23,1,[\\\"maxDate\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"isCurrentMonth\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"day-wrapper\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"day-number-row\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"strong\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"is-sunday\\\",[[23,3,[\\\"date\\\"]]],null],[28,\\\"includes\\\",[[23,3,[\\\"id\\\"]],[23,1,[\\\"specialDays\\\"]]],null]],null],\\\"special-day\\\"],null],\\\" \\\"]]],[8],[1,[23,3,[\\\"number\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.midweek_holiday_pay\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"get\\\",[[28,\\\"get\\\",[[23,1,[\\\"days\\\"]],[23,3,[\\\"id\\\"]]],null],\\\"midweek_holiday_pay\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"day_shorthand\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday_calendar.midweek_holiday_shorthand\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"let\\\",[[28,\\\"get\\\",[[23,1,[\\\"days\\\"]],[23,3,[\\\"id\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,4,[\\\"own\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"day-minutes\\\"],[8],[1,[28,\\\"format-minutes\\\",[[23,4,[\\\"minutes\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.absences\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"day-minutes\\\"],[8],[1,[28,\\\"format-minutes\\\",[[23,4,[\\\"absence_minutes\\\"]],\\\"Vacation\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/workday-days/template.hbs\"}});","import Component from '@ember/component';\nimport { set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    router: service(),\n    store: service(),\n    notifications: service(),\n    intl: service(),\n    analytics: service(),\n    tagName: '',\n    disableAdding: false,\n\n    defaults: computed('form', 'day', function () {\n        let params = {};\n        if (this.form == 'abcense') {\n            params.startdate = this.day;\n            params.enddate = this.day;\n            params.dayamount = 1;\n        } else {\n            params.date = this.day;\n        }\n        if (this.user) {\n            params.user = this.store.peekRecord('user', this.user);\n        }\n\n        return params;\n    }),\n\n    init() {\n        this._super(...arguments);\n        if (\n            this.form === 'worktime' &&\n            (!this.Collector.canAddWorktime(this.day) ||\n                this.Collector.testNeeds(['products.timetracker_clockcard', 'userlevel=1?']))\n        ) {\n            set(this, 'disableAdding', true);\n        }\n    },\n\n    actions: {\n        notifySaved() {\n            this.updateData();\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n            if (this.rowAdded) this.rowAdded();\n        },\n        addClicked() {\n            // set worktimeAddingMethod of analytics service to 'workday-summary'\n            this.analytics.customData = { category: 'workday-summary' };\n            set(this, 'showAdd', true);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"7k1roCAD\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"tr\\\",false],[12,\\\"class\\\",[28,\\\"if\\\",[[23,0,[\\\"disableAdding\\\"]],\\\"disabled\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"addClicked\\\"]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"popup-td\\\"],[8],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"add-button\\\"],[11,\\\"disabled\\\",[28,\\\"if\\\",[[23,0,[\\\"disableAdding\\\"]],true,false],null]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath row-add\\\"],[8],[9],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"disableAdding\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"td\\\",true],[10,\\\"colspan\\\",\\\"2\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"calendar.add.error.\\\",[23,0,[\\\"form\\\"]]],null]],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"popup-td\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"header.path.add.\\\",[23,0,[\\\"form\\\"]]],null]],null],false],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"popup-td\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAdd\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/form-modal\\\",null,[[\\\"form\\\",\\\"defaults\\\",\\\"showSaved\\\",\\\"rowAdded\\\",\\\"close\\\"],[[24,[\\\"form\\\"]],[24,[\\\"defaults\\\"]],false,[28,\\\"action\\\",[[23,0,[]],\\\"notifySaved\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAdd\\\"]]],null],false],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/workday-summary/add-component/template.hbs\"}});","import Component from '@ember/component';\nimport EmberObject, { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { Promise as EmberPromise } from 'rsvp';\nimport { isPresent } from '@ember/utils';\nimport { assert } from '@ember/debug';\n\n/*\n{{#workday-summary user=user day=day date=date addForms=forms as |table|}}\n    {{table.edit}}\n    {{table.add}}\n{{/workday-summary}}\n*/\n\nexport default Component.extend({\n    store: service(),\n    error: service(),\n    Collector: service('collector-service'),\n    ttapi: service(),\n    session: service(),\n\n    needsForForms: EmberObject.create({\n        worktime: [\n            'worktime',\n            'worktime@add',\n            '!products.timetracker_clockcard||!userlevel=1?',\n            'modulecontrol.worktimes',\n        ],\n        abcense: ['abcense', 'abcense@add', 'worktime', 'modulecontrol.worktimes'],\n    }),\n\n    permittedAddForms: computed('addForms', function () {\n        if (!this.addForms) return [];\n        return this.addForms.filter((form) => this.Collector.testNeeds(this.needsForForms[form]));\n    }),\n\n    selectedDayIsAllowedForCopy: computed('day', 'popupData', async function () {\n        const data = await this.popupData;\n        let selectedDayIsRestrictedForCopy = false;\n        if (\n            !this.Collector.canAddWorktime(this.day) ||\n            this.Collector.testNeeds(['products.timetracker_clockcard', 'userlevel=1?'])\n        ) {\n            selectedDayIsRestrictedForCopy = true;\n        }\n        return data.length === 0 && !selectedDayIsRestrictedForCopy;\n    }),\n\n    popupData: computed(function () {\n        let wtparams = {\n            date: get(this, 'day'),\n            user: get(this, 'user'),\n            order: 'starttime,endtime',\n            sideload: true,\n        };\n\n        let startdate = get(this, 'date').split('_')[0];\n        let enddate = get(this, 'date').split('_')[1];\n\n        let abparams = {\n            startdate: startdate,\n            enddate: enddate,\n            order: 'starttime,endtime',\n            user: get(this, 'user'),\n            sideload: ['abcensetype.name'],\n        };\n\n        let promises = [];\n\n        if (get(this, 'Collector').testNeedsOne('worktime')) {\n            promises.push(\n                new EmberPromise((resolve, reject) => {\n                    get(this, 'store')\n                        .query('worktime', wtparams)\n                        .then(this._resolveData.bind(this, resolve))\n                        .catch(this._rejectData.bind(this, reject));\n                }),\n            );\n        }\n        if (get(this, 'Collector').testNeedsOne('abcense')) {\n            promises.push(\n                new EmberPromise((resolve, reject) => {\n                    get(this, 'ttapi')\n                        ._get('/absence/split', abparams)\n                        .then(this._resolveData.bind(this, resolve))\n                        .catch(this._rejectData.bind(this, reject));\n                }),\n            );\n        }\n        return EmberPromise.all(promises)\n            .then(this._returnData.bind(this))\n            .catch(this._notifyError.bind(this));\n    }),\n\n    didReceiveAttrs: function () {\n        assert(\"'day' must be given to workday-summary-comp\", get(this, 'day'));\n    },\n\n    actions: {\n        updateData() {\n            this.notifyPropertyChange('popupData');\n        },\n\n        rowAdded() {\n            if (this.close && this.autoclose) this.close();\n        },\n    },\n\n    _resolveData(resolve, data) {\n        resolve(data);\n    },\n    _rejectData(reject, reason) {\n        reject(reason);\n    },\n    _returnData(data) {\n        let arr = [];\n        let worktimes = data[0];\n        let absences = data[1];\n\n        if (isPresent(worktimes)) {\n            worktimes.forEach((item) => {\n                arr.push(item);\n            });\n        }\n        if (isPresent(absences)) {\n            absences.filterBy('date', get(this, 'day')).forEach((item) => {\n                arr.push(item);\n            });\n        }\n        return arr;\n    },\n    _notifyError(reason) {\n        get(this, 'error').notify(reason);\n    },\n});\n","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\nimport moment from 'moment';\n\nexport default class CopyComponent extends Component {\n    @tracked showAdd;\n    @tracked record;\n    @tracked canCopy;\n    @tracked showCopy;\n\n    @service router;\n    @service store;\n    @service notifications;\n    @service('collector-service') collector;\n    @service intl;\n\n    newestWorktime = null;\n\n    constructor() {\n        super(...arguments);\n        this.findPreviousWorktime();\n    }\n\n    /**\n     * first we check user has rights to add worktime to this day\n     * then we try to find last worktime with peekAll so we could so the copying button sychronically\n     * and the last resort is to fetch the previous worktime from capi\n     */\n    async findPreviousWorktime() {\n        if (!this.collector.testNeeds(['worktime'])) return; // disable if no worktime form found\n        if (!this.collector.canAddWorktime(this.args.day)) return; // disable if user cannot add worktime for this day\n        if (this.collector.testNeeds(['products.timetracker_clockcard', 'userlevel=1?'])) return; // disable if user has clockcard in use\n\n        this.showCopy = true;\n\n        const worktimes = this.store.peekAll('worktime');\n        const ownSavedWorktimes = worktimes.filter(\n            (worktime) => worktime.user.id === this.args.user && !worktime.isNew,\n        );\n\n        ownSavedWorktimes.forEach((worktime) => {\n            if (worktime.date > this.args.day) return; // skip newer worktimes than current day\n            if (\n                this.newestWorktime &&\n                (this.newestWorktime.date > worktime.date ||\n                    this.newestWorktime.starttime > worktime.starttime)\n            )\n                return; // newestWorktime already is newer\n            this.newestWorktime = worktime;\n        });\n\n        // if newestWorktime hasn't been found with peekAll we try to fetch it from capi\n        if (!this.newestWorktime) {\n            const worktimesArray = await this.store.query('worktime', {\n                user: this.user,\n                date:\n                    moment(this.args.day).subtract(14, 'days').format('YYYY-MM-DD') +\n                    '_' +\n                    moment(this.args.day).format('YYYY-MM-DD'),\n                order: 'date-,starttime-',\n                limit: 1,\n            });\n            if (worktimesArray.length > 0) this.newestWorktime = worktimesArray.firstObject;\n        }\n\n        if (this.newestWorktime) this.canCopy = true;\n    }\n\n    @action\n    notifySaved() {\n        this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n        this.args.rowAdded();\n    }\n\n    @action\n    copy() {\n        this.record = this.collector.copyRecord(this.newestWorktime);\n        this.record.date = this.args.day;\n        this.showAdd = true;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"yPsWGn87\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"showCopy\\\"]]],null,{\\\"statements\\\":[[7,\\\"tr\\\",false],[12,\\\"class\\\",[28,\\\"if\\\",[[23,0,[\\\"canCopy\\\"]],\\\"\\\",\\\"disabled\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"copy\\\"]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"popup-td\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"40\\\"],[10,\\\"height\\\",\\\"40\\\"],[10,\\\"viewBox\\\",\\\"0 0 50 50\\\"],[11,\\\"class\\\",[28,\\\"if\\\",[[23,0,[\\\"canCopy\\\"]],\\\"copy-button\\\",\\\"copy-button-disabled\\\"],null]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"25\\\"],[10,\\\"cy\\\",\\\"25\\\"],[10,\\\"r\\\",\\\"25\\\"],[10,\\\"opacity\\\",\\\"0.996\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M3.771,0A3.776,3.776,0,0,0,0,3.771V16.027A3.776,3.776,0,0,0,3.771,19.8H8.485V17.913H3.771a1.886,1.886,0,0,1-1.886-1.886V3.771A1.886,1.886,0,0,1,3.771,1.886H7.807c.68.173.678.99.678,1.827V5.657a.955.955,0,0,0,.236.619,3.776,3.776,0,0,1,3.535-2.5h.059c-.167-.164-.334-.334-.5-.5-.234-.232-.481-.448-.707-.678C9.493.946,8.544,0,7.542,0ZM13.2,4.714A3.776,3.776,0,0,0,9.428,8.485V20.741A3.776,3.776,0,0,0,13.2,24.512h7.542a3.776,3.776,0,0,0,3.771-3.771V12.256c0-1-.917-1.952-2.563-3.565-.23-.226-.475-.473-.707-.707s-.481-.448-.707-.678c-1.614-1.647-2.563-2.593-3.565-2.593Zm0,1.886h4.036c.68.173.678.99.678,1.827v1.944a.944.944,0,0,0,.943.943h1.886c.941,0,1.886,0,1.886.943v8.485a1.886,1.886,0,0,1-1.886,1.886H13.2a1.886,1.886,0,0,1-1.886-1.886V8.485A1.886,1.886,0,0,1,13.2,6.6Zm-9.428.943V9.428H8.485V7.542Zm0,2.828v1.886H8.485V10.371ZM13.2,12.256v1.886h7.542V12.256ZM3.771,13.2v1.886H8.485V13.2ZM13.2,15.084V16.97h5.657V15.084Zm0,2.828V19.8h7.542V17.913Z\\\"],[10,\\\"transform\\\",\\\"translate(12.287 12.208)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"opacity\\\",\\\"0.996\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"td\\\",true],[11,\\\"class\\\",[29,[\\\"popup-td \\\",[28,\\\"if\\\",[[23,0,[\\\"canCopy\\\"]],\\\"\\\",\\\"disabled\\\"],null]]]],[8],[1,[28,\\\"t\\\",[\\\"dashboard.calendar.copypreviousworktime\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"popup-td\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAdd\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/form-modal\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"showSaved\\\",\\\"rowAdded\\\",\\\"close\\\"],[\\\"worktime\\\",[24,[\\\"record\\\"]],false,[28,\\\"action\\\",[[23,0,[]],\\\"notifySaved\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAdd\\\"]]],null],false],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/workday-summary/copy-component/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class CopyPreviousDayComponent extends Component {\n    @tracked showCopyPreviousDayModal;\n    @tracked showCopyPreviousDayFinalModal;\n    @tracked record;\n    @tracked canCopy;\n    @tracked showCopy;\n\n    @tracked date;\n    @tracked worktimes;\n\n    @tracked selectedDay = null;\n    @tracked isActive = false;\n\n    @service router;\n    @service store;\n    @service notifications;\n    @service intl;\n    @service analytics;\n\n    constructor() {\n        super(...arguments);\n        this.selectedDay = this.args.date;\n    }\n\n    @action\n    notifySaved() {\n        this.args.updateData();\n        this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n        this.args.rowAdded();\n    }\n\n    @action\n    datePicked(date, worktimes) {\n        this.showCopyPreviousDayModal = false;\n        this.day = date;\n        this.worktimes = worktimes;\n        this.showCopyPreviousDayFinalModal = true;\n    }\n\n    @action\n    closeShowCopyPreviousDayModal() {\n        this.showCopyPreviousDayModal = false;\n    }\n\n    @action\n    closeShowCopyPreviousDayFinalModal() {\n        this.showCopyPreviousDayFinalModal = false;\n    }\n\n    @action\n    startCopyingPreviousDay() {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Start copying previous day',\n            label: 'worktime-calendar widget',\n        });\n        this.showCopyPreviousDayModal = true;\n    }\n}\n","import podNames from 'ember-component-css/pod-names';\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action, set } from '@ember/object';\nimport moment from 'moment';\nimport { save_record } from 'tt4/ember-movenium/utils/save-the-children';\n\nexport default class CopyPreviousDayFinalComponent extends Component {\n    @tracked record;\n    @tracked headerTitle = \"\";\n    @tracked editableWorktimes = [];\n\n    @tracked validationMessageWorktimes = '';\n    @tracked validationMessageAbsences = '';\n\n    @service router;\n    @service store;\n    @service notifications;\n    @service('collector-service') collector;\n    @service intl;\n    @service session;\n    @service ttapi;\n    @service evented;\n\n    @tracked isLoading = false;\n\n    constructor() {\n        super(...arguments);\n        let headerTitleFormatted = moment(this.args.day, 'YYYY-MM-DD').format('DD.MM.YYYY');\n        const date = moment(headerTitleFormatted, 'DD.MM.YYYY').toDate();\n        const options = { weekday: 'long', locale: this.intl.locale };\n        const weekdayName = date.toLocaleDateString(this.intl.locale, options);\n        this.headerTitle =\n            weekdayName.charAt(0).toUpperCase() + weekdayName.slice(1) + ' ' + headerTitleFormatted;\n        \n        this.args.worktimes.forEach((worktime) => {\n            const copiedWorktime = this.collector.copyRecord(worktime);\n            copiedWorktime.date = this.args.day;\n            this.editableWorktimes.push(copiedWorktime);\n        });\n    }\n\n    get styleNamespace() {\n        return podNames['workday-summary/copy-previous-day-component/copy-previous-day-final-component'];\n    }\n\n    @action \n    closeClicked() {\n        this.args.close();\n    }\n\n    @action\n    async fieldChanged(field, value, record) {\n        set(await record, field, value);\n    }\n\n    @action async save() {\n        this.isLoading = true;\n        const failed = [];\n        this.form = \"worktime\";\n\n        for (let i = 0; i < this.editableWorktimes.length; i++) {\n            await this.editableWorktimes[i].validate();\n            if (!this.editableWorktimes[i].isValid) {\n                this.isLoading = false;\n                return;\n            }\n        }\n\n        for (let i = 0; i < this.editableWorktimes.length; i++) {\n            try {\n                await save_record(this.editableWorktimes[i], this);\n            } catch (e) {\n                failed.push(this.editableWorktimes[i]);\n            }\n        }\n\n        if (failed.length > 0) {\n            this.notifications.error(this.intl.t('previousdaycopy.unable_to_copy_worktimes'), { autoClear: true });\n            this.isLoading = false;\n            this.args.close();\n            return;\n        }\n\n        this.evented.storeEvent('insert', 'worktime', null);\n        \n        this.args.close();\n        this.args.notifySaved();\n        this.isLoading = false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"s0370Qvc\",\"block\":\"{\\\"symbols\\\":[\\\"worktime\\\",\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[22,\\\"styleNamespace\\\"]],[8],[0,\\\"\\\\n\\\"],[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeClicked\\\"],null],[22,\\\"headerTitle\\\"]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"editableWorktimes\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-final-component-worktime-container\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-final-component-worktime-header-container\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-final-component-worktime-header-worktime\\\"],[8],[1,[28,\\\"capitalize-translation\\\",[[28,\\\"t\\\",[\\\"general.worktime\\\"],null]],null],false],[0,\\\": \\\"],[1,[28,\\\"format-hours\\\",[[23,1,[\\\"work_hours\\\"]]],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-final-component-worktime-header-pause\\\"],[8],[1,[28,\\\"capitalize-translation\\\",[[28,\\\"t\\\",[\\\"report.worktime.pause\\\"],null]],null],false],[0,\\\": \\\"],[1,[28,\\\"format-minutes\\\",[[23,1,[\\\"pause\\\"]]],[[\\\"hideIcon\\\"],[true]]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@purpose\\\",\\\"@record\\\",\\\"@onFieldChange\\\"],[\\\"worktime\\\",\\\"copyPreviousDay\\\",[23,1,[]],[28,\\\"fn\\\",[[23,0,[\\\"fieldChanged\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"date\\\"],null]],null,{\\\"statements\\\":[],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"name\\\"]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[6,[23,4,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\",\\\"@forceType\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,5,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null],[23,5,[\\\"mandatory\\\"]],[23,5,[\\\"features\\\",\\\"disabled\\\"]],\\\"Textarea\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[6,[23,4,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\",\\\"@forceType\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[28,\\\"get\\\",[[23,1,[]],[23,5,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,1,[]]],null],[28,\\\"fn\\\",[[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null],[23,5,[\\\"mandatory\\\"]],[23,5,[\\\"features\\\",\\\"disabled\\\"]],[23,5,[\\\"forceType\\\"]]]]],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[5]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[3,4]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"style\\\",\\\"display: flex; flex-direction: row; margin-top: 50px;\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"addon/loading-button\\\",[],[[\\\"@disabled\\\",\\\"@loading\\\",\\\"@onClick\\\",\\\"@name\\\",\\\"@form\\\"],[[28,\\\"if\\\",[[24,[\\\"isLoading\\\"]],[24,[\\\"isLoading\\\"]]],null],[22,\\\"isLoading\\\"],[22,\\\"save\\\"],\\\"save-button\\\",\\\"worktime\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-block btn-secondary copy-previous-day-final-component-cancel-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeClicked\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/workday-summary/copy-previous-day-component/copy-previous-day-final-component/template.hbs\"}});","import podNames from 'ember-component-css/pod-names';\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action, computed } from '@ember/object';\nimport moment from 'moment';\n\nexport default class CopyPreviousDayIntermediateComponent extends Component {\n    @tracked record;\n    @tracked form = this.args.form;\n\n    @service router;\n    @service store;\n    @service notifications;\n    @service('collector-service') collector;\n    @service intl;\n    @service session;\n    @service ttapi;\n\n    @tracked selectedWorktimes = [];\n    @tracked selectedDate = null;\n    @tracked selectedDateJS = null;\n    @tracked isLoading = false;\n\n    @tracked dayLabel = \"\";\n\n    constructor() {\n        super(...arguments);\n\n        if (this.selectedDate === null) {\n            this.selectedDate = this.getPreviousWorkingDay();\n            this.daySelected(this.selectedDate);\n        }\n        this.dayLabel = moment(this.selectedDate).format('DD.MM.YYYY');\n\n        const date = moment(this.dayLabel, 'DD.MM.YYYY').toDate();\n        const options = { weekday: 'long', locale: this.intl.locale };\n        const weekdayName = date.toLocaleDateString(this.intl.locale, options);\n        this.dayLabel =\n            weekdayName.charAt(0).toUpperCase() + weekdayName.slice(1) + ' ' + this.dayLabel;\n    }\n\n    getPreviousWorkingDay() {\n        let previousWorkingDay = moment().subtract(1, 'day');\n        while (previousWorkingDay.day() === 0 || previousWorkingDay.day() === 6) {\n            previousWorkingDay.subtract(1, 'day');\n        }\n        return previousWorkingDay.toDate();\n    }\n\n    selectedDayChanged () {\n        if(this.selectedDate === null) this.dayLabel = moment().format('DD.MM.YYYY');\n        else this.dayLabel = moment(this.selectedDate).format('DD.MM.YYYY');\n\n        const date = moment(this.dayLabel, 'DD.MM.YYYY').toDate();\n        const options = { weekday: 'long', locale: this.intl.locale };\n        const weekdayName = date.toLocaleDateString(this.intl.locale, options);\n        this.dayLabel =\n            weekdayName.charAt(0).toUpperCase() + weekdayName.slice(1) + ' ' + this.dayLabel;\n    }\n\n    @computed('selectedWorktimes')\n    get showSaving() {\n        if((Array.isArray(this.selectedWorktimes) && this.selectedWorktimes.length > 0)) {\n            return true;\n        } else return false;\n    }\n\n    async getWorktimes() {\n        const params = {\n            date: this.selectedDate + '_' + this.selectedDate,\n            user: this?.session?.currentUser?.id,\n            sideload: true,\n            limit: 500,\n        };\n        let query = await this.store.query('worktime', params);\n        this.selectedWorktimesTemp = [];\n        query.forEach((worktime) => {\n            this.selectedWorktimesTemp.push(worktime);\n        });\n        this.selectedWorktimes = this.selectedWorktimesTemp;\n    }\n\n    get styleNamespace() {\n        return podNames['workday-summary/copy-previous-day-component/copy-previous-day-intermediate-component'];\n    }\n\n    @action closeClicked() {\n        this.args.close();\n    }\n\n    @action async daySelected(date) {\n        this.selectedDate = moment(date).format('YYYY-MM-DD');\n        this.selectedDateJS = date;\n        this.selectedDayChanged();\n        this.isLoading = true;\n        await this.getWorktimes();\n        this.isLoading = false;\n    }\n\n    @action select() {\n        this.args.datePicked(this.selectedDate, this.selectedWorktimes);\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"mNg6tar8\",\"block\":\"{\\\"symbols\\\":[\\\"worktime\\\",\\\"index\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[22,\\\"styleNamespace\\\"]],[8],[0,\\\"\\\\n\\\"],[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeClicked\\\"],null],[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"menu.add_\\\",[24,[\\\"form\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-calendar-container\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"components/dash-board/widgets/worktime-calendar\\\",null,[[\\\"selected\\\",\\\"hideStatictics\\\",\\\"isPreviousDayCopyComponent\\\",\\\"dayToBeCopied\\\"],[[24,[\\\"selectedDateJS\\\"]],true,true,[24,[\\\"daySelected\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-day-label\\\"],[10,\\\"style\\\",\\\"\\\"],[8],[1,[22,\\\"dayLabel\\\"],false],[9],[0,\\\"\\\\n    \\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"skeletonRows\\\"],[5]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"showSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-nothing-to-copy-container\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-nothing-to-copy-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"previousdaycopy.nothing_to_copy\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selectedWorktimes\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"selectedWorktimes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-last-element\\\",[[24,[\\\"selectedWorktimes\\\"]],[23,2,[]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-container copy-previous-day-intermediate-component-worktime-container-border-none\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-startendtime\\\"],[8],[1,[23,1,[\\\"starttime\\\"]],false],[0,\\\" - \\\"],[1,[23,1,[\\\"endtime\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-project-name\\\"],[8],[1,[23,1,[\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-details-container\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-details-work-hours\\\"],[8],[1,[28,\\\"capitalize-translation\\\",[[28,\\\"t\\\",[\\\"general.worktime\\\"],null]],null],false],[0,\\\": \\\"],[1,[28,\\\"format-hours\\\",[[23,1,[\\\"work_hours\\\"]]],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-details-pause-hours\\\"],[8],[1,[28,\\\"capitalize-translation\\\",[[28,\\\"t\\\",[\\\"report.worktime.pause\\\"],null]],null],false],[0,\\\": \\\"],[1,[28,\\\"format-minutes\\\",[[23,1,[\\\"pause\\\"]]],[[\\\"hideIcon\\\"],[true]]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-details-normal-worktime\\\"],[8],[1,[28,\\\"capitalize-translation\\\",[[28,\\\"t\\\",[\\\"previousdaycopy.normal_worktime\\\"],null]],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-container\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-startendtime\\\"],[8],[1,[23,1,[\\\"starttime\\\"]],false],[0,\\\" - \\\"],[1,[23,1,[\\\"endtime\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-project-name\\\"],[8],[1,[23,1,[\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-details-container\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-details-work-hours\\\"],[8],[1,[28,\\\"capitalize-translation\\\",[[28,\\\"t\\\",[\\\"general.worktime\\\"],null]],null],false],[0,\\\": \\\"],[1,[28,\\\"format-hours\\\",[[23,1,[\\\"work_hours\\\"]]],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-details-pause-hours\\\"],[8],[1,[28,\\\"capitalize-translation\\\",[[28,\\\"t\\\",[\\\"report.worktime.pause\\\"],null]],null],false],[0,\\\": \\\"],[1,[28,\\\"format-minutes\\\",[[23,1,[\\\"pause\\\"]]],[[\\\"hideIcon\\\"],[true]]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-details-normal-worktime\\\"],[8],[1,[28,\\\"capitalize-translation\\\",[[28,\\\"t\\\",[\\\"previousdaycopy.normal_worktime\\\"],null]],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\\n\\\"]],\\\"parameters\\\":[1,2]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-button-container\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-block btn-primary copy-previous-day-intermediate-component-select-button\\\"],[12,\\\"disabled\\\",[28,\\\"not\\\",[[24,[\\\"showSaving\\\"]]],null]],[3,\\\"action\\\",[[23,0,[]],\\\"select\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.choose\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-block btn-secondary copy-previous-day-intermediate-component-cancel-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeClicked\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/workday-summary/copy-previous-day-component/copy-previous-day-intermediate-component/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"8P2Bo1aA\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"tr\\\",false],[12,\\\"class\\\",\\\"copy-previous-day-component-open-modal\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"startCopyingPreviousDay\\\"]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"popup-td\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"40\\\"],[10,\\\"height\\\",\\\"40\\\"],[10,\\\"viewBox\\\",\\\"0 0 50 50\\\"],[11,\\\"class\\\",\\\"copy-button\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"25\\\"],[10,\\\"cy\\\",\\\"25\\\"],[10,\\\"r\\\",\\\"25\\\"],[10,\\\"opacity\\\",\\\"0.996\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M3.771,0A3.776,3.776,0,0,0,0,3.771V16.027A3.776,3.776,0,0,0,3.771,19.8H8.485V17.913H3.771a1.886,1.886,0,0,1-1.886-1.886V3.771A1.886,1.886,0,0,1,3.771,1.886H7.807c.68.173.678.99.678,1.827V5.657a.955.955,0,0,0,.236.619,3.776,3.776,0,0,1,3.535-2.5h.059c-.167-.164-.334-.334-.5-.5-.234-.232-.481-.448-.707-.678C9.493.946,8.544,0,7.542,0ZM13.2,4.714A3.776,3.776,0,0,0,9.428,8.485V20.741A3.776,3.776,0,0,0,13.2,24.512h7.542a3.776,3.776,0,0,0,3.771-3.771V12.256c0-1-.917-1.952-2.563-3.565-.23-.226-.475-.473-.707-.707s-.481-.448-.707-.678c-1.614-1.647-2.563-2.593-3.565-2.593Zm0,1.886h4.036c.68.173.678.99.678,1.827v1.944a.944.944,0,0,0,.943.943h1.886c.941,0,1.886,0,1.886.943v8.485a1.886,1.886,0,0,1-1.886,1.886H13.2a1.886,1.886,0,0,1-1.886-1.886V8.485A1.886,1.886,0,0,1,13.2,6.6Zm-9.428.943V9.428H8.485V7.542Zm0,2.828v1.886H8.485V10.371ZM13.2,12.256v1.886h7.542V12.256ZM3.771,13.2v1.886H8.485V13.2ZM13.2,15.084V16.97h5.657V15.084Zm0,2.828V19.8h7.542V17.913Z\\\"],[10,\\\"transform\\\",\\\"translate(12.287 12.208)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"opacity\\\",\\\"0.996\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"popup-td\\\"],[8],[1,[28,\\\"t\\\",[\\\"dashboard.calendar.copypreviousday\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"popup-td\\\"],[8],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showCopyPreviousDayModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"workday-summary/copy-previous-day-component/copy-previous-day-intermediate-component\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@datePicked\\\",\\\"@close\\\"],[\\\"copyPreviousDayIntermediate\\\",[23,0,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"datePicked\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeShowCopyPreviousDayModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showCopyPreviousDayFinalModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"workday-summary/copy-previous-day-component/copy-previous-day-final-component\\\",[],[[\\\"@day\\\",\\\"@notifySaved\\\",\\\"@worktimes\\\",\\\"@record\\\",\\\"@close\\\"],[[23,0,[\\\"selectedDay\\\"]],[23,0,[\\\"notifySaved\\\"]],[23,0,[\\\"worktimes\\\"]],[23,0,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeShowCopyPreviousDayFinalModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/workday-summary/copy-previous-day-component/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { set, get } from '@ember/object';\n\nexport default Component.extend({\n    session: service(),\n    store: service(),\n    dialogs: service(),\n    intl: service(),\n    evented: service(),\n    notifications: service(),\n    tagName: 'tr',\n    disableEditing: false,\n\n    async didReceiveAttrs() {\n        this._super();\n        let model = get(this, 'model');\n        if (\n            model.constructor.modelName === 'worktime' &&\n            (!this.Collector.canAddWorktime(model.date) ||\n                this.Collector.testNeeds(['products.timetracker_clockcard', 'userlevel=1?']))\n        ) {\n            set(this, 'disableEditing', true);\n        }\n\n        // if model has no modelName we assume that it is absence fetched from /absence/split route\n        if (!get(this, 'model.constructor.modelName')) {\n            set(\n                this,\n                'record',\n                get(\n                    await this.store.query('abcense', {\n                        sideload: true,\n                        id: get(this, 'model.id'),\n                    }),\n                    'firstObject',\n                ),\n            );\n        } else {\n            set(this, 'record', get(this, 'model'));\n        }\n\n        set(this, 'data', {\n            project: model.project ? model.project : null,\n            starttime: model.starttime ? model.starttime : null,\n            endtime: model.endtime ? model.endtime : null,\n            hours: model.work_hours ? model.work_hours : model.hours,\n            pause: model.pause ? model.pause : null,\n            absencetype: model.abcensetype ? model.abcensetype : null,\n            form: model.abcensetype ? 'abcense' : 'worktime',\n            km: model.km ? model.km : null,\n            comp: model.comp ? model.comp : null,\n            worktype: model.worktype ? model.worktype : null,\n        });\n    },\n\n    actions: {\n        saveRow() {\n            this.updateData();\n            this.toggleProperty('showEditModal');\n        },\n        notifySaved() {\n            this.updateData();\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n        },\n        async openEditModal() {\n            if (this.disableEditing) return;\n            set(this, 'showEditModal', true);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"zb5dfp2O\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[7,\\\"td\\\",false],[12,\\\"class\\\",\\\"popup-td\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openEditModal\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data\\\",\\\"absencetype\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"project-icon img-circle ab-circle\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cup\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"project-icon\\\",null,[[\\\"project\\\"],[[24,[\\\"data\\\",\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"],[7,\\\"td\\\",false],[12,\\\"class\\\",\\\"popup-td wider-table-cell\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openEditModal\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data\\\",\\\"starttime\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"times\\\"],[8],[1,[28,\\\"concat\\\",[[24,[\\\"data\\\",\\\"starttime\\\"]],\\\" - \\\",[24,[\\\"data\\\",\\\"endtime\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data\\\",\\\"absencetype\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[24,[\\\"data\\\",\\\"absencetype\\\",\\\"name\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[24,[\\\"data\\\",\\\"project\\\",\\\"name\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-items\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item work-hours\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"data\\\",\\\"hours\\\"]]],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data\\\",\\\"pause\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Dining\\\"],[8],[9],[0,\\\"  \\\"],[1,[28,\\\"format-minutes\\\",[[24,[\\\"data\\\",\\\"pause\\\"]]],[[\\\"hideIcon\\\"],[true]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"data\\\",\\\"km\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Mileage\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"worktime\\\",\\\"km\\\",[24,[\\\"data\\\",\\\"km\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"data\\\",\\\"comp\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Travel\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"worktime\\\",\\\"comp\\\",[24,[\\\"data\\\",\\\"comp\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"data\\\",\\\"worktype\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-HistoryEdit\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"worktime\\\",\\\"worktype\\\",[24,[\\\"data\\\",\\\"worktype\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"disableEditing\\\"]]],null,{\\\"statements\\\":[[7,\\\"td\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"openEditModal\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[[28,\\\"concat\\\",[[24,[\\\"data\\\",\\\"form\\\"]],\\\"@edit\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-arrow-right pull-right rowarrow\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showEditModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/form-modal\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"showSaved\\\",\\\"rowEdited\\\",\\\"close\\\"],[[24,[\\\"data\\\",\\\"form\\\"]],[24,[\\\"record\\\"]],false,[28,\\\"action\\\",[[23,0,[]],\\\"notifySaved\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showEditModal\\\"]]],null],false],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/workday-summary/edit-component/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"hrgvoyci\",\"block\":\"{\\\"symbols\\\":[\\\"form\\\",\\\"row\\\",\\\"&default\\\"],\\\"statements\\\":[[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"workday-summary-table\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"popupData\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"popupData\\\",\\\"_result\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[14,3,[[28,\\\"hash\\\",null,[[\\\"edit\\\"],[[28,\\\"component\\\",[\\\"workday-summary/edit-component\\\"],[[\\\"model\\\",\\\"updateData\\\"],[[23,2,[]],[28,\\\"action\\\",[[23,0,[]],\\\"updateData\\\"],null]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]}],[4,\\\"each\\\",[[24,[\\\"permittedAddForms\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,3,[[28,\\\"hash\\\",null,[[\\\"add\\\"],[[28,\\\"component\\\",[\\\"workday-summary/add-component\\\"],[[\\\"form\\\",\\\"rowAdded\\\",\\\"updateData\\\",\\\"day\\\",\\\"user\\\"],[[23,1,[]],[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"updateData\\\"],null],[24,[\\\"day\\\"]],[24,[\\\"user\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n    \\\"],[14,3,[[28,\\\"hash\\\",null,[[\\\"add\\\"],[[28,\\\"component\\\",[\\\"workday-summary/copy-component\\\"],[[\\\"form\\\",\\\"rowAdded\\\",\\\"day\\\",\\\"user\\\"],[\\\"worktime\\\",[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null],[24,[\\\"day\\\"]],[24,[\\\"user\\\"]]]]]]]]]],[0,\\\"\\\\n    \\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"popupData\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"await\\\",[[24,[\\\"selectedDayIsAllowedForCopy\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[14,3,[[28,\\\"hash\\\",null,[[\\\"add\\\"],[[28,\\\"component\\\",[\\\"workday-summary/copy-previous-day-component\\\"],[[\\\"date\\\",\\\"form\\\",\\\"updateData\\\",\\\"rowAdded\\\",\\\"day\\\",\\\"user\\\"],[[24,[\\\"day\\\"]],\\\"worktime\\\",[28,\\\"action\\\",[[23,0,[]],\\\"updateData\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null],[24,[\\\"day\\\"]],[24,[\\\"user\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/workday-summary/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class WorkpermitModalComponent extends Component {\n    @service store;\n\n    @tracked record = null;\n    @tracked loading = false;\n    @tracked showConfirmModal = true;\n    @tracked showAttachmentModal = false;\n    @tracked reason = '';\n    @tracked filePreviewCache = [];\n\n    constructor() {\n        super(...arguments);\n        this.loadRecord();\n    }\n\n    get styleNamespace() {\n        return podNames['workpermit-modal'];\n    }\n\n    async loadRecord() {\n        this.loading = true;\n        // load the workpermit record\n        if (this.recordId) {\n            this.record = await this.store.findRecord('workpermit', this.recordId);\n        }\n        // Load the record that the work permit belongs to.\n        if (this.parentRecordId) {\n            this.parentRecord = await this.store.findRecord(this.parentForm, this.parentRecordId);\n        }\n        this.loading = false;\n    }\n\n    get recordId() {\n        return this.args.modal.split(',')[2];\n    }\n\n    get parentForm() {\n        return this.args.modal.split(',')[1];\n    }\n\n    get parentRecordId() {\n        return this.args.modal.split(',')[3];\n    }\n\n    get permitOwner() {\n        return this.parentForm === 'orientation' ? this.parentRecord.ori_user.id : this.parentRecord.id;\n    }\n\n    @action\n    confirm(reason) {\n        this.reason = reason;\n        this.showConfirmModal = false;\n        this.showAttachmentModal = true;\n    }\n\n    @action\n    addFilePreviewToCache(file, preview) {\n        this.filePreviewCache[file] = preview;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"YNKmV1uS\",\"block\":\"{\\\"symbols\\\":[\\\"@closeModal\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[23,0,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showAttachmentModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"collector/fields/work-permit-attachment/attachment-modal\\\",[],[[\\\"@record\\\",\\\"@reason\\\",\\\"@onClose\\\",\\\"@addFilePreviewToCache\\\",\\\"@filePreviewCache\\\",\\\"@userId\\\",\\\"@viewOnly\\\"],[[23,0,[\\\"record\\\"]],[23,0,[\\\"reason\\\"]],[23,1,[]],[28,\\\"fn\\\",[[23,0,[\\\"addFilePreviewToCache\\\"]]],null],[23,0,[\\\"filePreviewCache\\\"]],[23,0,[\\\"permitOwner\\\"]],true]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showConfirmModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"collector/fields/work-permit-attachment/confirm-modal\\\",[],[[\\\"@onClose\\\",\\\"@onConfirm\\\",\\\"@recordID\\\"],[[23,1,[]],[28,\\\"fn\\\",[[23,0,[\\\"confirm\\\"]]],null],[23,0,[\\\"record\\\",\\\"id\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/workpermit-modal/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n    dialogs: service(),\n    intl: service(),\n    evented: service(),\n\n    didInsertElement() {\n        this.store.findAll('rollocklog');\n    },\n    actions: {\n        showOnlyErrorRows() {\n            //set(this,'filters', {\n            //    eventCode: \"250,230,210\"\n            //})\n        },\n    },\n\n    /*\n    ROLLOCK EVENTCODES\n\n    100 NFC key rejected\n    101 NFC key accepted\n\n    204 open authorized\n    205 key not found\n    210 key expired\n\n    522 Remote open command accepted\n    523 Remote open command failed\n\n    1403 BLE open accepted with e-key\n    1404 BLE open rejected\n\n    1500 door locked\n    1512 unlocked door not opened\n    1515 door closed\n    */\n});\n","export default Ember.HTMLBars.template({\"id\":\"NBssZCPO\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"tableAction\\\"],\\\"statements\\\":[[4,\\\"collector/form-report\\\",null,[[\\\"rowActions\\\",\\\"filter\\\",\\\"inlineEdit\\\",\\\"form\\\",\\\"jsonapi\\\"],[\\\"\\\",[24,[\\\"filters\\\"]],false,\\\"rollocklog\\\",true]],{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"filters\\\"]],\\\"expected `report.filters` to be a contextual component but found a string. Did you mean `(component report.filters)`? ('tt4/pods/components/worksite-areas-report/logs/template.hbs' @ L2:C6) \\\"],null]],[[\\\"showColumns\\\"],[\\\"project,user,lockgroup,date\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/components/worksite-areas-report/logs/template.hbs' @ L3:C7) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"actions\\\"]],\\\"expected `table.actions` to be a contextual component but found a string. Did you mean `(component table.actions)`? ('tt4/pods/components/worksite-areas-report/logs/template.hbs' @ L4:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"row\\\"]],\\\"expected `tableAction.row` to be a contextual component but found a string. Did you mean `(component tableAction.row)`? ('tt4/pods/components/worksite-areas-report/logs/template.hbs' @ L5:C15) \\\"],null]],[[\\\"action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"showOnlyErrorRows\\\"],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.worksite-areas-log.show_only_error_rows\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/worksite-areas-report/logs/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\n\nexport default Component.extend({\n    store: service(),\n    dialogs: service(),\n    intl: service(),\n    evented: service(),\n\n    localStorageKey: 'worksite_area_passes',\n\n    filteredPermissions: computed('currentLockGroup', 'employer', 'showOnlyValid', function () {\n        let ret = {};\n        if (this.showOnlyValid) {\n            ret['pass_start:pass_end'] =\n                moment().format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD');\n        }\n        ret['lockgroupid'] = this.currentLockGroup;\n        ret['employer'] = this.employer;\n        return ret;\n    }),\n\n    lockgroups: computed('project', async function () {\n        let params = {};\n        params['sideload'] = true;\n        if (this.project) {\n            let project = this.project;\n            if (this.project.indexOf(',') > -1) {\n                project = this.project.split(',');\n            }\n            return get(this, 'store')\n                .peekAll('lockgroup')\n                .filter((row) => {\n                    if (\n                        (Array.isArray(project) && project.includes(row.project.id)) ||\n                        row.project.id == project\n                    ) {\n                        return true;\n                    }\n                });\n        }\n        await get(this, 'store').query('lockgroup', params);\n        return get(this, 'store').peekAll('lockgroup');\n    }),\n\n    filteredLocksPermission: computed('selectedProject', async function () {\n        let locks = await get(this, 'store').query('lockgroup', {\n            project: this.selectedProject.id,\n        });\n        let ret = [];\n        locks.forEach((lock) => {\n            ret.pushObject({ id: lock.id, name: lock.name });\n        });\n        return ret;\n    }),\n\n    init() {\n        this._super();\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n    },\n\n    async didInsertElement() {\n        set(this, 'showOnlyValid', true);\n        set(this, 'selectedUsers', A());\n        set(this, 'show_fields', ['firstname', 'lastname']);\n    },\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n    },\n    actions: {\n        async endPass(record) {\n            const executeChanges = await get(this, 'dialogs').confirm(\n                get(this, 'intl').t('report.worksite-areas.end_pass_question'),\n            );\n            if (executeChanges) {\n                set(record, 'pass_end', moment().subtract(1, 'day').format('YYYY-MM-DD'));\n                await record.save();\n            }\n        },\n\n        toggleValidPasses() {\n            this.toggleProperty('showOnlyValid');\n            this.evented.storeEvent('update', 'lockgroupid', '');\n        },\n        async deleteLockGroup(lockgroup) {\n            const executeChanges = await get(this, 'dialogs').confirm(\n                get(this, 'intl').t('report.worksite-areas.delete_group_question'),\n            );\n            if (executeChanges) {\n                let passesToEnd = await this.store.query('lockpermission', {\n                    lockgroupid: lockgroup.id,\n                });\n                passesToEnd.forEach((record) => {\n                    set(record, 'pass_end', moment().subtract(1, 'day').format('YYYY-MM-DD'));\n                    record.save();\n                });\n                //set(lockgroup,'status', 'passive');\n                await lockgroup.destroyRecord();\n                lockgroup.unloadRecord();\n            }\n            return false;\n        },\n        async save() {\n            let lock = await get(this, 'store').findRecord('lockgroup', this.lockgroupid);\n\n            set(this, 'saving', true);\n\n            for (var item of this.selectedUsers) {\n                var record = get(this, 'store').createRecord('lockpermission', {\n                    user: item,\n                    lockgroupid: lock,\n                    pass_start: this.pass_start,\n                    pass_end: this.pass_end,\n                });\n                await record.save();\n            }\n            set(this, 'saving', false);\n            this.evented.storeEvent('update', 'lockgroupid', '');\n            set(this, 'showAddPermissionDialog', false);\n        },\n        filterChange(value, field) {\n            //set(this,'employer', value);\n            if (field) set(this, field, value);\n        },\n        PermissionsEditAction(users) {\n            this.clearValues();\n            set(this, 'selected_users', users);\n            set(this, 'pass_end', null);\n            set(this, 'pass_start', null);\n            set(this, 'showEditPermissionDialog', true);\n        },\n        endPermissions() {\n            set(this, 'pass_end', moment().format('YYYY-MM-DD'));\n        },\n        async editPermissions() {\n            set(this, 'saving', true);\n            for (var user of this.selected_users) {\n                if (this.pass_start) set(user, 'pass_start', this.pass_start);\n                if (this.pass_end) set(user, 'pass_end', this.pass_end);\n                await user.save();\n            }\n            set(this, 'saving', false);\n            set(this, 'showEditPermissionDialog', false);\n            this.clearValues();\n        },\n        PermissionsAdderAction(lockgroup, project) {\n            this.clearValues();\n            if (lockgroup) {\n                set(this, 'lockgroupid', lockgroup);\n            }\n            if (project) {\n                set(this, 'selectedProject', project.id);\n            }\n            set(this, 'showAddPermissionDialog', true);\n        },\n        changeCurrentLockGroup(id) {\n            if (this.currentLockGroup == id) {\n                set(this, 'currentLockGroup', null);\n            } else {\n                set(this, 'currentLockGroup', id);\n            }\n        },\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'lockgroupid') {\n            this.notifyPropertyChange('lockgroups');\n        }\n    },\n\n    clearValues() {\n        set(this, 'selected_users', A());\n        set(this, 'selectedUsers', A());\n        set(this, 'selectedProject', null);\n        set(this, 'selectedEmployer', null);\n        set(this, 'pass_start', null);\n        set(this, 'pass_end', null);\n        set(this, 'lockgroupid', null);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"jTyb3ID+\",\"block\":\"{\\\"symbols\\\":[\\\"lock\\\",\\\"report\\\",\\\"table\\\",\\\"row\\\",\\\"tableAction\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filters\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/form-report/filters\\\",null,[[\\\"form\\\",\\\"showColumns\\\",\\\"change\\\"],[\\\"user\\\",\\\"employer\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChange\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/form-report/filters\\\",null,[[\\\"form\\\",\\\"showColumns\\\",\\\"change\\\"],[\\\"lockgroup\\\",\\\"project\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChange\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"theme\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[[24,[\\\"showOnlyValid\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleValidPasses\\\"],null],\\\"light\\\",[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"report.worksite-areas.invalid_passes\\\"],null],\\\"\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-buttons\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"PermissionsAdderAction\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.worksite-areas.add_permissions\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"query\\\"],[\\\"btn btn-primary\\\",[28,\\\"hash\\\",null,[[\\\"modal\\\"],[\\\"lockgroup\\\"]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.worksite-areas.add_lockgroup\\\"],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"locks\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"lockgroups\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"lock-row \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"currentLockGroup\\\"]],[23,1,[\\\"id\\\"]]],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"changeCurrentLockGroup\\\",[23,1,[\\\"id\\\"]]]],[8],[0,\\\"\\\\n        \\\"],[1,[23,1,[\\\"project\\\",\\\"name\\\"]],false],[0,\\\" - \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Delete pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"deleteLockGroup\\\",[23,1,[]]],[[\\\"preventDefault\\\"],[false]]],[8],[9],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"query\\\"],[\\\"move move-Pencil pull-right\\\",[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[28,\\\"concat\\\",[\\\"lockgroup,\\\",[23,1,[\\\"id\\\"]]],null]]]]]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"currentLockGroup\\\"]],[23,1,[\\\"id\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"collector/form-report\\\",null,[[\\\"form\\\",\\\"filter\\\",\\\"localStorageKey\\\",\\\"showColumns\\\"],[\\\"lockpermission\\\",[24,[\\\"filteredPermissions\\\"]],[24,[\\\"localStorageKey\\\"]],\\\"lockgroupid,employer,user,pass_start,pass_end\\\"]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/components/worksite-areas-report/passes/template.hbs' @ L37:C15) \\\"],null]],[[\\\"selectable\\\"],[true]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"actions\\\"]],\\\"expected `table.actions` to be a contextual component but found a string. Did you mean `(component table.actions)`? ('tt4/pods/components/worksite-areas-report/passes/template.hbs' @ L38:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"row\\\"]],\\\"expected `tableAction.row` to be a contextual component but found a string. Did you mean `(component tableAction.row)`? ('tt4/pods/components/worksite-areas-report/passes/template.hbs' @ L39:C19) \\\"],null]],[[\\\"action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"PermissionsAdderAction\\\",[23,1,[\\\"id\\\"]],[23,1,[\\\"project\\\"]]],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.worksite-areas.add_permissions\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"selected\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"row\\\"]],\\\"expected `tableAction.row` to be a contextual component but found a string. Did you mean `(component tableAction.row)`? ('tt4/pods/components/worksite-areas-report/passes/template.hbs' @ L41:C23) \\\"],null]],[[\\\"action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"PermissionsEditAction\\\",[23,3,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.worksite-areas.edit_permissions\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[5]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"rowActions\\\"]],\\\"expected `table.rowActions` to be a contextual component but found a string. Did you mean `(component table.rowActions)`? ('tt4/pods/components/worksite-areas-report/passes/template.hbs' @ L44:C11) \\\"],null]],[[\\\"showActions\\\"],[\\\"edit\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-DoNotDisturb\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.worksite-areas.end_pass\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"endPass\\\",[23,4,[]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"        \\\"],[1,[23,3,[\\\"no-content\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"no-results\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.worksite-areas.no-results\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showEditPermissionDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"report.worksite-areas.edit_permissions_dialog\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showEditPermissionDialog\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.worksite-areas.choose_time_between\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dates\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"lockpermission.pass_start\\\"],[[\\\"class\\\",\\\"change\\\",\\\"value\\\"],[\\\"add-fields form-control\\\",\\\"update\\\",[24,[\\\"pass_start\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"lockpermission.pass_end\\\"],[[\\\"class\\\",\\\"change\\\",\\\"value\\\"],[\\\"add-fields form-control\\\",\\\"update\\\",[24,[\\\"pass_end\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"pass_start\\\"]],[24,[\\\"pass_end\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"editPermissions\\\"],null],\\\"btn btn-m-link btn-block btn-lg save\\\",[24,[\\\"disabled\\\"]],[28,\\\"t\\\",[\\\"general.save\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg save\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showEditPermissionDialog\\\"]]],null]]],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddPermissionDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"report.worksite-areas.add_permissions\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAddPermissionDialog\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"lock-permissions-main\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"orientations/add-passes\\\",null,[[\\\"selectedUsers\\\",\\\"valid\\\",\\\"lockgroupid\\\",\\\"pass_start\\\",\\\"pass_end\\\"],[[28,\\\"mut\\\",[[24,[\\\"selectedUsers\\\"]]],null],[28,\\\"mut\\\",[[24,[\\\"valid\\\"]]],null],[28,\\\"mut\\\",[[24,[\\\"lockgroupid\\\"]]],null],[28,\\\"mut\\\",[[24,[\\\"pass_start\\\"]]],null],[28,\\\"mut\\\",[[24,[\\\"pass_end\\\"]]],null]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"valid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-m-link btn-block btn-lg save\\\",[24,[\\\"disabled\\\"]],[28,\\\"t\\\",[\\\"general.save\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg save\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAddPermissionDialog\\\"]]],null]]],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/worksite-areas-report/passes/template.hbs\"}});","/* eslint-disable ember/alias-model-in-controller */\nimport Controller from '@ember/controller';\n\nexport default Controller.extend({});\n","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nexport default Route.extend(AuthenticatedRouteMixin, {\n    activate: function () {\n        document.body.classList.add('dashboard-body');\n    },\n    deactivate: function () {\n        document.body.classList.remove('dashboard-body');\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"26E4AYn5\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"dash-board\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/dashboard/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\n\nconst DevelopmentCronController = Controller.extend({\n    ttapi: service(),\n\n    init() {\n        this._super(...arguments);\n        this.scripts = ['alarms', 'unapprovedWorktimes', 'postpopulateWorktimes', 'vismanet'];\n    },\n\n    content: alias('model'),\n    actions: {\n        async execute(script) {\n            console.log('execute', script); // eslint-disable-line\n            set(this, 'loading', true);\n            try {\n                const back = await this.ttapi.request('artisan/' + script, {\n                    dataType: 'html',\n                    method: 'POST',\n                });\n                set(this, 'loading', false);\n                return set(this, 'response', back);\n            } catch (error) {\n                set(this, 'loading', false);\n                return set(this, 'response', error);\n            }\n        },\n    },\n});\n\nexport default DevelopmentCronController;\n","import Route from '@ember/routing/route';\n\nconst DevelopmentCronRoute = Route.extend();\n\nexport default DevelopmentCronRoute;\n","export default Ember.HTMLBars.template({\"id\":\"2qLNs7+B\",\"block\":\"{\\\"symbols\\\":[\\\"script\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"h2\\\",true],[8],[0,\\\"Execute artisan commands (for dev)\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"selectedScript\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"option\\\",true],[8],[0,\\\"Select script to execute...\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"scripts\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,1,[]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[]],[24,[\\\"selectedScript\\\"]]],null]],[8],[1,[23,1,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selectedScript\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"execute\\\",[24,[\\\"selectedScript\\\"]]]],[8],[0,\\\"Execute\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"textarea\\\",true],[10,\\\"style\\\",\\\"background-color: #000;border: 1px solid #000;color: #00ff00;padding: 8px;font-family: courier new;\\\"],[10,\\\"cols\\\",\\\"200\\\"],[10,\\\"rows\\\",\\\"30\\\"],[8],[1,[22,\\\"response\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/cron/template.hbs\"}});","import Route from '@ember/routing/route';\n\nconst DevelopmentDatacreatorRoute = Route.extend({\n    init() {\n        this._super(...arguments);\n        this.dateMemory = {};\n    },\n\n    actions: {\n        createProjects() {\n            return (() => {\n                const result = [];\n                for (let i = 1; i < 120; i++) {\n                    const record = this.store.createRecord('project', {\n                        number: i,\n                        name: 'generated_' + i,\n                    });\n\n                    result.push(record.save());\n                }\n                return result;\n            })();\n        },\n\n        createPLProjects() {\n            return (() => {\n                const result = [];\n                for (let i = 1; i < 120; i++) {\n                    const record = this.store.createRecord('project', {\n                        number: i,\n                        name: 'gen_pl_' + i,\n                        presence_project: true,\n                        skv_number: 'PL12345678' + i,\n                    });\n\n                    result.push(record.save());\n                }\n                return result;\n            })();\n        },\n\n        createTasks() {\n            return (() => {\n                const result = [];\n                for (let i = 1; i < 120; i++) {\n                    const record = this.store.createRecord('task', { name: 'generated_' + i });\n\n                    result.push(record.save());\n                }\n                return result;\n            })();\n        },\n\n        createWorktimes() {\n            const users = this.store.peekAll('user');\n            const projects = this.store.peekAll('project');\n\n            const starttimes = ['7:00', '7:30', '8:00'];\n            const endtimes = ['12:00', '15:30', '16:00'];\n\n            if (users.length < 1) {\n                alert('go visit users route to get users to store');\n                return;\n            }\n\n            if (projects.length < 1) {\n                alert('go visit projects route to get projects to store');\n                return;\n            }\n\n            return (() => {\n                const result = [];\n                for (let i = 1; i < 120; i++) {\n                    var date;\n                    const user = this.getRandom(users.content);\n                    const project = this.getRandom(projects.content);\n\n                    const userid = user.id;\n\n                    const lastdate = this.dateMemory[userid];\n\n                    if (!lastdate) {\n                        date = this.dateMemory[userid] = moment().format('YYYY-MM-DD');\n                    } else {\n                        date = this.dateMemory[userid] = moment(lastdate)\n                            .subtract(1, 'day')\n                            .format('YYYY-MM-DD');\n                    }\n\n                    const record = this.store.createRecord('worktime', {\n                        date,\n                        project: this.store.peekRecord('project', project.id),\n                        user: this.store.peekRecord('user', user.id),\n                        starttime: this.getRandom(starttimes),\n                        endtime: this.getRandom(endtimes),\n                    });\n\n                    result.push(record.save());\n                }\n                return result;\n            })();\n        },\n        createUsers() {\n            return (() => {\n                const result = [];\n                for (let i = 1; i < 120; i++) {\n                    const record = this.store.createRecord('user', {\n                        firstname: 'generated',\n                        lastname: (Math.random() + 1).toString(36).substring(1, 11),\n                        password: (Math.random() + 1).toString(36).substring(1, 7),\n                    });\n\n                    result.push(record.save());\n                }\n                return result;\n            })();\n        },\n    },\n\n    getRandom(arr) {\n        return arr[this.getRandomArbitrary(0, arr.length - 1)];\n    },\n\n    getRandomArbitrary(min, max) {\n        return Math.floor(Math.random() * (max - min + 1)) + min;\n    },\n});\n\nexport default DevelopmentDatacreatorRoute;\n","export default Ember.HTMLBars.template({\"id\":\"a+B1Xu6a\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"createProjects\\\"]],[8],[0,\\\"Create 120 projects\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"createPLProjects\\\"]],[8],[0,\\\"Create 120 PL projects\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"createTasks\\\"]],[8],[0,\\\"Create 120 tasks\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"createWorktimes\\\"]],[8],[0,\\\"Create 120 worktimes\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"createUsers\\\"]],[8],[0,\\\"Create 120 users\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/datacreator/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\n\nconst DevelopmentFunctionsController = Controller.extend({\n    Collector: service('collector-service'),\n    ttapi: service(),\n    store: service(),\n    dialogs: service(),\n\n    saving: false,\n\n    content: alias('model'),\n\n    actions: {\n        save(func) {\n            return this.ttapi.request('ccfunctions/functions', {\n                method: 'post',\n                data: {\n                    function: func,\n                },\n            });\n        },\n\n        turnon() {\n            const promise = this.Collector.addProduct('ttfunctions');\n\n            return promise.then(() => window.location.reload());\n        },\n    },\n});\n\nexport default DevelopmentFunctionsController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { hash } from 'rsvp';\n\nconst DevelopmentFunctionsRoute = Route.extend({\n    collectorService: service(),\n\n    model() {\n        return hash({\n            turnedon: this.collectorService.testNeeds(['modules.ttfunctions']),\n            functions: this.collectorService.ttapi({\n                url: 'ccfunctions/functions',\n            }),\n        });\n    },\n});\n\nexport default DevelopmentFunctionsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"9ZSgAy3L\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"turnedon\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"h2\\\",true],[8],[0,\\\"Worktime\\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"value\\\",\\\"class\\\",\\\"rows\\\"],[[24,[\\\"model\\\",\\\"functions\\\"]],\\\"form-control\\\",\\\"5\\\"]]],false],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"model\\\",\\\"functions\\\"]]]],[8],[0,\\\"Save\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"turnon\\\"]],[8],[0,\\\"Turn on timetracker functions\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/functions/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { A } from '@ember/array';\n\nconst ImportController = Controller.extend({\n    //{from: 0, to: \"firstname\", pk: true},{from: 1, to: \"lastname\", pk: false},{from: 2, to: \"employer\", pk: false}\n    file: null,\n    //    file: [[\"Ali\",\"Lastnametus\",\"Test Company Ltd\",\"Number\"]]\n    form: null,\n    content: alias('model'),\n    mappers: A([]),\n});\n\nexport default ImportController;\n","import Controller, { inject as controller } from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { computed, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\nimport { isEmpty } from '@ember/utils';\nimport { Promise as EmberPromise } from 'rsvp';\nimport { htmlSafe } from '@ember/template';\nimport { copy } from '@ember/object/internals';\n\nconst ImportCreateController = Controller.extend({\n    mainController: controller('development.import'),\n    Collector: service('collector-service'),\n\n    dontValidate: false,\n\n    content: alias('model'),\n    file: alias('mainController.file'),\n    mappers: alias('mainController.mappers'),\n    form: alias('mainController.form'),\n    hasHeaderRow: alias('mainController.hasHeaderRow'),\n\n    fields: computed('form', function () {\n        return this.Collector.fieldArray(this.form);\n    }),\n    records: computed('file', function () {\n        const c = this.Collector;\n        const store = this.store;\n        const form = this.form;\n        const records = A([]);\n        const mappers = this.mappers;\n\n        const pkMapper = mappers.filterBy('pk')?.firstObject;\n        if (this.hasHeaderRow) {\n            this.file.shiftObject();\n        }\n        console.log(this.get('file')); //eslint-disable-line\n        if (!this.file) {\n            return;\n        }\n        this.file.forEach((file) => {\n            let q, record;\n            const arr = {};\n            if (pkMapper) {\n                q = { sideload: true };\n                q[pkMapper.to] = file[pkMapper.from];\n                record = store.query(form, q);\n            }\n            const promises = [];\n            mappers.forEach(async function (mapper) {\n                console.log(mapper); // eslint-disable-line\n                if (isEmpty(mapper.to) || isEmpty(mapper.from)) {\n                    return;\n                }\n                const field = c.field(form, mapper.to);\n                if (field.type === 'database') {\n                    if (file[mapper.from]) {\n                        const rq = { sideload: true, q: file[mapper.from], limit: 1 };\n                        //\n                        //                    split = file[mapper.from].split(' ')\n                        //                    console.log field.options.fields\n                        //                    console.log split\n                        //                    for ofield,k in field.options.fields\n                        //                        console.log ofield\n                        //                        console.log k\n                        //                        rq[ofield] = split[k]\n                        promises.push(\n                            store\n                                .query(field.options.form, rq)\n                                .then(this.returnPromise.bind(this, arr, mapper)),\n                        );\n                    } else {\n                        return (arr[mapper.to] = null);\n                    }\n                } else if (\n                    [\n                        'dropdown_values',\n                        'dropdown_userlevel',\n                        'status',\n                        'dropdown_options',\n                    ].includes(field.type) &&\n                    mapper.maps\n                ) {\n                    const value = file[mapper.from];\n                    return mapper.maps.forEach(function (item) {\n                        if (mapper.options.from[item.from] === value) {\n                            return (arr[mapper.to] = item.to);\n                        }\n                    });\n                } else {\n                    return (arr[mapper.to] = file[mapper.from]);\n                }\n            });\n\n            return EmberPromise.all(promises).then(\n                this.returnRecords.bind(this, record, form, arr, records),\n            );\n        });\n        return records;\n    }),\n    progress: computed('numericalProgress', function () {\n        return this.numericalProgress + ' %';\n    }),\n    progressStyle: computed('progress', function () {\n        return htmlSafe('width: ' + this.numericalProgress + '%');\n    }),\n\n    actions: {\n        saveRecords() {\n            set(this, 'executing', true);\n            set(this, 'numericalProgress', 0);\n            const records = this.records;\n            return this.execute_one(copy(records), records.length);\n        },\n\n        validateRecords() {\n            return this.records.invoke('validate');\n        },\n    },\n    returnPromise(arr, mapper, data) {\n        if (data.length > 0) {\n            return (arr[mapper.to] = data.firstObject);\n        }\n    },\n\n    async returnRecords(record, form, arr, records) {\n        if (record) {\n            const data = await record;\n            let model;\n            if (data.length > 0) {\n                model = this.setRecordValues(data.firstObject, arr);\n            } else {\n                model = this.store.createRecord(form, arr);\n            }\n            if (!this.dontValidate && model.hasDirtyAttributes) {\n                await model.validate();\n                if (!model.errors.isEmpty) {\n                    let errorstr = '';\n                    model.errors.forEach(function (error) {\n                        errorstr +=\n                            '<b>' + this.Collector.field(form, error.attribute).translated_name;\n                        return (errorstr += ':</b> ' + error.message + '<br>');\n                    });\n                    return set(model, 'errorString', errorstr);\n                }\n            }\n            return records.pushObject(model);\n        } else {\n            const model = this.store.createRecord(form, arr);\n            if (!this.dontValidate) {\n                model.validate();\n            }\n            return records.pushObject(model);\n        }\n    },\n\n    setRecordValues(record, arr) {\n        for (let key in arr) {\n            const item = arr[key];\n            set(record, key, item);\n        }\n        return record;\n    },\n\n    execute_one(heap, count) {\n        const record = heap.shiftObject();\n        if (!record) {\n            return;\n        }\n        if (this.dontValidate) {\n            set(record, 'validation', 'off');\n        }\n        const promise = record.save();\n\n        return promise.then(\n            () => {\n                return this.goNext(heap, count);\n            },\n            () => {\n                return this.goNext(heap, count);\n            },\n        );\n    },\n\n    goNext(heap, count) {\n        set(this, 'numericalProgress', Math.floor(((count - heap.length) / count) * 1000) / 10);\n\n        if (heap.length === 0) {\n            set(this, 'executing', false);\n        }\n\n        return this.execute_one(heap, count);\n    },\n});\n\nexport default ImportCreateController;\n","import Route from '@ember/routing/route';\n\nconst ImportCreateRoute = Route.extend();\n\nexport default ImportCreateRoute;\n","export default Ember.HTMLBars.template({\"id\":\"BGQxITxV\",\"block\":\"{\\\"symbols\\\":[\\\"record\\\",\\\"field\\\",\\\"field\\\"],\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveRecords\\\"]],[8],[0,\\\"Save\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"Don't validate\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"class\\\"],[\\\"checkbox\\\",[24,[\\\"dontValidate\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"executing\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"massedit.executing\\\"],[[\\\"rowCount\\\"],[[24,[\\\"rowCount\\\"]]]]],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[10,\\\"aria-valuenow\\\",\\\"20\\\"],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[11,\\\"style\\\",[22,\\\"progressStyle\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[22,\\\"progress\\\"],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Valid\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Record state\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"th\\\",true],[8],[1,[23,3,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"records\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"isError\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label-m label-m-open\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cancel\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,1,[\\\"errorString\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"label-m \\\",[28,\\\"if\\\",[[23,1,[\\\"isValid\\\"]],\\\"label-m-approved\\\",\\\"label-m-open\\\"],null]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move \\\",[28,\\\"if\\\",[[23,1,[\\\"isValid\\\"]],\\\"move-Checkmark\\\",\\\"move-Cancel\\\"],null]]]],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,1,[\\\"errorString\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"isNew\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label-m label-m-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"import.record.new\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"hasDirtyAttributes\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label-m label-m-warning\\\"],[8],[1,[28,\\\"t\\\",[\\\"import.record.merged\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label-m label-m-approved\\\"],[8],[1,[28,\\\"t\\\",[\\\"import.record.unchanged\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[[23,2,[]],[24,[\\\"form\\\"]],[23,1,[]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/import/create/template.hbs\"}});","/* eslint-disable ember/no-observers */\nimport Component from '@ember/component';\nimport { computed, observer, set } from '@ember/object';\n\nconst ImportFieldMapperComponent = Component.extend({\n    useAsPK: false,\n\n    _schemaFields: computed('schemaFields', 'schemaFields.[]', function () {\n        const fields = [];\n        if (!this.schemaFields) {\n            return;\n        }\n        this.schemaFields.forEach((field, key) =>\n            fields.push({\n                id: key,\n                name: field,\n            }),\n        );\n        return fields;\n    }),\n\n    _targetFields: computed('targetFields', 'targetFields.[]', 'usedFields.[]', function () {\n        if (!this.targetFields) {\n            return;\n        }\n        const fields = this.targetFields.filter((field) => {\n            let needle;\n            if (\n                ((needle = field.id), Array.from(this.usedFields).includes(needle)) &&\n                field.id !== this.to\n            ) {\n                return false;\n            } else {\n                return true;\n            }\n        });\n        return fields;\n    }),\n\n    pkObserver: observer('useAsPK', function () {\n        if (this.valueChanged) {\n            return this.valueChanged(\n                this.useAsPK,\n                this.useAsPK !== this.useAsPK,\n                'pk',\n                this.number,\n            );\n        }\n    }),\n    init() {\n        this._super(...arguments);\n        this.usedFields = [];\n        this.schemaFields = [];\n        this.targetFields = [];\n    },\n\n    actions: {\n        valueChangedTo(field) {\n            const old = this.to;\n            if (this.valueChanged) {\n                this.valueChanged(field, old, 'to', this.number);\n            }\n            return set(this, 'to', field);\n        },\n        valueChangedFrom(field) {\n            const old = this.from;\n            if (this.valueChanged) {\n                this.valueChanged(field, old, 'from', this.number);\n            }\n            return set(this, 'from', field);\n        },\n\n        valueChangedPk() {\n            return console.log(this.get('useAsPK')); // eslint-disable-line\n        },\n    },\n});\n\nexport default ImportFieldMapperComponent;\n","export default Ember.HTMLBars.template({\"id\":\"/DnVCRZz\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"From field\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\",\\\"classes\\\"],[[24,[\\\"_schemaFields\\\"]],[24,[\\\"schema\\\"]],\\\"valueChangedFrom\\\",[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"To field\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\",\\\"classes\\\"],[[24,[\\\"_targetFields\\\"]],[24,[\\\"target\\\"]],\\\"valueChangedTo\\\",[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"Use as PK\\\"],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"class\\\"],[\\\"checkbox\\\",[24,[\\\"useAsPK\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/import/field-mapper/template.hbs\"}});","/* eslint-disable ember/no-observers */\nimport Component from '@ember/component';\nimport { observer, set } from '@ember/object';\nimport { A } from '@ember/array';\n\nconst ImportFileReaderComponent = Component.extend({\n    data: A([]),\n\n    obsSplitter: observer('splitter', function () {\n        if (this.rawFile) {\n            return this.readFile(this.rawFile);\n        }\n    }),\n    actions: {\n        addFile() {\n            return this.element.querySelector('.file_input').click();\n        },\n    },\n    change(e) {\n        const self = this;\n        return Array.from(e.target.files).map((file) => self.readFile(file));\n    },\n    readFile(file) {\n        set(this, 'rawFile', file);\n        set(this, 'error', null);\n        const reader = new FileReader();\n        set(this, 'filename', file.name);\n        const splitname = file.name.split('.');\n        const filetype = splitname[splitname.length - 1];\n        if (filetype) {\n            set(this, 'filetype', filetype);\n        }\n        reader.onload = (event) => {\n            return this.processFile(event.target.result);\n        };\n\n        return reader.readAsText(file);\n    },\n\n    processFile(file) {\n        if (this.filetype === 'csv') {\n            const allTextLines = file.split(/\\r\\n|\\n/);\n            const lines = [];\n            for (let line of Array.from(allTextLines)) {\n                if (!line) {\n                    continue;\n                }\n                const data = line.split(this.splitter);\n                const tarr = [];\n                for (let d of Array.from(data)) {\n                    if (d) {\n                        tarr.push(d.replace(/(^\\s*,)|(,\\s*$)/g, ''));\n                    } else {\n                        tarr.push(d);\n                    }\n                }\n                lines.push(tarr);\n            }\n\n            return set(this, 'file', lines);\n        }\n    },\n});\n\nexport default ImportFileReaderComponent;\n","export default Ember.HTMLBars.template({\"id\":\"izKPSYxo\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"hide\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"input\\\",true],[10,\\\"class\\\",\\\"hide file_input\\\"],[11,\\\"multiple\\\",[22,\\\"multiple\\\"]],[11,\\\"value\\\",[22,\\\"value\\\"]],[10,\\\"type\\\",\\\"file\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-4 col-sm-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[22,\\\"error\\\"],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[1,[22,\\\"filename\\\"],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addFile\\\"],[[\\\"target\\\"],[[23,0,[]]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-camera\\\"],[8],[9],[0,\\\" Choose file\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/import/file-reader/template.hbs\"}});","import Controller, { inject as controller } from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport { computed } from '@ember/object';\n\nconst ImportIndexController = Controller.extend({\n    mainController: controller('development.import'),\n    intl: service(),\n    Collector: service('collector-service'),\n    splitter: ',',\n    file: alias('mainController.file'),\n    form: alias('mainController.form'),\n    hasHeaderRow: alias('mainController.hasHeaderRow'),\n    content: alias('model'),\n    showFile: computed('form', 'delimiter', function () {\n        if (this.form && this.splitter) {\n            return true;\n        }\n        return false;\n    }),\n    forms: computed(function () {\n        const forms = this.Collector.forms();\n        const t = this.intl;\n        const formOptions = [];\n        for (let key in forms) {\n            const form = forms[key];\n            formOptions.push({\n                id: key,\n                name: form.name || t.t('general.form.' + key),\n            });\n        }\n        return formOptions;\n    }),\n});\n\nexport default ImportIndexController;\n","import Route from '@ember/routing/route';\n\nconst ImportIndexRoute = Route.extend();\n\nexport default ImportIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"5dIhWnkH\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"Target form\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"prompt\\\",\\\"classes\\\"],[[24,[\\\"forms\\\"]],[24,[\\\"form\\\"]],[28,\\\"t\\\",[\\\"import.select.form\\\"],null],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"Delimiter\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"textbox\\\",[24,[\\\"splitter\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"File has header row\\\"],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"class\\\"],[\\\"checkbox\\\",[24,[\\\"hasHeaderRow\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showFile\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"Import file\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"development/import/file-reader\\\",null,[[\\\"file\\\",\\\"splitter\\\"],[[24,[\\\"file\\\"]],[24,[\\\"splitter\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"file\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"tagName\\\",\\\"route\\\"],[\\\"btn btn-m-link btn-block\\\",\\\"button\\\",\\\"development.import.map\\\"]],{\\\"statements\\\":[[0,\\\"Next\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/import/index/template.hbs\"}});","/* eslint-disable ember/no-observers */\nimport Controller, { inject as controller } from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { computed, observer, set } from '@ember/object';\nimport { A } from '@ember/array';\nimport { isEmpty, typeOf } from '@ember/utils';\n\nconst ImportMapController = Controller.extend({\n    mainController: controller('development.import'),\n    intl: service(),\n    Collector: service('collector-service'),\n    headerRow: alias('mainController.hasHeaderRow'),\n    usedFields: A([]),\n    content: alias('model'),\n    mappers: alias('mainController.mappers'),\n    form: alias('mainController.form'),\n    formFields: computed('mainController.form', function () {\n        const c = this.Collector;\n        const fields = c.fieldArray(this.mainController.form);\n        const fieldOptions = A([]);\n        fields.forEach((field) => {\n            return fieldOptions.pushObject({\n                id: field.name,\n                name: field.translated_name,\n                mandatory: field.features.mandatory,\n            });\n        });\n        //        return [\n        //            id: \"firstname\"\n        //            name: \"First name\"\n        //        ,\n        //            id: \"lastname\"\n        //            name: \"Last name\"\n        //        ,\n        //            id: \"desc\"\n        //            name: \"Description\"\n        //        ]\n        return fieldOptions;\n    }),\n    mandatoryFields: computed('formFields', function () {\n        return this.formFields.filterBy('mandatory');\n    }),\n    schemaFields: computed('mainController.file', function () {\n        const file = this.mainController.file;\n        if (isEmpty(file) || isEmpty(file[0])) {\n            this.transitionToRoute('development.import.index');\n        }\n        //        return [\"First name\",\"Last name\",\"Employer\",\"Number\"]\n        return file[0];\n    }),\n\n    cfields: observer('mappers.@each.to', function () {\n        const c = this.Collector;\n        const form = this.form;\n        const file = this.mainController.file;\n        const intl = this.intl;\n        return this.mappers.forEach((mapper) => {\n            let from;\n            if (!mapper.to || !mapper.from) {\n                return;\n            }\n            if (mapper.maps.length > 0) {\n                return;\n            }\n            const cf = c.field(form, mapper.to);\n            if (\n                !['dropdown_values', 'dropdown_userlevel', 'status', 'dropdown_options'].includes(\n                    cf.type,\n                )\n            ) {\n                return;\n            }\n            const froms = file.mapBy(mapper.from).uniq();\n            if (this.headerRow) {\n                froms.shiftObject();\n            }\n            for (let index = 0; index < froms.length; index++) {\n                from = froms[index];\n                if (!from || from === '') {\n                    continue;\n                }\n                mapper.options.from.pushObject(from);\n                mapper.maps.pushObject({ from: null, to: null, pk: false });\n            }\n            return (() => {\n                const result = [];\n                for (let option of Array.from(cf.options)) {\n                    if (typeOf(option) === 'object') {\n                        option.name = intl.t(form + '.' + cf.name + '.' + option.value);\n                    } else {\n                        const new_option = {\n                            id: option,\n                            name: intl.t(form + '.' + cf.name + '.' + option),\n                        };\n                        option = new_option;\n                    }\n                    result.push(mapper.options.to.pushObject(option));\n                }\n                return result;\n            })();\n        });\n    }),\n\n    actions: {\n        addMapper() {\n            return this.mappers.pushObject({\n                from: null,\n                to: null,\n                pk: false,\n                maps: A([]),\n                options: { from: A([]), to: A([]) },\n            });\n        },\n\n        valueChanged(field, old, type, number) {\n            if (type === 'to') {\n                let needle, needle1;\n                if (((needle = old), Array.from(this.usedFields).includes(needle))) {\n                    this.usedFields.removeObject(old);\n                }\n                if (field && ((needle1 = field), !Array.from(this.usedFields).includes(needle1))) {\n                    this.usedFields.pushObject(field);\n                }\n            }\n            set(this, 'mappers.' + number + '.' + type, field);\n            return false;\n        },\n\n        valueChangedMaps(field, old, type, map) {\n            map[type] = field;\n            return false;\n        },\n\n        removeMapper(mapper) {\n            return this.mappers.removeObject(mapper);\n        },\n    },\n});\n\nexport default ImportMapController;\n","import Route from '@ember/routing/route';\n\nconst ImportMapRoute = Route.extend();\n\nexport default ImportMapRoute;\n","export default Ember.HTMLBars.template({\"id\":\"xOeRBsMg\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"mapper\\\",\\\"index\\\",\\\"map\\\",\\\"mindex\\\",\\\"mapper\\\",\\\"index\\\"],\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addMapper\\\"]],[8],[0,\\\"Add mapper\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"h2\\\",true],[8],[0,\\\"Field mappers\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"mappers\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-2\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"development/import/field-mapper\\\",null,[[\\\"number\\\",\\\"schemaFields\\\",\\\"targetFields\\\",\\\"usedFields\\\",\\\"valueChanged\\\"],[[23,7,[]],[24,[\\\"schemaFields\\\"]],[24,[\\\"formFields\\\"]],[24,[\\\"usedFields\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"valueChanged\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default text-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeMapper\\\",[23,6,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cancel\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6,7]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"h2\\\",true],[8],[0,\\\"Value mappers\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"mappers\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[23,2,[\\\"to\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"maps\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,2,[\\\"maps\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-2\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"development/import/value-mapper\\\",null,[[\\\"maps\\\",\\\"schemaFields\\\",\\\"targetFields\\\",\\\"valueChanged\\\"],[[23,4,[]],[23,2,[\\\"options\\\",\\\"from\\\"]],[23,2,[\\\"options\\\",\\\"to\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"valueChangedMaps\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4,5]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2,3]},null],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"h2\\\",true],[8],[0,\\\"Fields that are mandatory\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"mandatoryFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"p\\\",true],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"tagName\\\",\\\"route\\\"],[\\\"btn btn-m-link btn-block\\\",\\\"button\\\",\\\"development.import.create\\\"]],{\\\"statements\\\":[[0,\\\"Next\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/import/map/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst ImportRoute = Route.extend(AuthenticatedRouteMixin);\n\nexport default ImportRoute;\n","import Route from '@ember/routing/route';\n\nconst ImportSaveRoute = Route.extend();\n\nexport default ImportSaveRoute;\n","export default Ember.HTMLBars.template({\"id\":\"VWmE8WIO\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/import/save/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"J06ujsPb\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/import/template.hbs\"}});","import { set } from '@ember/object';\nimport mapper from '../field-mapper/component';\n\nconst ImportValueMapperComponent = mapper.extend({\n    actions: {\n        valueChangedTo(field) {\n            const old = this.to;\n            if (this.valueChanged) {\n                this.valueChanged(field, old, 'to', this.maps);\n            }\n            return set(this, 'to', field);\n        },\n        valueChangedFrom(field) {\n            const old = this.from;\n            if (this.valueChanged) {\n                this.valueChanged(field, old, 'from', this.maps);\n            }\n            return set(this, 'to', field);\n        },\n    },\n});\n\nexport default ImportValueMapperComponent;\n","export default Ember.HTMLBars.template({\"id\":\"ymWj5CMo\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"From value\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\",\\\"classes\\\"],[[24,[\\\"_schemaFields\\\"]],[24,[\\\"schema\\\"]],\\\"valueChangedFrom\\\",[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"To value\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\",\\\"classes\\\"],[[24,[\\\"_targetFields\\\"]],[24,[\\\"target\\\"]],\\\"valueChangedTo\\\",[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/import/value-mapper/template.hbs\"}});","import Controller from '@ember/controller';\nimport EmberObject, { set, get, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\n// eslint-disable-next-line ember/alias-model-in-controller\nexport default Controller.extend({\n    session: service(),\n    flags: service(),\n    notifications: service(),\n    overrideFlags: null,\n    clearConsole: true,\n    flagFilter: '',\n\n    init() {\n        this._super(...arguments);\n        if (localStorage.APP) {\n            set(this, 'app_override', localStorage.APP);\n        }\n\n        if (sessionStorage.overrideFlags) {\n            set(\n                this,\n                'overrideFlags',\n                EmberObject.create(JSON.parse(sessionStorage.overrideFlags)),\n            );\n        } else {\n            set(this, 'overrideFlags', EmberObject.create());\n        }\n    },\n\n    href: computed(function () {\n        console.log(this.get('session.session')); //eslint-disable-line\n        return (\n            'localhost:4200/#/token/' +\n            get(this, 'session.session.content.authenticated.refresh_token')\n        );\n    }),\n\n    currentFlags: computed('flagFilter', 'overrideFlags.version', function () {\n        const overrides = get(this, 'overrideFlags') || {};\n        let isDirty = false;\n        let allFlags = Object.entries(get(this, 'flags').allFlags())\n            .map((...args) => {\n                let [key, value] = Array.from(args[0]);\n                let isOverriden = false;\n                if (overrides[key] !== undefined) {\n                    let oldval = value;\n                    value = overrides[key];\n                    if (oldval !== value) {\n                        isOverriden = true;\n                        isDirty = true;\n                    }\n                }\n\n                return {\n                    key,\n                    value,\n                    isOverriden,\n                };\n            })\n            .filter((item) => typeof item.value === 'boolean')\n            .filter((item) => {\n                if (this.flagFilter === '') {\n                    return true;\n                }\n                return new RegExp(this.flagFilter).test(item.key);\n            });\n\n        return {\n            allFlags,\n            isDirty,\n        };\n    }),\n\n    actions: {\n        copyAccessToken() {\n            navigator.clipboard.writeText(\n                get(this, 'session.session.content.authenticated.access_token'),\n            );\n            this.notifications.success('access token copied to clipboard', { autoClear: true });\n        },\n\n        copyRefreshToken() {\n            navigator.clipboard.writeText(\n                get(this, 'session.session.content.authenticated.refresh_token'),\n            );\n            this.notifications.success('refresh token copied to clipboard', { autoClear: true });\n        },\n\n        overrideFlag(flag) {\n            let overrideFlags = get(this, 'overrideFlags');\n\n            // overrides[flag.key] = !flag.value;\n            set(overrideFlags, flag.key, !flag.value);\n            set(overrideFlags, 'version', Math.random());\n            window.overrideFlags = overrideFlags;\n            sessionStorage.setItem('overrideFlags', JSON.stringify(overrideFlags));\n        },\n\n        setAppOverride() {\n            sessionStorage.setItem('APP', get(this, 'app_override'));\n            return location.reload();\n        },\n\n        clearAppOverride() {\n            sessionStorage.removeItem('APP');\n            return location.reload();\n        },\n\n        sendToken() {\n            return this.transitionToRoute('token', get(this, 'refreshToken'), {\n                queryParams: { url: window.location.href },\n            });\n        },\n        resetFlags() {\n            set(this, 'overrideFlags', {});\n            sessionStorage.removeItem('overrideFlags');\n            delete window.overrideFlags;\n        },\n        showToasts() {\n            this.notifications.success('This is a success toast', { autoClear: false });\n            this.notifications.info('This is an info toast', { autoClear: false });\n            this.notifications.warning('This is a warning toast', { autoClear: false });\n            this.notifications.error('This is an error toast', { autoClear: false });\n        },\n    },\n});\n","/* eslint-disable no-console */\nimport Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nconst DevelopmentIndexRoute = Route.extend({\n    Collector: service('collector-service'),\n    ttapi: service('ttapi'),\n    session: service(),\n    moment: service(),\n    store: service(),\n    sessionhelper: service(),\n\n    actions: {\n        getForms() {\n            return this.consoleLog('forms', \"Service's /forms\", 'GET');\n        },\n\n        getMe() {\n            return this.consoleLog('me', 'me', 'GET');\n        },\n\n        capiFlags() {\n            return this.consoleLog('service/flags', 'Capi flags', 'GET');\n        },\n\n        getNeededSchema() {\n            return this.consoleLog('update?show=needed', \"Service's needed schema\");\n        },\n\n        getCurrentSchema() {\n            return this.consoleLog('update?show=current', \"Service's current schema\");\n        },\n\n        getCurrentUser() {\n            const currentUser = this.session.currentUser;\n            window.$E = currentUser;\n            return console.info('currentUser ($E)', currentUser);\n        },\n\n        storeToConsole() {\n            const store = this.store;\n            window.$E = store;\n            return console.info('store saved to $E');\n        },\n\n        sessionToConsole() {\n            const session = this.moment;\n            window.$E = session;\n            return console.info('session saved to $E');\n        },\n\n        sessionhelperToConsole() {\n            window.$E = this.sessionhelper;\n            return console.info('sessionhelper saved to $E');\n        },\n\n        collectorFormsObject() {\n            const forms = this.Collector.forms();\n            window.$E = forms;\n            return console.info('collectorFormsObject ($E)', forms);\n        },\n\n        async clearMemcache() {\n            const c = this.Collector;\n            const back = await c.ajax({ url: 'system/clear_memcache' });\n            return console.log('cache cleared', back.message);\n        },\n\n        async clearPartnerMemcache() {\n            const c = this.Collector;\n            const back = await c.ajax({\n                url: 'system/clear_memcache?partnerid=' + this.session.currentUser.partnerid,\n            });\n            return console.log('partner cache cleared', back.message);\n        },\n\n        async clearUserMemcache() {\n            const c = this.Collector;\n            const back = await c.ajax({\n                url:\n                    'system/clear_memcache?partnerid=' +\n                    this.session.currentUser.partnerid +\n                    '&username=' +\n                    this.session.currentUser.username,\n            });\n            return console.log('user cache cleared', back.message);\n        },\n\n        async redisInfo() {\n            if (this.controller.clearConsole) {\n                console.clear();\n            }\n\n            const c = this.Collector;\n            const back = await c.ajax({ url: 'system/redisInfo' });\n            return console.log('redis', back.message);\n        },\n\n        async redisDumpUser() {\n            if (this.controller.clearConsole) {\n                console.clear();\n            }\n\n            const c = this.Collector;\n            const back = await c.ajax({ url: 'system/redisInfo?dump_user' });\n            return console.log('dump', back.message);\n        },\n\n        async redisDump() {\n            if (this.controller.clearConsole) {\n                console.clear();\n            }\n\n            const c = this.Collector;\n            const back = await c.ajax({ url: 'system/redisInfo?dump' });\n\n            return console.log('dump', back.message);\n        },\n\n        testAlarms() {\n            this.ttapi._get('alarms/test');\n            return console.info('testAlarms called');\n        },\n\n        async getFcmid() {\n            if (this.controller.clearConsole) {\n                console.clear();\n            }\n            const back = await this.ttapi._post('user_fcmid', null);\n            return console.log(back.fcmid);\n        },\n    },\n    consoleLog(url, text, method) {\n        if (text == null) {\n            text = '';\n        }\n        if (method == null) {\n            method = 'POST';\n        }\n        if (this.controller.clearConsole) {\n            console.clear();\n        }\n\n        const c = this.Collector;\n        const promise = c.ajax({\n            method,\n            url,\n            headers: {\n                Authorization: 'Bearer ' + get(this.session, 'session.authenticated.access_token'),\n            },\n        });\n        return promise.then((back) => console.info(text, back));\n    },\n});\n\nexport default DevelopmentIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"38eA2WrK\",\"block\":\"{\\\"symbols\\\":[\\\"flag\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"getForms\\\"]],[8],[0,\\\"Forms to console\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"getMe\\\"]],[8],[0,\\\"Me to console\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"getNeededSchema\\\"]],[8],[0,\\\"Needed module schema to console\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"getCurrentSchema\\\"]],[8],[0,\\\"Current module schema to console\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"getCurrentUser\\\"]],[8],[0,\\\"Current user to console\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"storeToConsole\\\"]],[8],[0,\\\"Store to console\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"sessionToConsole\\\"]],[8],[0,\\\"Session to console\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"sessionhelperToConsole\\\"]],[8],[0,\\\"Sessionhelper to console\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"collectorFormsObject\\\"]],[8],[0,\\\"Collector forms object\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"clearPartnerMemcache\\\"]],[8],[0,\\\"Clear partner memcache\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"redisInfo\\\"]],[8],[0,\\\"Redis INFO\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"redisDump\\\"]],[8],[0,\\\"Redis dump\\\"],[9],[0,\\\"\\\\n         | \\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"clearUserMemcache\\\"]],[8],[0,\\\"Clear user memcache\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"redisDumpUser\\\"]],[8],[0,\\\"Redis dump userProfile\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"capiFlags\\\"]],[8],[0,\\\"Capi flags to console\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"testAlarms\\\"]],[8],[0,\\\"Test alarms\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"getFcmid\\\"]],[8],[0,\\\"User FCMID to console\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\"],[\\\"checkbox\\\",[24,[\\\"clearConsole\\\"]]]]],false],[0,\\\" Clear console\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"showToasts\\\"]],[8],[0,\\\"Show all toasts\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[29,[[22,\\\"href\\\"]]]],[10,\\\"target\\\",\\\"_blank\\\"],[8],[0,\\\"Copy access to localhost\\\"],[9],[0,\\\" (remember: ember s -e=prodcopy)\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        Current access token \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-CopyRow pl-2 pr-2\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"copyAccessToken\\\"]],[8],[9],[0,\\\" (expires in \\\"],[1,[28,\\\"moment-from-now\\\",[[24,[\\\"session\\\",\\\"session\\\",\\\"content\\\",\\\"authenticated\\\",\\\"expires_at\\\"]]],null],false],[0,\\\")\\\\n        \\\"],[7,\\\"pre\\\",true],[8],[7,\\\"code\\\",true],[8],[1,[24,[\\\"session\\\",\\\"session\\\",\\\"content\\\",\\\"authenticated\\\",\\\"access_token\\\"]],false],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        Current refresh token \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-CopyRow pl-2\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"copyRefreshToken\\\"]],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"pre\\\",true],[8],[7,\\\"code\\\",true],[8],[1,[24,[\\\"session\\\",\\\"session\\\",\\\"content\\\",\\\"authenticated\\\",\\\"refresh_token\\\"]],false],[9],[9],[0,\\\"\\\\n        \\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        Copypaste refresh token here to login as any user\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\"],[\\\"text\\\",[24,[\\\"refreshToken\\\"]]]]],false],[0,\\\" \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"sendToken\\\"]],[8],[0,\\\"Send\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"b\\\",true],[8],[0,\\\"Override APP global\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[0,\\\"This sets an 'APP' localstorage object that overrides config.APP. Reload page after\\\"],[9],[0,\\\"\\\\n           \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[10,\\\"style\\\",\\\"width: 80%\\\"],[8],[0,\\\"\\\\n               \\\"],[7,\\\"b\\\",true],[8],[0,\\\"Example:\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"pre\\\",true],[8],[7,\\\"code\\\",true],[8],[0,\\\"{\\\\n    \\\\\\\"COLLECTOR_API_URL\\\\\\\": \\\\\\\"https://capi.moveniumprod.com\\\\\\\",\\\\n    \\\\\\\"CAPI3\\\\\\\": \\\\\\\"https://capi-3.moveniumprod.com\\\\\\\",\\\\n    \\\\\\\"TTAPI_FOLDER\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"TTAPI\\\\\\\": \\\\\\\"https://ttapi.moveniumprod.com\\\\\\\",\\\\n    \\\\\\\"TTAPI2\\\\\\\": \\\\\\\"https://ttapi2.moveniumprod.com\\\\\\\",\\\\n    \\\\\\\"ADMINTOOLURL\\\\\\\": \\\\\\\"https://at2new.movenium.com/at2/\\\\\\\"\\\\n}\\\\n\\\"],[9],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"pre\\\",true],[8],[7,\\\"code\\\",true],[8],[0,\\\"{\\\\n    \\\\\\\"COLLECTOR_API_URL\\\\\\\": \\\\\\\"https://api.moveniumtest.com\\\\\\\",\\\\n    \\\\\\\"CAPI3\\\\\\\": \\\\\\\"https://capi-3.moveniumtest.com\\\\\\\",\\\\n    \\\\\\\"TTAPI_FOLDER\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"TTAPI\\\\\\\": \\\\\\\"https://api.moveniumtest.com/ttapi\\\\\\\",\\\\n    \\\\\\\"TTAPI2\\\\\\\": \\\\\\\"https://ttapi2.moveniumtest.com\\\\\\\",\\\\n    \\\\\\\"ADMINTOOLURL\\\\\\\": \\\\\\\"https://at2-fargate.moveniumtest.com/\\\\\\\"\\\\n}\\\\n\\\"],[9],[9],[0,\\\"\\\\n\\\\n\\\\n           \\\"],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control\\\",[24,[\\\"app_override\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"setAppOverride\\\"]],[8],[0,\\\"Set APP\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"clearAppOverride\\\"]],[8],[0,\\\"Clear Override\\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pt-5\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Alerts\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Danger!\\\"],[9],[0,\\\"\\\\n            This is a danger-message! Something went wrong!\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Info!\\\"],[9],[0,\\\"\\\\n            This is a info-message! Just for your information!\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Warning!\\\"],[9],[0,\\\"\\\\n            This is a warning-message! Not so fatal as danger-message, but still\\\\n            important!\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Success!\\\"],[9],[0,\\\"\\\\n            This is a success-message! Everything is fine!\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 pl-4\\\"],[8],[0,\\\"\\\\n\\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Flags\\\"],[9],[0,\\\"\\\\n       \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flexbox-column\\\"],[8],[0,\\\"\\\\n           \\\"],[7,\\\"p\\\",true],[8],[0,\\\"You don't have to refresh the page or block LaunchDarkly. These overrides only affect YOUR browser, and will not\\\\n               affect the customer's settings. These overrides are saved on the global scope as window.overrideFlags and\\\\n               in sessionStorage.overrideFlags\\\"],[9],[0,\\\"\\\\n           \\\"],[7,\\\"p\\\",true],[8],[0,\\\"Filter flags: \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\"],[[24,[\\\"text\\\"]],[24,[\\\"flagFilter\\\"]]]]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentFlags\\\",\\\"isDirty\\\"]]],null,{\\\"statements\\\":[[0,\\\"             \\\"],[7,\\\"div\\\",true],[10,\\\"style\\\",\\\"background-color: #b8e369; padding: 10px\\\"],[8],[0,\\\" \\\"],[7,\\\"p\\\",true],[10,\\\"style\\\",\\\"color:purple;font-family: 'Comic Sans MS'\\\"],[8],[0,\\\"Dude, you've like totally overriden some flags.\\\"],[9],[0,\\\"\\\\n                 \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"action\\\",[[23,0,[]],\\\"resetFlags\\\"],null]]],[8],[0,\\\"Reset flags to default\\\"],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n           \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-striped\\\"],[8],[0,\\\"\\\\n               \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n               \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                   \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Flag\\\"],[9],[0,\\\"\\\\n                   \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Value\\\"],[9],[0,\\\"\\\\n               \\\"],[9],[0,\\\"\\\\n               \\\"],[9],[0,\\\"\\\\n               \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"currentFlags\\\",\\\"allFlags\\\"]]],null,{\\\"statements\\\":[[0,\\\"                   \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                       \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"key\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"if\\\",[[23,1,[\\\"isOverriden\\\"]],\\\" - OVERRIDEN\\\"],null],false],[9],[0,\\\"\\\\n                       \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                           \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@class\\\",\\\"@value\\\",\\\"@size\\\",\\\"@theme\\\",\\\"@onToggle\\\"],[\\\"hideEmptyOnesButton\\\",[23,1,[\\\"value\\\"]],\\\"large\\\",\\\"light\\\",[28,\\\"action\\\",[[23,0,[]],\\\"overrideFlag\\\",[23,1,[]]],null]]]],[0,\\\"\\\\n                       \\\"],[9],[0,\\\"\\\\n\\\\n                   \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"               \\\"],[9],[0,\\\"\\\\n           \\\"],[9],[0,\\\"\\\\n       \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/index/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { computed, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { Promise as EmberPromise } from 'rsvp';\n\nconst DevelopmentIntegrationsController = Controller.extend({\n    Collector: service('collector-service'),\n    store: service(),\n    dialogs: service(),\n    intl: service(),\n\n    saving: false,\n    content: alias('model'),\n    export_salary_on: computed('session.currentUser', function () {\n        return this.Collector.testNeeds(['products.export_salary']);\n    }),\n\n    export_absence_on: computed('session.currentUser', function () {\n        return this.Collector.testNeeds(['products.export_absence']);\n    }),\n\n    export_salary_integrations: computed('model.[]', function () {\n        return this.model.filter((item) => item.type === 'export_salary');\n    }),\n\n    export_absence_integrations: computed('model.[]', function () {\n        return this.model.filter((item) => item.type === 'export_absence');\n    }),\n\n    actions: {\n        turn_export_salary(onoff) {\n            return this.turn('export_salary', onoff);\n        },\n\n        turn_export_absence(onoff) {\n            return this.turn('export_absence', onoff);\n        },\n\n        add_new_integration(type) {\n            return this.store.createRecord('integration', { type });\n        },\n\n        async save_integrations() {\n            set(this, 'saving', true);\n            const promises = [];\n            this.model\n                .filter((record) => record.hasDirtyAttributes)\n                .forEach((record) => promises.push(record.save()));\n\n            await EmberPromise.all(promises);\n\n            return set(this, 'saving', false);\n        },\n\n        async delete(row) {\n            const con = await this.dialogs.confirm(this.intl.t('report.confirm_delete'));\n            if (con) {\n                return row.destroyRecord();\n            }\n        },\n    },\n\n    turn(product, onoff) {\n        let promise;\n        console.log('turning ' + product, onoff); // eslint-disable-line\n\n        if (onoff === 'on') {\n            promise = this.Collector.addProduct(product);\n        } else {\n            promise = this.Collector.removeProduct(product);\n        }\n\n        return promise.then(() => window.location.reload());\n    },\n});\n\nexport default DevelopmentIntegrationsController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\n\nconst DevelopmentIntegrationsRoute = Route.extend({\n    collectorService: service(),\n\n    model() {\n        if (this.collectorService.testNeeds(['integration'])) {\n            return this.store.findAll('integration');\n        }\n    },\n});\n\nexport default DevelopmentIntegrationsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"d7SsX1Zg\",\"block\":\"{\\\"symbols\\\":[\\\"integration\\\",\\\"integration\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[0,\\\"Export salary\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"export_salary_on\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"turn_export_salary\\\",\\\"off\\\"]],[8],[0,\\\"Turn off\\\"],[9],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n            Integrations:\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"export_salary_integrations\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-inline\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[0,\\\"Name\\\"],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control\\\",[23,2,[\\\"name\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[0,\\\"Key\\\"],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"email\\\",\\\"form-control\\\",[23,2,[\\\"key\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-action\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"delete\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add_new_integration\\\",\\\"export_salary\\\"]],[8],[0,\\\"Add another\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"turn_export_salary\\\",\\\"on\\\"]],[8],[0,\\\"Turn on\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[0,\\\"Export absence\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"export_absence_on\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"turn_export_absence\\\",\\\"off\\\"]],[8],[0,\\\"Turn off\\\"],[9],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n            Integrations:\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"export_absence_integrations\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-inline\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[0,\\\"Name\\\"],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control\\\",[23,1,[\\\"name\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[0,\\\"Key\\\"],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"email\\\",\\\"form-control\\\",[23,1,[\\\"key\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-action\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"delete\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add_new_integration\\\",\\\"export_absence\\\"]],[8],[0,\\\"Add another\\\"],[9],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"turn_export_absence\\\",\\\"on\\\"]],[8],[0,\\\"Turn on\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save_integrations\\\"]],[8],[0,\\\"Save\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/integrations/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    ttapi: service(),\n    store: service(),\n    intl: service(),\n    tagName: 'table',\n\n    cleanLogs: computed(async function () {\n        let logs = await this.getLogsFromTtapi();\n        if (!logs) return [];\n        let arr = [];\n        logs.forEach(async (log) => {\n            let user = await this.store.findRecord('user', log.userid);\n            arr.pushObject({\n                datetime: moment(log.datetime).format('DD.MM.YYYY HH:mm:ss'),\n                user: user.lastname + ' ' + user.firstname,\n                message: log.message,\n                channel: log.channel\n                    .split(',')\n                    .map((ch) => this.intl.t('general.log_channel.' + ch))\n                    .join(','),\n            });\n        });\n        return arr;\n    }),\n\n    async getLogsFromTtapi() {\n        return await this.ttapi.request('/notification/logs');\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"gtmc4yKv\",\"block\":\"{\\\"symbols\\\":[\\\"notificationLogs\\\",\\\"notificationLog\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.datetime\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.user\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.message\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.channel\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"await\\\",[[24,[\\\"cleanLogs\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"datetime\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"user\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"message\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"channel\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"     \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"no-rows-cell\\\"],[10,\\\"colspan\\\",\\\"4\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.no_logrows_found\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/notifications/log-table/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"5XkdzzOz\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"development/notifications/log-table\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/notifications/template.hbs\"}});","import Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nconst DevelopmentOwnreportsController = Controller.extend({\n    Collector: service('collector-service'),\n    content: alias('model'),\n\n    actions: {\n        saveReport(report) {\n            return this.Collector.ttapi({\n                url: report.id ? 'defaultReports/' + report.id : 'defaultReports',\n                method: report.id ? 'PUT' : 'POST',\n                data: report,\n                success(data) {\n                    return (report.id = data.id);\n                },\n            });\n        },\n        removeReport(report) {\n            return this.Collector.ttapi({\n                url: 'defaultReports/' + report.id,\n                method: 'DELETE',\n            });\n        },\n\n        addNewReport() {\n            return this.model.pushObject({ name: '', settings: { key: '', type: 'cc' } });\n        },\n    },\n});\n\nexport default DevelopmentOwnreportsController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\n\nconst DevelopmentOwnreportsRoute = Route.extend({\n    Collector: service('collector-service'),\n    model() {\n        const c = this.Collector;\n        return c.ttapi({\n            url: 'defaultReports',\n        });\n    },\n});\n\nexport default DevelopmentOwnreportsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"aQG4XCI7\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\"],\\\"statements\\\":[[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Name\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Key\\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,1,[\\\"name\\\"]],\\\"form-control\\\"]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,1,[\\\"settings\\\",\\\"key\\\"]],\\\"form-control\\\"]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveReport\\\",[23,1,[]]]],[8],[0,\\\"Save\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeReport\\\",[23,1,[]]]],[8],[0,\\\"Remove\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addNewReport\\\"]],[8],[0,\\\"Add report\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/ownreports/template.hbs\"}});","/* eslint-disable ember/no-observers */\nimport Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport { computed, observer, set, get } from '@ember/object';\n\nconst DevelopmentOwnrolesController = Controller.extend({\n    dialogs: service(),\n    _refreshNeeded: false,\n    content: alias('model'),\n    userlevel_record: computed('model', function () {\n        const form = this.model.findBy('external_type', 'user');\n        return this.store\n            .peekAll('form-field')\n            .find((item) => item.external_type === 'userlevel' && get(item, 'form.id') === form.id);\n    }),\n\n    dropdown_options: computed('field', function () {\n        const own_roles = this.userlevel_record.options.split('\\n').filter(function (item) {\n            const splitted = item.split(';');\n            return parseInt(splitted[0], 10) >= 10;\n        });\n        return own_roles.map(function (item) {\n            const splitted = item.split(';');\n            return { id: splitted[0], name: splitted[1] };\n        });\n    }),\n\n    selected_role: computed('role', function () {\n        const role = this.role;\n\n        if (!role) {\n            return;\n        }\n\n        const role_obj = this.dropdown_options.findBy('id', role);\n\n        return role + ' - ' + role_obj.name;\n    }),\n\n    form: observer('role', function () {\n        if (this.role === undefined) {\n            return;\n        }\n        if (this.role === 'null') {\n            return this.transitionToRoute('development.ownroles');\n        }\n        return this.transitionToRoute('development.ownroles.role', this.role);\n    }),\n\n    actions: {\n        async addOwnRole() {\n            const name = await this.dialogs.prompt('Name for new role');\n            if (!name) {\n                return;\n            }\n            const record = this.userlevel_record;\n            set(record, 'options', record.options + '\\n' + this.nextUserLevel() + ';' + name);\n            this.notifyPropertyChange('dropdown_options');\n            record.save();\n            return set(this, '_refreshNeeded', true);\n        },\n\n        async renameRole() {\n            const role = this.role;\n            const name = await this.dialogs.prompt('New name for role');\n            if (!name) {\n                return;\n            }\n            const record = this.userlevel_record;\n            let options = record.options.split('\\n');\n            options = options.map(function (item) {\n                const splitted = item.split(';');\n                if (splitted[0] !== role) {\n                    return item;\n                }\n                return splitted[0] + ';' + name;\n            });\n\n            set(record, 'options', options.join('\\n'));\n\n            this.notifyPropertyChange('dropdown_options');\n            this.notifyPropertyChange('selected_role');\n            record.save();\n            return set(this, '_refreshNeeded', true);\n        },\n\n        async removeRole() {\n            const role = this.role;\n            const val = await this.dialogs.confirm(\"Do you really wan't to remove this user role?\");\n            if (!val) {\n                return;\n            }\n            const record = this.userlevel_record;\n            let options = record.options.split('\\n');\n            options = options.filter(function (item) {\n                const splitted = item.split(';');\n                if (splitted[0] !== role) {\n                    return true;\n                }\n            });\n\n            set(record, 'options', options.join('\\n'));\n\n            set(this, 'role', null);\n            this.notifyPropertyChange('dropdown_options');\n            this.notifyPropertyChange('selected_role');\n            this.transitionToRoute('development.ownroles');\n            record.save();\n            return set(this, '_refreshNeeded', true);\n        },\n    },\n    nextUserLevel() {\n        let max = 9;\n        this.userlevel_record.options.split('\\n').forEach(function (item) {\n            const num = parseInt(item.split(';')[0], 10);\n            if (num > max) {\n                return (max = num);\n            }\n        });\n        return max + 1;\n    },\n});\n\nexport default DevelopmentOwnrolesController;\n","import Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport { isArray } from '@ember/array';\nimport { isPresent } from '@ember/utils';\nimport { computed, get } from '@ember/object';\n\nconst DevelopmentOwnrolesRoleController = Controller.extend({\n    Collector: service('collector-service'),\n    init() {\n        this._super(...arguments);\n        this.hideDenyAccess = [\n            'wage_period',\n            'salarytype',\n            'holidaypay',\n            'bank',\n            'bankdeducter',\n            'holiday',\n            'saldodeducter',\n            'rounding_rule_v2',\n        ];\n        this.privilegeTypes = {\n            deny_access: {\n                type: 'form-setting',\n                setting: 'access_denied',\n            },\n            deny_add: {\n                type: 'form-setting',\n                setting: 'hide_addrow',\n            },\n            deny_edit: {\n                type: 'form-setting',\n                setting: 'hide_edit',\n            },\n            deny_remove: {\n                type: 'form-setting',\n                setting: 'hide_remove',\n            },\n            deny_approving: {\n                type: 'form-field-setting',\n                field: 'status',\n                settings: [{ name: 'readonly', value: 'true' }],\n            },\n            ownrows: {\n                type: 'form-field-setting',\n                link_to: 'user',\n                settings: [\n                    { name: 'filter', value: '$userProfile->primary_key' },\n                    { name: 'set', value: '$userProfile->primary_key' },\n                ],\n            },\n            ownrows_user: {\n                type: 'form-field-setting',\n                field: 'username',\n                settings: [{ name: 'filter', value: '$userProfile->username' }],\n            },\n            load_profile: {\n                type: 'form-setting',\n                setting: 'load_profile',\n                value: '1',\n            },\n        };\n    },\n\n    content: alias('model'),\n    forms: computed(function () {\n        return this.store.peekAll('form').filter((form) => {\n            return this.Collector.formExists(form.external_type);\n        });\n    }),\n\n    formSettingsForRole: computed('model.{formSettings.[],role}', function () {\n        const id = this.model.role;\n        return this.model.formSettings.filter((item) => item.userlevel === id);\n    }),\n\n    formFieldSettingsForRole: computed('model.{formFieldSettings.[],role}', function () {\n        const id = this.model.role;\n        return this.model.formFieldSettings.filter((item) => item.userlevel === id);\n    }),\n\n    privilegeArray: computed('forms', 'model', function () {\n        const forms = this.forms;\n\n        const arr = {};\n\n        forms.forEach((item) => {\n            const form = item.external_type;\n            return (arr[form] = {\n                deny_access: this.isPrivilegeOn(form, 'deny_access'),\n                load_profile: this.isPrivilegeOn(form, 'load_profile'),\n                ownrows:\n                    form === 'user'\n                        ? this.isPrivilegeOn(form, 'ownrows_user')\n                        : this.isPrivilegeOn(form, 'ownrows'),\n                deny_add: this.isPrivilegeOn(form, 'deny_add'),\n                deny_edit: this.isPrivilegeOn(form, 'deny_edit'),\n                deny_remove: this.isPrivilegeOn(form, 'deny_remove'),\n                deny_approving: this.isPrivilegeOn(form, 'deny_approving'),\n            });\n        });\n        return arr;\n    }),\n\n    actions: {\n        toggle(form, type) {\n            if (this.isPrivilegeOn(form, type)) {\n                return this.setPrivilege(form, type, false);\n            } else {\n                return this.setPrivilege(form, type, true);\n            }\n        },\n    },\n    isPrivilegeOn(form, type) {\n        let privilege = this.privilegeTypes[type];\n\n        if (isArray(privilege)) {\n            privilege = privilege[0];\n        }\n\n        if (privilege && privilege.type === 'form-setting') {\n            return this.isFormPrivilegeOn(form, privilege.setting);\n        } else if (privilege && privilege.type === 'form-field-setting') {\n            if (isPresent(privilege.link_to)) {\n                const possible_fields = this.Collector.fieldArray(form).filterBy(\n                    'options.form',\n                    privilege.link_to,\n                );\n                if (possible_fields.length > 0) {\n                    return this.isFormFieldSettingOn(\n                        form,\n                        possible_fields[0].name,\n                        privilege.settings,\n                    );\n                }\n            } else {\n                return this.isFormFieldSettingOn(form, privilege.field, privilege.settings);\n            }\n        } else {\n            return console.error('unknown privilege type ' + type); // eslint-disable-line\n        }\n    },\n\n    isFormFieldSettingOn(form, field, settings) {\n        const field_settings = this.formFieldSettingsForRole.filter(\n            (record) =>\n                get(record, 'field.form.external_type') === form &&\n                get(record, 'field.external_type') === field,\n        );\n\n        let count = 0;\n        settings.forEach((setting) => {\n            if (field_settings.findBy('name', setting.name)) {\n                return count++;\n            }\n        });\n\n        if (count === 0) {\n            return false;\n        } else if (count === settings.length) {\n            return true;\n        } else {\n            console.error(JSON.stringify(settings) + ' has different states'); // eslint-disable-line\n            return true;\n        }\n    },\n\n    isFormPrivilegeOn(form, settingName) {\n        const form_settings = this.formSettingsForRole.filter(\n            (record) => get(record, 'form.external_type') === form,\n        );\n\n        if (form_settings.findBy('name', settingName)) {\n            return true;\n        } else {\n            return false;\n        }\n    },\n\n    // support for arrays\n    setPrivilege(form, type, onoff) {\n        const privilege = this.privilegeTypes[type];\n\n        if (isArray(privilege)) {\n            return privilege.forEach((item) => {\n                return this._setPrivilege(form, type, onoff, item);\n            });\n        } else {\n            return this._setPrivilege(form, type, onoff, privilege);\n        }\n    },\n\n    _setPrivilege(form, type, onoff, privilege) {\n        if (privilege && privilege.type === 'form-setting') {\n            const value = privilege.value ? privilege.value : 'true';\n            return this.setFormPrivilege(form, privilege.setting, value, onoff);\n        } else if (privilege && privilege.type === 'form-field-setting') {\n            if (isPresent(privilege.link_to)) {\n                const possible_fields = this.Collector.fieldArray(form).filterBy(\n                    'options.form',\n                    privilege.link_to,\n                );\n                if (possible_fields.length > 1 || possible_fields.length === 0) {\n                    alert(\n                        'Could not find suitable field for setting, found ' +\n                            possible_fields.length +\n                            ' fields',\n                    );\n                    return;\n                }\n\n                return this.setFormFieldSettings(\n                    form,\n                    possible_fields[0].name,\n                    privilege.settings,\n                    onoff,\n                );\n            } else {\n                return this.setFormFieldSettings(form, privilege.field, privilege.settings, onoff);\n            }\n        } else {\n            return console.error('unknown privilege type ' + type); // eslint-disable-line\n        }\n    },\n\n    setFormFieldSettings(form, field, settings, onoff) {\n        const field_record = this.store\n            .peekAll('form-field')\n            .find(\n                (item) => item.external_type === field && get(item, 'form.external_type') === form,\n            );\n\n        if (!field_record) {\n            alert('this privilege cannot be used with form ' + form);\n            return;\n        }\n\n        const field_settings = this.formFieldSettingsForRole.filter(\n            (record) =>\n                get(record, 'field.form.external_type') === form &&\n                get(record, 'field.external_type') === field,\n        );\n\n        if (onoff) {\n            return settings.forEach((setting) => {\n                return this.store\n                    .createRecord('form-field-setting', {\n                        name: setting.name,\n                        value: setting.value,\n                        userlevel: this.model.role,\n                        field: field_record,\n                    })\n                    .save();\n            });\n        } else {\n            return settings.forEach((setting) => {\n                return field_settings.findBy('name', setting.name).destroyRecord();\n            });\n        }\n    },\n\n    setFormPrivilege(form, settingName, value, onoff) {\n        const form_record = this.store.peekAll('form').findBy('external_type', form);\n\n        const form_settings = this.formSettingsForRole.filter(\n            (record) => get(record, 'form.external_type') === form,\n        );\n\n        if (onoff) {\n            return this.store\n                .createRecord('form-setting', {\n                    name: settingName,\n                    value,\n                    userlevel: this.model.role,\n                    form: form_record,\n                })\n                .save();\n        } else {\n            return form_settings.findBy('name', settingName).destroyRecord();\n        }\n    },\n});\n\nexport default DevelopmentOwnrolesRoleController;\n","import Route from '@ember/routing/route';\nimport { hash } from 'rsvp';\n\nconst DevelopmentOwnrolesRoleRoute = Route.extend({\n    model(params) {\n        return hash({\n            formSettings: this.store.peekAll('form-setting'),\n            formFieldSettings: this.store.peekAll('form-field-setting'),\n            role: params.id,\n        });\n    },\n});\n\nexport default DevelopmentOwnrolesRoleRoute;\n","export default Ember.HTMLBars.template({\"id\":\"mqwV+Ha1\",\"block\":\"{\\\"symbols\\\":[\\\"form\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"forms\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"th\\\",true],[8],[1,[23,1,[\\\"external_type\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"and\\\",[[28,\\\"not\\\",[[28,\\\"get\\\",[[28,\\\"get\\\",[[24,[\\\"privilegeArray\\\"]],[23,1,[\\\"external_type\\\"]]],null],\\\"deny_access\\\"],null]],null],[28,\\\"or\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"external_type\\\"]],\\\"user\\\"],null],[28,\\\"is-equal\\\",[[23,1,[\\\"external_type\\\"]],\\\"project\\\"],null]],null]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,1,[\\\"external_type\\\"]],[23,0,[\\\"hideDenyAccess\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"input\\\",true],[11,\\\"checked\\\",[28,\\\"get\\\",[[28,\\\"get\\\",[[24,[\\\"privilegeArray\\\"]],[23,1,[\\\"external_type\\\"]]],null],\\\"deny_access\\\"],null]],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,1,[\\\"external_type\\\"]],\\\"deny_access\\\"],null]],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\"Deny access\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[8],[7,\\\"input\\\",true],[11,\\\"checked\\\",[28,\\\"get\\\",[[28,\\\"get\\\",[[24,[\\\"privilegeArray\\\"]],[23,1,[\\\"external_type\\\"]]],null],\\\"load_profile\\\"],null]],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,1,[\\\"external_type\\\"]],\\\"load_profile\\\"],null]],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\"Use same settings as for userlevel 1\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[8],[7,\\\"input\\\",true],[11,\\\"checked\\\",[28,\\\"get\\\",[[28,\\\"get\\\",[[24,[\\\"privilegeArray\\\"]],[23,1,[\\\"external_type\\\"]]],null],\\\"ownrows\\\"],null]],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,1,[\\\"external_type\\\"]],[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"external_type\\\"]],\\\"user\\\"],null],\\\"ownrows_user\\\",\\\"ownrows\\\"],null]],null]],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\"Show only own rows\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[8],[7,\\\"input\\\",true],[11,\\\"checked\\\",[28,\\\"get\\\",[[28,\\\"get\\\",[[24,[\\\"privilegeArray\\\"]],[23,1,[\\\"external_type\\\"]]],null],\\\"deny_approving\\\"],null]],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,1,[\\\"external_type\\\"]],\\\"deny_approving\\\"],null]],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\"Deny approving\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[8],[7,\\\"input\\\",true],[11,\\\"checked\\\",[28,\\\"get\\\",[[28,\\\"get\\\",[[24,[\\\"privilegeArray\\\"]],[23,1,[\\\"external_type\\\"]]],null],\\\"deny_add\\\"],null]],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,1,[\\\"external_type\\\"]],\\\"deny_add\\\"],null]],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\"Deny add\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[8],[7,\\\"input\\\",true],[11,\\\"checked\\\",[28,\\\"get\\\",[[28,\\\"get\\\",[[24,[\\\"privilegeArray\\\"]],[23,1,[\\\"external_type\\\"]]],null],\\\"deny_edit\\\"],null]],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,1,[\\\"external_type\\\"]],\\\"deny_edit\\\"],null]],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\"Deny edit\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[8],[7,\\\"input\\\",true],[11,\\\"checked\\\",[28,\\\"get\\\",[[28,\\\"get\\\",[[24,[\\\"privilegeArray\\\"]],[23,1,[\\\"external_type\\\"]]],null],\\\"deny_remove\\\"],null]],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,1,[\\\"external_type\\\"]],\\\"deny_remove\\\"],null]],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\"Deny remove\\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/ownroles/role/template.hbs\"}});","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\n\nconst DevelopmentOwnrolesRoute = Route.extend({\n    dialogs: service(),\n    intl: service(),\n\n    beforeModel() {\n        return this.transitionTo('development.ownroles');\n    },\n\n    model() {\n        return this.store.findAll('form');\n    },\n\n    actions: {\n        willTransition(transition) {\n            if (transition.targetName.substring(0, 11) !== 'development') {\n                return transition.then(() => {\n                    if (this.controller._refreshNeeded) {\n                        return this.dialogs\n                            .alert(this.intl.t('general.settings_refresh_needed'))\n                            .then(() => location.reload());\n                    }\n                });\n            }\n        },\n    },\n});\n\nexport default DevelopmentOwnrolesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"0TLwNf3n\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[24,[\\\"dropdown_options\\\"]],[24,[\\\"role\\\"]],\\\"Select role...\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addOwnRole\\\"]],[8],[0,\\\"Add own role\\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selected_role\\\"]]],null,{\\\"statements\\\":[[0,\\\"Selected role: \\\"],[7,\\\"h2\\\",true],[8],[1,[22,\\\"selected_role\\\"],false],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeRole\\\"]],[8],[0,\\\"Remove\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"renameRole\\\"]],[8],[0,\\\"Rename\\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/ownroles/template.hbs\"}});","import Controller from '@ember/controller';\nimport { computed, set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nconst DevelopmentIndexController = Controller.extend({\n    content: alias('model'),\n    products: computed('model', function () {\n        return this.model.forms.updater.products;\n    }),\n\n    error: computed('model', function () {\n        return this.model.forms.updater.error;\n    }),\n\n    actions: {\n        async addproduct() {\n            set(this, 'loading', true);\n            const productname = this.addproductname;\n\n            if (!productname || productname === 'Choose') {\n                alert('Product must have some name');\n                return;\n            }\n\n            set(this, 'addproductname', '');\n            await this.Collector.addProduct(productname);\n\n            return this.send('reloadModel');\n        },\n\n        async removeproduct(productname) {\n            await this.Collector.removeProduct(productname);\n            return this.send('reloadModel');\n        },\n\n        selectProduct(product) {\n            return set(this, 'addproductname', product);\n        },\n    },\n});\nexport default DevelopmentIndexController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { hash } from 'rsvp';\nimport { get } from '@ember/object';\n\nexport default Route.extend({\n    Collector: service('collector-service'),\n    session: service(),\n    store: service(),\n    initapp: service(),\n    model() {\n        return hash({\n            forms: get(this, 'Collector').ajax({\n                url: 'forms',\n                headers: {\n                    Authorization: `Bearer ${get(this, 'session.session.authenticated.access_token')}`,\n                },\n            }),\n            products: get(this, 'Collector').ajax({\n                url: 'service/productList',\n                headers: {\n                    Authorization: `Bearer ${get(this, 'session.session.authenticated.access_token')}`,\n                },\n            }),\n        });\n    },\n\n    actions: {\n        reloadModel() {\n            get(this, 'initapp').clearInit();\n            return this.refresh();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"tKmImzjh\",\"block\":\"{\\\"symbols\\\":[\\\"product\\\",\\\"product\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[1,[22,\\\"error\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Name\\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"products\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger btn-small\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeproduct\\\",[23,2,[]]]],[8],[0,\\\"remove\\\"],[9],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[7,\\\"p\\\",true],[8],[0,\\\"Add new Product:\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"selectProduct\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[10,\\\"class\\\",\\\"form-control add-fields\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"option\\\",true],[8],[0,\\\"Choose\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"products\\\",\\\"products\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"option\\\",true],[11,\\\"id\\\",[23,1,[]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[]],[24,[\\\"addproductname\\\"]]],null]],[8],[1,[23,1,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addproduct\\\"]],[8],[0,\\\"Add\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/products/template.hbs\"}});","import Route from '@ember/routing/route';\n\nconst DevelopmentCronRoute = Route.extend();\n\nexport default DevelopmentCronRoute;\n","export default Ember.HTMLBars.template({\"id\":\"xPV50evp\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"react\\\",[],[[\\\"@comp\\\"],[\\\"ResourceView\\\"]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/react/template.hbs\"}});","import Controller from '@ember/controller';\n// import { Promise as EmberPromise } from 'rsvp';\n// import PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\n// import ObjectProxy from '@ember/object/proxy';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport { isPresent } from '@ember/utils';\n\nexport default Controller.extend({\n    ttapi: service(),\n    store: service(),\n    // eslint-disable-next-line ember/avoid-leaking-state-in-ember-objects\n    eventCodesValue: [\n        { key: 100, name: 'NFC key denied' },\n        { key: 111, name: 'NFC key has expired' },\n        { key: 205, name: 'Key not found' },\n        { key: 204, name: 'Open authorized' },\n    ],\n    // eslint-disable-next-line ember/avoid-leaking-state-in-ember-objects\n    eventCodeOptions: [\n        { key: 100, name: 'NFC key denied' },\n        { key: 101, name: 'NFC key accepted' },\n        { key: 102, name: 'Programming started with programming NFC key' },\n        { key: 103, name: 'Programming ended with programming NFC key' },\n        {\n            key: 104,\n            name: 'Removal of all accepted keys from lock started with programming NFC key',\n        },\n        { key: 105, name: 'All accepted keys removed from lock with programming NFC key' },\n        { key: 106, name: \"NFC key added to lock's accepted keys\" },\n        { key: 107, name: \"NFC key removed from lock's accepted keys\" },\n        { key: 108, name: 'Removal of all accepted keys pending' },\n        { key: 109, name: 'NFC key error' },\n        { key: 111, name: 'NFC key has expired' },\n        { key: 200, name: 'Broken key' },\n        { key: 201, name: 'Duplicate key' },\n        { key: 202, name: 'Revoked key removed' },\n        { key: 203, name: 'One-time key used' },\n        { key: 204, name: 'Open authorized' },\n        { key: 205, name: 'Key not found' },\n        { key: 206, name: 'Master key authorized' },\n        { key: 207, name: 'No capability' },\n        { key: 208, name: 'Key mass erase started' },\n        { key: 209, name: 'Key mass erase completed' },\n        { key: 210, name: 'Key expired' },\n        { key: 211, name: 'Key not yet valid' },\n        { key: 212, name: 'Open denied' },\n        { key: 213, name: 'Out of memory' },\n        { key: 300, name: 'Wireless power enabled' },\n        { key: 301, name: 'Wireless power disabled' },\n        { key: 302, name: 'Door opened' },\n        { key: 303, name: 'Door closed' },\n        { key: 500, name: 'Network connected' },\n        { key: 501, name: 'Telemetry enabled' },\n        { key: 502, name: 'Topic subscribed' },\n        { key: 503, name: 'Topic subscription failed' },\n        { key: 504, name: 'Network error' },\n        { key: 505, name: 'Telemetry disabled' },\n        { key: 506, name: 'Unknown message received' },\n        { key: 507, name: 'Message received' },\n        { key: 508, name: 'Message sent' },\n        { key: 509, name: 'Invalid message received' },\n        { key: 510, name: 'Secure communication link established' },\n        { key: 511, name: 'Secure communication link failed' },\n        { key: 512, name: 'Time updated' },\n        { key: 513, name: 'Telemetry message failed' },\n        { key: 514, name: 'Firmware update available' },\n        { key: 515, name: 'Firmware update in progress' },\n        { key: 516, name: 'Firmware update completed' },\n        { key: 517, name: 'Firmware update failed' },\n        { key: 518, name: 'Remote open accepted' },\n        { key: 519, name: 'Key handled' },\n        { key: 520, name: 'Remote command received' },\n        { key: 521, name: 'Remote command replied' },\n        { key: 522, name: 'Remote open confirmed' },\n        { key: 523, name: 'Remote open failed' },\n        { key: 600, name: 'Message sent to cloud' },\n        { key: 601, name: 'Message received from cloud' },\n        { key: 602, name: 'Message sent to cloud' },\n        { key: 603, name: 'Message received from cloud' },\n        { key: 604, name: 'Message sent to cloud' },\n        { key: 605, name: 'Message received from cloud' },\n        { key: 606, name: 'Message sent to cloud' },\n        { key: 607, name: 'Message received from cloud' },\n        { key: 608, name: 'Message sent to cloud' },\n        { key: 609, name: 'Message received from cloud' },\n        { key: 610, name: 'Message sent to cloud' },\n        { key: 611, name: 'Message received from cloud' },\n        { key: 612, name: 'Message sent to cloud' },\n        { key: 613, name: 'Message received from cloud' },\n        { key: 614, name: 'Message sent to cloud' },\n        { key: 615, name: 'Message received from cloud' },\n        { key: 616, name: 'Message sent to cloud' },\n        { key: 617, name: 'Message received from cloud' },\n        { key: 618, name: 'Message sent to cloud' },\n        { key: 619, name: 'Message received from cloud' },\n        { key: 620, name: 'Message received from cloud' },\n        { key: 621, name: 'Message received from cloud' },\n        { key: 800, name: 'Firmware update requested' },\n        { key: 900, name: 'Locked idle mode enabled' },\n        { key: 901, name: 'Master mode enabled' },\n        { key: 902, name: 'Idle day mode enabled' },\n        { key: 903, name: 'Unlocked mode enabled' },\n        { key: 904, name: 'Master mode disabled' },\n        { key: 1100, name: 'Firmware update forced manually' },\n        { key: 1200, name: 'Device reboot' },\n        { key: 1201, name: 'Device ready' },\n        { key: 1202, name: 'Forced device reboot' },\n        { key: 1300, name: 'Door firmware update started' },\n        { key: 1301, name: 'Door firmware update completed' },\n        { key: 1302, name: 'Door open sequence sent' },\n        { key: 1303, name: 'Door communication fault' },\n        { key: 1304, name: 'Door communication fault' },\n        { key: 1305, name: 'Door communication fault' },\n        { key: 1306, name: 'Door communication fault' },\n        { key: 1307, name: 'Door communication fault' },\n        { key: 1308, name: 'Door communication fault' },\n        { key: 1309, name: 'Door communication fault' },\n        { key: 1310, name: 'Bolt idle' },\n        { key: 1311, name: 'Bolt micro switch fault' },\n        { key: 1312, name: 'Door open sequence completed' },\n        { key: 1313, name: 'Waiting door open retry' },\n        { key: 1314, name: 'Door open failed' },\n        { key: 1400, name: 'Bluetooth boot completed' },\n        { key: 1401, name: 'Bluetooth connected' },\n        { key: 1402, name: 'Bluetooth disconnected' },\n        { key: 1403, name: 'eKey accepted' },\n        { key: 1404, name: 'eKey denied' },\n        { key: 1405, name: 'eKey not yet valid' },\n        { key: 1406, name: 'eKey has expired' },\n        { key: 1407, name: 'One-time eKey used' },\n        { key: 1408, name: 'Bluetooth data received' },\n        { key: 1409, name: 'Bluetooth data requested' },\n        { key: 1410, name: 'Bluetooth response sent' },\n        { key: 1411, name: 'Bluetooth boot failed' },\n        { key: 1500, name: 'Door locked' },\n        { key: 1501, name: 'Door closed in day mode' },\n        { key: 1502, name: 'Handle turned in day mode' },\n        { key: 1503, name: 'Handle released in day mode' },\n        { key: 1504, name: 'Door opened in day mode' },\n        { key: 1505, name: 'Inside handle turned while door locked' },\n        { key: 1506, name: 'Inside handle released while door locked' },\n        { key: 1507, name: 'Locked door opened from inside' },\n        { key: 1508, name: 'Unlocking door' },\n        { key: 1509, name: 'Door unlocked' },\n        { key: 1510, name: 'Door unlocking failed' },\n        { key: 1511, name: 'Unlocked door opened' },\n        { key: 1512, name: 'Unlocked door not opened' },\n        { key: 1513, name: 'Locked door opened' },\n        { key: 1514, name: 'Door left open' },\n        { key: 1515, name: 'Door closed' },\n        { key: 1516, name: 'Operational state response sent' },\n        { key: 1517, name: 'Door locking failed' },\n        { key: 50002, name: 'Remote open request sent' },\n        { key: 50003, name: 'Remote open request attempt without permission' },\n        { key: 50004, name: 'Remote command sent' },\n        { key: 50005, name: 'Remote boot request sent' },\n        { key: 50006, name: 'Remote boot request attempt without permission' },\n        { key: 50007, name: 'Operational state request sent' },\n        { key: 50008, name: 'Operational state request attempt without permission' },\n    ],\n    // eslint-disable-next-line ember/avoid-leaking-state-in-ember-objects\n    columns: [\n        { name: 'Timestamp', valuePath: 'eventTimestamp', width: 200 },\n        { name: 'Lock serial', valuePath: 'lockSerial', width: 200 },\n        { name: 'Tag UUID', valuePath: 'reference', width: 200 },\n        { name: 'Event Code', valuePath: 'eventCode', width: 200 },\n        { name: 'message', valuePath: 'message', width: 200 },\n        { name: 'Log timestamp', valuePath: 'logTimestamp', width: 200 },\n    ],\n    notinuse: alias('model'),\n\n    filters: computed('startFilter', 'endFilter', 'serials', 'eventCodesValue.[]', function () {\n        let filters = new Object();\n        filters.send = false;\n        if (get(this, 'eventCodesValue'))\n            filters.eventCodes = get(this, 'eventCodesValue').mapBy('key');\n        if (get(this, 'serials')) {\n            filters.serials = get(this, 'serials');\n        }\n        if (get(this, 'startFilter')) {\n            filters.from = get(this, 'startFilter.target.value') + ':00';\n        }\n        if (get(this, 'endFilter')) {\n            filters.to = get(this, 'endFilter.target.value') + ':00';\n        }\n\n        return filters;\n    }),\n\n    logs: computed('filters', async function () {\n        let url = 'api/rollockEvents';\n        let filters = get(this, 'filters');\n        if (!filters.from || !filters.to || !filters.serials) return;\n        if (filters) {\n            for (const key in filters) {\n                if (key == Object.keys(filters)[0]) {\n                    url += '?' + key + '=' + filters[key];\n                } else {\n                    url += '&' + key + '=' + filters[key];\n                }\n            }\n        }\n\n        return await get(this, 'ttapi')._get(url);\n    }),\n    filteredLogs: computed('tagFilter', 'logs', async function () {\n        if (isPresent(get(this, 'tagFilter.target.value'))) {\n            return (await get(this, 'logs'))\n                .filterBy('reference', get(this, 'tagFilter.target.value'))\n                .reverse();\n        }\n        return (await get(this, 'logs')).reverse();\n    }),\n    actions: {\n        async selectProject(value) {\n            const rollocks = await get(this, 'store').query('rollock', {\n                project: get(value, 'id'),\n            });\n            set(this, 'serials', rollocks.mapBy('serialnumber').join(','));\n        },\n    },\n});\n","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    tagName: '',\n    name: computed('eventCodeOptions', 'eventCode', function () {\n        return get(this, 'eventCodeOptions').findBy('key', get(this, 'eventCode')).name;\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"yM1/7nGi\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"name\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/rollock/event-name/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"kYcXLzHR\",\"block\":\"{\\\"symbols\\\":[\\\"table\\\",\\\"b\\\",\\\"r\\\",\\\"value\\\",\\\"cell\\\",\\\"head\\\",\\\"r\\\",\\\"columnValue\\\",\\\"option\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[0,\\\"From\\\"],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"change\\\"],[\\\"form-control\\\",\\\"datetime-local\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"startFilter\\\"]]],null]],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[0,\\\"To\\\"],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"change\\\"],[\\\"form-control\\\",\\\"datetime-local\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"endFilter\\\"]]],null]],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[0,\\\"Project\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"presence\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"presence.project\\\"],[[\\\"_class\\\",\\\"change\\\"],[\\\"form-control\\\",\\\"selectProject\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"worktime.project\\\"],[[\\\"_class\\\",\\\"change\\\"],[\\\"form-control\\\",\\\"selectProject\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[0,\\\"NFC tag\\\"],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"placeholder\\\",\\\"keyUp\\\"],[\\\"form-control\\\",\\\"NFC-tag\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"tagFilter\\\"]]],null]],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[0,\\\"Events\\\"],[9],[0,\\\"\\\\n        \\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@dropdownClass\\\",\\\"@tagName\\\",\\\"@searchEnabled\\\",\\\"@selected\\\",\\\"@options\\\",\\\"@searchField\\\",\\\"@onChange\\\"],[\\\"power-select-add-field\\\",\\\"div\\\",true,[23,0,[\\\"eventCodesValue\\\"]],[23,0,[\\\"eventCodeOptions\\\"]],\\\"name\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"eventCodesValue\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[23,9,[\\\"name\\\"]],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[9]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"logs\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"ember-table\\\",[[12,\\\"class\\\",\\\"movenium-table\\\"]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"head\\\"]],[],[[\\\"@columns\\\"],[[23,0,[\\\"columns\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"row\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"et-cell-container\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"th-text-wrapper\\\"],[8],[1,[23,8,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-pending\\\",[[24,[\\\"logs\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,1,[\\\"body\\\"]],[],[[\\\"@staticHeight\\\",\\\"@estimateRowHeight\\\",\\\"@rows\\\"],[true,18,[28,\\\"to-array\\\",[[28,\\\"await\\\",[[24,[\\\"filteredLogs\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,2,[\\\"row\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[6,[23,3,[\\\"cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"valuePath\\\"]],\\\"eventTimestamp\\\"],null],[28,\\\"is-equal\\\",[[23,5,[\\\"valuePath\\\"]],\\\"logTimestamp\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[11,\\\"title\\\",[28,\\\"moment-format\\\",[[23,4,[]],\\\"YYYY-MM-DD hh:mm:ss\\\"],null]],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"moment-format\\\",[[23,4,[]],\\\"LLL\\\"],null],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"valuePath\\\"]],\\\"eventCode\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"code\\\",true],[8],[1,[28,\\\"development/rollock/event-name\\\",null,[[\\\"eventCodeOptions\\\",\\\"eventCode\\\"],[[24,[\\\"eventCodeOptions\\\"]],[23,4,[]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"]],\\\"parameters\\\":[4,5]}],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/rollock/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst DevelopmentRoute = Route.extend(AuthenticatedRouteMixin);\n\nexport default DevelopmentRoute;\n","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\n\nconst DevelopmentServiceValidatorController = Controller.extend({\n    ttapi: service(),\n\n    loading: false,\n    errors: null,\n    success: null,\n\n    init() {\n        this._super(...arguments);\n    },\n\n    content: alias('model'),\n    actions: {\n        async execute() {\n            set(this, 'loading', true);\n            set(this, 'errors', null);\n            set(this, 'success', null);\n\n            try {\n                const response = await this.ttapi.request('api/validateService');\n                set(this, 'loading', false);\n\n                if (response?.errors) {\n                    set(this, 'errors', response.errors);\n                }\n\n                if (response?.success) {\n                    set(this, 'success', response.success);\n                }\n            } catch (error) {\n                set(this, 'loading', false);\n                set(this, 'errors', [error.message]);\n            }\n        },\n    },\n});\n\nexport default DevelopmentServiceValidatorController;\n","import Route from '@ember/routing/route';\n\nconst DevelopmentServiceValidatorRoute = Route.extend();\n\nexport default DevelopmentServiceValidatorRoute;\n","export default Ember.HTMLBars.template({\"id\":\"oDvziNdA\",\"block\":\"{\\\"symbols\\\":[\\\"error\\\"],\\\"statements\\\":[[7,\\\"h2\\\",true],[8],[0,\\\"Service validator\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Notice\\\"],[9],[0,\\\"\\\\n    Service validator only reports issues that have a specific check in TTAPI serviceValidator.\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    Success does not mean that service is necessarily properly configured, it just means that the\\\\n    current checks did not find any issues.\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary my-2\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"execute\\\",[24,[\\\"selectedScript\\\"]]]],[8],[0,\\\"Execute\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"success\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[8],[1,[22,\\\"success\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"Found errors\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Error\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/servicevalidator/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class smslogsTableComponent extends Component {\n    @service ttapi;\n\n    get styleNamespace() {\n        return podNames['development/notifications/log-table'];\n    }\n\n    get logs() {\n        let startdate = this.args.date ? this.args.date.split('_')[0] + ':00:00' : null;\n        let enddate = this.args.date ? this.args.date.split('_')[1] + ':24:00' : null;\n\n        return this.getLogs(startdate, enddate);\n    }\n\n    async getLogs(startdate, enddate) {\n        return this.ttapi.request('/messages/smslogs', {\n            method: 'GET',\n            data: { startdate, enddate },\n        });\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"kk3OKxpg\",\"block\":\"{\\\"symbols\\\":[\\\"logs\\\",\\\"log\\\",\\\"@date\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[23,3,[]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.select_dates_first\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[23,0,[\\\"logs\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"table\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.datetime\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.content\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.partnerid\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.sms_count\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.message_count\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.type\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.userid\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.msisdn\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"await\\\",[[23,0,[\\\"logs\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"datetime\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"content\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"partnerid\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"sms_count\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"message_count\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"type\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"userid\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"msisdn\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"no-rows-cell\\\"],[10,\\\"colspan\\\",\\\"4\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.no_logrows_found\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/smslogs/smslogs-table/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"VO73VDRW\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"date-range-picker\\\",[[12,\\\"class\\\",\\\"pb-4 pt-4\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"date\\\"]]]]],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"development/smslogs/smslogs-table\\\",[],[[\\\"@date\\\"],[[23,0,[\\\"date\\\"]]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/smslogs/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"qsjYe3Bl\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/calendar/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryCalendarController, service;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport filterModel from '../../../mixins/filter-model';\n\n({\n    inject: { service },\n} = Ember);\n\nWorksitediaryCalendarController = GeneralReportController.extend(filterModel, {\n    dialogs: service(),\n    intl: service(),\n    Collector: service('collector-service'),\n    queryParams: ['date', 'project', 'user', 'event'],\n    skip_params: ['page', 'order'],\n    project: null,\n    form: 'diary',\n    user: null,\n    event: false,\n    date:\n        moment().startOf('month').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('month').format('YYYY-MM-DD'),\n    localStorageKey: 'diarycalendar_defaultColumns',\n    // do not use limiting with calender\n    limit: null,\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'user',\n            }),\n        ]);\n    }),\n    filteredEvents: Ember.computed('model.[]', 'filters.@each.value', function () {\n        return this._filterThese(this.get('model'), ['page', 'order', 'event']);\n    }),\n    eventFields: Ember.computed(function () {\n        var c, col_arr, fields;\n        c = this.get('Collector');\n        col_arr = ['user', 'project', 'status', 'description', 'weather'];\n        fields = c.fieldArray('worksitediary', col_arr);\n        return fields;\n    }),\n    actions: {\n        catchActions: function (action, params) {\n            var c, cols, fields;\n            if (action === 'fieldsUpdate') {\n                c = this.get('Collector');\n                cols = [];\n                params.forEach((col) => {\n                    return cols.push(col.ext);\n                });\n                fields = c.fieldArray(this.get('form'), cols);\n                return this.set('calFields', fields);\n            }\n        },\n        openEditor: function (row) {\n            return this.transitionToRoute(\n                'diary.report.date.project',\n                row.get('date'),\n                row.get('project.id'),\n            );\n        },\n        addDiary: function (day) {\n            return this.transitionToRoute('diary.report.date', {\n                date: day,\n            });\n        },\n        remove: function (row) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('general.remove_row'))\n                .then(function (con) {\n                    if (con) {\n                        return row.destroyRecord();\n                    }\n                });\n        },\n        eventDropped: function (day, event) {\n            var c, dropped_record, duplicates, id, model, record;\n            c = this.get('Collector');\n            [id, model] = event.split(':');\n            dropped_record = this.get('store').peekRecord(model, id);\n            if (dropped_record.get('date') === day) {\n                return;\n            }\n            record = c.copyRecord(dropped_record);\n            record.set('date', day);\n            record.set('attachments', null); // don't copy photos\n            duplicates = this.get('filteredModel').filter((item) => {\n                return (\n                    day === item.get('date') && record.get('project.id') === item.get('project.id')\n                );\n            });\n            if (duplicates.length > 0) {\n                record.unloadRecord();\n                return this.get('dialogs').alert(\n                    this.get('intl').t('diary.calendar.duplicate_error'),\n                );\n            } else {\n                return record.save().catch((row) => {\n                    var msg;\n                    msg = '<h4>' + this.get('intl').t('worktime.calendar.error') + '</h4><br>';\n                    if (\n                        this.get('intl').exists('worktime.calendar.error_type.' + row.errors.error)\n                    ) {\n                        msg += this.get('intl').t(\n                            'worktime.calendar.error_type.' + row.errors.error,\n                        );\n                    } else if (this.get('intl').exists('errors.' + row.errors.error)) {\n                        msg += this.get('intl').t('errors.' + row.errors.error);\n                    } else {\n                        msg += row.errors.error_msg;\n                    }\n                    record.destroyRecord();\n                    return this.get('dialogs').alert(msg);\n                });\n            }\n        },\n    },\n});\n\nexport default WorksitediaryCalendarController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/calendar/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport initRoute from '../../../mixins/init-route';\n\nWorksitediaryIndexRoute = Ember.Route.extend(AuthenticatedRouteMixin, initRoute, {\n    tools: Ember.inject.service(),\n    queryParams: {\n        project: {\n            refreshModel: true,\n        },\n        diary_date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        event: {\n            refreshModel: true,\n        },\n        more: {\n            refreshModel: true,\n        },\n    },\n    more: null,\n    model: function (params) {\n        params.sideload = ['user.image', 'user.firstname', 'user.lastname', 'project.name'];\n        delete params.page;\n        // check if more-param is present, parse it correctly and finally remove it from params\n        if (params.more != null) {\n            params.more.split('|').forEach(function (param) {\n                var split, splitted;\n                splitted = param.split(':');\n                if (splitted[0].includes('-')) {\n                    if (Ember.isPresent(splitted[1])) {\n                        split = splitted[0].split('-');\n                        if (Ember.isEmpty(params[split[0]])) {\n                            return (params[split[0]] = {\n                                [`${split[1]}`]: splitted[1],\n                            });\n                        }\n                    }\n                } else {\n                    return (params[splitted[0]] = splitted[1]);\n                }\n            });\n            this.set('more', params.more);\n        } else {\n            this.set('more', null);\n        }\n        if (params != null && params['more']) {\n            delete params['more'];\n        }\n        if (params.event) {\n            delete params.event;\n            this.store.query('worksitediary', params);\n            return this.store.peekAll('worksitediary');\n        } else {\n            delete params.event;\n            this.store.query('diary', params);\n            return this.store.peekAll('diary');\n        }\n    },\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        if (this.get('more')) {\n            return this.get('more')\n                .split('|')\n                .forEach(function (param) {\n                    var splitted;\n                    splitted = param.split(':');\n                    return controller.set(splitted[0], splitted[1]);\n                });\n        }\n    },\n});\n\nexport default WorksitediaryIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"8mePZPP8\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\",\\\"row\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right event-toggle\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"theme\\\",\\\"onToggle\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[[24,[\\\"event\\\"]],\\\"light\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"event\\\"]]],null]],null],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"diary.calendar.events.toggle\\\"],null],\\\"\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"        \\\\n\\\"],[9],[0,\\\" \\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"event\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"form-column-selector\\\",null,[[\\\"form\\\",\\\"shownColumns\\\",\\\"localStorageKey\\\",\\\"bubbleActions\\\"],[[24,[\\\"form\\\"]],[24,[\\\"shownColumns\\\"]],[24,[\\\"localStorageKey\\\"]],\\\"catchActions\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"calendar-report\\\",null,[[\\\"date\\\",\\\"hideDateRangePicker\\\"],[[24,[\\\"date\\\"]],true]],{\\\"statements\\\":[[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\",\\\"class\\\",\\\"tagName\\\",\\\"data-field\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"eventDropped\\\",[23,1,[]]],null],\\\"draggable-calendar-day\\\",\\\"div\\\",[23,1,[\\\"date\\\"]]]],{\\\"statements\\\":[[4,\\\"calendar-report-day\\\",null,[[\\\"day\\\"],[[23,1,[]]]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"calendar-report-add\\\",null,[[\\\"click\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"addDiary\\\",[23,1,[]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"event\\\"]]],null,{\\\"statements\\\":[[4,\\\"calendar-card-v2\\\",null,[[\\\"data\\\",\\\"day\\\",\\\"fields\\\",\\\"date_field\\\",\\\"classNames\\\",\\\"topImage\\\",\\\"onclick\\\",\\\"remove\\\"],[[24,[\\\"filteredModel\\\"]],[23,1,[]],[24,[\\\"calFields\\\"]],\\\"date\\\",\\\"worktask-calendar-card\\\",\\\"user-image\\\",[28,\\\"action\\\",[[23,0,[]],\\\"openEditor\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"remove\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[28,\\\"concat\\\",[[23,2,[\\\"id\\\"]],\\\":\\\",[23,2,[\\\"_internalModel\\\",\\\"modelName\\\"]]],null],\\\"draggable-calendar-day-item\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"calendar-card-v2\\\",null,[[\\\"data\\\",\\\"day\\\",\\\"fields\\\",\\\"date_field\\\",\\\"classNames\\\",\\\"topImage\\\",\\\"remove\\\"],[[24,[\\\"filteredEvents\\\"]],[23,1,[]],[24,[\\\"eventFields\\\"]],\\\"date\\\",\\\"worktask-calendar-card\\\",\\\"user-image\\\",[28,\\\"action\\\",[[23,0,[]],\\\"remove\\\"],null]]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/calendar/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/combo/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryComboController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport pdfmixin from '../../../mixins/worksitediary_pdf';\n\nDiaryComboController = GeneralReportController.extend(pdfmixin, {\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    cordova: Ember.inject.service('own-cordova-service'),\n    store: Ember.inject.service(),\n    form: 'diary',\n    settings: Em.Object.create({\n        hideExports: true,\n        rowSettings: Em.Object.create({\n            hideActions: true,\n        }),\n    }),\n    //            editRoute: {\n    //                dynamic: true\n    //                route: 'diary.report.date.project'\n    //                fields: ['date','project']\n    //            }\n    limit: 100,\n    showColumns: ['project', 'date', 'works', 'deviations', 'weather', 'status'],\n    showColumnsWorktime: ['project', 'date', 'user', 'work_hours'],\n    showColumnsPresence: ['project', 'date', 'user', 'in', 'out'],\n    linkedReports: Em.computed('model', function () {\n        var c;\n        c = this.get('Collector');\n        return c.fieldArray('diary').filterBy('type', 'databasearray');\n    }),\n    status: 'all',\n    queryParams: ['project', 'date', 'wtPage', 'prPage'],\n    date: moment().format('YYYY-MM-DD'),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'date',\n        }),\n        Em.Object.create({\n            field: 'project',\n        }),\n    ]),\n    //        Em.Object.create({field: \"user\"})\n    //        Em.Object.create({type: \"searchbox\", bindto: \"q\"})\n    mappedFilters: Em.computed('filters.@each.value', function () {\n        return this.get('filters').map(function (filter) {\n            return {\n                name: filter.get('field'),\n                value: filter.get('value'),\n            };\n        });\n    }),\n    projectField: Em.computed('project', function () {\n        var c, field;\n        c = this.get('Collector');\n        field = c.field('diary', 'project');\n        field.value = this.get('project');\n        return field;\n    }),\n    dateField: Em.computed('date', function () {\n        var c, field;\n        c = this.get('Collector');\n        field = c.field('diary', 'date');\n        field.value = this.get('date');\n        return field;\n    }),\n    project: null,\n    diaryFields: Em.computed(function () {\n        return Object.entries(this.Collector.fields('diary')).map((field) => {\n            Em.set(field[1], 'ext', field[0]);\n            if (!field[1]['name']) {\n                Em.set(field[1], 'name', this.get('intl').t('report.diary.' + field[0]));\n            }\n            return field[1];\n        });\n    }),\n    actions: {\n        print: function () {\n            return print();\n        },\n        filterChanged: function (value, field) {\n            return this.get('filters').forEach(function (filter) {\n                if (filter.get('field') === field) {\n                    if (field === 'project' && value) {\n                        return filter.set('value', value.get('id'));\n                    } else {\n                        return filter.set('value', value);\n                    }\n                }\n            });\n        },\n    },\n});\n\nexport default DiaryComboController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/combo/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryComboRoute, service;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\n({\n    inject: { service },\n} = Ember);\n\nDiaryComboRoute = GeneralReportRoute.extend({\n    store: service(),\n    Collector: service('collector-service'),\n    flags: service(),\n    evented: Ember.inject.service(),\n    form: 'diary',\n    queryParams: {\n        wtPage: {\n            refreshModel: true,\n        },\n        prPage: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n    },\n    limit: 100,\n    model: function (params) {\n        var c, dorder, dpar, f, i, len, o, obj, param, porder, ppar, ref, value, worder, wpar;\n        params = this._super(params);\n        c = this.get('Collector');\n        wpar = {\n            sideload: true,\n            limit: params.limit,\n        };\n        dpar = {\n            sideload: true,\n            limit: params.limit,\n        };\n        ppar = {\n            sideload: true,\n            limit: params.limit,\n        };\n        for (param in params) {\n            value = params[param];\n            if (param === 'wtPage' && value) {\n                wpar.offset = (value - 1) * params.limit;\n            }\n            if (param === 'prPage' && value) {\n                ppar.offset = (value - 1) * params.limit;\n            }\n            if (c.fieldExists('diary', param)) {\n                dpar[param] = value;\n            }\n            if (c.fieldExists('worktime', param)) {\n                wpar[param] = value;\n            }\n            if (c.fieldExists('presence', param)) {\n                ppar[param] = value;\n            }\n            if (param === 'order' && value) {\n                worder = [];\n                dorder = [];\n                porder = [];\n                ref = value.split(',');\n                for (i = 0, len = ref.length; i < len; i++) {\n                    o = ref[i];\n                    f = o;\n                    if (f.slice(-1) === '-') {\n                        f = f.slice(0, -1);\n                    }\n                    if (c.fieldExists('diary', f)) {\n                        dorder.push(o);\n                    }\n                    if (c.fieldExists('worktime', f)) {\n                        worder.push(o);\n                    }\n                    if (c.fieldExists('presence', f)) {\n                        porder.push(o);\n                    }\n                }\n                if (dorder.length > 0) {\n                    dpar.order = dorder.join(',');\n                }\n                if (worder.length > 0) {\n                    wpar.order = worder.join(',');\n                }\n                if (porder.length > 0) {\n                    ppar.order = porder.join(',');\n                }\n            }\n        }\n        if (Em.isPresent(params.project) && Em.isPresent(params.date)) {\n            if (!this.get('flags').test('ember-movenium-form-report-diary')) {\n                obj = {\n                    diary: this.get('store').query('diary', dpar),\n                    worktime: this.get('store').query('worktime', wpar),\n                };\n                if (c.testNeedsOne('presence')) {\n                    obj.presence = this.get('store').query('presence', ppar);\n                }\n                return Ember.RSVP.hash(obj);\n            } else {\n                this.controllerFor('diary.combo').set(\n                    'diary',\n                    this.get('store').query('diary', dpar),\n                );\n                this.controllerFor('diary.combo').set('qParamsW', wpar);\n                if (c.testNeedsOne('presence')) {\n                    this.controllerFor('diary.combo').set('qParamsP', ppar);\n                }\n                this.evented.storeEvent('update', null, null);\n                return true;\n            }\n        }\n        return null;\n    },\n});\n\nexport default DiaryComboRoute;\n","export default Ember.HTMLBars.template({\"id\":\"YF31hExI\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"report\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row no-print\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-4 col-md-2\\\"],[8],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"dateField\\\"]]],[[\\\"change\\\"],[\\\"filterChanged\\\"]]],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-4 col-md-3\\\"],[8],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"projectField\\\"]]],[[\\\"change\\\"],[\\\"filterChanged\\\"]]],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-4 col-md-3\\\"],[8],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link print-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"print\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.print\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"model\\\"]],[28,\\\"flag\\\",[\\\"ember-movenium-form-report-diary\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.diary\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[24,[\\\"diary\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"record-list\\\",null,[[\\\"fields\\\",\\\"model\\\"],[[24,[\\\"diaryFields\\\"]],[24,[\\\"diary\\\",\\\"firstObject\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"diary.combo.no_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.worktimes\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filter\\\",\\\"@showFilters\\\",\\\"@localStorageKey\\\"],[\\\"worktime\\\",[23,0,[\\\"qParamsW\\\"]],\\\" \\\",\\\"diarycomp.worktime\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,7,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,8,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,9,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,10,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,10,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,10,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[10]}],[0,\\\"\\\\n                \\\"],[6,[23,9,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,9,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,9,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,9,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,9,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,9,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[9]}],[0,\\\"\\\\n            \\\"],[6,[23,8,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,8,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"qParamsP\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.presences\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@localStorageKey\\\"],[\\\"presence\\\",[23,0,[\\\"qParamsP\\\"]],\\\" \\\",\\\"diarycomp.presences\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[6,[23,6,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                        \\\"],[6,[23,6,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                        \\\"],[6,[23,6,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"linkedReports\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h2\\\",true],[8],[1,[23,2,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"form\\\",\\\"query\\\"],[[23,2,[\\\"options\\\",\\\"form\\\"]],[24,[\\\"mappedFilters\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.diary\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[24,[\\\"model\\\",\\\"diary\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"record-list\\\",null,[[\\\"fields\\\",\\\"model\\\"],[[24,[\\\"diaryFields\\\"]],[24,[\\\"model\\\",\\\"diary\\\",\\\"firstObject\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"diary.combo.no_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.worktimes\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"page\\\",\\\"settings\\\",\\\"localStorageKey\\\",\\\"limit\\\"],[\\\"bubbleTransition\\\",\\\"worktime\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\",\\\"worktime\\\"]],[24,[\\\"showColumnsWorktime\\\"]],[24,[\\\"wtPage\\\"]],[24,[\\\"settings\\\"]],\\\"diarycomp.worktime\\\",[24,[\\\"limit\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"presence\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.presences\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"page\\\",\\\"settings\\\",\\\"localStorageKey\\\",\\\"limit\\\"],[\\\"bubbleTransition\\\",\\\"presence\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\",\\\"presence\\\"]],[24,[\\\"showColumnsPresence\\\"]],[24,[\\\"prPage\\\"]],[24,[\\\"settings\\\"]],\\\"diarycomp.presences\\\",[24,[\\\"limit\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"linkedReports\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h2\\\",true],[8],[1,[23,1,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"form\\\",\\\"query\\\"],[[23,1,[\\\"options\\\",\\\"form\\\"]],[24,[\\\"mappedFilters\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"diary.combo.select_filters\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/combo/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/database-array/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryDatabasearrayComponent,\n    get,\n    oneWay,\n    service,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\n({\n    //import baseField from '../base-field/component'\n    inject: { service },\n    computed: { oneWay },\n    get,\n} = Ember);\n\nDiaryDatabasearrayComponent = Ember.Component.extend({\n    store: service(),\n    Collector: service('collector-service'),\n    didReceiveAttrs: function () {\n        return this._super();\n    },\n    //        @set 'value', oneWay(@get('model.'+@get('field.name')))\n    specialFormat: ['user', 'images'],\n    value: Ember.computed.oneWay('field.value'),\n    values: Ember.computed('value', function () {\n        var field, model;\n        field = this.get('field');\n        model = this.get('model');\n        return model.get(get(field, 'name'));\n    }),\n    dateField: Ember.computed(function () {\n        return this.get('Collector')\n            .fieldArray(this.get('field.options.form'))\n            .filterBy('type', 'date')\n            .get('firstObject');\n    }),\n    projectField: Ember.computed(function () {\n        var fields;\n        fields = this.get('Collector')\n            .fieldArray(this.get('field.options.form'))\n            .filter(function (item) {\n                return get(item, 'options.form') === 'project';\n            });\n        return fields.get('firstObject');\n    }),\n    userField: Ember.computed(function () {\n        var fields;\n        fields = this.get('Collector')\n            .fieldArray(this.get('field.options.form'))\n            .filter(function (item) {\n                return get(item, 'options.form') === 'user';\n            });\n        return fields.get('firstObject');\n    }),\n    items: Ember.computed('model.date', 'model.project', function () {\n        var params;\n        params = {};\n        params[this.get('dateField.name')] = this.get('model.date');\n        params[this.get('projectField.name')] = this.get('model.project.id');\n        return this.get('store').query(this.get('field.options.form'), params);\n    }),\n    filteredItems: Ember.computed('items.isFulfilled', 'values.[]', function () {\n        var items, selectedItems;\n        selectedItems = this.get('values').mapBy('id');\n        items = Ember.A(this.get('items')).filter(function (item) {\n            var ref;\n            return (ref = item.get('id')), indexOf.call(selectedItems, ref) < 0;\n        });\n        return items;\n    }),\n    actions: {\n        toggleModal: function () {\n            this.toggleProperty('showModal');\n            return false;\n        },\n        addItem: function (item) {\n            return this.get('values').pushObject(item);\n        },\n        removeItem: function (item) {\n            return this.get('values').removeObject(item);\n        },\n    },\n});\n\nexport default DiaryDatabasearrayComponent;\n","export default Ember.HTMLBars.template({\"id\":\"cNG1DMzO\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\",\\\"_field\\\",\\\"index\\\",\\\"item\\\",\\\"_field\\\",\\\"index\\\",\\\"item\\\",\\\"_field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"cards\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"values\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"item\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,7,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"userField\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"get\\\",[[23,7,[]],[28,\\\"concat\\\",[[24,[\\\"userField\\\",\\\"name\\\"]],\\\".isLoaded\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"user-icon\\\",[[28,\\\"get\\\",[[23,7,[]],[28,\\\"concat\\\",[[24,[\\\"userField\\\",\\\"name\\\"]],\\\".image.firstObject.thumb\\\"],null]],null]],[[\\\"size\\\"],[\\\"sm\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"description\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"field\\\",\\\"options\\\",\\\"fields\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,8,[]],[24,[\\\"specialFormat\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,8,[]],[24,[\\\"field\\\",\\\"options\\\",\\\"form\\\"]],[28,\\\"get\\\",[[23,7,[]],[23,8,[]]],null]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[8]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"images\\\",[24,[\\\"field\\\",\\\"options\\\",\\\"fields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"images\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"images\\\",[24,[\\\"field\\\",\\\"options\\\",\\\"form\\\"]],[23,7,[\\\"images\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link add-card-btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"close\\\",\\\"header\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"],null],[28,\\\"t\\\",[\\\"diary.databasearray.select_items\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"diary.databasearray.included\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"list-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"values\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"list-row\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeItem\\\",[23,4,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"field\\\",\\\"options\\\",\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,6,[]],0],null]],null,{\\\"statements\\\":[[0,\\\" - \\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,5,[]],[24,[\\\"field\\\",\\\"options\\\",\\\"form\\\"]],[28,\\\"get\\\",[[23,4,[]],[23,5,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5,6]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"diary.databasearray.excluded\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"list-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"filteredItems\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[23,1,[\\\"clicked\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"list-row\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addItem\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"field\\\",\\\"options\\\",\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,3,[]],0],null]],null,{\\\"statements\\\":[[0,\\\" - \\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,2,[]],[24,[\\\"field\\\",\\\"options\\\",\\\"form\\\"]],[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2,3]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/database-array/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/events/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport localization from '../../../classes/localization';\n\nWorksitediaryIndexController = GeneralReportController.extend({\n    form: 'worksitediary',\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: 'worksitediary.edit',\n            historyRoute: 'worksitediary.history',\n        }),\n        sortByColumn: 'date-',\n        fullPdfSettings: {\n            insertPageBreak: true,\n            rotateImages: true,\n        },\n    }),\n    showColumns: ['date', 'project', 'title', 'description', 'images', 'rating', 'weather'],\n    queryParams: ['project', 'date', 'page', 'status'],\n    status: 'all',\n    date: moment().subtract(1, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'date',\n        }),\n        Em.Object.create({\n            field: 'project',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n    },\n});\n\nexport default WorksitediaryIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/events/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nWorksitediaryIndexRoute = GeneralReportRoute.extend({\n    flags: service(),\n    form: 'worksitediary',\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-diary')) {\n            params.sideload = true;\n            return this.store.query('worksitediary', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('diary.events').set('qParams', params);\n        }\n    },\n});\n\nexport default WorksitediaryIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"4d1mNFtx\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-diary\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"worksitediary\\\",[23,0,[\\\"qParams\\\"]],\\\"date,project,q\\\",\\\"user.worktimegroup,user.employer\\\",[28,\\\"hash\\\",null,[[\\\"date\\\"],[[23,0,[\\\"date\\\"]]]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/worksitediary/edit/\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\",\\\"status\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\",[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",\\\"worksitediary\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/events/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport { set } from '@ember/object';\n\nimport pdfmixin from '../../../mixins/worksitediary_pdf';\n\nimport { fetchWeather } from 'tt4/ember-movenium/utils/weather';\n\nimport moment from 'moment';\n\nWorksitediaryIndexController = GeneralReportController.extend(pdfmixin, {\n    notifications: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    cordova: Ember.inject.service('own-cordova-service'),\n    store: Ember.inject.service(),\n    weather: Ember.inject.service(),\n    form: 'diary',\n    showForm: false,\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: {\n                dynamic: true,\n                route: 'diary.report.date.project',\n                fields: ['date', 'project'],\n            },\n        }),\n    }),\n    showColumns: ['project', 'date', 'works', 'deviations', 'weather', 'status'],\n    status: 'all',\n    queryParams: ['project', 'date', 'page', 'user', 'status'],\n    date: moment().subtract(1, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'date',\n        }),\n        Em.Object.create({\n            field: 'project',\n        }),\n        Em.Object.create({\n            field: 'user',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    project: null,\n    user: null,\n    isWeatherLoading: false,\n    weatherStringToObject: function (string) {\n        var e, parsed;\n        if (!string) {\n            return false;\n        }\n        try {\n            parsed = JSON.parse(string);\n        } catch (error) {\n            e = error;\n            return false;\n        }\n        if (parsed.temperature) {\n            return parsed;\n        }\n        return false;\n    },\n    actions: {\n        fetchNewWeather: function () {\n            this.set('isWeatherLoading', true);\n            return this.store\n                .query('project', {\n                    id: this.get('showForm.project.id'),\n                    sideload: true,\n                })\n                .then((proj) => {\n                    return this.weather\n                        .fetchWeatherByProject(proj.firstObject, this.get('showForm.date'))\n                        .then((res) => {\n                            this.set('showForm.weather', JSON.stringify(res));\n                            return this.set('isWeatherLoading', false);\n                        })\n                        .catch((e) => {\n                            if (e.message === 'projectLocation is null') {\n                                this.notifications.error(\n                                    this.intl.t('general.weather.no_projectLocation'),\n                                    {\n                                        autoClear: true,\n                                    },\n                                );\n                                return this.set('isWeatherLoading', false);\n                            }\n                        });\n                });\n        },\n        onFieldChange: function (field, value) {\n            return this.set('showForm.' + field, value);\n        },\n\n        closeEditModal: function () {\n            return this.set('showForm', false);\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        transitionToEditRoute: function (row) {\n            const date = row.date;\n            const project = row.project.id;\n            return this.transitionToRoute('diary.report.date.project', date, project);\n        },\n    },\n});\n\nexport default WorksitediaryIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexRoute, service;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\n({\n    inject: { service },\n} = Ember);\n\nWorksitediaryIndexRoute = GeneralReportRoute.extend({\n    store: service(),\n    flags: service(),\n    form: 'diary',\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    beforeModel: function (transition) {\n        if (!this.get('Collector').testNeeds(['diary@access'])) {\n            transition.abort();\n            return this.transitionTo('diary.events');\n        }\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-diary')) {\n            params.sideload = true;\n            return this.get('store').query('diary', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('diary.index').set('qParams', params);\n        }\n    },\n});\n\nexport default WorksitediaryIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"df5bzqIS\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-diary\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"diary\\\",[23,0,[\\\"qParams\\\"]],\\\"user.worktimegroup,user.employer\\\",[28,\\\"hash\\\",null,[[\\\"date\\\"],[[23,0,[\\\"date\\\"]]]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,6,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/diary/report?modal=diary%2C\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[9]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"transitionToEditRoute\\\"],null]]]],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\",\\\"status\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\",[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"page\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"status\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showForm\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"menu.add_\\\",[23,0,[\\\"form\\\"]]],null]],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[[23,0,[\\\"form\\\"]],[23,0,[\\\"showForm\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"onFieldChange\\\"],null],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showForm\\\"]]],null],null],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"weather\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@error\\\",\\\"@class\\\",\\\"@label\\\"],[[23,5,[\\\"label\\\"]],[23,0,[\\\"errors\\\",\\\"firstObject\\\",\\\"message\\\"]],[28,\\\"concat\\\",[\\\"ember-movenium-field-\\\",[23,5,[\\\"name\\\"]]],null],[23,5,[\\\"label\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"call\\\",[[28,\\\"fn\\\",[[24,[\\\"weatherStringToObject\\\"]],[23,0,[\\\"showForm\\\",\\\"weather\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[5,\\\"addon/fields/weather\\\",[],[[\\\"@field\\\",\\\"@form\\\",\\\"@record\\\",\\\"@value\\\",\\\"@shouldAutomaticallyFetchNewWeather\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[23,0,[\\\"showForm\\\"]],[28,\\\"call\\\",[[28,\\\"fn\\\",[[24,[\\\"weatherStringToObject\\\"]],[23,0,[\\\"showForm\\\",\\\"weather\\\"]]],null]],null],false]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-primary \\\",[28,\\\"if\\\",[[23,0,[\\\"isWeatherLoading\\\"]],\\\"is-loading\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"fetchNewWeather\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.weather.refetch_weather\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[6,[23,4,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@skipLastUsed\\\",\\\"@mandatory\\\",\\\"@onChange\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"showForm\\\"]],[23,5,[\\\"name\\\"]]],null],[23,0,[\\\"showForm\\\"]],true,[24,[\\\"field\\\",\\\"features\\\",\\\"mandatory\\\"]],[28,\\\"fn\\\",[[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"                \\\"]],\\\"parameters\\\":[3,4]}],[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/index/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"DgnIowMI\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryReportController, computed, controller, get, service, set;\n\nimport Ember from 'ember';\n\n({\n    computed,\n    inject: { service, controller },\n    set,\n    get,\n} = Ember);\n\nDiaryReportController = Ember.Controller.extend({\n    Collector: service('collector-service'),\n    dateController: controller('diary.report.date'),\n    projectController: controller('diary.report.date.project'),\n    date: computed.alias('dateController.model.date'),\n    project: computed.alias('projectController.model.project'),\n    field: computed('date', function () {\n        var c, field;\n        c = this.get('Collector');\n        field = c.field('diary', 'date');\n        set(field, 'value', this.get('date'));\n        return field;\n    }),\n    actions: {\n        setValue: function (value, field) {\n            if (moment(value).isValid()) {\n                if (this.get('project')) {\n                    return this.transitionToRoute(\n                        'diary.report.date.project',\n                        value,\n                        this.get('project.id'),\n                    );\n                } else {\n                    return this.transitionToRoute('diary.report.date', value);\n                }\n            }\n        },\n    },\n});\n\nexport default DiaryReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/report/date/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryReportDateController, computed, controller, get, service, set;\n\nimport Ember from 'ember';\n\n({\n    computed,\n    inject: { service, controller },\n    set,\n    get,\n} = Ember);\n\nDiaryReportDateController = Ember.Controller.extend({\n    Collector: service('collector-service'),\n    projectController: controller('diary.report.date.project'),\n    project: computed.alias('projectController.model.project'),\n    field: computed('project', function () {\n        var c, field;\n        c = this.get('Collector');\n        field = c.field('diary', 'project');\n        set(field, 'value', this.get('project.id'));\n        return field;\n    }),\n    actions: {\n        setValue: function (value, field) {\n            if (value) {\n                return this.transitionToRoute('diary.report.date.project', value.get('id'));\n            }\n        },\n    },\n});\n\nexport default DiaryReportDateController;\n","export default Ember.HTMLBars.template({\"id\":\"ez50voq1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/report/date/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/report/date/project/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryReportDateController, computed, get, service, set;\n\nimport Ember from 'ember';\n\nimport DS from 'ember-data';\n\nimport config from 'tt4/config/environment';\n\nimport $ from 'jquery';\n\n({\n    computed,\n    inject: { service },\n    set,\n    get,\n} = Ember);\n\nDiaryReportDateController = Ember.Controller.extend({\n    Collector: service('collector-service'),\n    GpsLocator: service(),\n    fetchingWeather: false,\n    ownWeather: {},\n    translations: {\n        temp: '°C',\n        wspeed: 'm/s',\n        percent: '%',\n    },\n    skip: ['date', 'project'],\n    workforce_fields: computed('model',function () {\n        var allFields;\n        allFields = this.get('Collector').fieldArray('diary');\n        return allFields.filter(function (item) {\n            return item.name.substring(0, 9) === 'workforce';\n        });\n    }),\n    workforce_by_names: computed('workforce_fields','model', function () {\n        return this.get('workforce_fields').mapBy('name');\n    }),\n    /*\n  MOVED weather-calculation to afterModel in route, check it out!\n  weather: Ember.computed 'model.project', 'model.date','model.id', ->\n      if !@get('model.isNew') && @get('model.weather')\n          return JSON.parse(@get('model.weather'))\n      return DS.PromiseObject.create({\n          promise: @fetchWeatherPosition()\n      })\n  */\n    fetchWeatherPosition: function (model) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var projectLocation;\n            projectLocation = model.get('project.location_map');\n            if (projectLocation) {\n                projectLocation = JSON.parse(projectLocation);\n                return this.fetchWeather(\n                    projectLocation.latitude,\n                    projectLocation.longitude,\n                    model.get('date'),\n                )\n                    .then(function (json) {\n                        return resolve(json);\n                    })\n                    .catch(function (e) {\n                        return reject(e);\n                    });\n            } else {\n                return this.get('GpsLocator')\n                    .getLocation()\n                    .then(\n                        (position) => {\n                            return this.fetchWeather(\n                                position.coords.latitude,\n                                position.coords.longitude,\n                                model.get('date'),\n                            )\n                                .then(function (json) {\n                                    return resolve(json);\n                                })\n                                .catch(function (e) {\n                                    return reject(e);\n                                });\n                        },\n                        function (error) {\n                            return reject(error);\n                        },\n                    );\n            }\n        });\n    },\n    fetchWeather: function (lat, lon, date = false) {\n        var hour, url;\n        hour = 12;\n        url = config.APP.WEATHER_HISTORY_API;\n        if (date) {\n            date = moment(date).format('YYYYMMDD');\n            if (date === moment().format('YYYYMMDD')) {\n                url = config.APP.WEATHER_API;\n                // if current time is < 12:00, use current hour for fetching weather\n                if (moment().format('HH') < 12) {\n                    hour = moment().format('HH');\n                }\n            }\n            // if trying to fetch weather-info from future, just return empty promise\n            if (date > moment().format('YYYYMMDD')) {\n                return Em.RSVP.Promise.resolve();\n            }\n        } else {\n            date = moment(this.get('model.date')).format('YYYYMMDD');\n        }\n        this.set('fetchingWeather', true);\n        return $.getJSON(\n            url + '?lat=' + lat + '&lon=' + lon + '&date=' + date + '&hour=' + hour,\n            (json) => {\n                this.set('fetchingWeather', false);\n                this.set('weather', json);\n                if (!json.dew_point) {\n                    json.dew_point = this.calcDewPoint(json.temperature, json.humidity);\n                }\n                this.set('model.weather', JSON.stringify(json));\n                this.set('model.weather_fetched', moment().format('YYYY-MM-DD HH:mm:ss'));\n                return json;\n            },\n        );\n    },\n    calcDewPoint: function (temp, humidity) {\n        var dew_point;\n        dew_point = temp - (100 - humidity) / 5;\n        return Math.round(dew_point * 100) / 100;\n    },\n    actions: {\n        recordAdded: function (record) {\n            return this.transitionToRoute('diary.index');\n        },\n        cancel: function () {\n            return this.transitionToRoute('diary.index');\n        },\n        setWorkforceValue: function (value, field) {\n            if (field) {\n                return this.set('model.' + field, value);\n            }\n        },\n        updateWeather: function () {\n            var json;\n            // if weather-datatype changes, change this also\n            json = {};\n            json.temperature = this.get('ownWeather.temperature');\n            json.humidity = this.get('ownWeather.humidity');\n            json.windspeed = this.get('ownWeather.windspeed');\n            json.weather = this.get('ownWeather.weather');\n            if (this.get('ownWeather.temperature') && this.get('ownWeather.humidity')) {\n                json.dew_point = this.calcDewPoint(json.temperature, json.humidity);\n                this.set('ownWeather.dew_point', json.dew_point);\n            }\n            return this.set('model.weather', JSON.stringify(json));\n        },\n        toggleOverrideWeather: function () {\n            if (this.get('weather.temperature')) {\n                this.set('ownWeather', this.get('weather'));\n            }\n            this.toggleProperty('overrideWeather');\n            return false;\n        },\n        changeWeatherType: function (type) {\n            this.set('ownWeather.weather', type);\n            return this.send('updateWeather');\n        },\n    },\n});\n\nexport default DiaryReportDateController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/report/date/project/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryReportDateProjectRoute, get, service, set;\n\nimport Ember from 'ember';\n\nimport DS from 'ember-data';\n\n({\n    inject: { service },\n    set,\n    get,\n} = Ember);\n\nDiaryReportDateProjectRoute = Ember.Route.extend({\n    Collector: service('collector-service'),\n    store: service(),\n    session: service(),\n    model: function (params) {\n        var parentParams;\n        parentParams = this.paramsFor('diary.report.date');\n        return this.get('store')\n            .findRecord('project', params.project)\n            .then((project) => {\n                var date;\n                date =\n                    moment(parentParams.date).subtract(7, 'days').format('YYYY-MM-DD') +\n                    '_' +\n                    parentParams.date;\n                return this.get('store')\n                    .query('diary', {\n                        date: date,\n                        project: params.project,\n                        sideload: true,\n                        order: 'date-',\n                    })\n                    .then((rows) => {\n                        var rowsForDate;\n                        rowsForDate = rows.filterBy('date', parentParams.date);\n                        if (rowsForDate.get('length') > 0) {\n                            return rowsForDate.get('firstObject');\n                        } else {\n                            return this.getWorkdayStrength(parentParams.date, params.project).then(\n                                (strength) => {\n                                    var data;\n                                    data = strength || {};\n                                    if (rows.get('length') > 0) {\n                                        // copy only these to fields .. nothing else is needed\n                                        data.deviations = rows.get('firstObject').deviations;\n                                        data.works = rows.get('firstObject').works;\n                                    }\n                                    Object.assign(data, {\n                                        date: parentParams.date,\n                                        project: project,\n                                    });\n                                    delete data.event;\n                                    return this.get('store').createRecord('diary', data);\n                                },\n                            );\n                        }\n                    });\n            });\n    },\n    afterModel: function (model) {\n        var controller, e;\n        controller = this.controllerFor('diary/report/date/project');\n        controller.set('overrideWeather', false);\n        if (model.get('isNew')) {\n            controller.set(\n                'weather',\n                DS.PromiseObject.create({\n                    promise: controller.fetchWeatherPosition(model),\n                }),\n            );\n            return controller.set('editMode', false);\n        } else {\n            try {\n                controller.set('weather', JSON.parse(model.get('weather')));\n            } catch (error) {\n                e = error;\n                controller.set('weather', null);\n            }\n            return controller.set('editMode', true);\n        }\n    },\n    resetController: function (controller, isExiting) {\n        if (isExiting) {\n            return controller.set('ownWeather', {});\n        }\n    },\n    getWorkdayStrength: function (date, project) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var c, presencePromise, store, worktimePromise;\n            c = this.get('Collector');\n            store = this.get('store');\n            worktimePromise = Ember.A([]);\n            presencePromise = Ember.A([]);\n            if (c.formExists('worktime')) {\n                worktimePromise = store.query('worktime', {\n                    date: date,\n                    project: project,\n                    limit: 'all',\n                    sideload: ['user.employer', 'user.userlevel', 'employer.name'],\n                });\n            }\n            if (c.formExists('presence')) {\n                presencePromise = store.query('presence', {\n                    date: date,\n                    project: project,\n                    limit: 'all',\n                    sideload: ['user.employer', 'user.userlevel', 'employer.name'],\n                });\n            }\n            return Ember.RSVP.Promise.all([worktimePromise, presencePromise]).then((data) => {\n                var employer,\n                    foremen,\n                    foremenStrength,\n                    maincontractorId,\n                    own,\n                    rows,\n                    subStrength,\n                    workerStrength;\n                rows = data[0].toArray().concat(data[1].toArray()).uniqBy('user');\n                employer = this.get('session.currentUser.employer.id');\n                if (Ember.isPresent(employer)) {\n                    if (c.testNeeds(['project.maincontractor'])) {\n                        maincontractorId = store\n                            .peekRecord('project', project)\n                            .get('maincontractor.id');\n                        own = rows.filterBy('employer.id', maincontractorId);\n                    } else {\n                        own = rows.filterBy('employer.id', employer);\n                    }\n                } else {\n                    own = rows;\n                }\n                foremen = own.filter((item) => {\n                    return [3, 5, 6].includes(parseInt(item.get('user.userlevel')));\n                });\n                subStrength = rows.get('length') - own.get('length');\n                foremenStrength = foremen.get('length');\n                workerStrength = own.get('length') - foremenStrength;\n                return resolve({\n                    workforce_workers: workerStrength,\n                    workforce_foremen: foremenStrength,\n                    workforce_subcontractor: subStrength,\n                });\n            });\n        });\n    },\n});\n\nexport default DiaryReportDateProjectRoute;\n","export default Ember.HTMLBars.template({\"id\":\"isrK5WF5\",\"block\":\"{\\\"symbols\\\":[\\\"component\\\",\\\"field\\\",\\\"record\\\",\\\"wfield\\\",\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[4,\\\"collector/record-custom-comp\\\",null,[[\\\"record\\\",\\\"form\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"model\\\"]],\\\"diary\\\",\\\"recordAdded\\\",\\\"cancel\\\"]],{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,2,[\\\"name\\\"]],[24,[\\\"skip\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"type\\\"]],\\\"databasearray\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[23,2,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"diary/database-array\\\",null,[[\\\"field\\\",\\\"change\\\",\\\"model\\\"],[[23,2,[]],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\"],[[\\\"target\\\"],[[23,1,[]]]]],[23,3,[]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"name\\\"]],\\\"weather\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"weather-info\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"overrideWeather\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"fetchingWeather\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.fetching_weather\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move move-\\\",[24,[\\\"weather\\\",\\\"weather\\\"]],\\\" weather-icon\\\"]]],[8],[9],[0,\\\"\\\\n                            \\\"],[1,[24,[\\\"weather\\\",\\\"temperature\\\"]],false],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[0,\\\", \\\"],[1,[24,[\\\"weather\\\",\\\"windspeed\\\"]],false],[1,[24,[\\\"translations\\\",\\\"wspeed\\\"]],false],[0,\\\", \\\"],[1,[24,[\\\"weather\\\",\\\"humidity\\\"]],false],[1,[24,[\\\"translations\\\",\\\"percent\\\"]],false],[0,\\\", \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.abbr_dew_point\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"weather\\\",\\\"dew_point\\\"]],false],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"weather-brand\\\"],[8],[0,\\\"—\\\"],[1,[28,\\\"t\\\",[\\\"general.weather_provider\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[4,\\\"unless\\\",[[24,[\\\"editMode\\\"]]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleOverrideWeather\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"general.edit\\\"],null]],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-inline\\\"],[8],[0,\\\"\\\\n                        \\\"],[5,\\\"bs-dropdown\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[6,[23,5,[\\\"button\\\"]],[],[[\\\"@class\\\"],[\\\"btn-default dropdown-toggle\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"ownWeather\\\",\\\"weather\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move move-\\\",[24,[\\\"ownWeather\\\",\\\"weather\\\"]],\\\" dropdown-weather-icon\\\"]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.weather_type\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"caret\\\"],[8],[9],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                            \\\"],[6,[23,5,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[6,[23,6,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"Clouds\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Clouds dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.clouds\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"],[6,[23,6,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"LightRain\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-LightRain dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.light_rain\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"],[6,[23,6,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"LightSnow\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-LightSnow dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.light_snow\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"],[6,[23,6,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"PartlyCloudyDay\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PartlyCloudyDay dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.part_cloud\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"],[6,[23,6,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"Rain\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Rain dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.rain\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"],[6,[23,6,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"Snow\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Snow dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.snow\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"],[6,[23,6,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"Sun\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Sun dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.sun\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[\\\"text\\\",\\\"form-control short-weather-input\\\",[24,[\\\"ownWeather\\\",\\\"temperature\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateWeather\\\",[24,[\\\"ownWeather\\\"]]],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[\\\"text\\\",\\\"form-control short-weather-input\\\",[24,[\\\"ownWeather\\\",\\\"windspeed\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateWeather\\\",[24,[\\\"ownWeather\\\"]]],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[1,[24,[\\\"translations\\\",\\\"wspeed\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[\\\"text\\\",\\\"form-control short-weather-input\\\",[24,[\\\"ownWeather\\\",\\\"humidity\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateWeather\\\",[24,[\\\"ownWeather\\\"]]],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[1,[24,[\\\"translations\\\",\\\"percent\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.abbr_dew_point\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"ownWeather\\\",\\\"dew_point\\\"]],false],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleOverrideWeather\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-NoEdit\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"in-array\\\",[[23,2,[\\\"name\\\"]],[24,[\\\"workforce_by_names\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"name\\\"]],[24,[\\\"workforce_by_names\\\",\\\"firstObject\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workforce-fields\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"workforce_fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workforce-field\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[23,4,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,4,[]]],[[\\\"model\\\",\\\"change\\\",\\\"class\\\"],[[24,[\\\"model\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setWorkforceValue\\\"],null],\\\"add-fields form-control\\\"]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-container\\\",[[23,2,[]]],[[\\\"change\\\",\\\"model\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\"],[[\\\"target\\\"],[[23,1,[]]]]],[23,3,[]]]]],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2,3]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/report/date/project/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/report/date/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryReportDateRoute;\n\nimport Ember from 'ember';\n\nDiaryReportDateRoute = Ember.Route.extend({\n    session: Ember.inject.service(),\n    beforeModel: function (transition) {\n        if (transition.targetName === 'diary.report.date.index') {\n            if (this.get('session.currentUser.currentMySite')) {\n                this.transitionTo(\n                    'diary.report.date.project',\n                    this.get('session.currentUser.currentMySite.id'),\n                );\n            }\n            if (\n                this.modelFor('diary.report.date.project') &&\n                this.modelFor('diary.report.date.project').get('project.id')\n            ) {\n                return this.transitionTo(\n                    'diary.report.date.project',\n                    this.modelFor('diary.report.date.project').get('project.id'),\n                );\n            }\n        }\n    },\n    actions: {\n        willTransition: function (transition) {\n            if (transition.targetName === 'diary.report.index') {\n                return transition.abort();\n            }\n        },\n    },\n});\n\nexport default DiaryReportDateRoute;\n","export default Ember.HTMLBars.template({\"id\":\"9xqmHBk4\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/field-container\\\",[[24,[\\\"field\\\"]]],[[\\\"change\\\"],[\\\"setValue\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/report/date/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryReportRoute;\n\nimport Ember from 'ember';\n\nDiaryReportRoute = Ember.Route.extend({\n    session: Ember.inject.service(),\n    redirect: function (model, transition) {\n        if (\n            transition.targetName !== 'diary.report.date' &&\n            transition.targetName !== 'diary.report.date.index' &&\n            transition.targetName !== 'diary.report.date.project'\n        ) {\n            return this.transitionTo('diary.report.date', moment().format('YYYY-MM-DD'));\n        }\n    },\n});\n\nexport default DiaryReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"qlBVJz1l\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/field-container\\\",[[24,[\\\"field\\\"]]],[[\\\"change\\\"],[\\\"setValue\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nDiaryRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    beforeModel: function (transition) {\n        if (transition && transition.targetName === 'diary.index') {\n            this.transitionToRightPage();\n        }\n        return this._super(transition);\n    },\n    transitionToRightPage: function () {\n        if (!this.get('Collector').testNeeds(['diary@access'])) {\n            return this.transitionTo('diary.events');\n        }\n    },\n});\n\nexport default DiaryRoute;\n","import GeneralAddController from '../../../controllers/general-add';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport { A } from '@ember/array';\n\nexport default GeneralAddController.extend({\n    session: service(),\n    edit: true,\n    drivinglog: alias('model'),\n    fieldSettings: A({\n        edit: true,\n    }),\n});\n","import GeneralAddRoute from '../../../routes/general-add';\n\nexport default GeneralAddRoute.extend({\n    controllerName: 'drivinglog/edit',\n    modelName: 'drive',\n    edit: true,\n    afterSave: 'drivinglog',\n});\n","export default Ember.HTMLBars.template({\"id\":\"AVjX3Jxg\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/drivinglog/edit/template.hbs\"}});","import { A } from '@ember/array';\nimport EmberObject from '@ember/object';\nimport GeneralReportController from '../../../controllers/general-report';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\n\nexport default GeneralReportController.extend({\n    intl: service(),\n    Collector: service('collector-service'),\n    dialogs: service(),\n    queryParams: ['page', 'date', 'user', 'q'],\n    form: 'drive',\n    showColumns: null,\n    init: function () {\n        this._super(...arguments);\n        this.showColumns = [\n            'date',\n            'user',\n            'route',\n            'distance',\n            'starttime',\n            'endtime',\n            'drive_hours',\n            'private_drive',\n            'license_plate',\n        ];\n    },\n    drivinglog: alias('model'),\n    filters: A([\n        EmberObject.create({ field: 'date' }),\n        EmberObject.create({ type: 'searchbox', bindto: 'q' }),\n        EmberObject.create({ field: 'user' }),\n    ]),\n    settings: EmberObject.create({\n        rowSettings: EmberObject.create({\n            editRoute: 'drivinglog.edit',\n            historyRoute: 'drivinglog.history',\n        }),\n        massedit: true,\n        hideColumns: ['location_start', 'location_end'],\n    }),\n});\n","import GeneralReportRoute from '../../../routes/general-report';\n\nexport default GeneralReportRoute.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    form: 'drive',\n    model(params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('drive', params);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"t6f3vysP\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"drive\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",\\\"drive\\\",[24,[\\\"drivinglog\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"settings\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/drivinglog/index/template.hbs\"}});","import Controller, { inject as controller } from '@ember/controller';\n\nimport { alias } from '@ember/object/computed';\nimport { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { later } from '@ember/runloop';\n\nexport default Controller.extend({\n    toggleController: controller('drivinglog/toggle/index'),\n    Collector: service('collector-service'),\n    gui: service(),\n    km: 'km',\n    init() {\n        this._super(...arguments);\n        if (!get(this, 'toggleController.openDrive')) {\n            return this.transitionToRoute('drivinglog.toggle');\n        }\n    },\n    drivinglog: alias('model'),\n    openDrive: computed('toggleController.openDrive', function () {\n        if (!get(this, 'toggleController.openDrive')) {\n            this.transitionToRoute('drivinglog.toggle');\n        }\n\n        return get(this, 'toggleController.openDrive');\n    }),\n\n    distField: computed(function () {\n        return get(this, 'Collector').field('drive', 'distance');\n    }),\n\n    routeField: computed(function () {\n        return get(this, 'Collector').field('drive', 'route');\n    }),\n\n    gaugeField: computed(function () {\n        return get(this, 'Collector').field('drive', 'gauge_end');\n    }),\n\n    projField: computed(function () {\n        return get(this, 'Collector').field('drive', 'project');\n    }),\n\n    privateField: computed(function () {\n        return get(this, 'Collector').field('drive', 'private_drive');\n    }),\n\n    descField: computed(function () {\n        return get(this, 'Collector').field('drive', 'description');\n    }),\n\n    actions: {\n        confirm() {\n            return get(this, 'toggleController').send('endDrive');\n        },\n\n        setRoute(value) {\n            return set(this, 'toggleController.openDrive.route', value);\n        },\n\n        privateDrive() {\n            this.toggleProperty('toggleController.openDrive.private_drive');\n            return false;\n        },\n\n        toggleRoute() {\n            this.toggleProperty('route');\n            later(\n                this,\n                () => document.getElementsByClassName('confirm-extra-route-textarea')[0].focus(),\n                500,\n            );\n            return false;\n        },\n\n        toggleComment() {\n            this.toggleProperty('commentToggled');\n            return false;\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"1x6NdPg2\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"drive-confirm-container \\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"isSafari\\\"]],\\\"isMobileSafari\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-circle-button\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"confirm-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.confirm.congratulations\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"km-input\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.confirm.distance_driven\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"distField\\\"]]],[[\\\"class\\\",\\\"model\\\"],[\\\"add-fields\\\",[24,[\\\"toggleController\\\",\\\"openDrive\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[22,\\\"km\\\"],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"toggleController\\\",\\\"showGauge\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"km-input\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.confirm.gauge_end\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"gaugeField\\\"]]],[[\\\"class\\\",\\\"model\\\"],[\\\"add-fields\\\",[24,[\\\"toggleController\\\",\\\"openDrive\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[22,\\\"km\\\"],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"toggleController\\\",\\\"showProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"km-input\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.confirm.project\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"projField\\\"]]],[[\\\"class\\\",\\\"model\\\"],[\\\"add-fields\\\",[24,[\\\"toggleController\\\",\\\"openDrive\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.drivinglog_private\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"km-input\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"privateDrive\\\"]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"glyphicon move \\\",[28,\\\"if\\\",[[24,[\\\"toggleController\\\",\\\"openDrive\\\",\\\"private_drive\\\"]],\\\"move-CheckedCheckbox\\\",\\\"move-UncheckedCheckbox\\\"],null]]]],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.private_drive\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra-buttons\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Route\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleRoute\\\"]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"route\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra-route\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/fields/textarea-field\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"bubbleChange\\\",\\\"model\\\"],[[24,[\\\"routeField\\\"]],\\\"add-fields confirm-extra-route-textarea\\\",\\\"setRoute\\\",[24,[\\\"toggleController\\\",\\\"openDrive\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.drivinglog_desc\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra-header\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Comments\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleComment\\\"]],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"commentToggled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra-route\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"descField\\\"]]],[[\\\"class\\\",\\\"model\\\"],[\\\"add-fields\\\",[24,[\\\"toggleController\\\",\\\"openDrive\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-buttons\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"toggleController\\\",\\\"openDrive\\\",\\\"hasDirtyAttributes\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"toggleController\\\",\\\"openDrive\\\",\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"confirm\\\"]],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.confirm.continue\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"route\\\"],[\\\"div\\\",\\\"drivinglog.toggle\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-UndoReturn\\\"],[8],[9],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.confirm.undo\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/drivinglog/toggle/confirm/template.hbs\"}});","import Controller from '@ember/controller';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { get, set, computed } from '@ember/object';\nimport { on } from '@ember/object/evented';\nimport { run } from '@ember/runloop';\nimport { isEmpty } from '@ember/utils';\n\nfunction whenAvailable(name, callback) {\n    var interval = 100; // ms\n    window.setTimeout(function () {\n        if (window[name]) {\n            callback(window[name]);\n        } else {\n            whenAvailable(name, callback);\n        }\n    }, interval);\n}\n\nconst DrivinglogToggleIndexController = Controller.extend(AuthenticatedRouteMixin, {\n    notifications: service(),\n    intl: service(),\n    gps_value: '',\n    zoomLevel: 15,\n    km: 'km',\n    refresh_available: false,\n    markers: null,\n    gps_error: '',\n    directionsDisplay: null,\n    directionsService: null,\n\n    drivinglog: alias('model'),\n\n    position: on('init', function () {\n        this.markers = [];\n        whenAvailable('google', () => {\n            this.directionsDisplay = new window.google.maps.DirectionsRenderer();\n            this.directionsService = new window.google.maps.DirectionsService();\n        });\n\n        if (navigator.geolocation) {\n            return navigator.geolocation.watchPosition(\n                (location) => {\n                    const loc = {};\n                    loc.latitude = location.coords.latitude;\n                    loc.longitude = location.coords.longitude;\n                    set(this, 'gps_value', JSON.stringify(loc));\n                    return set(this, 'gps_error', '');\n                },\n\n                function (error) {\n                    return set(\n                        this,\n                        'gps_error',\n                        'PositionError (' + error.code + '): ' + error.message,\n                    );\n                },\n            );\n        }\n    }),\n\n    positionChanged: computed('gps_value', 'map', function () {\n        if (isEmpty(get(this, 'distance'))) {\n            this.calculateDistance();\n            return false;\n        } else {\n            run.throttle(this, this.calculateDistance, 5000);\n            return true;\n        }\n    }),\n\n    showGauge: computed('openDrive.distance', function () {\n        if (get(this, 'openDrive.gauge_start')) {\n            const gauge_start = get(this, 'openDrive.gauge_start');\n            const dist = get(this, 'openDrive.distance');\n            let sum = dist * 1 + gauge_start * 1;\n            sum = Math.round(sum);\n            // eslint-disable-next-line ember/no-side-effects\n            set(this, 'openDrive.gauge_end', sum);\n            localStorage.setItem('drivinglog_gauge_last_end', sum);\n        }\n\n        return get(this, 'Collector').fieldExists('drive', 'gauge_start');\n    }),\n\n    gaugeField: computed('openDrive', 'openDrive.distance', function () {\n        if (localStorage.getItem('drivinglog_gauge_last_end')) {\n            // eslint-disable-next-line ember/no-side-effects\n            set(this, 'openDrive.gauge_start', localStorage.getItem('drivinglog_gauge_last_end'));\n        }\n        return get(this, 'Collector').field('drive', 'gauge_start');\n    }),\n\n    showProject: computed(function () {\n        return get(this, 'Collector').fieldExists('drive', 'project');\n    }),\n\n    showPrivate: computed(function () {\n        return get(this, 'Collector').fieldExists('drive', 'private');\n    }),\n\n    licenseField: computed(function () {\n        return get(this, 'Collector').field('drive', 'license_plate');\n    }),\n\n    projField: computed(function () {\n        return get(this, 'Collector').field('drive', 'project');\n    }),\n\n    actions: {\n        startDrive() {\n            const row = get(this, 'openDrive');\n            const date = moment().format('YYYY-MM-DD');\n            const starttime = moment().format('HH:mm');\n\n            set(row, 'starttime', starttime);\n            set(row, 'date', date);\n            set(row, 'validation', 'off');\n            set(row, 'location_start', get(this, 'gps_value'));\n            if (get(this, 'license_plate')) {\n                set(row, 'license_plate', get(this, 'license_plate'));\n            }\n\n            // eslint-disable-next-line ember/named-functions-in-promises\n            return row.save().then(() => {\n                return get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n                    autoClear: true,\n                });\n            });\n        },\n\n        confirmDrive() {\n            if (!get(this, 'openDrive')) {\n                return;\n            }\n            const row = get(this, 'openDrive');\n            const endtime = moment().format('HH:mm');\n\n            //some momentjs calculcation for drive hours\n            const end_m = moment();\n            const start_m = moment(get(row, 'date') + ' ' + get(row, 'starttime'));\n            const duration = moment.duration(end_m.diff(start_m));\n\n            set(row, 'endtime', endtime);\n            set(row, 'validation', 'off');\n            set(row, 'location_end', get(this, 'gps_value'));\n            set(row, 'distance', get(this, 'distance'));\n            set(row, 'drive_hours', duration.asHours());\n\n            if (get(this, 'license_plate')) {\n                set(row, 'license_plate', get(this, 'license_plate'));\n            }\n\n            if (get(this, 'route')) {\n                set(row, 'route', get(this, 'route'));\n            }\n\n            return this.transitionToRoute('drivinglog.toggle.confirm');\n        },\n\n        endDrive() {\n            if (!get(this, 'openDrive')) {\n                return;\n            }\n            const row = get(this, 'openDrive');\n\n            // eslint-disable-next-line ember/named-functions-in-promises\n            return row.save().then(() => {\n                get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n                    autoClear: true,\n                });\n\n                return this.transitionToRoute('drivinglog.toggle');\n            });\n        },\n\n        updateRoute() {\n            return this.calculateDistance();\n        },\n    },\n    calculateDistance() {\n        const map = get(this, 'map');\n\n        const start_location = JSON.parse(get(this, 'openDrive.location_start'));\n        const start = new window.google.maps.LatLng(\n            start_location.latitude,\n            +start_location.longitude,\n        );\n\n        const end_location = JSON.parse(get(this, 'gps_value'));\n        const end = new window.google.maps.LatLng(end_location.latitude, end_location.longitude);\n\n        for (let m of Array.from(get(this, 'markers'))) {\n            m.setMap(null);\n        }\n        set(this, 'markers', []);\n\n        get(this, 'directionsDisplay').setMap(map);\n\n        const request = {\n            origin: start,\n            destination: end,\n            travelMode: 'DRIVING',\n        };\n\n        return get(this, 'directionsService').route(request, (response, status) => {\n            if (status === 'OK') {\n                get(this, 'directionsDisplay').setDirections(response);\n                set(\n                    this,\n                    'route',\n                    response.routes[0].legs[0].start_address +\n                        ' - ' +\n                        response.routes[0].legs[0].end_address,\n                );\n                set(\n                    this,\n                    'distance',\n                    (response.routes[0].legs[0].distance.value / 1000).toFixed(1),\n                );\n            }\n        });\n    },\n});\n\nexport default DrivinglogToggleIndexController;\n","import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport Route from '@ember/routing/route';\nimport { get, set } from '@ember/object';\n\nexport default Route.extend(AuthenticatedRouteMixin, {\n    create_new: false,\n    model() {\n        this.create_new = true;\n        return this.store\n            .query('drive', { user: 'self', location_end: '(empty)' })\n            .then(this.onDriveQueried.bind(this));\n    },\n\n    setupController(controller, model) {\n        if (get(this, 'openDrive')) {\n            set(controller, 'openDrive', get(this, 'openDrive'));\n        }\n        if (get(this, 'newDrive')) {\n            set(controller, 'openDrive', get(this, 'newDrive'));\n        }\n        return set(controller, 'model', model);\n    },\n\n    resetController(controller, isExiting) {\n        this._super.apply(this, arguments);\n        if (isExiting) {\n            return set(controller, 'started_drive', false);\n        }\n    },\n    onDriveQueried(data) {\n        if (get(data, 'firstObject')) {\n            this.create_new = false;\n            set(this, 'openDrive', get(data, 'firstObject'));\n        }\n        if (this.create_new) {\n            const drive = this.store.createRecord('drive', {});\n            set(this, 'newDrive', drive);\n            get(data, 'content').push(drive);\n        }\n        return data;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"ViwmhLXL\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"drivetoggle-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"gps_value\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"openDrive\\\",\\\"location_start\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.toggle.end_drive\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"circle-button stop\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"confirmDrive\\\"]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Mileage button\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.toggle.start_drive\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"circle-button start\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"startDrive\\\"]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Mileage button\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"slim\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"openDrive\\\",\\\"location_start\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showGauge\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"km-input\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.toggle.gauge_start\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"gaugeField\\\"]]],[[\\\"class\\\",\\\"model\\\"],[\\\"add-fields\\\",[24,[\\\"openDrive\\\"]]]]],false],[0,\\\"\\\\n                            \\\"],[1,[22,\\\"km\\\"],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"slim\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n\\\\n                            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.toggle.project\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"projField\\\"]]],[[\\\"class\\\",\\\"model\\\"],[\\\"form-control add-fields\\\",[24,[\\\"openDrive\\\"]]]]],false],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"slim\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"drive.license_plate\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.toggle.license_plate\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"licenseField\\\"]]],[[\\\"model\\\"],[[24,[\\\"openDrive\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"slim\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"openDrive\\\",\\\"location_start\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"drivinglog.toggle.route_distance\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[22,\\\"distance\\\"],false],[1,[22,\\\"km\\\"],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"positionChanged\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"circle-button-small refresh pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"updateRoute\\\"]],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-refresh button-small\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"slim\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"openDrive\\\",\\\"location_start\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.toggle.your_current_route\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"gps-location-map\\\",null,[[\\\"value\\\",\\\"zoomLevel\\\",\\\"map\\\",\\\"markers\\\",\\\"skipPositionUpdate\\\"],[[24,[\\\"gps_value\\\"]],[24,[\\\"zoomLevel\\\"]],[24,[\\\"map\\\"]],[24,[\\\"markers\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.toggle.your_current_location\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"gps-location-map\\\",null,[[\\\"value\\\",\\\"map\\\",\\\"zoomLevel\\\"],[[24,[\\\"gps_value\\\"]],[24,[\\\"map\\\"]],[24,[\\\"zoomLevel\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.toggle.fetching_position\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"gps_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[1,[22,\\\"gps_error\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/drivinglog/toggle/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersAddController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nimport collector from '../../../classes/collector';\n\nimport config from '../../../config/environment';\n\nimport { t } from 'ember-intl';\n\nimport $ from 'jquery';\n\nEmployersAddController = GeneralAddController.extend({\n    session: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    notifications: Ember.inject.service(),\n    error: Ember.inject.service(),\n    intl: Em.inject.service(),\n    cc: Em.inject.service(),\n    VastuuGroup: Em.inject.service('vastuu-group'),\n    //    needs: 'employers/saved'\n    modalTitle: 'Vastuu group-raportti',\n    showInviteDialog: false,\n    messageButtonText: Em.computed(function () {\n        return this.get('intl').t('employer.tilaajavastuu_invite_button');\n    }),\n    tilaajavastuuText: Em.computed('session.currentUser.company', function () {\n        return this.get('intl').t('employer.invite_tilaajavastuu_email', {\n            company: this.get('session.currentUser.company'),\n        });\n    }),\n    tilaajavastuuHiddenAddition: Em.computed(function () {\n        return this.get('intl').t('employer.tilaajavastuu_invite_footer_text');\n    }),\n    vgIsDisabled: Em.computed(function () {\n        return this.get('Collector').testNeeds(['products.vg_reliable_partner_disabled']);\n    }),\n    //    special_disable: ['tv_status','date_checked','archive_code']\n    // Little häx for setting tv_status to ei_loydy before fetching\n    reportRead: t('employer.add.tv_report.read'),\n    setNotChecked: function () {\n        if (collector.getFormObject('employer.tv_status') && !this.get('vgIsDisabled')) {\n            this.set('model.tv_status', 'ei_loydy');\n            return this.set('pretext', this.get('intl').t('employer.add.pretext.check_status'));\n        }\n    }.observes('model'),\n    setParentEmployer: Em.observer('model', 'session.currentUser', function () {\n        var field, user;\n        field = collector.getFormObject('employer.parent');\n        if (field.features != null && field.features.do_not_preselect) {\n            return;\n        }\n        if (!this.get('model.isNew')) {\n            return;\n        }\n        if (collector.getFormObject('employer.parent') && this.get('session.currentUser')) {\n            user = this.store.query('user', {\n                id: this.get('session.currentUser.id'),\n                sideload: true,\n            });\n            return user.then(() => {\n                return this.set('model.parent', user.get('firstObject.employer'));\n            });\n        }\n    }),\n    setCustomization: Em.on('init', function () {\n        if (collector.getFormObject('employer.tv_status')) {\n            var customization = {\n                tv_status: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                date_checked: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                archive_code: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                emp_phone: {\n                    template: 'employers/add/emp_phone',\n                },\n                emp_id: {\n                    template: 'employers/add/emp_id',\n                },\n            };\n            return this.set('customization', customization);\n        }\n    }),\n    countryLists: Ember.inject.service(),\n    setCountryCode: function () {\n        var code, codes, codesByNumber, companyCountry, i, len, model, number, ref, userCountry;\n        model = this.get('model');\n        codes = this.get('countryLists.phoneList');\n        codesByNumber = codes.mapBy('number');\n        userCountry = this.get('session.currentUser.homecountry');\n        companyCountry = this.get('session.currentUser.company_info.country');\n        number = null;\n        if (\n            !model.get('emp_phone') ||\n            (((ref = model.get('emp_phone')), indexOf.call(codesByNumber, ref) >= 0) &&\n                !this.get('countryCodeSetManually'))\n        ) {\n            for (i = 0, len = codes.length; i < len; i++) {\n                code = codes[i];\n                if (code.id === userCountry) {\n                    number = code.number;\n                    break;\n                } else if (code.id === companyCountry) {\n                    number = code.number;\n                }\n            }\n            if (number) {\n                return model.set('emp_phone', number);\n            }\n        }\n    },\n    changeCountry: function (countrycode) {\n        this.set('countryCodeSetManually', true);\n        return this.set('model.emp_phone', countrycode);\n    },\n    actions: {\n        generalAddAction: function (type, param) {\n            if (type === 'getReliablePartnerData') {\n                return this.getReliablePartnerData();\n            }\n            if (type === 'changeCountry') {\n                return this.changeCountry(param);\n            }\n            if (type === 'setCountryCode') {\n                return this.setCountryCode();\n            }\n        },\n\n        /**\n         * Handles the \"I have read it\" action when user confirms they've reviewed the Reliable Partner report.\n         * This action saves the current date as the check date and optionally attaches\n         * the PDF report to the employer model before closing the report modal.\n         */\n        iHaveReadIt: function () {\n            const model = this.get('model');\n            const pdfReport = this.get('rp_pdf_report');\n\n            // Update the date when the report was checked\n            model.set('date_checked', moment().format('YYYY-MM-DD'));\n\n            // Attach PDF report to model if available so it gets saved with the employer\n            if (pdfReport) {\n                model.set('tv_pdf', [{\n                    name: `${model.get('name')} - Luotettava kumppani.pdf`,\n                    file: `data:application/pdf;base64,${pdfReport}`\n                }]);\n            }\n\n            // Close the report modal\n            this.set('tilaajavastuu_report', null);\n        },\n        messageButtonAction: function () {\n            this.set('showInviteDialog', true);\n            return false;\n        },\n        removeModal: function () {\n            return this.set('showInviteDialog', false);\n        },\n        sendInviteTilaajavastuuEmail: function () {\n            var promise, title;\n            this.get('notifications').success(this.get('intl').t('general.email_sent'), {\n                autoClear: true,\n            });\n            title = this.get('intl').t('employer.invite_tilaajavastuu_title');\n            promise = this.Collector.ttapi({\n                url: 'sendEmail',\n                data: {\n                    email: this.get('model.emp_email'),\n                    content:\n                        this.get('tilaajavastuuText') +\n                        '<br><br>' +\n                        this.get('tilaajavastuuHiddenAddition'),\n                    title: title,\n                },\n                method: 'post',\n            });\n            return promise.then((ret) => {\n                $('.modal').modal('hide');\n                return this.set('showInviteDialog', false);\n            });\n        },\n    },\n\n    /**\n     * Fetches and processes Reliable Partner (Luotettava Kumppani) data from VastuuGroup API.\n     * Validates the employer's business ID, retrieves their status report, and updates\n     * the UI accordingly with status indicators and optional PDF report.\n     *\n     * @async\n     * @returns {Promise<void>}\n     */\n    getReliablePartnerData: async function () {\n        if (this.get('vgIsDisabled')) {\n            return;\n        }\n        const empId = this.get('model.emp_id');\n\n        // Exit early if no business ID is provided\n        if (Ember.isEmpty(empId)) {\n            return;\n        }\n\n        this.setProperties({\n            showMessageButton: false,\n            loading: true\n        });\n\n        try {\n            const response = await this.VastuuGroup.getReliablePartnerStatusAndReport(empId);\n            if (response?.success && response?.data) {\n                this.handleSuccessfulResponse(response.data);\n            } else {\n                this.handleNotFoundResponse();\n            }\n        } catch (error) {\n            this.handleErrorResponse(error);\n        } finally {\n            this.set('loading', false);\n        }\n    },\n\n    handleSuccessfulResponse(data) {\n        const model = this.get('model');\n        const intl = this.get('intl');\n\n        // Store PDF report for later use\n        this.set('rp_pdf_report', data.pdf_report);\n\n        // Update model\n        model.set('tv_status', data.status.toLowerCase());\n        model.set('name', data.company_name || model.get('name'));\n\n        // Clear validation errors for name and country\n        this.clearModelErrors(['name', 'emp_country']);\n\n        // Set appropriate alert style based on status\n        this.setMessageStatusByStatus(data.status);\n\n        // Build and display status message\n        const statusDescription = data.description || intl.t(`employer.vg_status.description.${data.status.toLowerCase()}`);\n        const message = this.buildStatusMessage(data.status, statusDescription);\n        this.set('message', message);\n\n        // Show PDF report if available\n        if (data.pdf_report) {\n            this.showTVReport(data.pdf_report);\n        }\n    },\n\n    handleNotFoundResponse() {\n        const intl = this.get('intl');\n        const model = this.get('model');\n\n        model.tv_status = 'ei_loydy';\n\n        this.setProperties({\n            messageStatus: 'alert-danger',\n            showMessageButton: true,\n            message: Ember.String.htmlSafe(\n                '<div>' +\n                    '<h3><b>' + intl.t('employer.add.status.notfound') + '</b></h3>' +\n                    intl.t('employer.add.status.marketing') +\n                '</div>'\n            )\n        });\n    },\n\n    handleErrorResponse(error) {\n        const intl = this.get('intl');\n        const model = this.get('model');\n\n        this.error.notify(error);\n\n        model.tv_status = 'ei_loydy';\n\n        this.setProperties({\n            messageStatus: 'alert-danger',\n            message: Ember.String.htmlSafe(\n                `<div><h3><b>${intl.t('employer.add.status.failed')}</b></h3></div>`\n            )\n        });\n    },\n\n    clearModelErrors(errorFields) {\n        const modelErrors = this.get('errors');\n        if (!modelErrors) return;\n\n        errorFields.forEach(field => {\n            if (modelErrors.includes(field)) {\n                modelErrors.removeObject(field);\n            }\n        });\n    },\n\n    setMessageStatusByStatus(status) {\n        const statusMap = {\n            'Ok': 'alert-success',\n            'Seis': 'alert-danger'\n        };\n\n        this.set('messageStatus', statusMap[status] || 'alert-warning');\n    },\n\n    buildStatusMessage(status, description) {\n        const intl = this.get('intl');\n\n        return Ember.String.htmlSafe(\n            '<div>' +\n                '<h3>' + intl.t('employer.add.status') + ': <b>' + status + '</b></h3>' +\n                '<h4 style=\"padding-left: 0.7em;\">' + description + '</h4>' +\n            '</div>'\n        );\n    },\n\n    showTVReport(base64Report) {\n        if (!base64Report) return;\n\n        this.set('loadingTvReport', true);\n        const report = this.VastuuGroup.getReliablePartnerPdfLink(base64Report);\n        this.setProperties({\n            tilaajavastuu_report: report,\n            loadingTvReport: false\n        });\n    },\n});\n\nexport default EmployersAddController;\n","export default Ember.HTMLBars.template({\"id\":\"mS+9JBcd\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"name\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"emp_id\\\"]],\\\"emp_id\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-2\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"disabled\\\",[28,\\\"not\\\",[[28,\\\"needs\\\",[\\\"!products.vg_reliable_partner_disabled\\\"],null]],null]],[12,\\\"title\\\",[28,\\\"if\\\",[[28,\\\"not\\\",[[28,\\\"needs\\\",[\\\"!products.vg_reliable_partner_disabled\\\"],null]],null],[28,\\\"t\\\",[\\\"employer.actions.vg_disabled_tooltip\\\"],null]],null]],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"getReliablePartnerData\\\"]],[8],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"employer.get_tilaajavastuu_info\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/add/emp_id/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"PYLDalK2\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-phone-field\\\"],[8],[0,\\\"\\\\n    \\\"],[5,\\\"bs-dropdown\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"button\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-toggle form-control add-fields\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[28,\\\"country-flag\\\",[[24,[\\\"model\\\",\\\"emp_phone\\\"]],\\\"number\\\"],null],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+358\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-fi\\\"],[8],[9],[0,\\\" +358\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+46\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-se\\\"],[8],[9],[0,\\\" +46\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+371\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-lv\\\"],[8],[9],[0,\\\" +371\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+372\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-ee\\\"],[8],[9],[0,\\\" +372\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+48\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-pl\\\"],[8],[9],[0,\\\" +48\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+44\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-gb\\\"],[8],[9],[0,\\\" +44\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+33\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-fr\\\"],[8],[9],[0,\\\" +33\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+36\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-hu\\\"],[8],[9],[0,\\\" +36\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+34\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-es\\\"],[8],[9],[0,\\\" +34\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+49\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-de\\\"],[8],[9],[0,\\\" +49\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+31\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-nl\\\"],[8],[9],[0,\\\" +31\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+47\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-no\\\"],[8],[9],[0,\\\" +47\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+370\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-lt\\\"],[8],[9],[0,\\\" +370\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+1\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-us\\\"],[8],[9],[0,\\\" +1\\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\",\\\"focus-in\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"field\\\",\\\"ext\\\"]],[24,[\\\"placeholder\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"setCountryCode\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/add/emp_phone/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nEmployersAddRoute = GeneralAddRoute.extend({\n    modelName: 'employer',\n    controllerName: 'employers.add',\n    savedRoute: 'employers.saved',\n    resetController: function (controller, isExiting, transition) {\n        this._super(controller, isExiting, transition);\n        if (isExiting) {\n            controller.set('tilaajavastuu_report', false);\n            return controller.set('message', null);\n        }\n    },\n});\n\nexport default EmployersAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Usj0Yapj\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\"],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"tilaajavastuu_report\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"employers/add/tilaajavastuu\\\",[],[[\\\"@modalTitle\\\",\\\"@loadingTvReport\\\",\\\"@tilaajavastuu_report\\\",\\\"@reportRead\\\",\\\"@iHaveReadIt\\\",\\\"@message\\\"],[[23,0,[\\\"modalTitle\\\"]],[23,0,[\\\"loadingTvReport\\\"]],[23,0,[\\\"tilaajavastuu_report\\\"]],[23,0,[\\\"reportRead\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"iHaveReadIt\\\"],null],[23,0,[\\\"message\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHidden\\\"],[[23,0,[\\\"showInviteDialog\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showInviteDialog\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"\\\\n      \\\"],[6,[23,1,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"modal-title\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"employer.tilaajavastuu_invite_title\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"employer.tilaajavastuu_email_recipent\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control add-fields inline-edit\\\",[24,[\\\"model\\\",\\\"emp_email\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"employer.tilaajavastuu_email_text\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\"],[\\\"3\\\",\\\"form-control add-fields inline-edit\\\",\\\"field\\\",\\\"\\\",[24,[\\\"tilaajavastuuText\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"default\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showInviteDialog\\\"]]],null],false],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"modal.clear\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"primary\\\",[28,\\\"action\\\",[[23,0,[]],\\\"sendInviteTilaajavastuuEmail\\\"],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"modal.ok\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/add/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"2wVV2qca\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\",\\\"@iHaveReadIt\\\",\\\"@reportRead\\\",\\\"@message\\\",\\\"@tilaajavastuu_report\\\",\\\"@modalTitle\\\",\\\"@loadingTvReport\\\"],\\\"statements\\\":[[5,\\\"bs-modal\\\",[],[[\\\"@onHidden\\\",\\\"@backdropClose\\\"],[[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,5,[]]],null],false],null],false]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[23,6,[]],false],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,7,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n            \\\"],[1,[23,5,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[23,7,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,[23,1,[\\\"footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"primary\\\",[23,2,[]]]],{\\\"statements\\\":[[1,[23,3,[]],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/add/tilaajavastuu/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/check/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersCheckController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport config from '../../../config/environment';\n\nEmployersCheckController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    indexController: Ember.inject.controller('employers.index'),\n    vastuuGroup: Ember.inject.service('vastuu-group'),\n    settings: Ember.computed.alias('indexController.settings'),\n    showLoader: Ember.computed.alias('indexController.showLoader'),\n    form: 'employer',\n    showColumns: ['name', 'emp_id', 'tv_status', 'tv_pdf', 'date_checked'],\n    queryParams: ['page', 'q'],\n    filteredEmployers: Ember.computed(function () {\n        return {\n            tv_status: '!ok',\n        };\n    }),\n    formatter: function (column, value, scope, formatted) {\n        if (column === 'tv_status') {\n            if (value && value !== 'ei_loydy') {\n                return new Ember.String.htmlSafe(\n                    '<img src=\"' +\n                        config.APP.CDN_URL +\n                        '/images/tv' +\n                        value +\n                        '.png\" class=\"report-img\" title=\"' +\n                        formatted +\n                        '\">',\n                );\n            } else {\n                return formatted;\n            }\n        }\n        return false;\n    },\n    actions: {\n        updateReliablePartnerData: function (items) {\n            this.get('indexController').syncReliablePartnerData(items)\n        },\n        transitionToEditRoute: function (row) {\n            return this.transitionToRoute('employers.edit', row);\n        },\n    },\n});\n\nexport default EmployersCheckController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/check/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersCheckRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nEmployersCheckRoute = GeneralReportRoute.extend({\n    flags: Ember.inject.service(),\n    form: 'employer',\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        if (\n            !this.get('flags').test('form-report-employers') &&\n            !this.get('flags').test('ember-movenium-form-report-employers')\n        ) {\n            params = this._super(params);\n            params.sideload = true;\n            params.tv_status = '!ok';\n            return this.store.query('employer', params);\n        }\n    },\n});\n\nexport default EmployersCheckRoute;\n","export default Ember.HTMLBars.template({\"id\":\"WPwhRzGF\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"employer.check.description\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"employer-report-loading-overlay\\\"],[8],[0,\\\" \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filter\\\",\\\"@showFilters\\\",\\\"@localStorageKey\\\"],[\\\"employer\\\",[28,\\\"hash\\\",null,[[\\\"tv_status\\\"],[\\\"!ok\\\"]]],\\\" \\\",\\\"employer_check\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.vg_reliable_partner_disabled\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,4,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"updateReliablePartnerData\\\",[23,2,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"employer.actions.tv_report_pdf\\\"],null],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/check/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/edit/add-file/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersAddFileController;\n\nimport Ember from 'ember';\n\nEmployersAddFileController = Ember.Controller.extend();\n\nexport default EmployersAddFileController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/edit/add-file/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersEditAddFileRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nEmployersEditAddFileRoute = GeneralAddRoute.extend({\n    modelName: 'employerfile',\n    afterSave: Ember.computed('form', function () {\n        return {\n            route: 'employers.edit.employer-files',\n            params: this.modelFor('employers.edit').get('id'),\n        };\n    }),\n    model: function (params) {\n        var employer;\n        employer = this.modelFor('employers.edit');\n        return this.store.createRecord('employerfile', {\n            employer: employer,\n        });\n    },\n});\n\nexport default EmployersEditAddFileRoute;\n","export default Ember.HTMLBars.template({\"id\":\"xZQ84iK/\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/edit/add-file/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EditController;\n\nimport Ember from 'ember';\n\nimport AddController from '../add/controller';\n\nimport collector from '../../../classes/collector';\n\nEditController = AddController.extend({\n    setNotChecked: null,\n    Collector: Ember.inject.service('collector-service'),\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n    subMenus: Ember.computed(function () {\n        var c, subMenus;\n        c = this.get('Collector');\n        subMenus = [\n            {\n                link: 'employers.edit.index',\n                text: 'menu.edit_employer',\n            },\n            {\n                link: 'employers.edit.employer-files',\n                text: 'menu.employer-files',\n                needs: ['employerfile'],\n            },\n        ];\n        return subMenus.filter(function (item) {\n            if (item.needs) {\n                return c.testNeeds(item.needs);\n            }\n            return true;\n        });\n    }),\n});\n\nexport default EditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/edit/employer-files/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersViewEmployerFileController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nEmployersViewEmployerFileController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    employerFilesObserver: function () {\n        return this.set('page', 1);\n    }.observes('employerfile'),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideEdit: true,\n            hideHistory: true,\n        }),\n    }),\n    form: 'employerfile',\n    showColumns: ['description', 'file'],\n    cancelRoute: 'employers.employerfiles',\n    queryParams: ['row_info_status'],\n    row_info_status: null,\n    link: Ember.computed(function () {\n        return {\n            link: ['employers.edit.add-file'],\n            translated: this.get('intl').t('menu.add_employer_file'),\n        };\n    }),\n});\n\nexport default EmployersViewEmployerFileController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/edit/employer-files/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersEditEmployerFilesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nEmployersEditEmployerFilesRoute = GeneralReportRoute.extend({\n    Collector: Ember.inject.service('collector-service'),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var employer;\n        params = this._super(params);\n        employer = this.modelFor('employers.edit');\n        params['employer'] = employer.get('id');\n        return this.store.query('employerfile', params);\n    },\n});\n\nexport default EmployersEditEmployerFilesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"1MTFq3wi\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"params\\\"],[[24,[\\\"link\\\",\\\"link\\\"]]]],{\\\"statements\\\":[[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary wide-button\\\"],[8],[1,[24,[\\\"link\\\",\\\"translated\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"formatter\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"formatter\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/edit/employer-files/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/edit/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersEditIndexController;\n\nimport Ember from 'ember';\n\nimport AddController from '../add/controller';\n\nimport collector from '../../../classes/collector';\n\nEmployersEditIndexController = AddController.extend({\n    setNotChecked: null,\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n    setCustomization: Em.on('init', function () {\n        if (collector.getFormObject('employer.tv_status')) {\n            var customization = {\n                tv_status: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                date_checked: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                archive_code: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                emp_id: {\n                    template: 'employers/add/emp_id',\n                },\n            };\n            return this.set('customization', customization);\n        }\n    }),\n});\n\nexport default EmployersEditIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/edit/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersEditIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nEmployersEditIndexRoute = GeneralAddRoute.extend({\n    modelName: 'employer',\n    controllerName: 'employers/edit',\n    edit: true,\n    model: function () {\n        return this.modelFor('employers.edit');\n    },\n    afterSave: 'employers',\n    resetController: function (controller, isExiting, transition) {\n        this._super(controller, isExiting, transition);\n        if (isExiting) {\n            controller.set('tilaajavastuu_report', false);\n            return controller.set('message', null);\n        }\n    },\n});\n\nexport default EmployersEditIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"PGK2gc7s\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"tilaajavastuu_report\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[5,\\\"employers/add/tilaajavastuu\\\",[],[[\\\"@modalTitle\\\",\\\"@loadingTvReport\\\",\\\"@tilaajavastuu_report\\\",\\\"@reportRead\\\",\\\"@iHaveReadIt\\\",\\\"@message\\\"],[[23,0,[\\\"modalTitle\\\"]],[23,0,[\\\"loadingTvReport\\\"]],[23,0,[\\\"tilaajavastuu_report\\\"]],[23,0,[\\\"reportRead\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"iHaveReadIt\\\"],null],[23,0,[\\\"message\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/edit/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nEmployersEditRoute = GeneralAddRoute.extend({\n    modelName: 'employer',\n    controllerName: 'employers/edit',\n    edit: true,\n    //    model: (params) ->\n    //        @store.findRecord(@get('modelName'), params.id)\n    afterSave: 'employers',\n    resetController: function (controller, isExiting, transition) {\n        this._super(controller, isExiting, transition);\n        if (isExiting) {\n            controller.set('tilaajavastuu_report', false);\n            return controller.set('message', null);\n        }\n    },\n});\n\nexport default EmployersEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"k7MHK+2D\",\"block\":\"{\\\"symbols\\\":[\\\"sublink\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-fluid\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-6 col-md-6 col-sm-6 col-xs-8\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[24,[\\\"model\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"subMenus\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subMenus\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"div\\\",\\\"submenu-item\\\",[23,1,[\\\"link\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersHistoryRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nEmployersHistoryRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default EmployersHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"HJLgiYmn\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"employer\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/history/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/inactive/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersInactiveController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nEmployersInactiveController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    form: 'employer',\n    showColumns: ['emp_id', 'name'],\n    queryParams: ['page', 'q'],\n    data: Em.computed('model.[]', function () {\n        var formatted_rows;\n        if (!this.get('model')) {\n            return;\n        }\n        formatted_rows = Em.A([]);\n        this.get('model').forEach(function (row) {\n            return formatted_rows.push(Ember.Object.create(row));\n        });\n        return formatted_rows;\n    }),\n    rowActions: Em.computed(function () {\n        var arr;\n        return (arr = [\n            {\n                action: 'removeRow',\n                icon: 'move move-Delete',\n                text: this.get('intl').t('report.delete_rows'),\n            },\n        ]);\n    }),\n    actions: {\n        catchActions: function (action, params) {\n            return this.send(action, params);\n        },\n        removeRow: function (row) {\n            var self;\n            self = this;\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    var emp;\n                    if (con) {\n                        this.get('data').removeObject(row);\n                        emp = this.get('store').peekRecord('employer', row.id);\n                        return emp.destroyRecord();\n                    }\n                });\n        },\n    },\n});\n\nexport default EmployersInactiveController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/inactive/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersInactiveRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nEmployersInactiveRoute = GeneralReportRoute.extend({\n    Collector: Ember.inject.service('collector-service'),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var c;\n        c = this.get('Collector');\n        return c\n            .ttapi({\n                url: 'inactive_employers',\n            })\n            .then((data) => {\n                var records;\n                this.store.pushPayload('employer', data);\n                records = Ember.A([]);\n                if (data.employers) {\n                    data.employers.forEach((employer) => {\n                        return records.pushObject(this.store.peekRecord('employer', employer.id));\n                    });\n                }\n                return data.employers;\n            });\n    },\n});\n\nexport default EmployersInactiveRoute;\n","export default Ember.HTMLBars.template({\"id\":\"+TTOudag\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"employers.report.inactive_employers\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"data\\\",\\\"translationPrefix\\\",\\\"rowActions\\\",\\\"bubbleActions\\\"],[[24,[\\\"showColumns\\\"]],[24,[\\\"data\\\"]],\\\"report.employer\\\",[24,[\\\"rowActions\\\"]],\\\"catchActions\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/inactive/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport config from '../../../config/environment';\n\nEmployersIndexController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    flags: Ember.inject.service(),\n    cc: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    vastuuGroup: Ember.inject.service('vastuu-group'),\n    error: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    session: Ember.inject.service(),\n    form: 'employer',\n    showColumns: [\n        'name',\n        'emp_id',\n        'tv_status',\n        'tv_pdf',\n        'date_checked',\n        'parent',\n        'emp_users_given',\n        'emp_email',\n        'emp_phone',\n    ],\n    queryParams: ['page', 'q', 'emp_users_given', 'parent'],\n    emp_users_given: null,\n    parent: null,\n    showLoader: false,\n    init_functions: function () {\n        if (\n            this.get('flags').test('form-report-employers') ||\n            this.get('flags').test('ember-movenium-form-report-employers')\n        ) {\n            return null;\n        } else {\n            return this._super();\n        }\n    },\n    emp_users_given_options: Ember.computed(function () {\n        return [\n            {\n                id: '1',\n                name: this.get('intl').t('employer.emp_users_given.1'),\n            },\n            {\n                id: '2',\n                name: this.get('intl').t('employer.emp_users_given.2'),\n            },\n            {\n                id: '3',\n                name: this.get('intl').t('employer.emp_users_given.3'),\n            },\n        ];\n    }),\n    autoChecked: Ember.computed(function () {\n        if (!this.get('Collector').testNeeds(['employer.tv_status'])) {\n            return null;\n        }\n        return moment().startOf('month').format('L');\n    }),\n    filters: Ember.computed(function () {\n        var prompt_text;\n        prompt_text = this.get('intl').t('general.select.emp_users_given');\n        return Em.A([\n            Em.Object.create({\n                type: 'dropdown_values',\n                field: 'emp_users_given',\n                prompt: prompt_text,\n                options: [\n                    {\n                        id: '1',\n                        value: this.get('intl').t('employer.emp_users_given.1'),\n                    },\n                    {\n                        id: '2',\n                        value: this.get('intl').t('employer.emp_users_given.2'),\n                    },\n                    {\n                        id: '3',\n                        value: this.get('intl').t('employer.emp_users_given.3'),\n                    },\n                ],\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n        ]);\n    }),\n    settings: Em.computed(function () {\n        var _self, c, ret;\n        _self = this;\n        c = this.get('Collector');\n        ret = Em.Object.create({});\n        ret.set('massedit', true);\n        if (c.fieldExists('employer', 'tv_status')) {\n            ret.set('rowActions', [\n                {\n                    text: 'employer.actions.tv_report_pdf',\n                    action: function (self, items) {\n                        return _self.send('updateReliablePartnerData', items);\n                    },\n                },\n            ]);\n        }\n        return ret;\n    }),\n    cdn_url: Em.computed(function () {\n        return config.APP.CDN_URL;\n    }),\n    syncReliablePartnerData: async function (items) {\n        if (!this.get('Collector').testNeeds(['!products.vg_reliable_partner_disabled'])) {\n            return;\n        }\n        try {\n            this.set('showLoader', true);\n\n            // Extract necessary fields for the batch endpoint\n            const employers = items.map(item => ({\n                id: item.get('id'),\n                emp_id: item.get('emp_id'),\n                name: item.get('name'),\n                tv_status: item.get('tv_status')\n            })).filter(emp => emp.id && emp.emp_id);\n\n            if (employers.length === 0) {\n                this.notifications.warning(this.intl.t('employer.no_valid_employers'));\n                return;\n            }\n\n            // Call the batch update method\n            const response = await this.vastuuGroup.updateReliablePartnerStatusesAndReports(employers);\n\n            // additional handling after batch update\n            if (response?.success) {\n                // Refresh the items to reflect updated data\n                const ids = items.mapBy('id').join(',');\n                if (ids) await this.store.query('employer', { id: ids });\n\n                this.notifications.success(this.intl.t('employer.tv_status_updated_successfully'), { autoClear: true });\n            }\n        } catch (error) {\n            this.error.notify(error);\n        } finally {\n            this.set('showLoader', false);\n        }\n    },\n\n    showSaveErrorNotification: async function(error, row) {\n        const errorMessage = await this.error.toStringAsyncHTML(error) || 'Unknown error';\n        const prefix = this.intl.t('general.error_prefix');\n        const rowIdentifier = `${row.name || ''} - ${row.emp_id || ''}`;\n\n        const fullMessage = `${prefix} ${rowIdentifier}: ${errorMessage}`;\n\n        this.notifications.error(fullMessage);\n    },\n\n    formatter: function (column, value, scope, formatted) {\n        if (column === 'tv_status') {\n            if (value && value !== 'ei_loydy') {\n                return new Ember.String.htmlSafe(\n                    '<img src=\"' +\n                        config.APP.CDN_URL +\n                        '/images/tv' +\n                        value +\n                        '.png\" class=\"report-img\" title=\"' +\n                        formatted +\n                        '\">',\n                );\n            } else {\n                return formatted;\n            }\n        }\n        return false;\n    },\n    actions: {\n        transitionToEditRoute: function (row) {\n            return this.transitionToRoute('employers.edit', row);\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        updateReliablePartnerData: async function (items) {\n            this.syncReliablePartnerData(items);\n        },\n        forceFetchTvPdf: async function (items) {\n            const validItems = items.filter(row => row.get('emp_id'));\n\n            // Wait for all PDF updates to complete\n            await Promise.all(validItems.map(row => this.vastuuGroup.updateReliablePartnerPdfReport(row)));\n\n            // Update the rows to reflect the new PDF reports\n            const ids = validItems.mapBy('id').join(',');\n            if (ids) await this.store.query('employer', { id: ids });\n        },\n    },\n});\n\nexport default EmployersIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nEmployersIndexRoute = GeneralReportRoute.extend({\n    flags: Ember.inject.service(),\n    form: 'employer',\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n        emp_users_given: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        if (\n            !this.get('flags').test('form-report-employers') &&\n            !this.get('flags').test('ember-movenium-form-report-employers')\n        ) {\n            params = this._super(params);\n            params.sideload = true;\n            return this.store.query('employer', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('employers.index').set('qParams', params);\n        }\n    },\n});\n\nexport default EmployersIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"zlhULIQM\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"field\\\",\\\"value\\\",\\\"unformatted\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"employer-report-loading-overlay\\\"],[8],[0,\\\" \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"autoChecked\\\"]],[28,\\\"needs\\\",[\\\"!products.vg_reliable_partner_disabled\\\"],null]],null]],null,{\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"employer.report_header_text\\\"],[[\\\"date\\\"],[[24,[\\\"autoChecked\\\"]]]]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@filterChangeAction\\\"],[\\\"employer\\\",[22,\\\"qParams\\\"],\\\"q,emp_users_given,parent\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\",\\\"@formatCells\\\"],[true,true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.vg_reliable_partner_disabled\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,7,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"updateReliablePartnerData\\\",[23,2,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"employer.actions.tv_report_pdf\\\"],null],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[6,[23,7,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/employers/edit/\\\"]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n            \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"transitionToEditRoute\\\"],null],\\\"remove,history,overview,edit\\\"]]],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[23,3,[]],\\\"tv_status\\\"],null],[28,\\\"eq\\\",[[23,5,[]],\\\"selvitä\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"img\\\",true],[11,\\\"src\\\",[29,[[22,\\\"cdn_url\\\"],\\\"/images/tvselvita.png\\\"]]],[10,\\\"class\\\",\\\"report-img\\\"],[11,\\\"title\\\",[29,[[23,4,[]]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[23,3,[]],\\\"tv_status\\\"],null],[28,\\\"not-eq\\\",[[23,5,[]],\\\"ei_loydy\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"img\\\",true],[11,\\\"src\\\",[29,[[22,\\\"cdn_url\\\"],\\\"/images/tv\\\",[23,5,[]],\\\".png\\\"]]],[10,\\\"class\\\",\\\"report-img\\\"],[11,\\\"title\\\",[29,[[23,4,[]]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[3,4,5]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/index/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"6E0UglSF\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/removed/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersRemovedController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nEmployersRemovedController = GeneralReportController.extend({\n    flags: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    form: 'employer',\n    showColumns: [\n        'name',\n        'emp_id',\n        'tv_status',\n        'tv_pdf',\n        'date_checked',\n        'parent',\n        'emp_users_given',\n        'emp_email',\n        'emp_phone',\n    ],\n    queryParams: ['page', 'q', 'emp_users_given', 'parent'],\n    init_functions: function () {\n        if (\n            this.get('flags').test('form-report-employers') ||\n            this.get('flags').test('ember-movenium-form-report-employers')\n        ) {\n            return null;\n        } else {\n            return this._super();\n        }\n    },\n    filters: Ember.computed(function () {\n        var prompt_text;\n        prompt_text = this.get('intl').t('general.select.emp_users_given');\n        return Em.A([\n            Em.Object.create({\n                type: 'dropdown_values',\n                field: 'emp_users_given',\n                prompt: prompt_text,\n                options: [\n                    {\n                        id: '1',\n                        value: this.get('intl').t('employer.emp_users_given.1'),\n                    },\n                    {\n                        id: '2',\n                        value: this.get('intl').t('employer.emp_users_given.2'),\n                    },\n                    {\n                        id: '3',\n                        value: this.get('intl').t('employer.emp_users_given.3'),\n                    },\n                ],\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n        ]);\n    }),\n    row_info_status: 'removed',\n    settings: Em.Object.create({\n        showStatus: 'removed',\n        rowActions: [],\n    }),\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n    },\n});\n\nexport default EmployersRemovedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/removed/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersRemovedRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nUsersRemovedRoute = GeneralReportRoute.extend({\n    flags: Ember.inject.service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n        emp_users_given: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        if (\n            !this.get('flags').test('form-report-employers') &&\n            !this.get('flags').test('ember-movenium-form-report-employers')\n        ) {\n            params = this._super(params);\n            params.sideload = true;\n            return this.store.query('employer', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('employers.removed').set('qParams', params);\n        }\n    },\n});\n\nexport default UsersRemovedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"IwG6Q4ML\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"tableAction\\\",\\\"more\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"settings\\\",\\\"showStatus\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"employers.report.removed_employers\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-employers\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showRemoved\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@filterChangeAction\\\",\\\"@localStorageKey\\\"],[\\\"employer\\\",true,[22,\\\"qParams\\\"],\\\"q,emp_users_given\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null],\\\"removed_employer\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,5,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,8,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n             \\\"],[6,[23,6,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"form-report-employers\\\"],null]],null,{\\\"statements\\\":[[4,\\\"collector/form-report\\\",null,[[\\\"filterByValues\\\",\\\"filter\\\",\\\"form\\\",\\\"localStorageKey\\\",\\\"showRemoved\\\"],[[24,[\\\"qParams\\\"]],[24,[\\\"filteredEmployers\\\"]],\\\"employer\\\",\\\"removed_employer\\\",true]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"filters\\\"]],\\\"expected `report.filters` to be a contextual component but found a string. Did you mean `(component report.filters)`? ('tt4/pods/employers/removed/template.hbs' @ L30:C10) \\\"],null]],[[\\\"showColumns\\\",\\\"filterChangeAction\\\"],[\\\"q,emp_users_given\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/employers/removed/template.hbs' @ L31:C11) \\\"],null]],[[\\\"selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,2,[\\\"no-content\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"actions\\\"]],\\\"expected `table.actions` to be a contextual component but found a string. Did you mean `(component table.actions)`? ('tt4/pods/employers/removed/template.hbs' @ L33:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"more\\\"]],\\\"expected `tableAction.more` to be a contextual component but found a string. Did you mean `(component tableAction.more)`? ('tt4/pods/employers/removed/template.hbs' @ L34:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,4,[\\\"lock\\\"]],false],[0,\\\"\\\\n                    \\\"],[1,[23,4,[\\\"massedit\\\"]],false],[0,\\\"\\\\n                    \\\"],[1,[23,4,[\\\"restore\\\"]],false],[0,\\\"\\\\n                    \\\"],[1,[23,4,[\\\"qrCode\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                \\\"],[1,[23,3,[\\\"inlineEdit\\\"]],false],[0,\\\"\\\\n                \\\"],[1,[23,3,[\\\"pdfExport\\\"]],false],[0,\\\"\\\\n                \\\"],[1,[23,3,[\\\"columnSelector\\\"]],false],[0,\\\"\\\\n                \\\"],[1,[23,3,[\\\"exportMore\\\"]],false],[0,\\\"\\\\n                \\\"],[1,[23,3,[\\\"refresh\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"            \\\"],[1,[23,2,[\\\"rowActions\\\"]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"employer\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",\\\"employer\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/removed/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nEmployersRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default EmployersRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/saved/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSavedController;\n\nimport Ember from 'ember';\n\nimport savedController from '../../../controllers/saved';\n\nUsersSavedController = savedController.extend({\n    //    needs: 'employers/add'\n    actions: {\n        addUser: function () {\n            var user;\n            //            user = @get 'model.id'\n            //            controller = @get 'controllers.orientations/add'\n            //            controller.set 'users', Em.A([parseInt(user,10)])\n            user = this.store.peekRecord('user', null);\n            if (!user) {\n                user = this.store.createRecord('user');\n            }\n            user.set('employer', this.get('model'));\n            return this.transitionToRoute('users.add');\n        },\n    },\n});\n\nexport default UsersSavedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/saved/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSavedRoute;\n\nimport Ember from 'ember';\n\nimport SavedRoute from '../../../routes/saved';\n\nUsersSavedRoute = SavedRoute.extend({\n    templateName: 'employers.saved',\n});\n\nexport default UsersSavedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"u32VKIG8\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/saved\\\",[]],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-lg btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addUser\\\"]],[8],[1,[28,\\\"t\\\",[\\\"users.add_to_employer\\\"],null],false],[9],[0,\\\"\\\\n        \\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/saved/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/tree/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersTreeRoute;\n\nimport Ember from 'ember';\n\nEmployersTreeRoute = Ember.Route.extend({\n    model: function (params) {\n        var self;\n        self = this;\n        return this.Collector.ajax({\n            url: 'employers',\n            data: {\n                parent: '!(empty)',\n                limit: 'all',\n            },\n        }).then(function (data) {\n            var gdata, promarr;\n            promarr = [];\n            gdata = [['Name', 'Parent']];\n            data.employers.forEach(function (row) {\n                return promarr.push(\n                    new Em.RSVP.Promise(function (resolve, reject) {\n                        if (row.parent) {\n                            return self.store\n                                .findRecord('employer', row.parent)\n                                .then(function (parent) {\n                                    gdata.push([\n                                        row.name.toString(),\n                                        parent.get('name').toString(),\n                                    ]);\n                                    return resolve();\n                                });\n                        } else {\n                            gdata.pushObject([row.name.toString(), '']);\n                            return resolve();\n                        }\n                    }),\n                );\n            });\n            return Em.RSVP.Promise.all(promarr).then(function () {\n                return gdata;\n            });\n        });\n    },\n});\n\nexport default EmployersTreeRoute;\n","export default Ember.HTMLBars.template({\"id\":\"w7bA8lN/\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"style\\\",\\\"overflow-x:auto\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\"],[[24,[\\\"model\\\"]],\\\"tree\\\"]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/tree/template.hbs\"}});","import Controller from '@ember/controller';\nimport { later } from '@ember/runloop';\nimport { configureScope, lastEventId } from '@sentry/browser';\nimport { computed, set, get } from '@ember/object';\nimport Ember from 'ember';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { isArray } from '@ember/array';\n\nexport default Controller.extend({\n    intl: service(),\n    errorService: service('error'),\n    init() {\n        this._super();\n\n        if (!Modernizr.localstorage) {\n            set(this, 'localStorageError', true);\n        }\n        this.getEventId();\n    },\n    error: alias('model'),\n    parsedError: computed('model', function () {\n        const error = get(this, 'error');\n        const intl = get(this, 'intl');\n        if (get(error, 'errors.error')) {\n            if (intl.exists('general.error.translated.' + get(error, 'errors.error'))) {\n                return intl.t('general.error.translated.' + get(error, 'errors.error'));\n            }\n        }\n        return null;\n    }),\n\n    technicalErrorString: computed('error', function () {\n        return this.errorService.toString(this.error);\n    }),\n\n    technicalError: computed('error', function () {\n        const error = this.error;\n        if (error.errors && isArray(error.errors))\n            return JSON.stringify(this.error.errors.firstObject);\n        else if (error.errors) return JSON.stringify(error.errors);\n        else return JSON.stringify(error);\n    }),\n\n    insertLabel() {\n        configureScope((scope) => {\n            scope.setTag('fatal_error', 'true');\n        });\n    },\n\n    getEventId() {\n        const id = lastEventId();\n        this.insertLabel();\n        if (!id && !Ember.testing) {\n            later(this, 'getEventId', 100);\n            return;\n        }\n        set(this, 'eventId', id);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"gjJJbXwx\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"error-flex\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"error-flex-container jumbotron\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"error.main.title\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"parsedError\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[22,\\\"parsedError\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"error.main.desc\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"localStorageError\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"error.main.localstorage\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"error.tech.details\\\"],null],false],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"technicalError\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[23,0,[\\\"technicalErrorString\\\"]],false],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[1,[23,0,[\\\"technicalError\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"error.main_id\\\"],null],false],[0,\\\": \\\"],[1,[22,\\\"eventId\\\"],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/error/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    content: alias('model'),\n});\n","import GeneralAddRoute from '../../../routes/general-add';\n\nexport default GeneralAddRoute.extend({\n    modelName: 'firecard',\n});\n","export default Ember.HTMLBars.template({\"id\":\"K7tdReXp\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/firecards/add/template.hbs\"}});","import GeneralAddController from '../../../controllers/general-add';\nimport { A } from '@ember/array';\nimport { alias } from '@ember/object/computed';\n\nexport default GeneralAddController.extend({\n    edit: true,\n    content: alias('model'),\n    fieldSettings: A({\n        edit: true,\n    }),\n});\n","import GeneralAddRoute from '../../../routes/general-add';\n\nexport default GeneralAddRoute.extend({\n    controllerName: 'firecards/edit',\n    modelName: 'firecard',\n    edit: true,\n    afterSave: 'firecards',\n});\n","export default Ember.HTMLBars.template({\"id\":\"U1tazc0M\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/firecards/edit/template.hbs\"}});","import GeneralReportController from '../../../controllers/general-report';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\nimport EmberObject from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nexport default GeneralReportController.extend({\n    intl: service(),\n    Collector: service('collector-service'),\n    exportFile: service('export-file'),\n    form: 'firecard',\n    employer: null,\n    user: null,\n\n    init() {\n        this._super(...arguments);\n        this.showColumns = ['user_employer', 'user'];\n        this.queryParams = ['page', 'user_employer', 'user'];\n        return this.addPdfGenerate();\n    },\n\n    content: alias('model'),\n    filters: A([EmberObject.create({ field: 'user_employer' })]),\n    settings: EmberObject.create({\n        rowActions: [],\n        massedit: true,\n    }),\n\n    addPdfGenerate() {\n        return this.settings.rowActions.push({\n            text: this.intl.t('firecard.export_firecard_pdf'),\n            action: async (self, items) => {\n                const rowids = items.mapBy('id');\n\n                const response = await this.Collector.ttapi({\n                    url: 'pdfGenerate/firecard',\n                    data: {\n                        rowids,\n                    },\n                    method: 'post',\n                    dataType: 'text',\n                });\n\n                return this.exportFile.exportFile(response, 'export_firecard', 'pdf', true);\n            },\n        });\n    },\n});\n","import GeneralReportRoute from '../../../routes/general-report';\n\nexport default GeneralReportRoute.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        user_employer: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n    },\n    form: 'firecard',\n    model(params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('firecard', params);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"IWuS9QQI\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"firecard\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"limit\\\",\\\"offset\\\"],[\\\"bubbleTransition\\\",\\\"firecard\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/firecards/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/form-wizard/component.coffee.old\n// Generated by CoffeeScript 2.6.1\n\n/*\n    this is done totally wrong!!!!!! tries to be component for wizards but in reality only support own measurement!!\n*/\nvar FormWizardComponent;\n\nimport Ember from 'ember';\n\nFormWizardComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    collector: Ember.inject.service('collector-service'),\n    customMeasurements: Em.A([]),\n    didReceiveAttrs: function () {\n        if (this.customMeasurements.length > 0) {\n            return;\n        }\n        return this.get('store')\n            .findAll('form')\n            .then((forms) => {\n                forms.forEach((form) => {\n                    if (form.get('external_type').includes(this.get('form'))) {\n                        return this.customMeasurements.pushObject(form);\n                    }\n                });\n                if (this.customMeasurements.length === 0) {\n                    return this.customMeasurements.pushObject(this.createBaseForm());\n                }\n            });\n    },\n    createBaseForm: function () {\n        var base_fields, fields, form, number;\n        // number = @customMeasurements.length + 1\n        number = this.getMeasurementNumber();\n        form = this.get('store').createRecord('form', {\n            external_type: 'measurement_custom' + number,\n        });\n        fields = form.get('fields');\n        base_fields = [\n            {\n                type: 'date',\n                external_type: 'date',\n                name: '$lang(10)',\n            },\n            {\n                type: 'database',\n                external_type: 'project',\n                name: '$lang(10)',\n                options:\n                    this.getSchemaidFor('project', 'number') +\n                    '\\n' +\n                    this.getSchemaidFor('project', 'name'),\n            },\n            {\n                type: 'database',\n                external_type: 'user',\n                name: '$lang(10)',\n                options:\n                    this.getSchemaidFor('user', 'lastname') +\n                    '\\n' +\n                    this.getSchemaidFor('user', 'firstname'),\n            },\n            {\n                type: 'number',\n                external_type: 'tr_rating',\n                name: '$lang(10)',\n            },\n            {\n                type: 'textarea',\n                external_type: 'description',\n                name: '$lang(10)',\n            },\n        ];\n        Em.A(base_fields).forEach((fieldValues) => {\n            return fields.pushObject(this.get('store').createRecord('form-field', fieldValues));\n        });\n        return form;\n    },\n    getMeasurementNumber: function () {\n        var max, min, number;\n        min = 1;\n        max = 99;\n        number = Math.floor(Math.random() * (max - min + 1)) + min;\n        if (this.get('collector').formExists('measurement_custom' + number)) {\n            number = this.getMeasurementNumber();\n        }\n        return number;\n    },\n    getSchemaidFor: function (form, field) {\n        var field_record, form_record;\n        form_record = this.get('store').peekAll('form').findBy('external_type', form);\n        if (!form_record) {\n            Ember.assert('getSchemaidFor failed because form (' + form + ') not found');\n        }\n        field_record = form_record.get('fields').findBy('external_type', field);\n        if (!form_record) {\n            Ember.assert(\n                'getSchemaidFor failed because field (' + field + ') not found from form ' + form,\n            );\n        }\n        return field_record.get('id');\n    },\n    actions: {\n        saved: function () {\n            if (this.get('saved')) {\n                return this.saved();\n            }\n        },\n        removedMeasurement: function () {\n            if (this.get('removedMeasurement')) {\n                return this.removedMeasurement();\n            }\n        },\n        addMeasurement: function () {\n            return this.get('customMeasurements').pushObject(this.createBaseForm());\n        },\n        extClash: function (model) {\n            var number;\n            number = this.getMeasurementNumber();\n            return model.set('external_type', 'measurement_custom' + number);\n        },\n    },\n});\n\nexport default FormWizardComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/form-wizard/custom-measurement/component.coffee.old\n// Generated by CoffeeScript 2.6.1\n\n/*\n\n    this is done totally wrong!!!!!! tries to be component for wizards but in reality only support own measurement!!\n\n*/\nvar CustomMeasurementComponent;\n\nimport Ember from 'ember';\n\nCustomMeasurementComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    session: Em.inject.service(),\n    notifications: Ember.inject.service(),\n    modelCreator: Ember.inject.service('model-creator'),\n    // form we are creating or editing\n    form: null,\n    model: null,\n    measurement_fields: Ember.computed('model.fields.[]', function () {\n        if (!this.get('model.fields')) {\n            return [];\n        }\n        return this.get('model.fields').filter(function (item) {\n            return item.get('external_type').indexOf('_plus') !== -1;\n        });\n    }),\n    getSchemaidFor: function (form, field) {\n        var field_record, form_record;\n        form_record = this.get('store').peekAll('form').findBy('external_type', form);\n        if (!form_record) {\n            Ember.assert('getSchemaidFor failed because form (' + form + ') not found');\n        }\n        field_record = form_record.get('fields').findBy('external_type', field);\n        if (!form_record) {\n            Ember.assert(\n                'getSchemaidFor failed because field (' + field + ') not found from form ' + form,\n            );\n        }\n        return field_record.get('id');\n    },\n    makeid: function () {\n        var i, j, possible, text;\n        text = '';\n        possible = 'abcdefghijklmnopqrstuvwxyz';\n        for (i = j = 0; j < 10; i = ++j) {\n            text += possible.charAt(Math.floor(Math.random() * possible.length));\n        }\n        return text;\n    },\n    // set all missing field names\n    beforeSave: function () {\n        var intl, model;\n        model = this.get('model');\n        intl = this.get('intl');\n        return model.get('fields').forEach(function (record) {\n            var endsWith, external_type, newName, splitted, startsWith;\n            external_type = record.get('external_type');\n            splitted = external_type.split('_');\n            endsWith = splitted[splitted.length - 1];\n            if (endsWith === 'minus' || endsWith === 'notices') {\n                startsWith = external_type.substring(0, external_type.length - endsWith.length - 1);\n                newName = model\n                    .get('fields')\n                    .findBy('external_type', startsWith + '_plus')\n                    .get('name');\n                if (endsWith === 'notices') {\n                    newName += ' ' + intl.t('measurement_custom.notice_field');\n                }\n                return record.set('name', newName);\n            }\n        });\n    },\n    actions: {\n        addField: function () {\n            var fields, rand;\n            fields = this.get('model.fields');\n            if (fields.length > 48) {\n                this.get('dialogs').alert(\n                    this.get('intl').t('settings.measurement_custom.max_fields'),\n                );\n                return;\n            }\n            rand = this.makeid();\n            fields.pushObject(\n                this.get('store').createRecord('form-field', {\n                    type: 'number',\n                    external_type: 'meas' + rand + '_plus',\n                }),\n            );\n            fields.pushObject(\n                this.get('store').createRecord('form-field', {\n                    type: 'number',\n                    external_type: 'meas' + rand + '_minus',\n                }),\n            );\n            return fields.pushObject(\n                this.get('store').createRecord('form-field', {\n                    type: 'multiselect',\n                    external_type: 'meas' + rand + '_notices',\n                    options: this.getSchemaidFor('trnotice', 'desc'),\n                }),\n            );\n        },\n        removeField: function (field) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('general.areyousure'))\n                .then((con) => {\n                    var field_prefix, remove_fields;\n                    if (!con) {\n                        return;\n                    }\n                    field_prefix = field\n                        .get('external_type')\n                        .substring(0, field.get('external_type').length - 4);\n                    remove_fields = this.get('model.fields').filter(function (item) {\n                        return item.get('external_type').indexOf(field_prefix) !== -1;\n                    });\n                    return remove_fields.forEach(function (record) {\n                        return record.destroyRecord();\n                    });\n                });\n        },\n        saveForm: function () {\n            var model;\n            this.set('saving', true);\n            this.beforeSave();\n            model = this.get('model');\n            return model\n                .save()\n                .then(() => {\n                    var promises;\n                    promises = [];\n                    model.get('fields').forEach(function (record) {\n                        if (record.get('hasDirtyAttributes')) {\n                            return promises.push(record.save());\n                        }\n                    });\n                    return Ember.RSVP.Promise.all(promises).then(() => {\n                        return this.get('modelCreator')\n                            .createEmberModels()\n                            .then(() => {\n                                if (this.get('saved')) {\n                                    this.saved();\n                                }\n                                return this.set('saving', false);\n                            });\n                    });\n                })\n                .catch((e) => {\n                    this.get('notifications').error(\n                        this.get('intl').t('settings.measurement_custom.create_failed'),\n                        {\n                            autoClear: false,\n                        },\n                    );\n                    if (this.get('extClash')) {\n                        this.extClash(model);\n                    }\n                    return this.set('saving', false);\n                });\n        },\n        removeForm: function (form) {\n            this.set('removing', true);\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('settings.measurement_custom.confirm_remove'))\n                .then((con) => {\n                    if (con) {\n                        return form\n                            .destroyRecord()\n                            .then(() => {\n                                return this.get('modelCreator')\n                                    .createEmberModels()\n                                    .then(() => {\n                                        if (this.get('removedMeasurement')) {\n                                            this.removedMeasurement();\n                                        }\n                                        return this.get('notifications').success(\n                                            this.get('intl').t(\n                                                'settings.measurement_custom.remove_success',\n                                            ),\n                                            {\n                                                autoClear: true,\n                                            },\n                                        );\n                                    });\n                            })\n                            .catch((e) => {\n                                return this.get('notifications').error(\n                                    this.get('intl').t('settings.measurement_custom.remove_fail'),\n                                    {\n                                        autoClear: false,\n                                    },\n                                );\n                            })\n                            .finally(() => {\n                                if (!this.get('isDestroyed')) {\n                                    return this.set('removing', false);\n                                }\n                            });\n                    }\n                });\n        },\n    },\n});\n\nexport default CustomMeasurementComponent;\n","export default Ember.HTMLBars.template({\"id\":\"4oASLNIs\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"&default\\\"],\\\"statements\\\":[[14,2],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.measurement_custom.name\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control lg\\\",[24,[\\\"model\\\",\\\"name\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.measurement_custom.fields\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-horizontal\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"measurement_fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control\\\",[23,1,[\\\"name\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-2\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeField\\\",[23,1,[]]]],[8],[1,[28,\\\"t\\\",[\\\"settings.measurement_custom.remove_field\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addField\\\"]],[8],[1,[28,\\\"t\\\",[\\\"settings.measurement_custom.add_field\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline-block\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"saveButtonText\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveForm\\\"],null],\\\"btn btn-primary\\\",[28,\\\"t\\\",[\\\"settings.measurement_custom.save\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger inline-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeForm\\\",[24,[\\\"model\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"settings.measurement_custom.remove\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/form-wizard/custom-measurement/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"ehXVKZXq\",\"block\":\"{\\\"symbols\\\":[\\\"customMeasurement\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"customMeasurements\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"customMeasurements\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[23,1,[\\\"isDeleted\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"form-wizard/custom-measurement\\\",null,[[\\\"model\\\",\\\"saved\\\",\\\"removedMeasurement\\\",\\\"extClash\\\"],[[23,1,[]],[28,\\\"action\\\",[[23,0,[]],\\\"saved\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removedMeasurement\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"extClash\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addMeasurement\\\"]],[8],[1,[28,\\\"t\\\",[\\\"settings.custom_measurement.new_measurement\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/form-wizard/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsController;\n\nimport Ember from 'ember';\n\nFormsController = Ember.Controller.extend();\n\nexport default FormsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/custom-report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsFormCustomReportRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport report from '../../../utils/custom-reports';\n\nimport config from '../../../config/environment';\n\nFormsFormCustomReportRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    model: function (params) {\n        var setting;\n        setting = report[params.form];\n        return {\n            host: setting.host,\n            url: setting.path,\n            form: setting.form,\n            filters: setting.filters,\n            report: params.form,\n            nopaginate: !setting.paginate,\n        };\n    },\n});\n\nexport default FormsFormCustomReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"QpiGKy0F\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"filters\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/custom-filters-comp\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"values\\\"],[[24,[\\\"model\\\",\\\"filters\\\"]],[24,[\\\"model\\\",\\\"form\\\"]],[24,[\\\"filterValues\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[1,[28,\\\"api-report\\\",null,[[\\\"filters\\\",\\\"path\\\",\\\"host\\\",\\\"translationPrefix\\\",\\\"noPagination\\\"],[[24,[\\\"filterValues\\\"]],[24,[\\\"model\\\",\\\"url\\\"]],[24,[\\\"model\\\",\\\"host\\\"]],[24,[\\\"model\\\",\\\"report\\\"]],[24,[\\\"model\\\",\\\"nopaginate\\\"]]]]],false],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/forms/custom-report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/customer/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsCustomerEditController;\n\nimport Ember from 'ember';\n\nFormsCustomerEditController = Ember.Controller.extend({\n    actions: {\n        recordSaved: function (settings, row) {\n            return this.transitionToRoute('saved').then(function (newRoute) {\n                newRoute.controller.set('model', row);\n                return newRoute.controller.set('afterSave', {\n                    route: 'forms.form-report',\n                    params: 'customer',\n                });\n            });\n        },\n        cancelClicked: function () {\n            return this.transitionToRoute('forms.form-report', {\n                form: 'customer',\n            });\n        },\n    },\n});\n\nexport default FormsCustomerEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/customer/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsCustomerEditRoute;\n\nimport Ember from 'ember';\n\nFormsCustomerEditRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default FormsCustomerEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"1EeHw3q1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"forms/customer/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"customer\\\",[24,[\\\"model\\\",\\\"id\\\"]],\\\"recordSaved\\\",\\\"cancelClicked\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/forms/customer/edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/customer/record-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsCustomerRecordCompComponent;\n\nimport Ember from 'ember';\n\nimport recordComp from '../../../collector/record-comp/component';\n\nFormsCustomerRecordCompComponent = recordComp.extend({\n    layoutName: 'collector/record-comp',\n    returnField: function (field) {\n        if (field.name === 'campaign') {\n            field.type = 'dropdown_options';\n            field.options = Em.A([]);\n            this.get('store')\n                .findAll('campaign')\n                .then((campaigns) => {\n                    var camp, i, len, ref, results;\n                    ref = campaigns.mapBy('name').uniq();\n                    results = [];\n                    for (i = 0, len = ref.length; i < len; i++) {\n                        camp = ref[i];\n                        if (camp === 'default') {\n                            continue;\n                        }\n                        results.push(\n                            field.options.pushObject({\n                                id: camp,\n                                value: camp,\n                            }),\n                        );\n                    }\n                    return results;\n                });\n        }\n        return field;\n    },\n});\n\nexport default FormsCustomerRecordCompComponent;\n","import GeneralAddController from 'tt4/controllers/general-add';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class FormsFormAddController extends GeneralAddController {\n    @service router;\n    @service store;\n    @service('collector-service') collector;\n\n    @action goBack() {\n        this.router.transitionTo('forms.form-report', this.form.underscore());\n    }\n\n    @action onFieldChange(field, value) {\n        this.model[field] = value;\n    }\n\n    @action addNew() {\n        this.model = this.store.createRecord(this.form);\n    }\n\n    @action addSame() {\n        this.model = this.collector.copyRecord(this.model);\n    }\n}\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/form-add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsFormAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nFormsFormAddRoute = GeneralAddRoute.extend({\n    controllerName: 'forms/form-add',\n    afterSave: Ember.computed('form', function () {\n        return {\n            route: 'forms.form-report',\n            params: this.get('form'),\n        };\n    }),\n    model: function (params) {\n        this.set('modelName', params.form.dasherize());\n        this.set('form', params.form);\n        return this._super(params);\n    },\n});\n\nexport default FormsFormAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"WW7CKYKf\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"flag.ember-movenium-form-add-own-forms\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@close\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@addNew\\\",\\\"@addSame\\\"],[[23,0,[\\\"form\\\"]],[23,0,[\\\"goBack\\\"]],[23,0,[\\\"model\\\"]],[23,0,[\\\"onFieldChange\\\"]],[23,0,[\\\"addNew\\\"]],[23,0,[\\\"addSame\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/forms/form-add/template.hbs\"}});","import GeneralAddController from 'tt4/controllers/general-add';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class FormsFormEditController extends GeneralAddController {\n    @service router;\n\n    @action goBack() {\n        this.router.transitionTo('forms.form-report', this.form.underscore());\n    }\n\n    @action onFieldChange(field, value) {\n        this.model[field] = value;\n    }\n}\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/form-edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsFormEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nFormsFormEditRoute = GeneralAddRoute.extend({\n    controllerName: 'forms/form-edit',\n    afterSave: Ember.computed('form', function () {\n        return {\n            route: 'forms.form-report',\n            params: this.get('form'),\n        };\n    }),\n    edit: true,\n    //controllerName: 'forms/edit-form'\n    model: function (params) {\n        this.set('modelName', params.form.dasherize());\n        this.set('form', params.form);\n        return this.store.findRecord(this.get('modelName'), params.id, {\n            include: true,\n        });\n    },\n});\n\nexport default FormsFormEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"5Yo15nzz\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"flag.ember-movenium-form-add-own-forms\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@close\\\",\\\"@record\\\",\\\"@onFieldChange\\\"],[[23,0,[\\\"form\\\"]],[23,0,[\\\"goBack\\\"]],[23,0,[\\\"model\\\"]],[23,0,[\\\"onFieldChange\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/forms/form-edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/form-history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsFormHistoryRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nFormsFormHistoryRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default FormsFormHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"8weeeZNj\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],[24,[\\\"model\\\",\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/forms/form-history/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/form-report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsFormReportController,\n    indexOf1 = [].indexOf;\n\nimport Ember from 'ember';\n\nimport formReport from '../../collector/report-comp/component';\n\nimport pdfExport from '../../../mixins/pdf-export';\n\nimport collector from '../../../classes/collector';\n\nimport config from '../../../config/environment';\n\nimport csvExport from '../../../mixins/csv-export';\n\nimport initController from '../../../mixins/init-controller';\n\nimport saveTheChildren from '../../../mixins/save-the-children';\n\nimport $ from 'jquery';\n\nimport { pluralize } from 'ember-inflector';\n\nFormsFormReportController = Ember.Controller.extend(\n    pdfExport,\n    csvExport,\n    initController,\n    saveTheChildren,\n    {\n        Collector: Ember.inject.service('collector-service'),\n        session: Ember.inject.service(),\n        localStorageWrapper: Ember.inject.service(),\n        sessionGlobals: Em.inject.service(),\n        dialogs: Ember.inject.service(),\n        tools: Ember.inject.service(),\n        capi: Ember.inject.service(),\n        exportFile: Ember.inject.service(),\n        admintool: Ember.inject.service(),\n        intl: Ember.inject.service(),\n        limit: 25,\n        page: 1,\n        errors: Ember.A([]),\n        translations: {\n            twentyfive: 25,\n            fifty: 50,\n            hundred: 100,\n        },\n        init_functions: function () {\n            this._super();\n            return this.refreshQueries();\n        },\n        initColSelecter: function () {\n            //close display-menu only if clicked outside of it\n            $('.display-menu').on('click', function (event) {\n                if (!$(this).hasClass('open')) {\n                    $(this).addClass('open');\n                }\n            });\n            return $('body').on('click touchend', function (e) {\n                if (\n                    !$('.display-menu').is(e.target) &&\n                    $('.display-menu').has(e.target).length === 0 &&\n                    $('.open').has(e.target).length === 0\n                ) {\n                    $('.display-menu').removeClass('open');\n                }\n            });\n        },\n        showMassEdit: Ember.computed('selectedRows', 'formName', function () {\n            return (\n                this.get('selectedRows') &&\n                this.get('Collector').testNeeds([this.get('formName') + '@edit'])\n            );\n        }),\n        settings: Ember.computed('formName', 'columnString', function () {\n            var settings;\n            if (!this.get('formName')) {\n                return;\n            }\n            settings = Ember.Object.create({\n                form: this.get('formName'),\n                show_columns: this.get('columnString'),\n                limit: this.get('limit'),\n            });\n            return settings;\n        }),\n        customQueryparams: Ember.computed(function () {\n            var formFeatures, forms;\n            forms = this.get('Collector').forms();\n            if (forms[this.get('formName')].features) {\n                formFeatures = forms[this.get('formName')].features;\n            }\n            if (formFeatures && Object.keys(formFeatures).includes('custom_queryparams')) {\n                return Object.values(formFeatures)[0];\n            }\n            return false;\n        }),\n        rowActions: Ember.computed('formName', 'showStatus', function () {\n            var actions, c, form;\n            c = this.get('Collector');\n            form = this.get('formName');\n            if (this.get('showStatus') === 'removed' && c.privilege(form, 'remove')) {\n                actions = [\n                    {\n                        action: 'restoreRow',\n                        icon: 'move move-ReuseFilled',\n                        text: this.get('intl').t('report.restore_rows'),\n                    },\n                    {\n                        action: 'historyRow',\n                        icon: 'move move-Search',\n                        text: this.get('intl').t('report.customer.history'),\n                    },\n                ];\n                if (c.privilege(form, 'edit')) {\n                    actions.push({\n                        action: 'editRow',\n                        icon: 'move move-Pencil',\n                        text: this.get('intl').t('general.edit'),\n                    });\n                }\n            } else {\n                // aika purkka, mut what you gonna do kun ei oo kauheen customoitava tämä\n                if (form === 'promomessage') {\n                    actions = [\n                        {\n                            action: 'historyRow',\n                            icon: 'move move-Search',\n                            text: this.get('intl').t('report.customer.history'),\n                        },\n                        {\n                            action: 'previewRow',\n                            icon: 'move move-Globe',\n                            text: this.get('intl').t('report.diaryreport_other_note.review'),\n                        },\n                    ];\n                } else {\n                    actions = [\n                        {\n                            action: 'historyRow',\n                            icon: 'move move-Search',\n                            text: this.get('intl').t('report.customer.history'),\n                        },\n                        {\n                            action: 'viewRow',\n                            icon: 'move move-View',\n                            text: this.get('intl').t('history.action.show_data'),\n                        },\n                    ];\n                }\n                if (c.privilege(form, 'edit')) {\n                    actions.push({\n                        action: 'editRow',\n                        icon: 'move move-Pencil',\n                        text: this.get('intl').t('general.edit'),\n                    });\n                }\n                if (c.privilege(form, 'remove')) {\n                    actions.push({\n                        action: 'removeRow',\n                        icon: 'move move-Delete',\n                        text: this.get('intl').t('report.delete_rows'),\n                    });\n                }\n                if (form === 'customer') {\n                    actions.push({\n                        action: 'loginToCustomer',\n                        icon: 'move move-Key',\n                        text: this.get('intl').t('general.login'),\n                    });\n                }\n            }\n            return actions;\n        }),\n        refreshQueries: Ember.observer('filterValues', 'columnString', function () {\n            if (!this.get('columnString')) {\n                return;\n            }\n            return this.refreshReport(this.get('settings'));\n        }),\n        refreshReport: function (report) {\n            var filterValues, form, query, showFiltersArr;\n            filterValues = this.get('filterValues');\n            if (!filterValues) {\n                return;\n            }\n            form = report.get('form');\n            showFiltersArr = this.get('filters').split(',');\n            query = [];\n            showFiltersArr.forEach((item) => {\n                var filter, value;\n                filter = filterValues.findBy('name', item);\n                if (this.get('customQueryparams')) {\n                    item = this.get('customQueryparams');\n                }\n                if (!filter) {\n                    return;\n                }\n                value = filter.value;\n                if (filter.name === 'groupBy') {\n                    return report.set('group', filter.value);\n                } else {\n                    if (!value) {\n                        return;\n                    }\n                    return query.pushObject({\n                        name: item,\n                        value: value,\n                    });\n                }\n            });\n            return report.set('query', query);\n        },\n        filters: Ember.computed('formName', function () {\n            var c, fields, filters, splitted;\n            if (!this.get('formName')) {\n                return;\n            }\n            c = this.get('Collector');\n            filters = [];\n            fields = c.fieldArray(this.get('formName'));\n            fields.forEach((field) => {\n                var ref;\n                if (\n                    (ref = field.type) === 'database' ||\n                    ref === 'date' ||\n                    ref === 'dropdown_options'\n                ) {\n                    return filters.push(field.name);\n                }\n            });\n            if (this.get('customQueryparams')) {\n                splitted = this.get('customQueryparams').split(':');\n                filters.splice(filters.indexOf(splitted[1]), 1);\n            }\n            filters.push('q');\n            filters.push('groupBy');\n            //@set('settings.showStatus', @get('row_info_status'))\n\n            //bind = Ember.Binding.from('row_info_status').to('settings.showStatus')\n            //bind.connect(@)\n            return filters.join(',');\n        }),\n        columns: Ember.computed('formName', 'session.currentUser', 'currentTemplate', function () {\n            var c, columns, fields, ls_columns;\n            c = this.get('Collector');\n            if (!this.get('formName')) {\n                return;\n            }\n            if (!this.get('session.currentUser')) {\n                return;\n            }\n            ls_columns = this.get('localStorageWrapper').getUserSetting(\n                this.get('formName') + '_defaultColumns',\n            );\n            fields = c.fieldArray(this.get('formName'));\n            if (ls_columns.length === 0) {\n                ls_columns = fields.mapBy('name');\n            }\n            if (this.get('currentTemplate')) {\n                ls_columns = this.get('currentTemplate.columns').split(',');\n            }\n            columns = Ember.A([]);\n            ls_columns.forEach(function (column) {\n                var field, ref;\n                if (column === 'id' || column === 'row_info.created') {\n                    return;\n                }\n                field = fields.findBy('name', column);\n                if (!field) {\n                    return;\n                }\n                if (!field.features.hide_column) {\n                    if (\n                        ls_columns.length < 1 ||\n                        ((ref = field.name), indexOf1.call(ls_columns, ref) >= 0)\n                    ) {\n                        return columns.pushObject({\n                            ext: field.name,\n                            name: field.translated_name,\n                        });\n                    }\n                }\n            });\n            if (ls_columns.length < 1 || indexOf1.call(ls_columns, 'row_info.created') >= 0) {\n                columns.pushObject({\n                    name: this.get('intl').t('general.row_info.created'),\n                    ext: 'row_info.created',\n                });\n            }\n            this.saveColumnsToLS(columns);\n            return columns;\n        }),\n        hiddenColumns: Ember.computed('formName', 'columns.[]', function () {\n            var c, col_arr, fields, hidden_columns;\n            if (!this.get('formName')) {\n                return;\n            }\n            if (!this.get('columns')) {\n                return;\n            }\n            c = this.get('Collector');\n            fields = c.fieldArray(this.get('formName'));\n            hidden_columns = Ember.A([]);\n            col_arr = this.get('columns').mapBy('ext');\n            fields.forEach(function (field) {\n                var ref;\n                if (\n                    ((ref = field.name), indexOf1.call(col_arr, ref) < 0) &&\n                    !field.features.hide_column\n                ) {\n                    return hidden_columns.pushObject({\n                        ext: field.name,\n                        name: field.translated_name,\n                    });\n                }\n            });\n            if (indexOf1.call(col_arr, 'row_info.created') < 0) {\n                hidden_columns.pushObject({\n                    name: this.get('intl').t('general.row_info.created'),\n                    ext: 'row_info.created',\n                });\n            }\n            return hidden_columns;\n        }),\n        columnString: Ember.computed('columns.[]', function () {\n            if (!this.get('columns')) {\n                return;\n            }\n            return this.get('columns').mapBy('ext').join(',');\n        }),\n        selectedRows: Ember.computed('_checkedRows.[]', function () {\n            if (this.get('_checkedRows')) {\n                return this.get('_checkedRows').mapBy('id').join(',');\n            }\n        }),\n        moreLinksClass: Em.computed('_checkedRows.[]', function () {\n            if (this.get('_checkedRows.length') === 0) {\n                return 'disabled';\n            }\n        }),\n        status: Em.computed(function () {\n            return this.get('statusOptions')[0];\n        }),\n        statusOptions: Ember.computed('formName', function () {\n            var field, intl, option, options;\n            if (!this.get('formName')) {\n                return [];\n            }\n            if (!this.get('Collector').fieldExists(this.get('formName'), 'status')) {\n                return [];\n            }\n            intl = this.get('intl');\n            field = this.get('Collector').field(this.get('formName'), 'status');\n            options = (function () {\n                var i, len, ref, results;\n                ref = field.options;\n                results = [];\n                for (i = 0, len = ref.length; i < len; i++) {\n                    option = ref[i];\n                    if (intl.exists('status.' + option)) {\n                        results.push({\n                            id: option,\n                            name: intl.t('status.' + option),\n                        });\n                    } else if (Ember.typeOf(option) === 'object' && option.value) {\n                        results.push({\n                            id: option.id,\n                            name: option.value,\n                        });\n                    } else {\n                        results.push({\n                            id: option,\n                            name: option,\n                        });\n                    }\n                }\n                return results;\n            })();\n            options.unshift({\n                id: '',\n                name: intl.t('status.all'),\n            });\n            return options;\n        }),\n        createComponent: function (settings) {\n            return formReport.create({\n                store: this.get('store'),\n                Collector: this.get('Collector'),\n                intl: this.get('intl'),\n                sessionGlobals: this.get('sessionGlobals'),\n                rowsPerPage: 'all',\n                renderer: this,\n                checked_rows: this.get('_checkedRows')\n                    ? this.get('_checkedRows').map((item) => {\n                          return item.get('id');\n                      })\n                    : void 0,\n                status: this.get('status.id'),\n                settings: settings,\n            });\n        },\n        getPdfAttachmentForEmail: function (params) {\n            if (Ember.get(params, 'type') === 'export_pdf_full') {\n                return this.getTtapiPdf('base64', params);\n            } else {\n                return this._export_pdf(params, 'base64');\n            }\n        },\n        actions: {\n            handleExportActions: function (params) {\n                switch (params.type) {\n                    case 'export_pdf':\n                        return this.send('export_pdf', params);\n                    case 'export_pdf_full':\n                        return this.send('export_pdf_full', params);\n                    case 'export_excel':\n                        return this.send('export_excel', params);\n                }\n            },\n            export: function (type) {\n                this.set('showEmailModal', true);\n                return this.set('exportInitType', type);\n            },\n            exportJoinedATReport: function () {\n                var c;\n                c = this.get('Collector');\n                return this.get('admintool')\n                    .ajax({\n                        url: 'joined_billinginfo',\n                    })\n                    .then((rows) => {\n                        var billing_columns,\n                            col,\n                            customer_columns,\n                            element,\n                            joined_columns,\n                            translated_columns;\n                        customer_columns = c.fields('customer');\n                        billing_columns = c.fields('billinginfo');\n                        joined_columns = [];\n                        translated_columns = [];\n                        for (col in customer_columns) {\n                            translated_columns.push(c.getTranslationForColumn('customer', col));\n                            joined_columns.push(col);\n                        }\n                        for (col in billing_columns) {\n                            translated_columns.push(c.getTranslationForColumn('billinginfo', col));\n                            joined_columns.push(col);\n                        }\n                        element = this.createCsvElement(joined_columns, rows, translated_columns);\n                        return this.createCsvFromElements(element, false);\n                    });\n            },\n            deleteChecked: function () {\n                if (this.get('_checkedRows.length') > 0) {\n                    return this.get('dialogs')\n                        .confirm(this.get('intl').t('report.confirm_delete'))\n                        .then((con) => {\n                            var show_error;\n                            if (con) {\n                                show_error = false;\n                                this.get('_checkedRows').forEach((row) => {\n                                    var record;\n                                    record = this.get('store').peekRecord(\n                                        this.get('formName'),\n                                        row.id,\n                                    );\n                                    if (record) {\n                                        return record.destroyRecord();\n                                    } else {\n                                        return this.get('store')\n                                            .findRecord(this.get('formName'), row.id)\n                                            .then(function (record) {\n                                                return record.destroyRecord();\n                                            });\n                                    }\n                                });\n                                return this.set('_checkedRows', Em.A([]));\n                            }\n                        });\n                }\n            },\n            restoreChecked: function () {\n                if (this.get('_checkedRows.length') > 0) {\n                    return this.get('dialogs')\n                        .confirm(this.get('intl').t('report.confirm_restore_rows'))\n                        .then((con) => {\n                            var form, form_plural;\n                            if (con) {\n                                form = this.get('formName');\n                                form_plural = pluralize(this.get('formName')).camelize();\n                                this.get('_checkedRows').forEach((row) => {\n                                    var record;\n                                    record = this.get('store').peekRecord(\n                                        this.get('formName'),\n                                        row.id,\n                                    );\n                                    return this.get('capi')\n                                        .request(\n                                            '/' + form_plural + '/' + row.id + '?validation=off',\n                                            {\n                                                dataType: 'json',\n                                                type: 'PUT',\n                                                data:\n                                                    '{\"' + form + '\":{\"row_info.status\":\"normal\"}}',\n                                            },\n                                        )\n                                        .then(() => {\n                                            return record.unloadRecord();\n                                        });\n                                });\n                                return this.set('_checkedRows', Em.A([]));\n                            }\n                        });\n                }\n            },\n            export_csv: function () {\n                var component, csv_str;\n                // pretty much copy & paste code from export_pdf\n                csv_str = [];\n                component = this.createComponent(this.get('settings'));\n                return component.get('asCsvArray').then((csvArr) => {\n                    var a, csvString, name;\n                    csvArr.forEach((arr) => {\n                        var i, indexOf, len, str;\n                        //remove linebreaks from csv string to avoid invalid format\n                        for (indexOf = i = 0, len = arr.length; i < len; indexOf = ++i) {\n                            str = arr[indexOf];\n                            if (typeof str === 'string') {\n                                arr[indexOf] = str.replace(/(\\r\\n\\t|\\n|\\r\\t)/gm, ' ');\n                            }\n                        }\n                        return csv_str.push(arr.join(';'));\n                    });\n                    name = this.get('session.currentUser.company') || 'movenium_export';\n                    if (typeof LocalFileSystem !== 'undefined' && LocalFileSystem !== null) {\n                        return window.requestFileSystem(\n                            LocalFileSystem.PERSISTENT,\n                            0,\n                            function (fileSystem) {\n                                return fileSystem.root.getFile(\n                                    name + '.csv',\n                                    {\n                                        create: true,\n                                    },\n                                    function (entry) {\n                                        var fileEntry;\n                                        fileEntry = entry;\n                                        return entry.createWriter(function (writer) {\n                                            //write file and open\n                                            writer.onwrite = function (evt) {\n                                                return cordova.plugins.fileOpener2.open(\n                                                    fileEntry.toURL(),\n                                                    'text/csv',\n                                                );\n                                            };\n                                            return writer.write(csv_str);\n                                        });\n                                    },\n                                );\n                            },\n                        );\n                    } else {\n                        //download csv for desktop\n                        csvString = csv_str.join('\\n');\n                        a = document.createElement('a');\n                        a.setAttribute(\n                            'href',\n                            'data:text/csv;charset=utf-8,\\uFEFF' + encodeURIComponent(csvString),\n                        );\n                        a.download = name + '.csv';\n                        a.style.display = 'none';\n                        document.body.appendChild(a);\n                        return a.click();\n                    }\n                });\n            },\n            export_excel: function (params) {\n                var component;\n                component = this.createComponent(this.get('settings'));\n                if (params.template) {\n                    component.set('show_columns', Ember.get(params, 'template.columns'));\n                }\n                return component.get('asXlsArray').then((output) => {\n                    var name;\n                    name = this.get('session.currentUser.company' || 'movenium_export');\n                    this.get('excel').export(output, {\n                        fileName: name + '.xlsx',\n                    });\n                    return this.set('showEmailModal', false);\n                });\n            },\n            export_pdf_full: function (params) {\n                var promise;\n                this.set('showLoader', true);\n                promise = this.getTtapiPdf(null, params);\n                if (promise) {\n                    promise.then((content) => {\n                        var data;\n                        data = JSON.parse(content);\n                        this.set('showLoader', false);\n                        if (data.url) {\n                            return window.open(data.url);\n                        }\n                    });\n                    promise.catch((e) => {\n                        return alert('pdf export failed: ' + JSON.stringify(e));\n                    });\n                    promise.finally(() => {\n                        this.set('showLoader', false);\n                        return this.set('showEmailModal', false);\n                    });\n                }\n            },\n            export_pdf: function (params = {}) {\n                this.set('showLoader', true);\n                return this._export_pdf(params)\n                    .then((file) => {\n                        if (typeof cordova !== 'undefined' && cordova !== null) {\n                            return this.get('cordova').openFile(file, 'application/pdf');\n                        }\n                    })\n                    .finally(() => {\n                        this.set('showEmailModal', false);\n                        return this.set('showLoader', false);\n                    });\n            },\n            setStatus: function (status) {\n                return this.set('status', status);\n            },\n            setRowsPerPage: function (limit) {\n                this.set('page', 1);\n                this.set('settings.limit', limit);\n                return this.set('limit', limit);\n            },\n            editRow: function (row) {\n                var ref, router;\n                // dirrrrty haxx for admintool\n                if (this.get('formName') === 'customer') {\n                    return this.transitionToRoute('admintool.customer', row.get('id'));\n                } else {\n                    router = Ember.getOwner(this).lookup('router:main');\n                    if (\n                        ((ref = 'forms.' + this.get('formName') + '.edit'),\n                        indexOf1.call(Object.keys(router._routerMicrolib.recognizer.names), ref) >=\n                            0)\n                    ) {\n                        return this.transitionToRoute(\n                            'forms.' + this.get('formName') + '.edit',\n                            row.get('id'),\n                        );\n                    } else {\n                        return this.transitionToRoute(\n                            'forms.form-edit',\n                            this.get('formName'),\n                            row.get('id'),\n                        );\n                    }\n                }\n            },\n            historyRow: function (row) {\n                return this.transitionToRoute(\n                    'forms.form-history',\n                    this.get('formName'),\n                    row.get('id'),\n                );\n            },\n            viewRow: function (row) {\n                var ref, router;\n                router = Ember.getOwner(this).lookup('router:main');\n                if (\n                    ((ref = 'forms.' + this.get('formName') + '.view'),\n                    indexOf1.call(Object.keys(router._routerMicrolib.recognizer.names), ref) >= 0)\n                ) {\n                    return this.transitionToRoute(\n                        'forms.' + this.get('formName') + '.view',\n                        row.get('id'),\n                    );\n                } else {\n                    return this.transitionToRoute(\n                        'forms.form-view',\n                        this.get('formName'),\n                        row.get('id'),\n                    );\n                }\n            },\n            previewRow: function (row) {\n                this.set('modalContent', row);\n                //@set 'title', row['title']\n                //@set 'message', row['title']\n                this.set('showModal', true);\n            },\n            closeModal: function () {\n                return this.set('showModal', false);\n            },\n            restoreRow: function (row) {\n                var form, form_plural;\n                if (collector.hasErrors(this.get('formName'))) {\n                    return;\n                }\n                form = this.get('formName');\n                form_plural = pluralize(this.get('formName')).camelize();\n                return this.get('dialogs')\n                    .confirm(this.get('intl').t('report.confirm_restore'))\n                    .then((con) => {\n                        if (con) {\n                            return this.get('capi')\n                                .request('/' + form_plural + '/' + row.id + '?validation=off', {\n                                    dataType: 'json',\n                                    type: 'PUT',\n                                    data: '{\"' + form + '\":{\"row_info.status\":\"normal\"}}',\n                                })\n                                .then(() => {\n                                    row = this.get('store').peekRecord(form, row.id);\n                                    return row.unloadRecord();\n                                });\n                        }\n                    });\n            },\n            showColumn: function (col) {\n                this.get('columns').pushObject(col);\n                return this.saveColumnsToLS(this.get('columns'));\n            },\n            hideColumn: function (col) {\n                this.get('columns').removeObject(col);\n                return this.saveColumnsToLS(this.get('columns'));\n            },\n            moveCol: function (col, dir) {\n                return this.moveElementInArray(this.get('columns'), col, dir);\n            },\n            sortDown: function (col) {\n                return this.moveElementInArray(this.get('columns'), col, 1);\n            },\n            deactivateTemplate: function () {\n                var lskey;\n                lskey = this.get('formName') + '_defaultColumns';\n                //_currentTemplate = @get('content.firstObject.constructor.modelName')+'_currentTemplate';\n                //if @get('localStorageWrapper').getUserSetting(_currentTemplate).columns\n                //    @get('localStorageWrapper').removeUserSetting(_currentTemplate)\n\n                //if @get('localStorageKey')\n                //    key = @get('localStorageKey')+'_defaultColumns'\n                //else if @get('content.firstObject.constructor.modelName')\n                //    key = @get('content.firstObject.constructor.modelName')+'_defaultColumns'\n                if (lskey) {\n                    this.get('localStorageWrapper').removeUserSetting(lskey);\n                }\n                return this.set('currentTemplate', null);\n            },\n            showRemovedRows: function () {\n                this.set('page', 1);\n                if (this.get('showStatus') === 'removed') {\n                    this.set('showStatus', 'normal');\n                } else {\n                    this.set('showStatus', 'removed');\n                }\n                return this.set('settings.row_info_status', this.get('showStatus'));\n            },\n            showEmailDialog: function () {\n                this.set('showEmailModal', true);\n                this.set('exportInitType', 'email');\n                return false;\n            },\n            removeModal: function () {\n                this.set('emailSent', false);\n                this.set('showEmailModal', false);\n                return false;\n            },\n            sendEmail: function (to, title, content, params) {\n                var formName, rowids;\n                this.set('showLoader', true);\n                formName = this.get('formName');\n                rowids = this.get('_checkedRows')\n                    ? this.get('_checkedRows').map((item) => {\n                          return item.get('id');\n                      })\n                    : [];\n                return this.getPdfAttachmentForEmail(params).then((pdf) => {\n                    var promise;\n                    promise = this.get('Collector').ttapi({\n                        url: 'sendReportAsEmail',\n                        data: {\n                            to_address: to,\n                            email: pdf,\n                            content: content,\n                            lang: this.get('intl.primaryLocale'),\n                            includeApproval: Ember.get(params, 'approvalLink'),\n                            form_name: formName,\n                            rowids: rowids,\n                            header:\n                                this.get('intl').t('menu.' + formName) +\n                                '-' +\n                                this.get('intl').t('general.report'),\n                        },\n                        method: 'post',\n                    });\n                    promise.then(() => {\n                        this.set('emailSent', true);\n                        return this.set('showLoader', false);\n                    });\n                    return promise.catch(() => {\n                        this.set('showLoader', false);\n                        return this.set('emailError', true);\n                    });\n                });\n            },\n            loginToCustomer: function (row) {\n                var url;\n                url = null;\n                if (row.campaign === 'visma' || row.campaign === 'entry_mini') {\n                    url = config.APP.ENTRY_URL;\n                }\n                return $.ajax({\n                    url:\n                        config.APP.ADMINTOOLURL +\n                        'getCustomerAdminUsers?partnerid=' +\n                        row.partnerid,\n                    type: 'GET',\n                    headers: {\n                        Authorization:\n                            'Bearer ' + this.get('session.session.authenticated.access_token'),\n                    },\n                    success: (admins) => {\n                        return this.get('tools').login(\n                            {\n                                username: admins['users'][0]['username'],\n                                userid: admins['users'][0]['id'],\n                                partnerid: row.partnerid,\n                            },\n                            url,\n                        );\n                    },\n                });\n            },\n            checkedRows: function (rows) {\n                this.set('_checkedRows', rows);\n                this.set('thereIsCheckedRows', rows.length > 0);\n            },\n            toggleInlineEdit: function () {\n                var promises;\n                if (this.get('inlineEdit')) {\n                    promises = [];\n                    this.get('model').forEach(function (row) {\n                        if (!row.get('isValid') || row.get('isError')) {\n                            row.rollbackAttributes();\n                            return promises.push(row.reload());\n                        } else if (row.get('hasDirtyAttributes')) {\n                            return row.rollbackAttributes();\n                        }\n                    });\n                    return Ember.RSVP.Promise.all(promises).then(() => {\n                        this.set('errors', Ember.A([]));\n                        this.toggleProperty('inlineEdit');\n                        this.set('timeout', true);\n                        return Em.run.later(\n                            this,\n                            function () {\n                                return this.set('timeout', false);\n                            },\n                            2000,\n                        );\n                    });\n                } else {\n                    this.toggleProperty('inlineEdit');\n                    this.set('addRows', Ember.A([]));\n                    this.set('timeout', true);\n                    return Em.run.later(\n                        this,\n                        function () {\n                            return this.set('timeout', false);\n                        },\n                        2000,\n                    );\n                }\n            },\n            saveRows: function () {\n                var allRows, errors, last_promise;\n                errors = Ember.A([]);\n                last_promise = new Ember.RSVP.Promise((resolve) => {\n                    return resolve();\n                });\n                allRows = this.get('addRows').concat(this.get('model').toArray());\n                allRows.forEach((row, index) => {\n                    if (!row.get('hasDirtyAttributes')) {\n                        return;\n                    }\n                    ++index;\n                    return (last_promise = new Ember.RSVP.Promise((resolve) => {\n                        return last_promise.then(() => {\n                            return row.validate().then(() => {\n                                return this.save_record_and_catch_errors(\n                                    index,\n                                    row,\n                                    errors,\n                                    resolve,\n                                );\n                            });\n                        });\n                    }));\n                });\n                last_promise.then(() => {\n                    if (Ember.get(errors, 'length') === 0) {\n                        return this.toggleProperty('inlineEdit');\n                    }\n                });\n                return this.set('errors', errors);\n            },\n            copyRow: function (row) {\n                var c;\n                c = this.get('Collector');\n                return this.get('addRows').unshiftObject(c.copyRecord(row));\n            },\n        },\n        save_record_and_catch_errors: function (index, row, errors, resolve) {\n            var promise;\n            if (row.get('isValid')) {\n                promise = this.save_record(row);\n                promise.then(() => {\n                    return resolve();\n                });\n                return promise.catch(function (e) {\n                    var error;\n                    //                row.rollbackAttributes()\n                    if (e && e.errors[0] && e.errors[0].error_msg) {\n                        error = e.errors[0].error_msg;\n                    } else if (e && e.errors[0] && e.errors[0].error) {\n                        error = e.errors[0].error;\n                    } else {\n                        error = 'unknown';\n                    }\n                    errors.pushObject({\n                        index: index,\n                        row: row.get('id'),\n                        error: error,\n                    });\n                    return resolve();\n                });\n            } else {\n                return errors.pushObject({\n                    index: index,\n                    row: row.get('id'),\n                    error: row.get('errors.messages.firstObject'),\n                });\n            }\n        },\n        _export_pdf: function (params, mode = 'download') {\n            return new Ember.RSVP.Promise((resolve) => {\n                var component, promise, report;\n                report = this.get('settings');\n                component = this.createComponent(report);\n                component.set('pdfSettings', params);\n                if (params.template) {\n                    component.set('show_columns', Ember.get(params, 'template.columns'));\n                }\n                promise = component.get('asPdfElement');\n                return promise.then((element) => {\n                    return this.createPdfFromElements([element], mode, '', 8, params).then(\n                        (back) => {\n                            return resolve(back);\n                        },\n                    );\n                });\n            });\n        },\n        getRawFilters: function () {\n            var params;\n            params = {};\n            if (this.get('filterValues')) {\n                this.get('filterValues').forEach((filter) => {\n                    var add;\n                    if (\n                        Ember.isArray(Ember.get(filter, 'value')) &&\n                        Ember.get(filter, 'value').length === 0\n                    ) {\n                    } else if (Ember.get(filter, 'bindto')) {\n                        return (params['q'] = Ember.get(filter, 'value'));\n                    } else if (Ember.get(filter, 'value') && Ember.get(filter, 'subform')) {\n                        add = {};\n                        add[Ember.get(filter, 'name')] = Ember.get(filter, 'value');\n                        return (params[Ember.get(filter, 'form')] = add);\n                    } else if (\n                        Ember.get(filter, 'value') &&\n                        Ember.get(filter, 'name') !== 'status'\n                    ) {\n                        return (params[Ember.get(filter, 'name')] = Ember.get(filter, 'value'));\n                    }\n                });\n            }\n            return params;\n        },\n        getTtapiPdf: function (format = null, params) {\n            var postParams, url;\n            url = 'pdf/row';\n            postParams = {\n                form: this.get('formName'),\n                lang: moment.locale(),\n                filters: JSON.stringify(this.getRawFilters()),\n            };\n            if (this.get('thereIsCheckedRows')) {\n                postParams.id = this.get('_checkedRows').mapBy('id').join(',');\n            }\n            if (params.template) {\n                postParams.template = Ember.get(params, 'template.id');\n            }\n            if (format) {\n                postParams.type = format;\n            }\n            return this.get('Collector').ttapi({\n                method: 'post',\n                dataType: 'text',\n                url: url,\n                data: postParams,\n            });\n        },\n        thereIsCheckedRows: false,\n        formContainsApprovedStatus: Ember.computed('formName', function () {\n            var field, fields, found;\n            fields = this.get('Collector').fields(this.get('formName'));\n            found = false;\n            for (field in fields) {\n                if (\n                    fields[field].type === 'status' &&\n                    indexOf1.call(fields[field].options, 'approved') >= 0\n                ) {\n                    found = true;\n                }\n            }\n            return found;\n        }),\n        showApprovalLinkSelection: Ember.computed.and(\n            'thereIsCheckedRows',\n            'formContainsApprovedStatus',\n        ),\n        moveElementInArray: function (obj, col, offset) {\n            var index, newIndex;\n            index = obj.indexOf(col);\n            obj.removeObject(col);\n            newIndex = index + offset;\n            if (newIndex > obj.length) {\n                newIndex = 0;\n            } else if (newIndex < 0) {\n                newIndex = obj.length;\n            }\n            obj.insertAt(newIndex, col);\n            return this.saveColumnsToLS(obj);\n        },\n        saveColumnsToLS: function (columns) {\n            var cols, ls, lskey;\n            //return if @get('currentTemplate')\n            cols = columns.mapBy('ext');\n            ls = this.get('localStorageWrapper');\n            lskey = this.get('formName') + '_defaultColumns';\n            return ls.setUserSetting(lskey, cols);\n        },\n    },\n);\n\nexport default FormsFormReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/form-report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsFormReportRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nimport initRoute from '../../../mixins/init-route';\n\nFormsFormReportRoute = GeneralReportRoute.extend(initRoute, {\n    Collector: Em.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n            replace: true,\n        },\n        q: {\n            refreshModel: true,\n            replace: true,\n        },\n    },\n    model: function (params) {\n        var c, field, fields, form, i, len;\n        params = this._super(params);\n        params.sideload = true;\n        form = params.form;\n        this.set('form', form);\n        delete params.form;\n        c = this.get('Collector');\n        fields = c.fieldArray(form);\n        if (fields) {\n            for (i = 0, len = fields.length; i < len; i++) {\n                field = fields[i];\n                if ('use_index' in field.features) {\n                    if (!(field.name in params)) {\n                        params[field.name] =\n                            moment().startOf('month').format('YYYY-MM-DD') +\n                            '_' +\n                            moment().endOf('month').format('YYYY-MM-DD');\n                    }\n                }\n            }\n        }\n        return this.get('store').query(form.underscore(), params);\n    },\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.set('formName', this.get('form'));\n    },\n    actions: {\n        didTransition: function () {\n            Ember.run.scheduleOnce('afterRender', this, function () {\n                return this.controller.initColSelecter();\n            });\n            return true;\n        },\n    },\n});\n\nexport default FormsFormReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"kc0ybgar\",\"block\":\"{\\\"symbols\\\":[\\\"error\\\",\\\"dd\\\",\\\"ddm\\\",\\\"col\\\",\\\"col\\\",\\\"dd\\\",\\\"ddm\\\",\\\"opt\\\",\\\"dd\\\",\\\"ddm\\\",\\\"report\\\",\\\"Report\\\",\\\"@formName\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-own-form-report\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\"],[[23,0,[\\\"formName\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,12,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[12]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"own-form-report\\\"],null]],null,{\\\"statements\\\":[[4,\\\"collector/form-report\\\",null,[[\\\"form\\\",\\\"updateOnDidReceiveAttrs\\\"],[[24,[\\\"formName\\\"]],true]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[23,11,[\\\"filters\\\"]],false],[0,\\\"\\\\n        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,11,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/forms/form-report/template.hbs' @ L8:C10) \\\"],null]],[[\\\"selectable\\\"],[true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[11]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/filters-comp\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"values\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"formName\\\"]],[24,[\\\"filterValues\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content report-forms\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-right report-button-row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"statusOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more pull-left\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[6,[23,9,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"  \\\"],[1,[28,\\\"t\\\",[\\\"report.more_button\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                        \\\"],[6,[23,9,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showMassEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[6,[23,10,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                                    \\\"],[6,[23,10,[\\\"linkTo\\\"]],[],[[\\\"@route\\\",\\\"@models\\\"],[\\\"massedit\\\",[28,\\\"array\\\",[[24,[\\\"formName\\\"]],[24,[\\\"selectedRows\\\"]]],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.massedit\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[6,[23,10,[\\\"item\\\"]],[],[[\\\"@class\\\"],[\\\"disabled\\\"]],{\\\"statements\\\":[[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.massedit\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[28,\\\"needs\\\",[[28,\\\"concat\\\",[[23,13,[]],\\\"@remove\\\"],null]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showStatus\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,10,[\\\"item\\\"]],[],[[\\\"@class\\\"],[[22,\\\"moreLinksClass\\\"]]],{\\\"statements\\\":[[0,\\\"\\\\n                                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"restoreChecked\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.restore_rows\\\"],null],false],[9],[0,\\\"\\\\n                                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,10,[\\\"item\\\"]],[],[[\\\"@class\\\"],[[22,\\\"moreLinksClass\\\"]]],{\\\"statements\\\":[[0,\\\"\\\\n                                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"deleteChecked\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.delete_rows\\\"],null],false],[9],[0,\\\"\\\\n                                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[5,\\\"qr-code-generator\\\",[],[[\\\"@style\\\",\\\"@rows\\\",\\\"@editRoute\\\",\\\"@form\\\"],[\\\"li\\\",[23,0,[\\\"checked\\\"]],[23,0,[\\\"settings\\\",\\\"rowSettings\\\",\\\"editRoute\\\"]],[22,\\\"formName\\\"]]]],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[10]}],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[9]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"inlineEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more pull-left\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveRows\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general_report.inline_edit.save\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"edit-mode-container hidden-xs hidden-sm\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"timeout\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"theme\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[[24,[\\\"inlineEdit\\\"]],\\\"light\\\",[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general_report.inline_edit.toggle\\\"],null],\\\"\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"theme\\\",\\\"onToggle\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[[24,[\\\"inlineEdit\\\"]],\\\"light\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggleInlineEdit\\\"],null],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general_report.inline_edit.toggle\\\"],null],\\\"\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"statusOptions\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"status-container\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"hidden-xs\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.status\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n\\\\n                        \\\"],[5,\\\"bs-dropdown\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[6,[23,6,[\\\"button\\\"]],[],[[\\\"@class\\\"],[\\\"status-toggle btn-secondary\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[1,[24,[\\\"status\\\",\\\"name\\\"]],false],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-down\\\"],[8],[9],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                            \\\"],[6,[23,6,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"status-menu\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"statusOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,7,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"status\\\",[23,8,[]]]],[8],[1,[23,8,[\\\"name\\\"]],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"                            \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PDF-2Filled\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more display-menu\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"dropdown-toggle\\\"],[10,\\\"aria-expanded\\\",\\\"false\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-secondary\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-DragReorder\\\"],[8],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"dropdown-menu dropdown-menu-right keep-open column-selector-dropdown\\\"],[10,\\\"role\\\",\\\"menu\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.limit\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"unless\\\",[[24,[\\\"limit\\\"]],\\\"selected-limit\\\"],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"is-almost-equal\\\",[[24,[\\\"limit\\\"]],\\\"25\\\",true],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",25]],[8],[1,[24,[\\\"translations\\\",\\\"twentyfive\\\"]],false],[9],[0,\\\" |\\\\n                            \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"if\\\",[[28,\\\"is-almost-equal\\\",[[24,[\\\"limit\\\"]],\\\"50\\\",true],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",50]],[8],[1,[24,[\\\"translations\\\",\\\"fifty\\\"]],false],[9],[0,\\\" |\\\\n                            \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"if\\\",[[28,\\\"is-almost-equal\\\",[[24,[\\\"limit\\\"]],\\\"100\\\",true],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",100]],[8],[1,[24,[\\\"translations\\\",\\\"hundred\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n                        \\\"],[1,[28,\\\"report-template-selector\\\",null,[[\\\"form\\\",\\\"columns\\\",\\\"settings\\\",\\\"currentTemplate\\\",\\\"deactivateTemplate\\\"],[[24,[\\\"formName\\\"]],[24,[\\\"columns\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"currentTemplate\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"deactivateTemplate\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.hidden\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"hiddenColumns\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"a\\\",false],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.columns.click_to_show\\\"],null]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showColumn\\\",[23,5,[]]]],[8],[1,[23,5,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.shown\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.columns.click_to_hide\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"hideColumn\\\",[23,4,[]]]],[8],[1,[23,4,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"sort-link pull-right\\\"],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moveCol\\\",[23,4,[]],-1]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Up2Filled\\\"],[8],[9],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"sort-link pull-right\\\"],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moveCol\\\",[23,4,[]],1]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Down2Filled\\\"],[8],[9],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,2,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,2,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_csv\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_csv\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                        \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export\\\",\\\"export_excel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_excel\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                        \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export\\\",\\\"export_pdf\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                        \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export\\\",\\\"export_pdf_full\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf_full\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"formName\\\"]],\\\"customer\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"exportJoinedATReport\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_joined_csv\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"hideEmailSend\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showEmailDialog\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.send_email\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showStatus\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showRemovedRows\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.show_normal\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showRemovedRows\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.show_removed\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[24,[\\\"errors\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger alert-dismissable\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"#\\\"],[10,\\\"class\\\",\\\"close\\\"],[10,\\\"data-dismiss\\\",\\\"alert\\\"],[11,\\\"aria-label\\\",[28,\\\"t\\\",[\\\"general.close\\\"],null]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general_report.inline_edit.error.title\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general_report.inline_edit.error.row\\\"],[[\\\"row\\\",\\\"error\\\"],[[23,1,[\\\"index\\\"]],[23,1,[\\\"error\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[4,\\\"if\\\",[[24,[\\\"inlineEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[28,\\\"inline-edit\\\",null,[[\\\"settings\\\",\\\"addRows\\\",\\\"show_columns\\\",\\\"columnHash\\\",\\\"copyRow\\\"],[[24,[\\\"settings\\\"]],[24,[\\\"addRows\\\"]],[24,[\\\"columnString\\\"]],[28,\\\"hash\\\",null,[[\\\"all\\\",\\\"hidden\\\"],[[24,[\\\"columns\\\"]],[24,[\\\"hiddenColumns\\\"]]]]],[28,\\\"action\\\",[[23,0,[]],\\\"copyRow\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"checkable\\\",\\\"formReport\\\",\\\"settings\\\",\\\"editRow\\\",\\\"restoreRow\\\",\\\"removeRow\\\",\\\"historyRow\\\",\\\"viewRow\\\",\\\"previewRow\\\",\\\"loginToCustomer\\\",\\\"show_columns\\\",\\\"rowActions\\\",\\\"checkedRows\\\",\\\"status\\\",\\\"currentPage\\\",\\\"rowsPerPage\\\"],[true,true,[24,[\\\"settings\\\"]],\\\"editRow\\\",\\\"restoreRow\\\",\\\"removeRow\\\",\\\"historyRow\\\",\\\"viewRow\\\",\\\"previewRow\\\",\\\"loginToCustomer\\\",[24,[\\\"columnString\\\"]],[24,[\\\"rowActions\\\"]],\\\"checkedRows\\\",[24,[\\\"status\\\",\\\"id\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"showEmailModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"export-modal\\\",null,[[\\\"initType\\\",\\\"sendEmailAction\\\",\\\"exportActions\\\",\\\"showEmailModal\\\",\\\"includeApprovalLink\\\",\\\"statusFieldIsVisible\\\",\\\"form\\\",\\\"showApprovalLinkSelection\\\",\\\"count\\\",\\\"emailSent\\\",\\\"loading\\\",\\\"emailError\\\"],[[24,[\\\"exportInitType\\\"]],\\\"sendEmail\\\",\\\"handleExportActions\\\",[24,[\\\"showEmailModal\\\"]],[24,[\\\"includeApprovalLink\\\"]],[24,[\\\"statusFieldIsVisible\\\"]],[24,[\\\"formName\\\"]],[24,[\\\"showApprovalLinkSelection\\\"]],[24,[\\\"emailSendingCount\\\"]],[24,[\\\"emailSent\\\"]],[24,[\\\"showLoader\\\"]],[24,[\\\"emailError\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"mess-ages/types/promo\\\",null,[[\\\"content\\\",\\\"close\\\"],[[24,[\\\"modalContent\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/forms/form-report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/form-view/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsFormViewController;\n\nimport Ember from 'ember';\n\nFormsFormViewController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    fields: Ember.computed('model', function () {\n        var c, fields, form_name, model;\n        model = this.get('model');\n        if (!model) {\n            return;\n        }\n        form_name = model.get('constructor.modelName');\n        if (form_name) {\n            form_name = form_name.underscore();\n        }\n        c = this.get('Collector');\n        fields = c.fieldArray(form_name);\n        Em.assert('Seems that your form name ' + form_name + ' has no fields', fields);\n        fields = fields.filterBy('features.hide', void 0);\n        return fields;\n    }),\n});\n\nexport default FormsFormViewController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/form-view/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsFormViewRoute;\n\nimport Ember from 'ember';\n\nFormsFormViewRoute = Ember.Route.extend({\n    model: function (params) {\n        this.set('modelName', params.form.dasherize());\n        return this.store.findRecord(this.get('modelName'), params.id, {\n            include: true,\n        });\n    },\n});\n\nexport default FormsFormViewRoute;\n","export default Ember.HTMLBars.template({\"id\":\"SeP1ZQjh\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-10 col-md-6 col-lg-4 col-sm-offset-1 col-md-3 col-lg-offset-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/record-view-comp\\\",null,[[\\\"fields\\\",\\\"model\\\"],[[24,[\\\"fields\\\"]],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-10 col-md-6 col-lg-4 col-sm-offset-1 col-md-3 col-lg-offset-4 col-margin-top\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"button\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\",\\\"forms.form-report\\\",[24,[\\\"model\\\",\\\"_internalModel\\\",\\\"modelName\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.back\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/forms/form-view/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/information/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsInformationRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nFormsInformationRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    intl: Em.inject.service(),\n    model: function () {\n        var arr, form, forms, name;\n        forms = this.Collector.forms();\n        arr = [];\n        for (name in forms) {\n            form = forms[name];\n            form = Em.Object.create(form);\n            form.set('ext', name);\n            if (form.get('name') == null) {\n                form.set('name', this.get('intl').t('menu.' + name + 's'));\n            }\n            arr.push(form);\n        }\n        return arr;\n    },\n    actions: {\n        toggleShowFields: function (form) {\n            return form.toggleProperty('showFields');\n        },\n    },\n});\n\nexport default FormsInformationRoute;\n","export default Ember.HTMLBars.template({\"id\":\"0FRuciT/\",\"block\":\"{\\\"symbols\\\":[\\\"form\\\",\\\"value\\\",\\\"key\\\",\\\"error\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h2\\\",true],[8],[0,\\\"\\\\n        \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\" - \\\"],[1,[23,1,[\\\"ext\\\"]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-primary\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.user_can\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[23,1,[\\\"privileges\\\",\\\"add\\\"]],\\\"bg-success\\\",\\\"bg-danger\\\"],null]]]],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\": \\\"],[1,[28,\\\"if\\\",[[23,1,[\\\"privileges\\\",\\\"add\\\"]],\\\"Yes\\\",\\\"No\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[23,1,[\\\"privileges\\\",\\\"edit\\\"]],\\\"bg-success\\\",\\\"bg-danger\\\"],null]]]],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"general.edit\\\"],null],false],[0,\\\": \\\"],[1,[28,\\\"if\\\",[[23,1,[\\\"privileges\\\",\\\"edit\\\"]],\\\"Yes\\\",\\\"No\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[23,1,[\\\"privileges\\\",\\\"remove\\\"]],\\\"bg-success\\\",\\\"bg-danger\\\"],null]]]],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"formeditor.remove\\\"],null],false],[0,\\\": \\\"],[1,[28,\\\"if\\\",[[23,1,[\\\"privileges\\\",\\\"remove\\\"]],\\\"Yes\\\",\\\"No\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-danger\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.has_errors\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[1,[23,4,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-info\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"panel-heading\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleShowFields\\\",[23,1,[]]]],[8],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"fields.on_form\\\"],null],false],[0,\\\": \\\"],[7,\\\"small\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.click_to_show\\\"],null],false],[9],[9],[0,\\\" \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"panel-body \\\",[28,\\\"if\\\",[[23,1,[\\\"showFields\\\"]],\\\"\\\",\\\"hidden\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[23,1,[\\\"objects\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[23,3,[]],false],[0,\\\" \\\"],[1,[28,\\\"if\\\",[[23,2,[\\\"name\\\"]],[23,2,[\\\"name\\\"]]],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.field_type\\\"],null],false],[0,\\\": \\\"],[1,[23,2,[\\\"type\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.field_options\\\"],null],false],[0,\\\": \\\"],[1,[28,\\\"show-json\\\",[[23,2,[\\\"options\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,2,[\\\"features\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.field_features\\\"],null],false],[0,\\\": \\\"],[1,[28,\\\"show-json\\\",[[23,2,[\\\"features\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2,3]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/forms/information/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nFormsRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default FormsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"FkqvDjL+\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/forms/template.hbs\"}});","import Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { computed, get } from '@ember/object';\n\n// eslint-disable-next-line ember/alias-model-in-controller\nexport default Controller.extend({\n    gps: service('gps'),\n\n    // eslint-disable-next-line ember/avoid-leaking-state-in-ember-objects\n    translations: { lat: 'Lat', lon: 'Lon', acc: 'Accuracy' },\n\n    errorState: computed('gps.status', function () {\n        if (get(this, 'gps.status') === 'error') {\n            return true;\n        }\n    }),\n\n    searching: computed('gps.status', function () {\n        if (get(this, 'gps.status') === 'searching') {\n            return true;\n        }\n    }),\n\n    accuracy: computed('gps.currentAccuracy', function () {\n        const accuracy = get(this, 'gps.currentAccuracy');\n        if (accuracy > 1000) {\n            return Math.round(accuracy / 10) / 100 + ' km';\n        } else {\n            return Math.round(accuracy) + ' m';\n        }\n    }),\n\n    latlng: computed('gps.{currentLatitude,currentLongitude,currentAccuracy}', function () {\n        return {\n            lat: get(this, 'gps.currentLatitude'),\n            lng: get(this, 'gps.currentLongitude'),\n            accuracy: get(this, 'gps.currentAccuracy'),\n        };\n    }),\n\n    actions: {\n        retry() {\n            //@get('gpsService').start()\n            return window.location.reload();\n        },\n    },\n});\n","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nexport default Route.extend(AuthenticatedRouteMixin);\n","export default Ember.HTMLBars.template({\"id\":\"XbkQiEYa\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errorState\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[[24,[\\\"gps\\\",\\\"lastErrorHeader\\\"]]],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"show-linefeeds\\\",[[28,\\\"t\\\",[[24,[\\\"gps\\\",\\\"lastErrorMessage\\\"]]],null]],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"retry\\\"]],[8],[1,[28,\\\"t\\\",[\\\"gps.retry\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"searching\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"gps.searching_more_accurate\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"gps\\\",\\\"currentLatitude\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"google-map\\\",null,[[\\\"center\\\"],[[24,[\\\"latlng\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[1,[24,[\\\"translations\\\",\\\"lat\\\"]],false],[0,\\\": \\\"],[1,[24,[\\\"gps\\\",\\\"currentLatitude\\\"]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[24,[\\\"translations\\\",\\\"lon\\\"]],false],[0,\\\": \\\"],[1,[24,[\\\"gps\\\",\\\"currentLongitude\\\"]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[24,[\\\"translations\\\",\\\"acc\\\"]],false],[0,\\\": \\\"],[1,[22,\\\"accuracy\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/gpslocation/template.hbs\"}});","import EmberObject from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { A } from '@ember/array';\nimport GeneralReportController from '../../controllers/general-report';\n\nconst GroupsReportController = GeneralReportController.extend({\n    limit: 25,\n    form: 'group',\n\n    init() {\n        this._super(...arguments);\n        this.showColumns = ['name', 'type'];\n        this.queryParams = ['name', 'type', 'q'];\n    },\n\n    content: alias('model'),\n\n    filters: A([\n        EmberObject.create({ field: 'type' }),\n        EmberObject.create({ type: 'searchbox', bindto: 'q' }),\n    ]),\n\n    settings: EmberObject.create({\n        rowSettings: EmberObject.create({\n            editRoute: {\n                modal: true,\n            },\n        }),\n        sortByColumn: 'name',\n    }),\n});\n\nexport default GroupsReportController;\n","import GeneralReportRoute from '../../routes/general-report';\n\nconst GroupsReportRoute = GeneralReportRoute.extend({\n    queryParams: {\n        name: {\n            refreshModel: true,\n        },\n        type: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n\n    form: 'group',\n    model(params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('group', params);\n    },\n});\n\nexport default GroupsReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"77uHEREQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/groups/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default class IntegrationsReportRoute extends Route {}\n","export default Ember.HTMLBars.template({\"id\":\"7Mr+FDLa\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"Action\\\",\\\"ExportMore\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showFilters\\\"],[\\\"error_fondion\\\",\\\"q\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@formatCells\\\",\\\"@hideSumRow\\\",\\\"@selectable\\\"],[true,true,false]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ExportPdf\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Pdf\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"PdfFull\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Excel\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Csv\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Cell\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/integrations/fondionerrors/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default class IntegrationsIndexRoute extends Route {}\n","export default Ember.HTMLBars.template({\"id\":\"GDcuHjY/\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[5,\\\"ccbutton\\\",[],[[],[]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/integrations/index/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default class IntegrationsListRoute extends Route {}\n","export default Ember.HTMLBars.template({\"id\":\"xhbdYV/1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\"],[\\\"ccbutton\\\"]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/integrations/list/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default class IntegrationsReportRoute extends Route {}\n","export default Ember.HTMLBars.template({\"id\":\"iPjH7T6Q\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"integrations-report\\\",[],[[],[]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/integrations/report/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default class IntegrationsRoute extends Route {}\n","export default Ember.HTMLBars.template({\"id\":\"PpgfQUga\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/integrations/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/invite-users/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar InviteUsersController;\n\nimport Ember from 'ember';\n\nimport pdfMixin from '../../mixins/pdf-export';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nInviteUsersController = Ember.Controller.extend(AuthenticatedRouteMixin, pdfMixin, {\n    Collector: Em.inject.service('collector-service'),\n    store: Em.inject.service(),\n    session: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    notifications: Ember.inject.service(),\n    intl: Em.inject.service(),\n    queryParams: ['projectid'],\n    emailSending: false,\n    smsSending: false,\n    projectid: null,\n    codeObs: Ember.observer('magicKey', function () {\n        return this.set('message_sent', false);\n    }),\n    field: Em.computed(function () {\n        var c, f, form, forms, i, len;\n        c = this.get('Collector');\n        forms = [\n            'presence',\n            'worktime',\n            'orientations',\n            'diaryreport',\n            'tr',\n            'mvr',\n            'worktask',\n            'skyddsrond',\n            'byggdagbok',\n        ];\n        form = false;\n        for (i = 0, len = forms.length; i < len; i++) {\n            f = forms[i];\n            if (c.formExists(f)) {\n                form = f;\n                break;\n            }\n        }\n        return c.field(form, 'project');\n    }),\n    projectObs: Em.observer('projectid', 'session.currentUser.username', function () {\n        if (this.get('session.currentUser.username')) {\n            if (!this.get('projectid')) {\n                return;\n            }\n            this.set('field.value', this.get('projectid'));\n            return this.store\n                .query('project', {\n                    id: this.get('projectid'),\n                })\n                .then((data) => {\n                    this.set('project', data.get('firstObject'));\n                    return this.createInvitePDF();\n                });\n        }\n    }),\n    sms_placeholder: Ember.computed(function () {\n        var intl;\n        intl = this.get('intl');\n        return intl.t('invite_users.sms_placeholder');\n    }),\n    sms_number: Ember.computed(function () {\n        var self;\n        self = this;\n        return this.store\n            .findRecord(\n                'user',\n                this.get('session.currentUser.id', {\n                    reload: true,\n                }),\n            )\n            .then(function (data) {\n                return self.set('sms_number', data.get('phone'));\n            });\n    }),\n    email_address: Ember.computed(function () {\n        return this.get('session.currentUser.email');\n    }),\n    smsnumObs: Ember.observer('sms_number', function () {\n        if (\n            !/\\+(9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[^0]\\d{1,14}$/i.test(\n                this.get('sms_number'),\n            )\n        ) {\n            this.set('numbererror', this.get('intl').t('field.error.phone_number'));\n            return this.set('sms_button_disabled', true);\n        } else {\n            this.set('numbererror', null);\n            return this.set('sms_button_disabled', false);\n        }\n    }),\n    emailObs: Ember.observer('email_address', function () {\n        if (!this.get('email_address')) {\n            return this.set('email_button_disabled', true);\n        } else {\n            return this.set('email_button_disabled', false);\n        }\n    }),\n    createInvitePDF: function () {\n        /*\n    CREATE USER SIGNING PDF HELP - this is so horrible!!!!!! .. but does the thing\n    */\n        var c,\n            creator,\n            currenturl,\n            getLongUrl,\n            getTinyUrl,\n            intl,\n            project,\n            promise,\n            promise_arr,\n            store,\n            writtenForm;\n        project = this.get('project');\n        store = this.get('store');\n        c = this.get('Collector');\n        if (!project) {\n            return;\n        }\n        intl = this.get('intl');\n        currenturl = window.location.origin + '/';\n        creator = this.get('session.currentUser.username');\n        if (!creator) {\n            alert('Error occured. Please, log in again.');\n            return;\n        }\n        getLongUrl = (projectid, creator) => {\n            // if you edit this, edit also projects/saved/controller\n            return new Em.RSVP.Promise((resolve, reject) => {\n                var type, url, userid;\n                url = '#/register/user?project=' + projectid + '&creator=' + creator;\n                type = '';\n                if (c.productExists('products.rakentajanpaketti')) {\n                    type = 'valtti';\n                } else if (!c.productExists('products.personalliggareandid06')) {\n                    type = 'normal';\n                }\n                url += '&type=' + type;\n                userid = this.get('session.currentUser.id');\n                if (c.formExists('employer')) {\n                    return store\n                        .query('user', {\n                            id: userid,\n                            sideload: ['employer.name', 'employer.emp_id', 'employer.country'],\n                        })\n                        .then(() => {\n                            var employer;\n                            employer = this.get('session.currentUser.employer');\n                            if (employer) {\n                                if (\n                                    !employer.get('country') &&\n                                    c.productExists('products.personliggareandid06')\n                                ) {\n                                    reject({\n                                        missing: 'employer_country',\n                                    });\n                                }\n                                url += '&employer_name=' + encodeURIComponent(employer.get('name'));\n                                url += '&employer_id=' + encodeURIComponent(employer.get('emp_id'));\n                                if (employer.get('country')) {\n                                    url +=\n                                        '&employer_country=' +\n                                        encodeURIComponent(employer.get('country'));\n                                }\n                                return resolve({\n                                    longurl: url,\n                                    employer: employer.get('name'),\n                                });\n                            } else {\n                                return store\n                                    .query('employer', {\n                                        main: 'on',\n                                    })\n                                    .then((employers) => {\n                                        employer = employers.get('firstObject');\n                                        if (employer == null) {\n                                            return alert(\n                                                'Main employer is not set. Cannot create help.',\n                                            );\n                                        } else {\n                                            url +=\n                                                '&employer_name=' +\n                                                encodeURIComponent(employer.get('name'));\n                                            url +=\n                                                '&employer_id=' +\n                                                encodeURIComponent(employer.get('emp_id'));\n                                            if (employer.get('country')) {\n                                                url +=\n                                                    '&employer_country=' +\n                                                    encodeURIComponent(employer.get('country'));\n                                            }\n                                            return resolve({\n                                                longurl: url,\n                                                employer: employer.get('name'),\n                                            });\n                                        }\n                                    });\n                            }\n                        });\n                } else {\n                    return resolve({\n                        longurl: url,\n                    });\n                }\n            });\n        };\n        getTinyUrl = (projectid, projectname) => {\n            return new Em.RSVP.Promise((resolve, reject) => {\n                //resolve \"http://goo.gl/Aer43 \" + projectid\n                return getLongUrl(projectid, creator).then(\n                    (ret) => {\n                        var call;\n                        console.log(ret);\n                        call = this.get('Collector').ttapi({\n                            url: 'code/generate',\n                            data: {\n                                longUrl: currenturl + ret.longurl,\n                            },\n                            method: 'post',\n                        });\n                        return call.then(function (back) {\n                            var retarr;\n                            retarr = {\n                                project: projectname,\n                                url: back.id,\n                            };\n                            if (c.formExists('employer')) {\n                                retarr['employer'] = ret.employer;\n                            }\n                            console.log(retarr);\n                            return resolve(retarr);\n                        });\n                    },\n                    (error) => {\n                        return reject(error);\n                    },\n                );\n            });\n        };\n        writtenForm = function (url) {\n            var arr, ascii, character, characters, i, len, numbers, ret_arr, str;\n            arr = url.split('/');\n            str = arr[arr.length - 1];\n            characters = str.split('');\n            numbers = intl.t('general.numbers').split(',');\n            ret_arr = [];\n            for (i = 0, len = characters.length; i < len; i++) {\n                character = characters[i];\n                ascii = character.charCodeAt(0);\n                ret_arr.push(\n                    ascii >= 48 && ascii <= 57\n                        ? numbers[ascii - 48]\n                        : ascii >= 65 && ascii <= 90\n                          ? intl.t('general.big_char') + ' ' + character\n                          : ascii >= 97 && ascii <= 122\n                            ? intl.t('general.small_char') + ' ' + String.fromCharCode(ascii - 32)\n                            : void 0,\n                );\n            }\n            return ret_arr.join(', ');\n        };\n        promise_arr = [];\n        promise = getTinyUrl(project.get('id'), project.get('name'));\n        promise_arr.push(promise);\n        return promise.then(\n            (elem) => {\n                var codeBlock, pdfElements, start;\n                if (elem.url.indexOf('=') < 0) {\n                    start = elem.url.lastIndexOf('/') + 1; // when using http://m0v.eu/<code> url\n                } else {\n                    start = elem.url.indexOf('=') + 1; // when using kehityspurkki or p.move (http://p.movenium.com/next/ttapi/public/code?code=<code>)\n                }\n                codeBlock = elem.url.substring(start);\n                pdfElements = [];\n                pdfElements.push({\n                    text: elem.project + ' - ' + elem.employer,\n                    style: 'bigText',\n                    alignment: 'center',\n                });\n                pdfElements.push(' ');\n                pdfElements.push({\n                    text: intl.t('general.usersigninghelp_before').toString(),\n                    alignment: 'center',\n                });\n                pdfElements.push({\n                    text: elem.url,\n                    style: 'bigText',\n                    margin: [10, 10, 10, 10],\n                    alignment: 'center',\n                });\n                pdfElements.push({\n                    text: '(' + writtenForm(elem.url) + ')',\n                    alignment: 'center',\n                });\n                pdfElements.push(' ');\n                pdfElements.push({\n                    text: intl.t('general.usersigninghelp_after').toString(),\n                    alignment: 'center',\n                });\n                pdfElements.push({\n                    text: codeBlock,\n                    style: 'bigText',\n                    margin: [10, 10, 10, 10],\n                    alignment: 'center',\n                });\n                pdfElements.push(' ');\n                pdfElements.push({\n                    text: intl.t('general.usersigninghelp_qr').toString(),\n                    alignment: 'center',\n                });\n                pdfElements.push(' ');\n                pdfElements.push({\n                    qr: elem.url,\n                    alignment: 'center',\n                });\n                this.set('pdfObject', pdfElements);\n                return this.set('magicKey', elem.url.slice(-6));\n            },\n            (error) => {\n                console.error(error);\n                if (error.missing) {\n                    return this.get('dialogs').alert(\n                        this.get('intl').t('user_invite.pdf_create.missing.' + error.missing),\n                    );\n                } else {\n                    return this.get('dialogs').alert(this.get('intl').t('general.error'));\n                }\n            },\n        );\n    },\n    //########################################################\n    actions: {\n        projectChanged: function (value) {\n            this.set('project', value);\n            return this.createInvitePDF();\n        },\n        getPDF: function () {\n            if (this.get('pdfObject')) {\n                return this.createPdfFromElements(this.get('pdfObject'));\n            }\n        },\n        sendSms: function () {\n            var self, send;\n            self = this;\n            send = this.Collector.ttapi({\n                url: 'sendSms',\n                data: {\n                    phone: self.get('sms_number'),\n                    messageid: 'magic_code_sms',\n                    values: {\n                        code: self.get('magicKey'),\n                    },\n                    language: moment.locale(),\n                },\n                method: 'post',\n            });\n            return send.then(() => {\n                this.get('notifications').success(this.get('intl').t('invite_users.sms_sent'), {\n                    autoClear: true,\n                });\n                self.set('sms_message_sent', true);\n                return this.set('smsSending', false);\n            });\n        },\n        sendEmail: function () {\n            var self, send;\n            this.set('emailSending', true);\n            self = this;\n            send = this.Collector.ttapi({\n                url: 'sendEmail',\n                data: {\n                    email: self.get('email_address'),\n                    messageid: 'magic_code_email',\n                    titleid: 'magic_code_email_title',\n                    values: {\n                        sender:\n                            this.get('session.currentUser.firstname') +\n                            ' ' +\n                            this.get('session.currentUser.lastname'),\n                        service: this.get('session.currentUser.employer.name'),\n                        project: this.get('project.name'),\n                        code: self.get('magicKey'),\n                    },\n                    language: moment.locale(),\n                },\n                method: 'post',\n            });\n            return send.then(() => {\n                this.get('notifications').success(this.get('intl').t('general.email_sent'), {\n                    autoClear: true,\n                });\n                self.set('email_message_sent', true);\n                return this.set('emailSending', false);\n            });\n        },\n        setInviteType: function (type) {\n            if (type === 'sms') {\n                return this.set('inviteType', 'sms');\n            } else if (type === 'email') {\n                return this.set('inviteType', 'email');\n            }\n        },\n    },\n});\n\nexport default InviteUsersController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/invite-users/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar InviteUsersRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport pdfMixin from '../../mixins/pdf-export';\n\nInviteUsersRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    //activate: ->\n    //    @set 'controller.field.value', null\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting) {\n            this.set('controller.projectid', null);\n            this.set('controller.magicKey', null);\n            return this.set('controller.field.value', null);\n        }\n    },\n});\n\nexport default InviteUsersRoute;\n","export default Ember.HTMLBars.template({\"id\":\"2H6aJniy\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"mobileView\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"header.invite-users.not-available-on-mobile\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.invite-users\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"users.index\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-md-4 col-sm-offset-3 col-md-offset-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"invite_users.title\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"invite_users.description\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"field\\\"]]],[[\\\"change\\\"],[\\\"projectChanged\\\"]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"magicKey\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"invite_users.magic_key\\\"],null],false],[0,\\\": \\\"],[7,\\\"code\\\",true],[8],[1,[22,\\\"magicKey\\\"],false],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"getPDF\\\"]],[8],[1,[28,\\\"t\\\",[\\\"invite_users.create_pdf\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"invite_users.send_code_by\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-group\\\"],[10,\\\"id\\\",\\\"accordion\\\"],[10,\\\"role\\\",\\\"tablist\\\"],[10,\\\"aria-multiselectable\\\",\\\"true\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[10,\\\"role\\\",\\\"tab\\\"],[10,\\\"id\\\",\\\"headingOne\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"a\\\",true],[10,\\\"role\\\",\\\"button\\\"],[10,\\\"data-toggle\\\",\\\"collapse\\\"],[10,\\\"data-parent\\\",\\\"#accordion\\\"],[10,\\\"href\\\",\\\"#collapseOne\\\"],[10,\\\"aria-expanded\\\",\\\"true\\\"],[10,\\\"aria-controls\\\",\\\"collapseOne\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"t\\\",[\\\"invite_users.send_code_by_sms\\\"],null],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"id\\\",\\\"collapseOne\\\"],[10,\\\"class\\\",\\\"panel-collapse collapse in\\\"],[10,\\\"role\\\",\\\"tabpanel\\\"],[10,\\\"aria-labelledby\\\",\\\"headingOne\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"invite_users.send_sms_help\\\"],null],false],[0,\\\"\\\\n                                \\\"],[7,\\\"br\\\",true],[8],[9],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control\\\",\\\"phone\\\",[24,[\\\"sms_placeholder\\\"]],[24,[\\\"sms_number\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"numbererror\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-exclamation-sign\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[22,\\\"numbererror\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\",\\\"savingText\\\"],[[24,[\\\"smsSending\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"sendSms\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"sms_button_disabled\\\"]],[28,\\\"t\\\",[\\\"invite_users.send_sms\\\"],null],[28,\\\"t\\\",[\\\"general.sending\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[10,\\\"role\\\",\\\"tab\\\"],[10,\\\"id\\\",\\\"headingTwo\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"collapsed\\\"],[10,\\\"role\\\",\\\"button\\\"],[10,\\\"data-toggle\\\",\\\"collapse\\\"],[10,\\\"data-parent\\\",\\\"#accordion\\\"],[10,\\\"href\\\",\\\"#collapseTwo\\\"],[10,\\\"aria-expanded\\\",\\\"false\\\"],[10,\\\"aria-controls\\\",\\\"collapseTwo\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"t\\\",[\\\"invite_users.send_code_by_email\\\"],null],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"id\\\",\\\"collapseTwo\\\"],[10,\\\"class\\\",\\\"panel-collapse collapse in\\\"],[10,\\\"role\\\",\\\"tabpanel\\\"],[10,\\\"aria-labelledby\\\",\\\"headingTwo\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"t\\\",[\\\"invite_users.send_email_help\\\"],null],false],[0,\\\"\\\\n                                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control\\\",\\\"email\\\",[24,[\\\"email_placeholder\\\"]],[24,[\\\"email_address\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailerror\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-exclamation-sign\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[22,\\\"emailerror\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\",\\\"savingText\\\"],[[24,[\\\"emailSending\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"sendEmail\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"email_button_disabled\\\"]],[28,\\\"t\\\",[\\\"invite_users.send_email\\\"],null],[28,\\\"t\\\",[\\\"general.sending\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/invite-users/template.hbs\"}});","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nexport default Route.extend(AuthenticatedRouteMixin, {\n    session: service(),\n    initapp: service(),\n    analytics: service(),\n    PushNotification: service(),\n\n    afterModel() {\n        return new Promise(async (resolve) => {\n            this.analytics.trackEvent({ category: 'Logout', action: 'Logout' });\n\n            // send request to ttapi for push notification removal\n            // await it because this is a callback, and if the session is invalidated before this is complete,\n            // ttapi will respond with an error because it does not get the access token in the request\n            await this.PushNotification.unregister();\n            delete localStorage['first-time-loader-greeting'];\n            this.initapp.clearInit();\n            this.session.invalidate();\n            resolve();\n        });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"fXIW7Xld\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"signin default-background\\\"],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/logout/template.hbs\"}});","import EmberObject, { computed, set } from '@ember/object';\nimport { A } from '@ember/array';\nimport { alias } from '@ember/object/computed';\nimport GeneralReportController from '../../../controllers/general-report';\nimport { typeOf } from '@ember/utils';\n\nconst MachinesMachineController = GeneralReportController.extend({\n    form: 'tooltype',\n    limit: 25,\n\n    init() {\n        this._super(...arguments);\n        this.showColumns = ['type', 'name'];\n        this.queryParams = ['q'];\n    },\n\n    content: alias('model'),\n    settings: EmberObject.create({\n        rowSettings: EmberObject.create({\n            editRoute: {\n                modal: true,\n            },\n        }),\n        massedit: true,\n        sortByColumn: 'type',\n    }),\n\n    filters: computed(function () {\n        return A([EmberObject.create({ type: 'searchbox', bindto: 'q' })]);\n    }),\n\n    actions: {\n        filterChangeAction(value, field) {\n            if (typeOf(value) === 'object' || typeOf(value) === 'instance') {\n                return set(this, field, value.id);\n            } else {\n                return set(this, field, value);\n            }\n        },\n    },\n});\n\nexport default MachinesMachineController;\n","import { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\nimport GeneralReportRoute from '../../../routes/general-report';\n\nconst MachinesMachineRoute = GeneralReportRoute.extend({\n    store: service(),\n    flags: service(),\n\n    queryParams: {\n        q: {\n            refreshModel: true,\n        },\n    },\n\n    form: 'tooltype',\n\n    model(params) {\n        params = this._super(params);\n\n        if (params.page) {\n            delete params.page;\n        }\n        return set(this.controllerFor('machines.machine'), 'qParams', params);\n    },\n});\n\nexport default MachinesMachineRoute;\n","export default Ember.HTMLBars.template({\"id\":\"G1M7Rf0N\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"tooltype\\\",[22,\\\"qParams\\\"],[28,\\\"hash\\\",null,[[\\\"order\\\"],[\\\"type\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/machines/machine?modal=tooltype%2C\\\"]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/machine/template.hbs\"}});","import EmberObject, { computed, set } from '@ember/object';\nimport Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { A } from '@ember/array';\n\nconst MachinesMapController = Controller.extend({\n    queryParams: ['tooltype', 'status'],\n\n    tooltype: null,\n    status: null,\n    content: alias('model'),\n    filters: computed(function () {\n        return A([\n            EmberObject.create({\n                field: 'tooltype',\n                type: 'database',\n                form: 'transaction',\n                name: 'tooltype',\n            }),\n            EmberObject.create({\n                field: 'status',\n                type: 'database',\n                form: 'transaction',\n                name: 'status',\n            }),\n        ]);\n    }),\n\n    actions: {\n        filterChange(value, field) {\n            if (field === 'tooltype') {\n                return set('tooltype', value ? value.id : null);\n            } else {\n                return set(this, field, value);\n            }\n        },\n    },\n});\n\nexport default MachinesMapController;\n","import Route from '@ember/routing/route';\n\nconst MachinesMapRoute = Route.extend({\n    queryParams: {\n        tooltype: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n    },\n\n    model(params) {\n        params.endtime = '(empty)';\n        params.groupBy = 'project';\n        params.sideload = ['project.name', 'project.location_map'];\n\n        return this.store.query('transaction', params);\n    },\n});\n\nexport default MachinesMapRoute;\n","export default Ember.HTMLBars.template({\"id\":\"StWOHfIX\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/filters-comp\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"change\\\"],[\\\"tooltype,status\\\",\\\"transaction\\\",\\\"filterChange\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"machine-map\\\",null,[[\\\"machines\\\"],[[24,[\\\"model\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/map/template.hbs\"}});","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nimport GeneralReportController from '../../../controllers/general-report';\nimport moment from 'moment';\nimport EmberObject, { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isPresent } from '@ember/utils';\nimport { alias } from '@ember/object/computed';\nimport { A } from '@ember/array';\n\nconst MachinesPricesController = GeneralReportController.extend({\n    intl: service(),\n    collector: service('collector-service'),\n    excel: service(),\n    queryParams: ['project', 'tooltype', 'starttime', 'status', 'more'],\n    form: 'transaction',\n    selectedProject: null,\n    tooltype: null,\n    project: null,\n    content: alias('model'),\n    filters: computed(function () {\n        return A([\n            EmberObject.create(\n                { field: 'starttime', type: 'date' },\n                {\n                    start: moment().subtract(1, 'month').format('YYYY-MM-DD'),\n                    end: moment().format('YYYY-MM-DD'),\n                },\n            ),\n            EmberObject.create({ field: 'project' }),\n            EmberObject.create({ field: 'tooltype' }),\n            EmberObject.create({ field: 'status' }),\n        ]);\n    }),\n    formattedData: computed('model', function () {\n        const c = get(this, 'collector');\n        const model = this.model;\n        for (let project in model) {\n            const data = model[project];\n            if (isPresent(data.rows)) {\n                data.rows.forEach((item) => {\n                    return (item.status = c.getDropdownValue(\n                        null,\n                        item.status,\n                        c.field('transaction', 'status'),\n                    ));\n                });\n            }\n        }\n        return model;\n    }),\n\n    rowColumns: computed(function () {\n        const columns = ['tooltype', 'timespan', 'status', 'price', 'days', 'amount', 'sum'];\n        get(this, 'ownFields').forEach((field) => {\n            return columns.push(field.name);\n        });\n        return columns;\n    }),\n\n    ownFields: computed(function () {\n        const formFields = [\n            'tooltype',\n            'timespan',\n            'status',\n            'price',\n            'days',\n            'amount',\n            'sum',\n            'starttime',\n            'endtime',\n            'project',\n        ];\n        const ownFields = [];\n        const c = get(this, 'Collector');\n        c.fieldArray(get(this, 'form')).filter((field) => {\n            if (!formFields.includes(field.name)) {\n                return ownFields.push(field);\n            }\n        });\n        return ownFields;\n    }),\n\n    translatedColumns: computed(function () {\n        const intl = get(this, 'intl');\n        const rowColumns = get(this, 'rowColumns');\n        const ownFields = get(this, 'ownFields');\n        const translatedColumns = [];\n        rowColumns.forEach((item) => {\n            let translation = intl.t('report.transactionprices.' + item);\n            if (ownFields) {\n                ownFields.forEach((field) => {\n                    if (field.name === item) {\n                        return (translation = field.translated_name);\n                    }\n                });\n            }\n            return translatedColumns.push(translation);\n        });\n        return translatedColumns;\n    }),\n\n    actions: {\n        filterChanged(num, form) {\n            if (form === 'project') {\n                set(this, 'selectedProject', num);\n            }\n            return this._super(num, form);\n        },\n        export_print() {\n            return print();\n        },\n        export_excel() {\n            const cols = this.translatedColumns.map((i) => i);\n            const rowColumns = this.rowColumns;\n            const excel = this.excel;\n            const intl = this.intl;\n            const exportData = [];\n            const object = this.model;\n            for (let project in object) {\n                const data = object[project];\n                exportData.push([project]);\n                exportData.push([]);\n                exportData.push(cols);\n                data.rows.forEach((item) => {\n                    const ret = [];\n                    rowColumns.forEach((col) => {\n                        return ret.push(item[col]);\n                    });\n                    return exportData.push(ret);\n                });\n                exportData.push([]);\n            }\n\n            return excel.export(exportData, {\n                sheetName: intl.t('machines.prices'),\n                fileName: intl.t('machines.prices') + '.xlsx',\n            });\n        },\n    },\n    starttime:\n        moment().subtract(1, 'month').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n});\n\nexport default MachinesPricesController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport initRoute from 'tt4/mixins/init-route';\nimport { isEmpty, isPresent } from '@ember/utils';\nimport { set } from '@ember/object';\n\nconst MachinesPricesRoute = Route.extend(initRoute, {\n    collector: service('collector-service'),\n    queryParams: {\n        project: {\n            refreshModel: true,\n        },\n        tooltype: {\n            refreshModel: true,\n        },\n        starttime: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        more: {\n            refreshModel: true,\n        },\n    },\n\n    more: null,\n    model(params) {\n        // only fetch if project is chosen\n        let split;\n        if (params.project == null || params.project === '') {\n            return;\n        }\n        for (let param in params) {\n            const v = params[param];\n            if (param.includes('-')) {\n                if (isPresent(v)) {\n                    split = param.split('-');\n                    if (isEmpty(params[split[0]])) {\n                        params[split[0]] = { [split[1]]: v };\n                    }\n                }\n                delete params[param];\n            }\n\n            if (v === 'null' || v === null || v === 'undefined') {\n                delete params[param];\n            }\n        }\n\n        if (params.more != null) {\n            params.more.split(',').forEach(function (param) {\n                const splitted = param.split(':');\n                if (splitted[0].includes('-')) {\n                    if (isPresent(splitted[1])) {\n                        split = splitted[0].split('-');\n                        if (isEmpty(params[split[0]])) {\n                            return (params[split[0]] = { [split[1]]: splitted[1] });\n                        }\n                    }\n                } else {\n                    return (params[splitted[0]] = splitted[1]);\n                }\n            });\n            set(this, 'more', params.more);\n        } else {\n            set(this, 'more', null);\n        }\n\n        delete params.more; // just to make sure this doesn't bleed into capi\n\n        delete params.page;\n        params.limit = 'all';\n        return this.collector.ttapi({ url: 'machines/prices', data: params });\n    },\n});\n\nexport default MachinesPricesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"/JB8eOS7\",\"block\":\"{\\\"symbols\\\":[\\\"project\\\",\\\"index\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row hidden-print\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2 col-xs-offset-10\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_print\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"general.print\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_excel\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"report.actions.export_excel\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"hidden-print\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"selectedProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.select.project\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[24,[\\\"formattedData\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h4\\\",true],[8],[1,[23,2,[]],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\"],[[24,[\\\"rowColumns\\\"]],[24,[\\\"translatedColumns\\\"]],[23,1,[\\\"rows\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-xs-offset-6 col-sm-4 col-md-2 col-sm-offset-8 col-md-offset-9\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[7,\\\"b\\\",true],[10,\\\"class\\\",\\\"text-uppercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.transactionprices.pricetotal\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"totals\\\",\\\"sum\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"report-print\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/prices/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst MachinesRoute = Route.extend(AuthenticatedRouteMixin);\n\nexport default MachinesRoute;\n","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\nimport { isPresent } from '@ember/utils';\nimport { Promise as EmberPromise } from 'rsvp';\nimport { later } from '@ember/runloop';\nimport Ember from 'ember';\n\nconst MachinesTransactionController = Controller.extend({\n    store: service(),\n    init() {\n        this._super(...arguments);\n        this.pojo = {};\n    },\n\n    content: alias('model'),\n    actions: {\n        typeSelected(value, field) {\n            if (value) {\n                return this.transitionToRoute('machines.transaction.' + field, value.id);\n            }\n        },\n\n        changeAddValue(value, field) {\n            return set(this, 'pojo.' + field, value);\n        },\n\n        async savePojo() {\n            set(this, 'saving', true);\n            const pojo = this.pojo;\n            const store = this.store;\n            const project = isPresent(pojo.project) ? pojo.project : null;\n            const tooltypeRecord = await store.findRecord('tooltype', get(pojo, 'tooltype.id'), {\n                reload: true,\n            });\n            const price = tooltypeRecord.price;\n            const data = await store.query('transaction', {\n                tooltype: get(pojo, 'tooltype.id'),\n                project: get(project, 'id') || '(empty)',\n                endtime: '(empty)',\n            });\n            const save_these = [];\n            if (data.length > 0) {\n                const old_row = data.firstObject;\n                set(old_row, 'endtime', moment.utc().format('YYYY-MM-DD HH:mm:ss.SSS'));\n                save_these.push(old_row.save());\n                const new_amount = parseInt(old_row.amount, 10) + parseInt(pojo.amount, 10);\n                save_these.push(\n                    store\n                        .createRecord('transaction', {\n                            tooltype: pojo.tooltype,\n                            price,\n                            starttime: moment.utc().format('YYYY-MM-DD HH:mm:ss.SSS'),\n                            amount: new_amount,\n                            project,\n                        })\n                        .save(),\n                );\n            } else {\n                save_these.push(\n                    store\n                        .createRecord('transaction', {\n                            tooltype: pojo.tooltype,\n                            price,\n                            starttime: moment.utc().format('YYYY-MM-DD HH:mm:ss.SSS'),\n                            amount: pojo.amount,\n                            project,\n                        })\n                        .save(),\n                );\n            }\n\n            await EmberPromise.all(save_these);\n            set(this, 'saved', true);\n            if (!Ember.testing) {\n                return later(\n                    this,\n                    () => {\n                        set(this, 'saved', false);\n                        set(pojo, 'amount', null);\n                        set(pojo, 'tooltype', null);\n                        set(pojo, 'project', null);\n                        set(this, 'saving', false);\n                        return this.transitionToRoute('machines.transactions');\n                    },\n                    5000,\n                );\n            }\n        },\n    },\n});\nexport default MachinesTransactionController;\n","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst MachinesTransactionRoute = Route.extend(AuthenticatedRouteMixin);\n\nexport default MachinesTransactionRoute;\n","export default Ember.HTMLBars.template({\"id\":\"EYMzmM81\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6 col-md-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"transaction.tooltype\\\"],[[\\\"change\\\"],[\\\"changeAddValue\\\"]]],false],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"transaction.project\\\"],[[\\\"change\\\"],[\\\"changeAddValue\\\"]]],false],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"transaction.amount\\\"],[[\\\"change\\\"],[\\\"changeAddValue\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saved\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"machines.transaction.saved\\\"],[[\\\"amount\\\",\\\"machine\\\"],[[24,[\\\"pojo\\\",\\\"amount\\\"]],[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"tooltype\\\",[24,[\\\"pojo\\\",\\\"tooltype\\\"]]]]]]]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"savePojo\\\"]],[8],[1,[28,\\\"t\\\",[\\\"machines.transaction.save_tools\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transaction/add/template.hbs\"}});","import { isPresent } from '@ember/utils';\nimport { computed, get } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport Controller from '@ember/controller';\n\nexport default Controller.extend({\n    collectorService: service(),\n    transaction: alias('model'),\n\n    subMenus: computed(function () {\n        const c = get(this, 'collectorService');\n        const subMenus = [\n            { link: 'machines.transaction.project', text: 'machines.transaction.select_project' },\n            // {link: 'machines.transaction.tooltype', text:'machines.transaction.select_tooltype'},\n            {\n                link: 'machines.transaction.add',\n                text: 'machines.transaction.add_tools',\n                needs: ['tooltype@add'],\n            },\n        ];\n\n        return subMenus.filter(function (item) {\n            if (isPresent(item.needs)) {\n                return c.testNeeds(item.needs);\n            }\n            return true;\n        });\n    }),\n});\n","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport EmberObject, { get, set } from '@ember/object';\nimport { Promise as EmberPromise } from 'rsvp';\nimport { later } from '@ember/runloop';\nimport Ember from 'ember';\n\nconst MachinesTransactionMoveController = Controller.extend({\n    store: service(),\n    content: alias('model'),\n    pojo: EmberObject.create({\n        amount: null,\n        project: null,\n    }),\n    actions: {\n        change(value, field) {\n            return set(this.pojo, field, value);\n        },\n\n        async moveMachines() {\n            const pojo = this.pojo;\n            const model = this.model;\n            const store = this.store;\n            if (get(pojo, 'project.id') !== get(model, 'project.id')) {\n                const amount = parseInt(model.amount, 10);\n                const pojo_amount = parseInt(pojo.amount, 10);\n                set(model, 'endtime', moment.utc().format('YYYY-MM-DD HH:mm:ss.SSS'));\n                let old_project = null;\n                const data = await store.query('transaction', {\n                    project: get(pojo, 'project.id'),\n                    tooltype: get(model, 'tooltype.id'),\n                    endtime: '(empty)',\n                });\n                if (amount - pojo_amount > 0) {\n                    old_project = store.createRecord('transaction', {\n                        amount: amount - pojo_amount,\n                        tooltype: model.tooltype,\n                        starttime: moment.utc().format('YYYY-MM-DD HH:mm:ss.SSS'),\n                        project: model.project,\n                        price: get(model, 'tooltype.price'),\n                    });\n                }\n                let new_amount = pojo_amount;\n                if (data.length > 0) {\n                    const found_project = data.firstObject;\n                    const old_amount = parseInt(found_project.amount, 10);\n                    set(found_project, 'endtime', moment.utc().format('YYYY-MM-DD HH:mm:ss.SSS'));\n                    found_project.save();\n                    new_amount += old_amount;\n                }\n\n                const new_project = store.createRecord('transaction', {\n                    amount: new_amount,\n                    tooltype: model.tooltype,\n                    starttime: moment.utc().format('YYYY-MM-DD HH:mm:ss.SSS'),\n                    project: pojo.project,\n                    price: get(model, 'tooltype.price'),\n                });\n\n                const save_these = [model.save, new_project.save()];\n                if (old_project) {\n                    save_these.push(old_project.save());\n                }\n\n                await EmberPromise.all(save_these);\n                set(this, 'saved', true);\n                if (!Ember.testing) {\n                    return later(\n                        this,\n                        () => {\n                            set(this, 'saved', false);\n                            set(pojo, 'amount', null);\n                            set(pojo, 'project', null);\n                            return this.transitionToRoute('machines.transactions');\n                        },\n                        5000,\n                    );\n                }\n            }\n        },\n    },\n});\n\nexport default MachinesTransactionMoveController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\n\nconst MachinesTransactionMoveRoute = Route.extend({\n    store: service(),\n    collector: service('collector-service'),\n    model(params) {\n        params.endtime = '(empty)';\n        params.sideload = this.collector.getSideloads('transaction');\n        params.sideload.push('tooltype.price');\n        return this.store.query('transaction', params).then((objects) => objects.objectAt(0));\n    },\n});\n\nexport default MachinesTransactionMoveRoute;\n","export default Ember.HTMLBars.template({\"id\":\"HCO7qS9D\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6 col-md-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"machines.transaction.move.title\\\"],[[\\\"amount\\\",\\\"project\\\"],[[24,[\\\"model\\\",\\\"amount\\\"]],[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"project\\\",[24,[\\\"model\\\",\\\"project\\\"]]]]]]]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"transaction.project\\\"],[[\\\"change\\\"],[\\\"change\\\"]]],false],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"transaction.amount\\\"],[[\\\"change\\\"],[\\\"change\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moveMachines\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"machines.transaction.move.action\\\"],[[\\\"amount\\\",\\\"project\\\"],[[24,[\\\"pojo\\\",\\\"amount\\\"]],[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"project\\\",[24,[\\\"pojo\\\",\\\"project\\\"]]]]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saved\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"machines.transaction.move.saved\\\"],[[\\\"amount\\\",\\\"tooltype\\\",\\\"oldproject\\\",\\\"newproject\\\"],[[24,[\\\"pojo\\\",\\\"amount\\\"]],[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"tooltype\\\",[24,[\\\"model\\\",\\\"tooltype\\\"]]]]],[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"project\\\",[24,[\\\"model\\\",\\\"project\\\"]]]]],[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"project\\\",[24,[\\\"pojo\\\",\\\"project\\\"]]]]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transaction/move/template.hbs\"}});","import { isPresent } from '@ember/utils';\nimport Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { get } from '@ember/object';\n\nexport default Controller.extend({\n    transaction: alias('model'),\n\n    actions: {\n        typeSelected(value, field) {\n            if (isPresent(value) && get(value, 'id')) {\n                this.transitionToRoute(`machines.transaction.${field}.selected`, get(value, 'id'));\n            } else {\n                this.transitionToRoute(`machines.transaction.${field}`);\n            }\n        },\n    },\n});\n","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { computed, get, set } from '@ember/object';\nimport { later } from '@ember/runloop';\nimport { isPresent, typeOf } from '@ember/utils';\nimport Ember from 'ember';\n\nconst MachinesTransactionProjectController = Controller.extend({\n    Collector: service('collector-service'),\n    //    queryParams: ['statusSearch','more']\n    status: null,\n    init() {\n        this._super(...arguments);\n        const c = this.Collector;\n        const filters = c.fieldArray('transaction').filter((item) => {\n            set(item, 'value', get(this, 'item.name'));\n            return (\n                ['database', 'dropdown_values'].includes(item.type) &&\n                !['project', 'status', 'tooltype'].includes(item.name)\n            );\n        });\n        set(this, 'filters', filters);\n        const qp = filters.mapBy('name');\n        qp.push('statusSearch');\n        set(this, 'queryParams', qp);\n        return set(this, 'to', {});\n    },\n\n    content: alias('model'),\n    tools: computed('project.id', 'model.project.id', function () {\n        return this.model.transactions.sortBy('tooltype.type');\n    }),\n\n    showSaveButton: computed('project.id', 'model.project.id', function () {\n        return get(this, 'project.id');\n    }),\n\n    fields: computed('model.project', function () {\n        const fields = [];\n        this.Collector.fieldArray('transaction').forEach((item) => {\n            if (\n                ['database', 'dropdown_values'].includes(item.type) &&\n                !['project', 'status', 'tooltype'].includes(item.name)\n            ) {\n                item.filterOptions = { project: get(this.model, 'project.id') };\n                return fields.push(item);\n            }\n        });\n        return fields;\n    }),\n\n    to_fields: computed('fields', 'project', function () {\n        return this.fields.map((item) => {\n            const new_item = Object.assign({}, item);\n            new_item.filterOptions = { project: this.project?.id };\n            return new_item;\n        });\n    }),\n\n    actions: {\n        changeStatus(value) {\n            return set(this, 'statusSearch', value);\n        },\n\n        valueChanged(value, tooltype, status, transactionid) {\n            //Ember.set(this, 'amounts.'+Ember.get(tooltype,'id'), parseInt(value))\n            const found = this.model.amounts.find(\n                (item) =>\n                    item.tooltype === get(tooltype, 'id') &&\n                    item.status === status &&\n                    item.id === transactionid,\n            );\n            if (found) {\n                return (found.amount = parseInt(value));\n            } else {\n                return this.model.amounts.push({\n                    id: transactionid,\n                    tooltype: get(tooltype, 'id'),\n                    status,\n                    amount: parseInt(value),\n                });\n            }\n        },\n\n        async moveMachines() {\n            set(this, 'saving', true);\n            const params = {\n                machines: [],\n                from: {\n                    project: get(this.model, 'project.id'),\n                    status: this.statusSearch,\n                },\n                to: {\n                    project: get(this, 'project.id'),\n                    status: this.status,\n                },\n            };\n\n            const fields = this.fields;\n            if (fields.length > 0) {\n                fields.forEach((field) => {\n                    params['from'][field.name] = get(this, field.name);\n                    return (params['to'][field.name] = get(this, 'to.' + field.name));\n                });\n            }\n\n            this.model.amounts.forEach((item) => {\n                if (item.amount < 1) {\n                    return;\n                }\n                const ret = {\n                    id: item.id,\n                    tooltype: item.tooltype,\n                    amount: item.amount,\n                };\n                fields.forEach((field) => {\n                    if (isPresent(get(item, field.name))) {\n                        return set(ret, field.name, get(item, field.name));\n                    }\n                });\n                return params.machines.push(ret);\n            });\n\n            await this.Collector.ttapi({\n                url: 'machines/move',\n                method: 'post',\n                data: JSON.stringify(params),\n                contentType: 'application/json; charset=utf-8',\n            });\n            set(this, 'saved', true);\n            if (!Ember.testing) {\n                return later(\n                    this,\n                    () => {\n                        set(this, 'saved', false);\n                        set(this, 'saving', false);\n                        return this.transitionToRoute('machines.transactions');\n                    },\n                    5000,\n                );\n            }\n        },\n\n        selectProject(value) {\n            return set(this, 'project', value);\n        },\n\n        selectStatus(value) {\n            return set(this, 'status', value);\n        },\n\n        changeValue(way, value, field) {\n            if (way === 'to') {\n                field = 'to.' + field;\n            }\n            if (typeOf(value) === 'instance') {\n                value = value.id;\n            }\n            return set(this, field, value);\n        },\n    },\n});\n\nexport default MachinesTransactionProjectController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { hash } from 'rsvp';\nimport { set } from '@ember/object';\n\nconst MachinesTransactionProjectRoute = Route.extend({\n    store: service(),\n    Collector: service('collector-service'),\n    init() {\n        this._super(...arguments);\n        const qp = {\n            statusSearch: {\n                refreshModel: true,\n            },\n        };\n        const c = this.Collector;\n        c.fieldArray('transaction').forEach((item) => {\n            if (\n                ['database', 'dropdown_values'].includes(item.type) &&\n                !['project', 'status', 'tooltype'].includes(item.name)\n            ) {\n                return (qp[item.name] = { refreshModel: true });\n            }\n        });\n\n        return set(this, 'queryParams', qp);\n    },\n\n    model(params) {\n        let groups, transactions;\n        if (params.statusSearch) {\n            params.status = params.statusSearch;\n        }\n        delete params.statusSearch;\n        //        params.groupBy =\n        params.endtime = '(empty)';\n        params.sideload = true;\n\n        if (this.Collector.testNeeds(['toolgroup'])) {\n            transactions = null;\n            groups = this.store.findAll('toolgroup');\n        } else {\n            transactions = this.store.query('transaction', params);\n            groups = null;\n        }\n\n        return hash({\n            project: this.store.findRecord('project', params.project),\n            amounts: [],\n            transactions,\n            params,\n            groups,\n        });\n    },\n});\n\nexport default MachinesTransactionProjectRoute;\n","export default Ember.HTMLBars.template({\"id\":\"8OE4YElQ\",\"block\":\"{\\\"symbols\\\":[\\\"amount\\\",\\\"index\\\",\\\"field\\\",\\\"transaction\\\",\\\"group\\\",\\\"field\\\"],\\\"statements\\\":[[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"machines.transaction.status_desc\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"transaction.status\\\"],[[\\\"change\\\",\\\"class\\\"],[\\\"changeStatus\\\",\\\"add-fields form-control\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"label\\\",true],[8],[1,[23,6,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,6,[]]],[[\\\"change\\\",\\\"class\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\",[24,[\\\"from\\\"]]],null],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"groups\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"groups\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"machines/transaction/project/selected/tool-group\\\",null,[[\\\"group\\\",\\\"otherParams\\\",\\\"amounts\\\",\\\"change\\\"],[[23,5,[]],[24,[\\\"model\\\",\\\"params\\\"]],[24,[\\\"model\\\",\\\"amounts\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"valueChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[5]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"machines.transaction.project.empty\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"tools\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"machines/transaction/project/selected/tool-item\\\",null,[[\\\"tooltype\\\",\\\"status\\\",\\\"amount\\\",\\\"id\\\",\\\"change\\\"],[[23,4,[\\\"tooltype\\\"]],[23,4,[\\\"status\\\"]],[23,4,[\\\"amount\\\"]],[23,4,[\\\"id\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"valueChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[4]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"machines.transaction.project.empty\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"project\\\",\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"machines.transaction.project.move_project\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"transaction.project\\\"],[[\\\"change\\\",\\\"class\\\"],[\\\"selectProject\\\",\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"machines.transaction.project.change_status\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"transaction.status\\\"],[[\\\"change\\\",\\\"class\\\"],[\\\"selectStatus\\\",\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"to_fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"label\\\",true],[8],[1,[23,3,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,3,[]]],[[\\\"change\\\",\\\"class\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\",\\\"to\\\"],null],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[4,\\\"if\\\",[[24,[\\\"saved\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"machines.transaction.project.saved.moved\\\"],null],false],[0,\\\" \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[24,[\\\"amounts\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,1,[]],0],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,1,[]],false],[0,\\\"  \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"tooltype\\\",[23,2,[]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2]},null],[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"machines.transaction.project.saved.info\\\"],[[\\\"oldproject\\\",\\\"newproject\\\"],[[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"project\\\",[24,[\\\"model\\\",\\\"project\\\"]]]]],[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"project\\\",[24,[\\\"project\\\"]]]]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showSaveButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moveMachines\\\"]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"machines.transaction.project.action\\\"],[[\\\"project\\\"],[[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"project\\\",[24,[\\\"project\\\"]]]]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transaction/project/selected/template.hbs\"}});","import Component from '@ember/component';\nimport { Promise as EmberPromise } from 'rsvp';\nimport PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\nimport ObjectProxy from '@ember/object/proxy';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n\n    transactions: computed('tooltypes.value', 'otherParams', function () {\n        return ObjectProxy.extend(PromiseProxyMixin).create({\n            promise: new EmberPromise((resolve) => {\n                if (!get(this, 'tooltypes.value') || get(this, 'tooltypes.value.length') == 0) {\n                    resolve({ value: [] });\n                    return;\n                }\n\n                const params = get(this, 'otherParams');\n                params.tooltype = get(this, 'tooltypes.value').mapBy('id').join(',');\n\n                get(this, 'store')\n                    .query('transaction', params)\n                    .then((records) => this._resolveTransactions(records, resolve));\n            }),\n        });\n    }),\n\n    tooltypes: computed('group', function () {\n        return ObjectProxy.extend(PromiseProxyMixin).create({\n            promise: new EmberPromise((resolve) => {\n                get(this, 'store')\n                    .query('tooltype', { toolgroup: get(this, 'group.id') })\n                    .then((records) => this._resolveTooltypes(records, resolve));\n            }),\n        });\n    }),\n\n    actions: {\n        valueChanged(value, tooltype, status, transactionid) {\n            this.change(value, tooltype, status, transactionid);\n        },\n    },\n\n    _resolveTransactions(records, resolve) {\n        resolve({ value: records.sortBy('tooltype.type') });\n    },\n\n    _resolveTooltypes(records, resolve) {\n        resolve({ value: records });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"J3kbRy6/\",\"block\":\"{\\\"symbols\\\":[\\\"transaction\\\",\\\"&default\\\"],\\\"statements\\\":[[14,2],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"onoff\\\"]]],null],[28,\\\"not\\\",[[24,[\\\"onoff\\\"]]],null]],null]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"b\\\",true],[8],[1,[24,[\\\"group\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"icon-small pull-right text-report-muted \\\",[28,\\\"if\\\",[[24,[\\\"onoff\\\"]],\\\"move move-SortUp\\\",\\\"move move-SortDown\\\"],null]]]],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"onoff\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"transactions\\\",\\\"value\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"machines/transaction/project/selected/tool-item\\\",null,[[\\\"tooltype\\\",\\\"status\\\",\\\"amount\\\",\\\"id\\\",\\\"amounts\\\",\\\"change\\\"],[[23,1,[\\\"tooltype\\\"]],[23,1,[\\\"status\\\"]],[23,1,[\\\"amount\\\"]],[23,1,[\\\"id\\\"]],[24,[\\\"amounts\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"valueChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"machines.transaction.project.empty\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transaction/project/selected/tool-group/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nexport default Component.extend({\n    value: 0,\n\n    defaultValue: 0,\n\n    freeAmount: computed('amount', 'value', function () {\n        return get(this, 'amount') - get(this, 'value');\n    }),\n\n    didReceiveAttrs() {\n        let amounts = get(this, 'amounts');\n        if (amounts && amounts.length > 0) {\n            amounts.forEach((amount) => {\n                if (get(this, 'id') === get(amount, 'id')) {\n                    set(this, 'value', get(amount, 'amount'));\n                }\n            });\n        }\n    },\n\n    actions: {\n        handleButtons(value) {\n            value = parseInt(value, 10);\n            const v = parseInt(get(this, 'value'), 10);\n            if (v === 0 && value === -1) return;\n            if (v === get(this, 'amount') && value === 1) return;\n            set(this, 'value', v + value);\n            this.change(v + value, get(this, 'tooltype'), get(this, 'status'), get(this, 'id'));\n        },\n        handleInput(value) {\n            if (value < 0) {\n                set(this, 'value', 0);\n                this.change(0, get(this, 'tooltype'), get(this, 'status'), get(this, 'id'));\n            } else if (value >= get(this, 'amount')) {\n                set(this, 'value', get(this, 'amount'));\n                this.change(\n                    get(this, 'amount'),\n                    get(this, 'tooltype'),\n                    get(this, 'status'),\n                    get(this, 'id'),\n                );\n            } else {\n                this.change(value, get(this, 'tooltype'), get(this, 'status'), get(this, 'id'));\n            }\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"L/9ED5tb\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-7 col-md-4 col-lg-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"tooltype\\\",\\\"transaction\\\",[24,[\\\"tooltype\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"status\\\"]]],null,{\\\"statements\\\":[[0,\\\"                (\\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"status\\\",\\\"transaction\\\",[24,[\\\"status\\\"]]]]],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-5 col-md-4 col-lg-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"input-group-addon add-fields minus-tool-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"handleButtons\\\",-1]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyph-lg glyphicon-minus-sign\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[8],[4,\\\"if\\\",[[24,[\\\"freeAmount\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"amount\\\",\\\"transaction\\\",[24,[\\\"freeAmount\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[22,\\\"defaultValue\\\"],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\" /\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"type\\\",\\\"min\\\",\\\"step\\\",\\\"class\\\",\\\"key-up\\\"],[[24,[\\\"value\\\"]],\\\"number\\\",1,1,\\\"form-control add-fields\\\",[28,\\\"action\\\",[[23,0,[]],\\\"handleInput\\\",[24,[\\\"value\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"input-group-addon add-fields plus-tool-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"handleButtons\\\",1]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyph-lg glyphicon-plus-sign\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transaction/project/selected/tool-item/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"TvKHxusG\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"machines.transaction.project_desc\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"transaction.project\\\"],[[\\\"change\\\",\\\"class\\\"],[\\\"typeSelected\\\",\\\"add-fields form-control\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transaction/project/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"lVKy9v9p\",\"block\":\"{\\\"symbols\\\":[\\\"sublink\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"subMenus\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subMenus\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"div\\\",\\\"submenu-item\\\",[23,1,[\\\"link\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transaction/template.hbs\"}});","import Controller from '../project/controller';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    tooltype: alias('model'),\n});\n","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { get } from '@ember/object';\n\nconst MachinesTransactionTooltypeController = Controller.extend({\n    content: alias('model'),\n    actions: {\n        moveMachines(transaction) {\n            const project = transaction.project;\n            if (project) {\n                return this.transitionToRoute(\n                    'machines.transaction.move',\n                    get(transaction, 'tooltype.id'),\n                    project.id,\n                );\n            } else {\n                return this.transitionToRoute(\n                    'machines.transaction.move',\n                    get(transaction, 'tooltype.id'),\n                    '(empty)',\n                );\n            }\n        },\n    },\n});\n\nexport default MachinesTransactionTooltypeController;\n","import Route from '@ember/routing/route';\nimport { hash } from 'rsvp';\nimport { inject as service } from '@ember/service';\n\nconst MachinesTransactionTooltypeRoute = Route.extend({\n    store: service(),\n    model(params) {\n        params.endtime = '(empty)';\n        params.sideload = true;\n        params.order = 'project';\n        return hash({\n            transactions: this.store.query('transaction', params),\n            tooltype: this.store.findRecord('tooltype', params.tooltype),\n        });\n    },\n});\n\nexport default MachinesTransactionTooltypeRoute;\n","export default Ember.HTMLBars.template({\"id\":\"NxzSeXfR\",\"block\":\"{\\\"symbols\\\":[\\\"transaction\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6 col-md-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"machines.transaction.tooltype.title\\\"],[[\\\"machine\\\"],[[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"tooltype\\\",\\\"transaction\\\",[24,[\\\"model\\\",\\\"tooltype\\\"]]]]]]]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6 col-md-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group link-component-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"transactions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",\\\"list-group-item link transaction\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moveMachines\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"b\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"amount\\\",\\\"transaction\\\",[23,1,[\\\"amount\\\"]]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"machines.pieces\\\"],null],false],[0,\\\"\\\\n                        -\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[23,1,[]],\\\"project\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"project\\\",\\\"transaction\\\",[23,1,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"t\\\",[\\\"machines.transaction.tooltype.empty_project\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                     \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge move move-RightRound\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transaction/tooltype/selected/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"e7IAP5tk\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"machines.transaction.tooltype_desc\\\"],null],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"transaction.tooltype\\\"],[[\\\"change\\\",\\\"class\\\"],[\\\"typeSelected\\\",\\\"add-fields form-control\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transaction/tooltype/template.hbs\"}});","import GeneralReportController from '../../../controllers/general-report';\nimport { alias } from '@ember/object/computed';\nimport EmberObject, { computed, set } from '@ember/object';\nimport { typeOf } from '@ember/utils';\nimport { A } from '@ember/array';\n\nconst MachinesTransactionsHistoryController = GeneralReportController.extend({\n    form: 'transaction',\n    limit: 25,\n\n    init() {\n        this._super(...arguments);\n        this.showColumns = ['project', 'tooltype', 'amount', 'price', 'starttime'];\n        this.queryParams = ['project', 'tooltype', 'q'];\n    },\n\n    content: alias('model'),\n    settings: EmberObject.create({\n        rowSettings: EmberObject.create({\n            hideEdit: true,\n        }),\n        massedit: true,\n        sortByColumn: 'project,starttime-',\n    }),\n\n    filters: computed(function () {\n        return A([\n            EmberObject.create({ field: 'project' }),\n            EmberObject.create({ field: 'tooltype' }),\n            EmberObject.create({ type: 'searchbox', bindto: 'q' }),\n            EmberObject.create({ field: 'endtime', value: '!(empty)' }),\n        ]);\n    }),\n\n    actions: {\n        filterChangeAction(value, field) {\n            if (typeOf(value) === 'object' || typeOf(value) === 'instance') {\n                return set(this, field, value.id);\n            } else {\n                return set(this, field, value);\n            }\n        },\n    },\n});\n\nexport default MachinesTransactionsHistoryController;\n","import { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\nimport GeneralReportRoute from '../../../routes/general-report';\n\nconst MachinesTransactionsHistoryRoute = GeneralReportRoute.extend({\n    store: service(),\n    flags: service(),\n\n    queryParams: {\n        project: {\n            refreshModel: true,\n        },\n        tooltype: {\n            refreshModel: true,\n        },\n    },\n\n    form: 'transaction',\n    model(params) {\n        params = this._super(params);\n\n        if (params.page) {\n            delete params.page;\n        }\n        return set(this.controllerFor('machines.transactions-history'), 'qParams', params);\n    },\n});\n\nexport default MachinesTransactionsHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"i5PckcVb\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\",\\\"@localStorageKey\\\"],[\\\"transaction\\\",[22,\\\"qParams\\\"],\\\"project,tooltype,q,status\\\",[28,\\\"hash\\\",null,[[\\\"endtime\\\",\\\"order\\\"],[\\\"!(empty)\\\",\\\"project,starttime-\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null],\\\"transactions-history\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transactions-history/template.hbs\"}});","import { typeOf } from '@ember/utils';\nimport GeneralReportController from '../../../controllers/general-report';\nimport EmberObject, { computed, set } from '@ember/object';\nimport { A } from '@ember/array';\nimport { alias } from '@ember/object/computed';\n\nconst MachinesTransactionsController = GeneralReportController.extend({\n    form: 'transaction',\n    limit: 25,\n    init() {\n        this._super(...arguments);\n        this.showColumns = ['project', 'tooltype', 'amount', 'price', 'starttime'];\n        this.queryParams = ['starttime', 'project', 'tooltype', 'q'];\n    },\n    content: alias('model'),\n\n    settings: EmberObject.create({\n        rowSettings: EmberObject.create({\n            hideEdit: true,\n            hideRemove: true,\n        }),\n        massedit: true,\n        sortByColumn: 'starttime-',\n    }),\n\n    filters: computed(function () {\n        return A([\n            EmberObject.create(\n                { field: 'starttime', type: 'date' },\n                {\n                    start: moment().subtract(1, 'month').format('YYYY-MM-DD'),\n                    end: moment().endOf('week').format('YYYY-MM-DD'),\n                },\n            ),\n            EmberObject.create({ field: 'project' }),\n            EmberObject.create({ field: 'tooltype' }),\n            EmberObject.create({ field: 'endtime', value: '(empty)' }),\n        ]);\n    }),\n\n    queryLimitFull: computed('model', function () {\n        if (this.model.meta.count === 1000) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n\n    actions: {\n        filterChangeAction(value, field) {\n            if (typeOf(value) === 'object' || typeOf(value) === 'instance') {\n                return set(this, field, value.id);\n            } else {\n                return set(this, field, value);\n            }\n        },\n    },\n    starttime:\n        moment().subtract(1, 'month').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n});\n\nexport default MachinesTransactionsController;\n","import { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\nimport GeneralReportRoute from '../../../routes/general-report';\n\nconst MachinesTransactionsRoute = GeneralReportRoute.extend({\n    store: service(),\n    flags: service(),\n\n    queryParams: {\n        starttime: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        tooltype: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n\n    form: 'transaction',\n    model(params) {\n        params = this._super(params);\n\n        if (params.page) {\n            delete params.page;\n        }\n        return set(this.controllerFor('machines.transactions'), 'qParams', params);\n    },\n});\n\nexport default MachinesTransactionsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"D8tWDH85\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"transaction\\\",[22,\\\"qParams\\\"],[28,\\\"hash\\\",null,[[\\\"starttime\\\",\\\"endtime\\\"],[[24,[\\\"qParams\\\",\\\"starttime\\\"]],\\\"(empty)\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transactions/template.hbs\"}});","import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment';\nimport { action, get, computed } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { alias } from '@ember/object/computed';\n\nexport default class MaponController extends Controller.extend(AuthenticatedRouteMixin, {\n    content: alias('model'),\n}) {\n    @service('collector-service') Collector;\n\n    @tracked map_visible = false;\n    @tracked user;\n    @tracked gps_value;\n\n    constructor() {\n        super(...arguments);\n        this.queryParams = ['date', 'user'];\n        this.translations = {\n            maponPoC: 'Mapon proof-of-concept',\n            unitInfo: 'Unit information',\n            since: 'since',\n            lastUpdate: 'Last update',\n            lastPosition: 'Last position',\n            state: 'State',\n        };\n    }\n\n    rangeStart = moment().startOf('week').format('YYYY-MM-DD');\n\n    rangeEnd = moment().endOf('week').format('YYYY-MM-DD');\n\n    @computed\n    get mapon_users() {\n        return this.store.query('user', { mapon_unit_id: '!(empty)' });\n    }\n\n    get mapon_unit_data() {\n        if (!this.user) return [];\n        const unit_id = get(this.store.peekRecord('user', this.user), 'mapon_unit_id');\n        const url = 'mapon_unit?unit_id=' + unit_id;\n        return this.Collector.ccapi({ url }).then(this.getUnitData.bind(this));\n    }\n\n    get mapon_data_routes() {\n        if (!this.model) return [];\n\n        this.model.forEach((route) => {\n            if (route.type !== 'route') return;\n\n            if (route.start) {\n                route.start.time = moment(route.start.time).format('llll');\n            }\n            if (route.end) {\n                route.end.time = moment(route.end.time).format('llll');\n            }\n            if (route.distance) {\n                return (route.distance = (route.distance / 1000).toFixed(2));\n            }\n            return route;\n        });\n\n        return this.model;\n    }\n\n    @action\n    toggle_gps_map() {\n        if (this.map_visible) {\n            this.map_visible = false;\n        } else {\n            this.map_visible = true;\n        }\n    }\n\n    getUnitData(data) {\n        const unitdata = data.data.units[0];\n\n        if (unitdata.mileage) {\n            unitdata.mileage = Math.round(unitdata.mileage / 1000) + 'km';\n        }\n\n        if (unitdata.last_update) {\n            unitdata.last_update = moment(unitdata.last_update).format('llll');\n        }\n\n        if (unitdata.state.start) {\n            unitdata.state.start = moment(unitdata.state.start).format('llll');\n        }\n\n        this.gps_value = '{\"latitude\": ' + unitdata.lat + ', \"longitude\": ' + unitdata.lng + '}';\n        return data.data.units[0];\n    }\n}\n","import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment';\nimport { get } from '@ember/object';\nimport { isPresent } from '@ember/utils';\n\nexport default class MaponRoute extends Route.extend(AuthenticatedRouteMixin, {}) {\n    @service('collector-service') Collector;\n\n    queryParams = {\n        date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n    };\n\n    async model(params) {\n        const { date } = params;\n\n        if (!isPresent(params.user)) return;\n        if (params.user === 'null') return;\n\n        const user = await this.store.findRecord('user', params.user);\n        let from, to;\n        const unit_id = get(user, 'mapon_unit_id');\n\n        if (!unit_id) return;\n\n        if (!date) {\n            from = moment().startOf('week').format('YYYY-MM-DDTHH:mm:ss') + 'Z';\n            to = moment().endOf('week').format('YYYY-MM-DDTHH:mm:ss') + 'Z';\n        } else {\n            const date_parsed = date.split('_');\n            from = moment(date_parsed[0]).format('YYYY-MM-DDTHH:mm:ss') + 'Z';\n            to = moment(date_parsed[1]).format('YYYY-MM-DDT') + '23:59:59Z';\n        }\n\n        const url = 'mapon?unit_id=' + unit_id + '&from=' + from + '&till=' + to;\n        const data = await this.Collector.ccapi({ url });\n\n        return data.data.units[0].routes;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"vbsAjGM6\",\"block\":\"{\\\"symbols\\\":[\\\"route\\\",\\\"muData\\\"],\\\"statements\\\":[[7,\\\"h2\\\",true],[8],[1,[24,[\\\"translations\\\",\\\"maponPoC\\\"]],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row reports-header-row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-lg-3 report-filter-component\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"range-picker\\\",null,[[\\\"autoApply\\\",\\\"ranges\\\",\\\"opens\\\",\\\"start\\\",\\\"end\\\",\\\"value\\\"],[true,false,\\\"right\\\",[24,[\\\"rangeStart\\\"]],[24,[\\\"rangeEnd\\\"]],[24,[\\\"date\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-lg-3 report-filter-component\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"select-comp\\\",null,[[\\\"content\\\",\\\"promptTranslation\\\",\\\"value\\\",\\\"form\\\",\\\"field\\\",\\\"classes\\\"],[[24,[\\\"mapon_users\\\"]],\\\"general.select_choose\\\",[24,[\\\"user\\\"]],\\\"worktime\\\",\\\"user\\\",\\\"form-control\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"await\\\",[[24,[\\\"mapon_unit_data\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[\\\"label\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[1,[24,[\\\"translations\\\",\\\"unitInfo\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Mileage\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[7,\\\"b\\\",true],[8],[1,[23,2,[\\\"number\\\"]],false],[9],[0,\\\" \\\"],[1,[23,2,[\\\"label\\\"]],false],[0,\\\" (\\\"],[1,[23,2,[\\\"mileage\\\"]],false],[0,\\\")\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time\\\"],[8],[9],[0,\\\" \\\"],[1,[24,[\\\"translations\\\",\\\"lastUpdate\\\"]],false],[0,\\\": \\\"],[1,[23,2,[\\\"last_update\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GeoFence\\\"],[8],[9],[0,\\\" \\\"],[1,[24,[\\\"translations\\\",\\\"lastPosition\\\"]],false],[0,\\\": \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggle_gps_map\\\"]],[8],[1,[23,2,[\\\"lat\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"lng\\\"]],false],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Route\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[24,[\\\"translations\\\",\\\"state\\\"]],false],[0,\\\": \\\"],[7,\\\"i\\\",true],[8],[1,[23,2,[\\\"state\\\",\\\"name\\\"]],false],[9],[0,\\\" \\\"],[1,[24,[\\\"translations\\\",\\\"since\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"state\\\",\\\"start\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"map_visible\\\"]],\\\"show_gps_map\\\",\\\"hide_gps_map\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"gps-location-map\\\",null,[[\\\"value\\\"],[[24,[\\\"gps_value\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-exclamation-sign\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"sr-only\\\"],[8],[1,[28,\\\"t\\\",[\\\"comboreport.error_in_report\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n        \\\"],[1,[24,[\\\"error\\\",\\\"msg\\\"]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-striped\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"abcense.starttime\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.start_address\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.abcense.endtime\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.end_address\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"field.km\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"mapon_data_routes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"route\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"start\\\",\\\"time\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"start\\\",\\\"address\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"end\\\",\\\"time\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"end\\\",\\\"address\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"distance\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/mapon/template.hbs\"}});","import Controller from '@ember/controller';\nimport EmberObject, { set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nconst MateriallogGroupsController = Controller.extend({\n    content: alias('model'),\n    report: EmberObject.create({\n        form: 'materialgroup',\n        refreshRows: true,\n    }),\n\n    actions: {\n        showAdd(onoff) {\n            set(this, 'record_id', null);\n            set(this, 'showAddPopup', onoff);\n            return false;\n        },\n\n        editRow(row) {\n            set(this, 'record_id', row.id);\n            set(this, 'showAddPopup', true);\n            return false;\n        },\n\n        rowAdded() {\n            this.send('showAdd', false);\n            return this.report.notifyPropertyChange('refreshRows');\n        },\n    },\n});\n\nexport default MateriallogGroupsController;\n","import Route from '@ember/routing/route';\n\nconst MateriallogGroupsRoute = Route.extend();\n\nexport default MateriallogGroupsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"yGTEXTAs\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"Report\\\",\\\"Table\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-materiallogs\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@localStorageKey\\\"],[\\\"materialgroup\\\",\\\"materialgroup\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"materialgroup@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,3,[\\\"Add\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[6,[23,3,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"edit,remove\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"form-report-materiallogs\\\"],null]],null,{\\\"statements\\\":[[4,\\\"collector/form-report\\\",null,[[\\\"form\\\",\\\"localStorageKey\\\",\\\"showColumns\\\"],[\\\"materialgroup\\\",\\\"materialgroup\\\",\\\"name\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"materialgroup@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,1,[\\\"add\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/materiallog/groups/template.hbs' @ L16:C11) \\\"],null]],[[\\\"rowActions\\\",\\\"selectable\\\"],[\\\"edit,remove\\\",true]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,2,[\\\"rowActions\\\"]],false],[0,\\\"\\\\n            \\\"],[1,[23,2,[\\\"no-content\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"materialgroup@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showAdd\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"settings\\\",\\\"editRow\\\"],[[24,[\\\"report\\\"]],\\\"editRow\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddPopup\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"general.add\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showAdd\\\",false],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"cancelClicked\\\",\\\"recordSaved\\\"],[\\\"materialgroup\\\",[24,[\\\"record_id\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"showAdd\\\",false],null],\\\"rowAdded\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/materiallog/groups/template.hbs\"}});","import { alias } from '@ember/object/computed';\nimport Controller from '@ember/controller';\nimport EmberObject, { set } from '@ember/object';\n\nconst MateriallogListController = Controller.extend({\n    content: alias('model'),\n    report: EmberObject.create({\n        form: 'materialtype',\n        refreshRows: true,\n    }),\n\n    actions: {\n        showAdd(onoff) {\n            set(this, 'record_id', null);\n            set(this, 'showAddPopup', onoff);\n            return false;\n        },\n\n        editRow(row) {\n            set(this, 'record_id', row.id);\n            set(this, 'showAddPopup', true);\n            return false;\n        },\n\n        rowAdded() {\n            this.send('showAdd', false);\n            return this.report.notifyPropertyChange('refreshRows');\n        },\n    },\n});\n\nexport default MateriallogListController;\n","import Route from '@ember/routing/route';\n\nconst MateriallogListRoute = Route.extend();\n\nexport default MateriallogListRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Z93ZnMvq\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"Report\\\",\\\"Table\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-materiallogs\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@localStorageKey\\\"],[\\\"materialtype\\\",\\\"materialtype\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"materialtype@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,3,[\\\"Add\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[6,[23,3,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"edit,remove\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"form-report-materiallogs\\\"],null]],null,{\\\"statements\\\":[[4,\\\"collector/form-report\\\",null,[[\\\"form\\\",\\\"localStorageKey\\\"],[\\\"materialtype\\\",\\\"materialtype\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"materialtype@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,1,[\\\"add\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/materiallog/list/template.hbs' @ L16:C11) \\\"],null]],[[\\\"rowActions\\\",\\\"selectable\\\"],[\\\"edit,remove\\\",true]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,2,[\\\"rowActions\\\"]],false],[0,\\\"\\\\n            \\\"],[1,[23,2,[\\\"no-content\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"materialtype@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showAdd\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"settings\\\",\\\"editRow\\\"],[[24,[\\\"report\\\"]],\\\"editRow\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddPopup\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"general.add\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showAdd\\\",false],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"cancelClicked\\\",\\\"recordSaved\\\"],[\\\"materialtype\\\",[24,[\\\"record_id\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"showAdd\\\",false],null],\\\"rowAdded\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/materiallog/list/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"WBLJjwOl\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/materiallog/loading/template.hbs\"}});","import { alias } from '@ember/object/computed';\nimport GeneralReportController from '../../../controllers/general-report';\nimport { inject as service } from '@ember/service';\nimport EmberObject, { set } from '@ember/object';\nimport { A } from '@ember/array';\nimport { typeOf } from '@ember/utils';\n\nconst MateriallogReportController = GeneralReportController.extend({\n    flags: service(),\n\n    form: 'materiallog',\n    type: null,\n    project: null,\n    user: null,\n    employer: null,\n    task: null,\n\n    limit: 25,\n    init() {\n        this._super(...arguments);\n        this.showColumns = ['date', 'project', 'user', 'type', 'amount', 'employer', 'task'];\n        this.queryParams = ['project', 'date', 'q', 'user', 'type', 'task', 'employer'];\n    },\n\n    content: alias('model'),\n    settings: EmberObject.create({\n        rowSettings: EmberObject.create({\n            editRoute: {\n                modal: true,\n            },\n        }),\n        sortByColumn: 'date-',\n    }),\n\n    filters: A([\n        EmberObject.create({ field: 'date' }),\n        EmberObject.create({ field: 'type' }),\n        EmberObject.create({ field: 'project' }),\n        EmberObject.create({ field: 'employer' }),\n        EmberObject.create({ field: 'task' }),\n        EmberObject.create({ field: 'user' }),\n        EmberObject.create({ type: 'searchbox', bindto: 'q' }),\n    ]),\n\n    actions: {\n        filterChangeAction(value, field) {\n            if (typeOf(value) === 'object' || typeOf(value) === 'instance') {\n                return set(this, field, value.id);\n            } else {\n                return set(this, field, value);\n            }\n        },\n    },\n    init_functions() {\n        if (\n            this.flags.test('form-report-materiallogs') ||\n            this.flags.test('ember-movenium-form-report-materiallogs')\n        ) {\n            return null;\n        } else {\n            return this._super();\n        }\n    },\n\n    formReportDate:\n        moment().startOf('isoweek').subtract(1, 'week').format('YYYY-MM-DD') +\n        '_' +\n        moment().format('YYYY-MM-DD'),\n    date:\n        moment().startOf('isoweek').subtract(1, 'week').format('YYYY-MM-DD') +\n        '_' +\n        moment().format('YYYY-MM-DD'),\n});\n\nexport default MateriallogReportController;\n","import GeneralReportRoute from '../../../routes/general-report';\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\n\nconst MateriallogReportRoute = GeneralReportRoute.extend({\n    flags: service(),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        task: {\n            refreshModel: true,\n        },\n        type: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n\n    form: 'materiallog',\n    model(params) {\n        if (\n            !this.flags.test('form-report-materiallogs') &&\n            !this.flags.test('ember-movenium-form-report-materiallogs')\n        ) {\n            params = this._super(params);\n            params.sideload = true;\n            return this.store.query('materiallog', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return set(this.controllerFor('materiallog.report'), 'qParams', params);\n        }\n    },\n});\n\nexport default MateriallogReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"pnlXasEn\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-materiallogs\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@filter\\\",\\\"@form\\\",\\\"@additional\\\",\\\"@filterChangeAction\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\"],[[28,\\\"hash\\\",null,[[\\\"date\\\"],[[23,0,[\\\"formReportDate\\\"]]]]],[23,0,[\\\"form\\\"]],\\\"project.owner\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null],[23,0,[\\\"qParams\\\"]],\\\"date,project,user,type,amount,employer,task,q,groupBy\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"form-report-materiallogs\\\"],null]],null,{\\\"statements\\\":[[4,\\\"collector/form-report\\\",null,[[\\\"filterDefaultValues\\\",\\\"form\\\",\\\"filterByValues\\\"],[[28,\\\"hash\\\",null,[[\\\"date\\\"],[[24,[\\\"formReportDate\\\"]]]]],[24,[\\\"form\\\"]],[24,[\\\"qParams\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"filters\\\"]],\\\"expected `report.filters` to be a contextual component but found a string. Did you mean `(component report.filters)`? ('tt4/pods/materiallog/report/template.hbs' @ L32:C10) \\\"],null]],[[\\\"additional\\\",\\\"filterChangeAction\\\"],[\\\"project.owner\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/materiallog/report/template.hbs' @ L33:C10) \\\"],null]],[[\\\"selectable\\\"],[true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/materiallog/report/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nexport default Route.extend(AuthenticatedRouteMixin);\n","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport collectorService from 'tt4/injections/services/collector-service';\nimport ttapiService from 'tt4/injections/services/ttapi';\nimport initappService from 'tt4/injections/services/initapp';\nimport sessionhelperService from 'tt4/injections/services/sessionhelper';\nimport { A } from '@ember/array';\nimport MutableArray from '@ember/array/mutable';\nimport { action, notifyPropertyChange } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport moment from 'moment';\nimport Ember from 'ember';\nimport { later } from '@ember/runloop';\n\nexport default class MessAgesComponent extends Component<any> {\n    @service public session: any;\n    @service protected router: any;\n    @service('collector-service' as any) protected Collector: collectorService;\n    @service protected ttapi: ttapiService;\n    @service protected initapp: initappService;\n    @service protected sessionhelper: sessionhelperService;\n\n    @tracked protected messageStack: MutableArray<string> = A([]);\n\n    public get currentMessage(): any {\n        return this.messageStack.firstObject;\n    }\n\n    public get formattedCreated() {\n        return moment.utc(this.currentMessage.created).local().format('LLLL');\n    }\n\n    constructor(owner: unknown, args: any) {\n        super(owner, args);\n        if (!Ember.testing) {\n            if (this.initapp.appReady) {\n                this.fetchMessagesLoop();\n            } else {\n                this.initapp.on('appReady', () => {\n                    this.fetchMessagesLoop();\n                });\n            }\n        }\n    }\n\n    public fetchMessagesLoop(): any {\n        this.fetchMessages();\n        return later(\n            this,\n            () => {\n                return this.fetchMessagesLoop();\n            },\n            15 * 60 * 1000,\n        );\n    }\n\n    public async fetchMessages() {\n        if (!this.session.isAuthenticated) return;\n        if (this.sessionhelper.tokenHasExpired()) return;\n        const back = await this.ttapi._get('messages');\n\n        return (this.messageStack = A(back));\n    }\n\n    public get superiorReplacementMessageTypes() {\n        return [\n            'superior-end-of-replacement',\n            'superior-start-of-replacement',\n            'replacement-start-of-replacement',\n            'replacement-end-of-replacement',\n        ];\n    }\n\n    @action\n    public closeModal() {\n        this.markAsRead();\n        notifyPropertyChange(this, 'messageStack');\n    }\n\n    @action\n    public async addUserConsent(type: string) {\n        await this.ttapi._post('userconsent', { type });\n        return this.markAsRead();\n    }\n\n    @action\n    public async markAsRead() {\n        if (!this.currentMessage) return;\n\n        //do not mark as read when impersonating\n        if (this.session.session.content.authenticated.scope) {\n            return this.messageStack.removeObject(this.currentMessage);\n        }\n\n        //mark as read\n        await this.ttapi._post('messages/markasread_by_id/' + this.currentMessage.id);\n\n        return this.messageStack.removeObject(this.currentMessage);\n    }\n\n    @action\n    public markAsReadAndTransition() {\n        this.markAsRead();\n        if (this.Collector.testNeeds(['modules.timetracker', 'modules.absences'])) {\n            return this.router.transitionTo({ queryParams: { wizard: 'onboarding-wizard' } });\n        } else if (this.Collector.testNeeds(['products.mini_entry'])) {\n            return this.router.transitionTo({ queryParams: { wizard: 'billing' } });\n        }\n    }\n    @action\n    public async execute(value: boolean | string) {\n        if (value === false) {\n            this.messageStack.removeObject(this.currentMessage);\n            return this.closeModal();\n        }\n\n        await this.ttapi._post('messages/' + this.currentMessage.id, { value });\n\n        return this.messageStack.removeObject(this.currentMessage);\n    }\n\n    @action\n    public async closeModalAndRefresh() {\n        await this.markAsRead();\n        window.location.reload();\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"2wnceBaF\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentMessage\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"messageboard\\\",[24,[\\\"currentMessage\\\",\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"currentMessage\\\",\\\"header\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"message-date-header\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[22,\\\"formattedCreated\\\"],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"currentMessage\\\"]],\\\"creator_name\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        - \\\"],[7,\\\"i\\\",true],[8],[1,[28,\\\"get\\\",[[24,[\\\"currentMessage\\\"]],\\\"creator_name\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"mess-ages/types/messageboard\\\",null,[[\\\"message\\\"],[[24,[\\\"currentMessage\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"welcome-admin\\\",[24,[\\\"currentMessage\\\",\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"wizard-builder/welcome-wizard\\\",null,[[\\\"close\\\",\\\"transitionToOnboarding\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"markAsReadAndTransition\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"markAsReadAndTransition\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"currentMessage\\\",\\\"extra\\\",\\\"type\\\"]],\\\"taxman-validations\\\"],null]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"messages.modal_title\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"mess-ages/types/taxman-validations\\\",null,[[\\\"close\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"addUserConsent\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"message\\\",[24,[\\\"currentMessage\\\",\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"messages.modal_title\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"mess-ages/types/message\\\",null,[[\\\"close\\\",\\\"params\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"markAsRead\\\"],null],[24,[\\\"currentMessage\\\",\\\"extra\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"terms-of-service\\\",[24,[\\\"currentMessage\\\",\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"mess-ages/types/user-consent\\\",null,[[\\\"close\\\",\\\"type\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"addUserConsent\\\"],null],[24,[\\\"currentMessage\\\",\\\"type\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"user-consent\\\",[24,[\\\"currentMessage\\\",\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"mess-ages/types/user-consent\\\",null,[[\\\"close\\\",\\\"type\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"addUserConsent\\\"],null],[24,[\\\"currentMessage\\\",\\\"type\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"in-array\\\",[[24,[\\\"currentMessage\\\",\\\"type\\\"]],[24,[\\\"superiorReplacementMessageTypes\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"mess-ages/types/superior-replacement\\\",null,[[\\\"close\\\",\\\"data\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeModalAndRefresh\\\"],null],[24,[\\\"currentMessage\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"messages.modal_title\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"mess-ages/types/link-request\\\",null,[[\\\"params\\\",\\\"messageid\\\",\\\"execute\\\"],[[24,[\\\"currentMessage\\\",\\\"extra\\\"]],[24,[\\\"currentMessage\\\",\\\"id\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"execute\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/mess-ages/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport capiService from 'tt4/injections/services/capi';\nimport ttapiService from 'tt4/injections/services/ttapi';\n\ninterface IMessAgesTypesLinkRequestComponent {\n    messageid: number;\n    params?: any;\n    execute(args0: boolean | string): void;\n}\n\nexport default class MessAgesTypesLinkRequestComponent extends Component<IMessAgesTypesLinkRequestComponent> {\n    @service protected session: any;\n    @service protected capi: capiService;\n    @service protected ttapi: ttapiService;\n\n    @action\n    async linknow() {\n        await this.ttapi.request('messages/' + this.args.messageid, {\n            method: 'post',\n            data: {\n                value: 'linknow',\n            },\n        });\n\n        const data = await this.capi.request('me?linkings');\n        set(this.session, 'currentUser.services', data);\n        if (this.args.execute) {\n            return this.args.execute(false);\n        }\n    }\n\n    @action\n    skiplinking() {\n        if (this.args.execute) {\n            return this.args.execute('skiplinking');\n        }\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"JnEfe8HI\",\"block\":\"{\\\"symbols\\\":[\\\"@params\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"userlinker.request_title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"userlinker.request_text\\\"],[[\\\"company\\\",\\\"request_maker\\\"],[[23,1,[\\\"company\\\"]],[23,1,[\\\"request_maker\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"linknow\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"userlinker.request_link_now\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"skiplinking\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"userlinker.request_skip\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/mess-ages/types/link-request/template.hbs\"}});","import Component from '@glimmer/component';\nimport { htmlSafe } from '@ember/template';\n\ninterface IMessAgesTypesMessageComponent {\n    params: { text: string };\n}\n\nexport default class MessAgesTypesMessageComponent extends Component<IMessAgesTypesMessageComponent> {\n    get content() {\n        // convert line breaks to html\n        return htmlSafe(this.args.params.text.replace(/\\n/g, '<br>'));\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"9WB/Ukzx\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[23,0,[\\\"content\\\"]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/mess-ages/types/message/template.hbs\"}});","import { sanitize } from 'dom-purify';\nimport Component from '@glimmer/component';\nimport { htmlSafe } from '@ember/template';\nimport { isPresent } from '@ember/utils';\n\ninterface IMessAgesTypesMessageboardComponent {\n    message: any;\n}\n\nexport default class MessAgesTypesMessageboardComponent extends Component<IMessAgesTypesMessageboardComponent> {\n    get content() {\n        //convert line breaks to html\n        const content: string = this.args.message?.content;\n        if (isPresent(content)) {\n            return htmlSafe(sanitize(content.replace(/\\n/g, '<br>')));\n        }\n        return '';\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"rcULaFfy\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\",\\\"user\\\",\\\"@message\\\"],\\\"statements\\\":[[1,[23,0,[\\\"content\\\"]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"sms_sent\\\"]],\\\"1\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-phone\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.view.sms_sent\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"email_sent\\\"]],\\\"1\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-envelope\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.view.email_sent\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"users_read\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"users_read\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h6\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"messages.view.users_read\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[\\\"users_read\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-success\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CheckedCheckbox\\\"],[8],[9],[0,\\\" \\\"],[1,[23,2,[\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"firstname\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"users_notread\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h6\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"messages.view.users_notread\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[\\\"users_notread\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-UncheckedCheckbox\\\"],[8],[9],[0,\\\" \\\"],[1,[23,1,[\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"firstname\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/mess-ages/types/messageboard/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { htmlSafe } from '@ember/template';\nimport { action } from '@ember/object';\n\ninterface IMessAgesTypesPromoComponent {\n    content: any;\n    close(): void;\n}\n\nexport default class MessAgesTypesPromoComponent extends Component<IMessAgesTypesPromoComponent> {\n    @tracked protected show: boolean = true;\n\n    get iframe_size(): string {\n        if (!this.args.content.external_height) {\n            return '500';\n        } else {\n            return this.args.content.external_height;\n        }\n    }\n\n    get message_content() {\n        return htmlSafe(this.args.content.message);\n    }\n\n    @action\n    closeModal() {\n        if (this.args.close) {\n            this.args.close();\n        }\n        return (this.show = false);\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"y3bDgd8m\",\"block\":\"{\\\"symbols\\\":[\\\"@content\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"show\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-overlay\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[23,1,[\\\"title\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"closeModal\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"message_content\\\"],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"iframe\\\",true],[10,\\\"frameborder\\\",\\\"0\\\"],[11,\\\"style\\\",[29,[\\\"height:\\\",[22,\\\"iframe_size\\\"],\\\"px; width:100%;\\\"]]],[11,\\\"src\\\",[23,1,[\\\"external_url\\\"]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/mess-ages/types/promo/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\ninterface IMessAgesTypesSuperiorReplacementComponent {\n    close(): void;\n}\n\nexport default class MessAgesTypesSuperiorReplacementComponent extends Component<IMessAgesTypesSuperiorReplacementComponent> {\n    @tracked protected show: boolean = true;\n\n    @action\n    closeModal() {\n        if (this.args.close) {\n            this.args.close();\n        }\n        return (this.show = false);\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"49KPp3Y/\",\"block\":\"{\\\"symbols\\\":[\\\"@data\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"show\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-overlay\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@class\\\",\\\"@header\\\",\\\"@close\\\"],[\\\"has-text-centered\\\",[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"superiorreplacement.\\\",[23,1,[\\\"type\\\"]],\\\"-title\\\"],null]],null],[28,\\\"fn\\\",[[23,0,[\\\"closeModal\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"superior-start-of-replacement\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"superiorreplacement.superior.start.heading\\\"],null],false],[0,\\\" \\\"],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"extra\\\",\\\"name\\\"]],false],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"superiorreplacement.date_interval\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"superiorreplacement\\\",\\\"startdate\\\",[23,1,[\\\"extra\\\",\\\"startdate\\\"]]]]],false],[0,\\\" - \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"superiorreplacement\\\",\\\"enddate\\\",[23,1,[\\\"extra\\\",\\\"enddate\\\"]]]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"superiorreplacement.superior.start.text1\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"superior-end-of-replacement\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"superiorreplacement.superior.end.text\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"replacement-start-of-replacement\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"superiorreplacement.replacement.start.heading\\\"],null],false],[0,\\\" \\\"],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"extra\\\",\\\"name\\\"]],false],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"superiorreplacement.date_interval\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"superiorreplacement\\\",\\\"startdate\\\",[23,1,[\\\"extra\\\",\\\"startdate\\\"]]]]],false],[0,\\\" - \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"superiorreplacement\\\",\\\"enddate\\\",[23,1,[\\\"extra\\\",\\\"enddate\\\"]]]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"superiorreplacement.replacement.start.text1\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"replacement-end-of-replacement\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"superiorreplacement.replacement.end.text\\\"],null],false],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary mt-5 btn-normal-size\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"closeModal\\\"]]],null]]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/mess-ages/types/superior-replacement/template.hbs\"}});","import Component from '@glimmer/component';\n\nexport default class MessAgesTypesTaxmanValidationsComponent extends Component {}\n","export default Ember.HTMLBars.template({\"id\":\"f9tJOq2w\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"message.taxman.validation_errors\\\"],null],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/mess-ages/types/taxman-validations/template.hbs\"}});","import config from '../../../../config/environment';\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport cdnService from 'tt4/injections/services/cdn';\nimport { action } from '@ember/object';\nimport moment from 'moment';\n\ninterface IMessAgesTypesUserConsentComponent {\n    type: string;\n    close(args0: string): void;\n}\n\nexport default class MessAgesTypesUserConsentComponent extends Component<IMessAgesTypesUserConsentComponent> {\n    @service protected cdn: cdnService;\n\n    get terms_url() {\n        switch (moment.locale()) {\n            case 'fi':\n                return config.termsAndConditions.fi;\n            case 'sv':\n            case 'se':\n                return config.termsAndConditions.se;\n            default:\n                return config.termsAndConditions.en;\n        }\n    }\n\n    @action\n    closeModal() {\n        if (this.args.close) {\n            return this.args.close(this.args.type);\n        }\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"RsSjiGop\",\"block\":\"{\\\"symbols\\\":[\\\"@type\\\"],\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"hideClose\\\"],[[28,\\\"t\\\",[\\\"messages.modal_title\\\"],null],true]],{\\\"statements\\\":[[7,\\\"div\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"messages.\\\",[23,1,[]]],null]],[[\\\"htmlSafe\\\"],[true]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"terms-of-service\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"billing.terms\\\"],null],false],[0,\\\" \\\"],[7,\\\"a\\\",true],[10,\\\"target\\\",\\\"_blank\\\"],[11,\\\"href\\\",[29,[[22,\\\"terms_url\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"register.terms_link\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"saveButtonText\\\"],[[24,[\\\"spinIsLoading\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"closeModal\\\"]]],null],\\\"btn btn-m-link btn-lg\\\",[28,\\\"t\\\",[\\\"general.approve\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/mess-ages/types/user-consent/template.hbs\"}});","import Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport EmberObject, { set, computed } from '@ember/object';\n\nconst MessageboardAddController = Controller.extend({\n    Collector: service('collector-service'),\n    ttapi: service(),\n    intl: service(),\n    userform: 'worktime',\n\n    spinIsLoading: false,\n    disabled: false,\n\n    init() {\n        this._super(...arguments);\n\n        if (this.Collector.fieldExists('worktime', 'user')) {\n            return set(this, 'userform', 'worktime');\n        } else if (this.Collector.fieldExists('presence', 'user')) {\n            return set(this, 'userform', 'presence');\n        }\n    },\n\n    content: alias('model'),\n\n    field: computed(function () {\n        return EmberObject.create({\n            type: 'multiselect',\n            features: {},\n            form: this.userform,\n            name: 'user',\n            options: {\n                fields: ['lastname', 'firstname'],\n            },\n            ext: 'user',\n        });\n    }),\n\n    actions: {\n        async save() {\n            const params = {};\n\n            params.receivers = this.receivers;\n            params.header = this.header;\n            params.message = this.message;\n            params.forced = this.forced;\n\n            set(this, 'receivers', null);\n            set(this, 'header', null);\n            set(this, 'message', null);\n            set(this, 'forced', null);\n            await this.ttapi.request('/messageboard/new', {\n                type: 'POST',\n                data: params,\n            });\n            set(this, 'spinIsLoading', false);\n            set(this, 'disabled', false);\n            return this.transitionToRoute('messageboard.index');\n        },\n\n        cancel() {\n            set(this, 'receivers', null);\n            set(this, 'header', null);\n            set(this, 'message', null);\n            set(this, 'forced', null);\n            return this.transitionToRoute('messageboard.index');\n        },\n\n        bubbleChange(value) {\n            return set(this, 'receivers', value);\n        },\n    },\n});\n\nexport default MessageboardAddController;\n","export default Ember.HTMLBars.template({\"id\":\"kEDQVDWo\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.messageboard\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"messageboard.index\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"messageboard.add.receivers\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"field\\\"]]],[[\\\"_class\\\",\\\"change\\\"],[\\\"add-fields form-control\\\",\\\"bubbleChange\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"messageboard.add.header\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"header\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"messageboard.add.message\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\"],[\\\"3\\\",\\\"form-control add-fields\\\",\\\"field\\\",\\\"\\\",[24,[\\\"message\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"messageboard.add.forced\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"checked\\\",\\\"name\\\",\\\"placeholder\\\",\\\"disabled\\\"],[\\\"checkbox\\\",\\\"form-control add-fields\\\",[24,[\\\"forced\\\"]],\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"spinIsLoading\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/messageboard/add/template.hbs\"}});","import Route from '@ember/routing/route';\n\nconst MessageboardHistoryRoute = Route.extend({\n    model(params) {\n        return params;\n    },\n});\n\nexport default MessageboardHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"GfP3YFd2\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"project\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/messageboard/history/template.hbs\"}});","/* eslint-disable ember/no-observers */\nimport Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport EmberObject, { set, computed, observer } from '@ember/object';\nimport { A } from '@ember/array';\nimport { on } from '@ember/object/evented';\n\nconst MessageboardController = Controller.extend({\n    Collector: service('collector-service'),\n    intl: service(),\n    session: service(),\n    dialogs: service(),\n    ttapi: service(),\n    error: service(),\n\n    rowsPerPage: 30,\n    currentPage: 1,\n\n    showRemoved: false,\n\n    init() {\n        this._super(...arguments);\n        this.columns = ['date', 'header', 'forced'];\n        this.queryParams = ['showRemoved'];\n        this.rowActions = [\n            { action: 'viewRow', icon: 'move move-View' },\n            { action: 'showHistory', icon: 'move move-Search' },\n        ];\n    },\n\n    popupArr: A([]),\n    messageboards: alias('model.messageboards'),\n    data: computed('messageboards.[]', 'popupArr.[]', function () {\n        const data = this.messageboards;\n        if (!data) {\n            return null;\n        }\n\n        const columns = this.columns;\n        const formatted_data = A([]);\n        data.forEach((unformatted_row) => {\n            const row = EmberObject.create();\n            if (unformatted_row.id) {\n                row.id = unformatted_row.id;\n            }\n\n            if (!unformatted_row.read) {\n                row.class = 'warning';\n            }\n\n            if (unformatted_row.row_info.status === 'removed') {\n                row.class = 'danger';\n            }\n\n            columns.forEach((column) => {\n                let cell = unformatted_row[column];\n\n                if (column === 'date') {\n                    cell = moment(cell).format('L');\n                }\n\n                if (column === 'forced') {\n                    cell = (() => {\n                        switch (cell) {\n                            case '1':\n                            case true:\n                                return this.intl.t('general.yes');\n                            default:\n                                return this.intl.t('general.no');\n                        }\n                    })();\n                }\n\n                return (row[column] = cell);\n            });\n\n            return formatted_data.pushObjects([row]);\n        });\n\n        return formatted_data;\n    }),\n\n    rowActionsObs: on(\n        'init',\n        observer('showRemoved', function () {\n            const session = this.session;\n            if (session) {\n                if (this.Collector.getUserlevel(session) === 5) {\n                    let arr = [\n                        { action: 'viewRow', icon: 'move move-View' },\n                        { action: 'removeRow', icon: 'move move-Delete' },\n                        { action: 'showHistory', icon: 'move move-Search' },\n                    ];\n\n                    if (this.showRemoved) {\n                        arr = [\n                            { action: 'viewRow', icon: 'move move-View' },\n                            { action: 'showHistory', icon: 'move move-Search' },\n                        ];\n                    }\n\n                    return set(this, 'rowActions', arr);\n                }\n            }\n        }),\n    ),\n\n    // get translation for every column\n    translated_columns: computed('columns', function () {\n        const translated_columns = [];\n        this.columns.forEach((item) => {\n            return translated_columns.push(this.intl.t('report.messageboard.' + item));\n        });\n\n        return translated_columns;\n    }),\n\n    actions: {\n        catchActions(action, params) {\n            return this.send(action, params);\n        },\n\n        async removeRow(params) {\n            const con = await this.dialogs.confirm(this.intl.t('report.confirm_delete'));\n            if (con) {\n                await this.removeMessage(params.id);\n                const obj = this.messageboards.findBy('id', params.id);\n                return this.messageboards.removeObject(obj);\n            }\n        },\n\n        viewRow(params) {\n            //mark as read\n            const obj = this.messageboards.findBy('id', params.id);\n            obj.read = true;\n\n            return this.popupArr.pushObject(obj);\n        },\n\n        columnClicked() {\n            set(this, 'order', null);\n        },\n\n        showHistory(params) {\n            return this.transitionToRoute('messageboard.history', params.id);\n        },\n\n        showRemovedRows() {\n            return this.toggleProperty('showRemoved');\n        },\n    },\n\n    async removeMessage(id) {\n        try {\n            const params = {};\n            params.rowid = id;\n            return await this.ttapi.request('/messageboard', {\n                type: 'DELETE',\n                data: params,\n            });\n        } catch (reason) {\n            return this.error.notify(reason);\n        }\n    },\n});\n\nexport default MessageboardController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst MessageboardRoute = Route.extend(AuthenticatedRouteMixin, {\n    ttapi: service(),\n\n    queryParams: {\n        showRemoved: {\n            refreshModel: true,\n        },\n    },\n\n    model(params) {\n        let url = '/messageboard/all';\n        if (params.showRemoved) {\n            url += '?showRemoved=true';\n        }\n        return this.ttapi.request(url, { type: 'GET' });\n    },\n\n    actions: {\n        rowAction() {},\n        showRemovedRows() {},\n    },\n});\n\nexport default MessageboardRoute;\n","export default Ember.HTMLBars.template({\"id\":\"8dKt2N1O\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 text-right\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"btn-group report-more \\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,1,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showRemovedRows\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showRemoved\\\"]],true],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"t\\\",[\\\"report.actions.show_normal\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"t\\\",[\\\"report.actions.show_removed\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"order\\\"],[[24,[\\\"columns\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"data\\\"]],[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",[24,[\\\"order\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"popupArr\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"modal-array\\\",null,[[\\\"array\\\",\\\"store\\\",\\\"model\\\"],[[24,[\\\"popupArr\\\"]],[24,[\\\"store\\\"]],[23,0,[\\\"messageboards\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/messageboard/index/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst MessageboardRoute = Route.extend(AuthenticatedRouteMixin);\n\nexport default MessageboardRoute;\n","export default Ember.HTMLBars.template({\"id\":\"ooPzXW3z\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/messageboard/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/messages/add/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MessagesAddIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nMessagesAddIndexController = GeneralReportController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                type: 'searchbox',\n            }),\n        ]);\n    }),\n    queryParams: ['q'],\n    tab: '',\n    employers: Em.computed(function () {\n        return this.store.findAll('employer');\n    }),\n    projects: Em.computed(function () {\n        return this.store.findAll('project');\n    }),\n    groups: Em.computed(function () {\n        return this.store.findAll('group');\n    }),\n    roles: Em.computed(function () {\n        var ownroles, roles;\n        roles = [\n            {\n                id: '1',\n                name: this.get('intl').t('user.userlevel.1'),\n            },\n            {\n                id: '2',\n                name: this.get('intl').t('user.userlevel.2'),\n            },\n            {\n                id: '3',\n                name: this.get('intl').t('user.userlevel.3'),\n            },\n            {\n                id: '6',\n                name: this.get('intl').t('user.userlevel.6'),\n            },\n            {\n                id: '5',\n                name: this.get('intl').t('user.userlevel.5'),\n            },\n            {\n                id: '4',\n                name: this.get('intl').t('user.userlevel.4'),\n            },\n        ];\n        ownroles = Ember.get(this.get('Collector').field('user', 'userlevel'), 'options').filter(\n            function (item) {\n                return item.length > 1;\n            },\n        );\n        ownroles.forEach((role) => {\n            return roles.push({\n                id: role.substring(0, 2),\n                name: role.substring(2),\n            });\n        });\n        return roles;\n    }),\n    users: Em.computed('q', function () {\n        if (this.get('q')) {\n            return this.store.query('user', {\n                q: this.get('q'),\n                order: 'lastname',\n            });\n        }\n    }),\n    selected_users_arr: Em.computed(function () {\n        return Em.A([]);\n    }),\n    selected_employer_count: Em.computed('selected_users_arr.@each', function () {\n        if (!this.get('showEmployer')) {\n            return false;\n        }\n        return this.get('selected_users_arr').uniqBy('employer').length;\n    }),\n    //update selected users array from selected value\n    selected_users: Em.observer(\n        'tab',\n        'selected_employer',\n        'selected_project',\n        'selected_group',\n        'selected_role',\n        function () {\n            switch (this.get('tab')) {\n                case 'employer':\n                    if (!this.get('selected_employer')) {\n                        return;\n                    }\n                    //get users with selected employer\n                    return this.store\n                        .query('user', {\n                            limit: 'all',\n                            employer: this.get('selected_employer.id'),\n                            order: 'lastname',\n                        })\n                        .then((users) => {\n                            return this.send('addUsersToList', users);\n                        });\n                case 'group':\n                    if (!this.get('selected_group')) {\n                        return;\n                    }\n                    //get users with selected employer\n                    return this.store\n                        .query('user', {\n                            limit: 'all',\n                            group: this.get('selected_group.id'),\n                            order: 'lastname',\n                        })\n                        .then((users) => {\n                            return this.send('addUsersToList', users);\n                        });\n                case 'role':\n                    if (!this.get('selected_role')) {\n                        return;\n                    }\n                    //get users with selected employer\n                    return this.store\n                        .query('user', {\n                            limit: 'all',\n                            userlevel: this.get('selected_role'),\n                            order: 'lastname',\n                        })\n                        .then((users) => {\n                            return this.send('addUsersToList', users);\n                        });\n            }\n        },\n    ),\n    selected_users_arr_formated: Em.computed('selected_users_arr.[]', function () {\n        return this.get('selected_users_arr').map((row) => {\n            if (!isNaN(row.get('userlevel'))) {\n                row.set(\n                    'userlevel',\n                    this.get('Collector')._format_(row.get('userlevel'), 'user', 'userlevel'),\n                );\n            }\n            return row;\n        });\n    }),\n    showColumns: Em.computed('showEmployer', function () {\n        if (this.get('showEmployer')) {\n            return ['lastname', 'firstname', 'userlevel', 'email', 'phone', 'employer.name'];\n        } else {\n            return ['lastname', 'firstname', 'userlevel', 'email', 'phone'];\n        }\n    }),\n    // get translation for every column\n    translated_columns: Em.computed('showColumns', function () {\n        var c, columns, intl, translated_columns;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        columns = this.get('showColumns');\n        translated_columns = [];\n        $.each(columns, (key, item) => {\n            return translated_columns.push(intl.t('report.user.' + item));\n        });\n        return translated_columns;\n    }),\n    rowActions: Em.computed('intl', function () {\n        var arr;\n        arr = [\n            {\n                action: 'removeRow',\n                icon: 'move move-Delete',\n                text: this.get('intl').t('report.delete_rows'),\n            },\n        ];\n        return arr;\n    }),\n    showColumnsUsersearch: ['lastname', 'firstname', 'email', 'phone'],\n    // get translation for every column\n    translated_columns_userSearch: Em.computed('showColumnsUsersearch', function () {\n        var c, columns, intl, translated_columns;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        columns = this.get('showColumnsUsersearch');\n        translated_columns = [];\n        $.each(columns, (key, item) => {\n            return translated_columns.push(intl.t('report.user.' + item));\n        });\n        return translated_columns;\n    }),\n    rowActionsUsersearch: [\n        {\n            action: 'addUserToList',\n            icon: 'glyphicon glyphicon-plus',\n        },\n    ],\n    showGroup: Em.computed(function () {\n        return this.get('Collector').formExists('group');\n    }),\n    showEmployer: Em.computed(function () {\n        return this.get('Collector').formExists('employer');\n    }),\n    actions: {\n        catchActions: function (action, params) {\n            return this.send(action, params);\n        },\n        changeTab: function (tab) {\n            return this.set('tab', tab);\n        },\n        removeRow: function (user) {\n            var userObject;\n            if (this.get('selected_users_arr.arrangedContent')) {\n                userObject = this.get('selected_users_arr.arrangedContent').findBy('id', user.id);\n                return this.get('selected_users_arr.arrangedContent').removeObject(userObject);\n            } else {\n                return this.get('selected_users_arr').removeObject(user);\n            }\n        },\n        addUserToList: function (user) {\n            return this.get('selected_users_arr').addObject(user);\n        },\n        addUsersToList: function (users) {\n            if (this.get('selected_users_arr.arrangedContent')) {\n                return users.arrangedContent.forEach((user) => {\n                    return this.get('selected_users_arr.arrangedContent').addObject(user);\n                });\n            } else {\n                return this.get('selected_users_arr').addObjects(users);\n            }\n        },\n        sendToAll: function () {\n            this.set('selected_users_arr', Em.A([]));\n            return this.transitionToRoute('messages.add.message');\n        },\n        clearReceivers: function () {\n            return this.set('selected_users_arr', Em.A([]));\n        },\n        searchChanged: function (value) {\n            if (typeof value === 'object') {\n            } else {\n                return this.set('q', value);\n            }\n        },\n    },\n});\n\nexport default MessagesAddIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/messages/add/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MessagesAddRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nMessagesAddRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    queryParams: {\n        q: {\n            refreshModel: true,\n        },\n    },\n});\n\nexport default MessagesAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"iY9Y2btK\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"messages.add.title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendToAll\\\"]],[8],[1,[28,\\\"t\\\",[\\\"message.add.to_all_users\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"messages.add.or\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.select_users_by\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"nav nav-tabs nav-justified\\\"],[8],[0,\\\"\\\\n            \\\"],[4,\\\"if\\\",[[24,[\\\"showEmployer\\\"]]],null,{\\\"statements\\\":[[7,\\\"li\\\",true],[10,\\\"role\\\",\\\"presentation\\\"],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"tab\\\"]],\\\"employer\\\"],null],\\\"active\\\"],null]]]],[8],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"changeTab\\\",\\\"employer\\\"]],[8],[1,[28,\\\"t\\\",[\\\"messages.add.by_employer\\\"],null],false],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[4,\\\"if\\\",[[24,[\\\"showGroup\\\"]]],null,{\\\"statements\\\":[[7,\\\"li\\\",true],[10,\\\"role\\\",\\\"presentation\\\"],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"tab\\\"]],\\\"group\\\"],null],\\\"active\\\"],null]]]],[8],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"changeTab\\\",\\\"group\\\"]],[8],[1,[28,\\\"t\\\",[\\\"messages.add.by_group\\\"],null],false],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"role\\\",\\\"presentation\\\"],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"tab\\\"]],\\\"role\\\"],null],\\\"active\\\"],null]]]],[8],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"changeTab\\\",\\\"role\\\"]],[8],[1,[28,\\\"t\\\",[\\\"messages.add.by_role\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"role\\\",\\\"presentation\\\"],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"tab\\\"]],\\\"users\\\"],null],\\\"active\\\"],null]]]],[8],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"changeTab\\\",\\\"users\\\"]],[8],[1,[28,\\\"t\\\",[\\\"messages.add.search_users\\\"],null],false],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-messages-add\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"employer\\\",[24,[\\\"tab\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"select-comp\\\",null,[[\\\"content\\\",\\\"promptTranslation\\\",\\\"value\\\",\\\"form\\\",\\\"field\\\",\\\"classes\\\",\\\"disabled\\\",\\\"relation\\\"],[[24,[\\\"employers\\\"]],\\\"general.select_choose\\\",[24,[\\\"selected_employer\\\"]],\\\"user\\\",\\\"employer\\\",\\\"form-control\\\",[24,[\\\"disabled\\\"]],true]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[1,[22,\\\"message_employer\\\"],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"group\\\",[24,[\\\"tab\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"select-comp\\\",null,[[\\\"content\\\",\\\"promptTranslation\\\",\\\"value\\\",\\\"form\\\",\\\"field\\\",\\\"classes\\\",\\\"disabled\\\",\\\"relation\\\"],[[24,[\\\"groups\\\"]],\\\"general.select_choose\\\",[24,[\\\"selected_group\\\"]],\\\"user\\\",\\\"group\\\",\\\"form-control\\\",[24,[\\\"disabled\\\"]],true]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"role\\\",[24,[\\\"tab\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"prompt\\\"],[[24,[\\\"roles\\\"]],\\\"form-control\\\",[24,[\\\"selected_role\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"users\\\",[24,[\\\"tab\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"searchbox-messages-add flex-filter-field input-group report-more report-filter-component\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"search-box\\\",null,[[\\\"value\\\",\\\"change\\\",\\\"classes\\\"],[[24,[\\\"value\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"searchChanged\\\"],null],\\\"form-control add-field\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"q\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"users\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"t\\\",[\\\"report.no_rows\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"order\\\"],[[24,[\\\"showColumnsUsersearch\\\"]],[24,[\\\"translated_columns_userSearch\\\"]],[24,[\\\"users\\\"]],[24,[\\\"rowActionsUsersearch\\\"]],\\\"catchActions\\\",\\\"lastname\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[1,[28,\\\"if\\\",[[24,[\\\"selected_users_arr\\\"]],[24,[\\\"selected_users_arr\\\",\\\"length\\\"]],\\\"0\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.users_selected\\\"],null],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selected_users_arr\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"selected_employer_count\\\"]]],null,{\\\"statements\\\":[[0,\\\"                , \\\"],[1,[22,\\\"selected_employer_count\\\"],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.employers_selected\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"report-row-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clearReceivers\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Delete\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selected_users_arr\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"order\\\",\\\"checkable\\\"],[[24,[\\\"showColumns\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"selected_users_arr_formated\\\"]],[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",[24,[\\\"order\\\"]],false]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"messages.add.message\\\"]],{\\\"statements\\\":[[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.next\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/messages/add/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/messages/add/message/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MessagesAddMessageController;\n\nimport Ember from 'ember';\n\nimport config from '../../../../config/environment';\n\nimport { gt } from '@ember/object/computed';\n\nimport { sanitize } from 'dom-purify';\n\nMessagesAddMessageController = Ember.Controller.extend({\n    addIndexController: Ember.inject.controller('messages/add/index'),\n    ttapi: Ember.inject.service(),\n    session: Ember.inject.service(),\n    users_without_phone: Em.A([]),\n    users_without_email: Em.A([]),\n    //get receivers user ids to own array\n    receivers: Em.computed('addIndexController.selected_users_arr.[]', function () {\n        var recobj;\n        recobj = this.get('addIndexController.selected_users_arr');\n        //get all users if none selected\n        if (\n            (Em.isEmpty(recobj) || recobj.length === 0) &&\n            !this.get('header') &&\n            !this.get('message')\n        ) {\n            return this.get('store')\n                .query('user', {\n                    limit: 'all',\n                })\n                .then((users) => {\n                    this.set('addIndexController.selected_users_arr', users);\n                    return this.parseReceivers(users);\n                });\n        } else {\n            return this.parseReceivers(recobj);\n        }\n    }),\n    parseReceivers: function (recobj) {\n        var recArr;\n        recArr = [];\n        this.set('users_without_phone', Em.A([]));\n        this.set('users_without_email', Em.A([]));\n        recobj.forEach((receiver) => {\n            //if send sms set and someones doesnt have phone\n            if (!receiver.get('phone')) {\n                this.get('users_without_phone').push(receiver);\n            }\n            //same thing for email\n            if (!receiver.get('email')) {\n                this.get('users_without_email').push(receiver);\n            }\n            return recArr.push(receiver.id);\n        });\n        return recArr;\n    },\n    message_length: Em.computed('header', 'message', 'send_sms', function () {\n        var chars, length;\n        if (!this.get('send_sms')) {\n            return;\n        }\n        chars = 3; //sms message format is like \"title - rest_of_the_message\"\n        if (this.get('header')) {\n            chars += parseInt(this.get('header.length'));\n        }\n        if (this.get('message')) {\n            chars += parseInt(this.get('message.length'));\n        }\n        length = Math.ceil(chars / 160);\n        return length;\n    }),\n    multiple_sms: gt('message_length', 1),\n    fillData: function () {\n        var addController;\n        addController = this.get('addIndexController');\n        this.set('selected_users_arr', addController.selected_users_arr);\n        this.set('header', addController.header);\n        this.set('message', addController.message);\n        this.set('send_sms', addController.send_sms);\n        this.set('send_email', addController.send_email);\n        return this.set('sticky_message', addController.sticky_message);\n    },\n    //called from routes resetController hook\n    resetData: function () {\n        this.set('addIndexController.selected_users_arr', Em.A([]));\n        this.set('addIndexController.tab', '');\n        this.set('addIndexController.selected_employer', '');\n        this.set('addIndexController.selected_project', '');\n        this.set('addIndexController.selected_group', '');\n        this.set('addIndexController.selected_role', '');\n        this.set('addIndexController.q', '');\n        this.set('addIndexController.header', '');\n        this.set('addIndexController.message', '');\n        this.set('addIndexController.send_sms', '');\n        this.set('addIndexController.send_email', '');\n        return this.set('addIndexController.sticky_message', '');\n    },\n    actions: {\n        save: function () {\n            var params, self;\n            self = this;\n            params = {};\n            params.brand = config.brand;\n            params.receivers = this.get('receivers');\n            params.header = sanitize(this.get('header'));\n            if (this.get('message')) {\n                //if this is null, message opening screen gets stuck\n                params.message = sanitize(this.get('message'));\n            } else {\n                params.message = '';\n            }\n            params.send_sms = this.get('send_sms');\n            params.send_email = this.get('send_email');\n            params.sticky_message = this.get('sticky_message');\n            params.creator_name =\n                this.get('session.currentUser.firstname') +\n                ' ' +\n                this.get('session.currentUser.lastname');\n            return this.get('ttapi')\n                .request('/messages/new_message', {\n                    type: 'POST',\n                    data: params,\n                })\n                .then((data) => {\n                    self.set('spinIsLoading', false);\n                    self.set('disabled', false);\n                    return self.transitionToRoute('messages.list');\n                });\n        },\n        cancel: function () {\n            this.set('spinIsLoading', false);\n            this.set('disabled', false);\n            return this.transitionToRoute('messages.list');\n        },\n    },\n});\n\nexport default MessagesAddMessageController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/messages/add/message/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MessagesAddMessageRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nMessagesAddMessageRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    setupController: function (controller) {\n        return controller.fillData();\n    },\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting && transition.targetName === 'messages.list') {\n            return controller.resetData();\n        }\n    },\n});\n\nexport default MessagesAddMessageRoute;\n","export default Ember.HTMLBars.template({\"id\":\"gq2jRLtg\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\",\\\"user\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"messages.add.write_message_title\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-check\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"receivers\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[24,[\\\"receivers\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.users_selected\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.no_users_selected\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-xs\\\",\\\"messages.add.index\\\"]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-left\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.edit_receivers\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"messages.add.send_also\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[11,\\\"class\\\",[29,[\\\"btn btn-\\\",[28,\\\"if\\\",[[24,[\\\"send_sms\\\"]],\\\"primary\\\",\\\"default\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"send_sms\\\",[24,[\\\"send_sms\\\"]]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.send_also_sms\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[11,\\\"class\\\",[29,[\\\"btn btn-\\\",[28,\\\"if\\\",[[24,[\\\"send_email\\\"]],\\\"primary\\\",\\\"default\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"send_email\\\",[24,[\\\"send_email\\\"]]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.send_also_email\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"send_sms\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"users_without_phone\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"messages.add.users_without_phone\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"users_without_phone\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[23,2,[\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"firstname\\\"]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"send_email\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"users_without_email\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"messages.add.users_without_email\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"users_without_email\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[23,1,[\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"firstname\\\"]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"label\\\",true],[11,\\\"class\\\",[29,[\\\"btn btn-\\\",[28,\\\"if\\\",[[24,[\\\"sticky_message\\\"]],\\\"primary\\\",\\\"default\\\"],null]]]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"sticky_message\\\",[24,[\\\"sticky_message\\\"]]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.sticky_message\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"messages.add.header\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"message_header\\\",\\\"\\\",[24,[\\\"header\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"messages.add.message\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\"],[\\\"3\\\",\\\"form-control add-fields\\\",\\\"message_content\\\",\\\"\\\",[24,[\\\"message\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"message_length\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"multiple_sms\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[1,[28,\\\"t\\\",[\\\"messages.add.sms_count\\\"],null],false],[0,\\\": \\\"],[1,[22,\\\"message_length\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"messages.add.sms_count\\\"],null],false],[0,\\\": \\\"],[1,[22,\\\"message_length\\\"],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"messages.add.multiple_sms_warning\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\",\\\"savingText\\\"],[[24,[\\\"spinIsLoading\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[28,\\\"t\\\",[\\\"general.send\\\"],null],[28,\\\"t\\\",[\\\"general.sending\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/messages/add/message/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/messages/email-approvals/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MessagesEmailApprovalsController;\n\nimport Ember from 'ember';\n\nMessagesEmailApprovalsController = Ember.Controller.extend({\n    queryParams: ['created_date'],\n    show_columns: 'created_date,created_time,form,email,row_count,approved,comment,report',\n    order: 'created_date-,created_time-',\n    created_date: null,\n    rowActions: [\n        {\n            action: 'rowHistory',\n            icon: 'move move-Search',\n        },\n    ],\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'created_date',\n                type: 'date',\n                form: 'email_approval',\n                name: 'created_date',\n            }),\n        ]);\n    }),\n    mappedFilters: Em.computed('filters.@each.value', function () {\n        return this.get('filters').map(function (filter) {\n            return {\n                name: filter.get('field'),\n                value: filter.get('value'),\n            };\n        });\n    }),\n    actions: {\n        filterChanged: function (value, fieldName) {\n            if (value == null) {\n                return this.set('created_date', '');\n            } else {\n                return this.set('created_date', value);\n            }\n        },\n    },\n});\n\nexport default MessagesEmailApprovalsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/messages/email-approvals/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MessagesEmailApprovalsRoute;\n\nimport Ember from 'ember';\n\nMessagesEmailApprovalsRoute = Ember.Route.extend();\n\nexport default MessagesEmailApprovalsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"bWOB7nCW\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"email_approval\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"rowActions\\\",\\\"order\\\",\\\"settings\\\",\\\"show_columns\\\",\\\"form\\\",\\\"query\\\"],[[24,[\\\"rowActions\\\"]],[24,[\\\"order\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"show_columns\\\"]],\\\"email_approval\\\",[24,[\\\"mappedFilters\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/messages/email-approvals/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/messages/list/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MessagesListController;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nimport { htmlSafe } from '@ember/string';\n\nimport { sanitize } from 'dom-purify';\n\nMessagesListController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    appCtrl: Ember.inject.controller('application'),\n    addIndexController: Ember.inject.controller('messages/add/index'),\n    columns: ['created', 'header', 'content', 'creator_name', 'read_status'],\n    queryParams: ['page'],\n    popupArr: Em.A([]),\n    showRemoved: false,\n    hideSort: true,\n    offset: 0,\n    limit: 25,\n    page: 1,\n    pages: Em.computed('model', function () {\n        return Math.ceil(this.get('model.count') / this.get('limit'));\n    }),\n    data: Em.computed('model.messages.[]', 'popupArr.[]', function () {\n        var columns, data, formatted_data;\n        data = this.get('model.messages');\n        if (!data) {\n            return null;\n        }\n        columns = this.get('columns');\n        formatted_data = Em.A([]);\n        data.forEach((unformatted_row) => {\n            var row;\n            row = Ember.Object.create();\n            if (unformatted_row.id) {\n                row.id = unformatted_row.id;\n            }\n            //            if !unformatted_row.read\n            //                row.class = \"warning\"\n\n            //            if unformatted_row.row_info.status == \"removed\"\n            //                row.class = \"danger\"\n            if (unformatted_row.sticky == 1) {\n                row.class = 'info';\n            }\n            $.each(columns, (key, column) => {\n                var cell, userlevel;\n                cell = sanitize(unformatted_row[column]);\n                if (column === 'created') {\n                    cell = moment(cell).format('L');\n                }\n                if (column === 'read_status') {\n                    cell = unformatted_row.read_count + ' / ' + unformatted_row.receiver_count;\n                    if (unformatted_row.read_count / unformatted_row.receiver_count === 1) {\n                        cell = new htmlSafe(\n                            '<span class=\"label-m label-m-approved\" title=\"ok\"><span class=\"glyphicon glyphicon-ok\"></span></span>',\n                        );\n                    }\n                    userlevel = this.get('session.currentUser.userlevel');\n                    if (userlevel !== '5' && userlevel !== '6') {\n                        if (\n                            unformatted_row.read_count === '0' &&\n                            unformatted_row.receiver_count === '1'\n                        ) {\n                            cell = new htmlSafe('');\n                        }\n                    }\n                }\n                if (cell && cell.length > 50) {\n                    cell = cell.substring(0, 50) + '...';\n                }\n                return (row[column] = new htmlSafe(cell));\n            });\n            return formatted_data.pushObjects([row]);\n        });\n        return formatted_data;\n    }),\n    rowActions: Em.computed(function () {\n        var arr, userlevel;\n        userlevel = this.get('session.currentUser.userlevel');\n        if (userlevel === '5') {\n            return (arr = [\n                {\n                    action: 'copyRow',\n                    icon: 'move move-CopyRow',\n                    text: this.get('intl').t('timetracker.calendar.copy'),\n                },\n                {\n                    action: 'removeRow',\n                    icon: 'move move-Delete',\n                    text: this.get('intl').t('report.delete_rows'),\n                },\n            ]);\n        } else if (userlevel !== '1') {\n            return (arr = [\n                {\n                    action: 'copyRow',\n                    icon: 'move move-CopyRow',\n                    text: this.get('intl').t('timetracker.calendar.copy'),\n                },\n            ]);\n        }\n    }),\n    // get translation for every column\n    translated_columns: Ember.computed('columns', function () {\n        var c, columns, intl, translated_columns;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        columns = this.get('columns');\n        translated_columns = [];\n        $.each(columns, (key, item) => {\n            return translated_columns.push(intl.t('report.messages.' + item));\n        });\n        return translated_columns;\n    }),\n    removeMessage: function (id) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return this.get('ttapi')\n                .request('/messages/' + id, {\n                    type: 'DELETE',\n                })\n                .then((data) => {\n                    return resolve(data);\n                })\n                .catch((reason) => {\n                    var error_obj;\n                    error_obj = {};\n                    error_obj.responseText = reason.responseJSON.error;\n                    error_obj.status = reason.status;\n                    error_obj.statusText = reason.responseJSON.error_description;\n                    Tt4.set('last_error', error_obj);\n                    return reject(reason);\n                });\n        });\n    },\n    editMessage: function (id) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return this.get('ttapi')\n                .request('/messages/' + id, {\n                    type: 'PUT',\n                })\n                .then((data) => {\n                    return resolve(data);\n                })\n                .catch((reason) => {\n                    var error_obj;\n                    error_obj = {};\n                    error_obj.status = reason.status;\n                    Tt4.set('last_error', error_obj);\n                    return reject(reason);\n                });\n        });\n    },\n    autoFillData: function (message) {\n        var promise, ref, ref1, ref2;\n        promise = this.get('Collector').ttapi({\n            method: 'get',\n            url: 'messages/receivers/' + message.id,\n        });\n        promise.then((data) => {\n            var receivers;\n            if (data.receivers) {\n                receivers = data.receivers.mapBy('user');\n                return this.store\n                    .query('user', {\n                        limit: 'all',\n                        id: receivers.join(','),\n                    })\n                    .then((users) => {\n                        return this.send('addUsersToList', users);\n                    });\n            }\n        });\n        this.set('addIndexController.header', message.header);\n        this.set('addIndexController.message', message.content);\n        this.set(\n            'addIndexController.send_sms',\n            (ref = message.sms_sent === '1') != null\n                ? ref\n                : {\n                      true: false,\n                  },\n        );\n        this.set(\n            'addIndexController.send_email',\n            (ref1 = message.email_sent === '1') != null\n                ? ref1\n                : {\n                      true: false,\n                  },\n        );\n        return this.set(\n            'addIndexController.sticky_message',\n            (ref2 = message.sticky == 1) != null\n                ? ref2\n                : {\n                      true: false,\n                  },\n        );\n    },\n    actions: {\n        catchActions: function (action, params) {\n            return this.send(action, params);\n        },\n        closeModal: function () {\n            this.send('markAsRead');\n            return this.set('currentMessage', null);\n        },\n        removeRow: function (params) {\n            var self;\n            self = this;\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    if (con) {\n                        return this.removeMessage(params.id).then(function () {\n                            var obj;\n                            obj = self.get('model.messages').findBy('id', params.id);\n                            return self.get('model.messages').removeObject(obj);\n                        });\n                    }\n                });\n        },\n        unstick: function (params) {\n            var self;\n            self = this;\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_unstick'))\n                .then((con) => {\n                    if (con) {\n                        return this.editMessage(params.id).then(function () {\n                            var obj;\n                            obj = self.get('model.messages').findBy('id', params.id);\n                            obj.sticky = '0';\n                            self.set('currentMessage', null);\n                            return self.send('refreshModel');\n                        });\n                    }\n                });\n        },\n        addUsersToList: function (users) {\n            return this.set('addIndexController.selected_users_arr', [].addObjects(users));\n        },\n        copyRow: function (params) {\n            var messageData;\n            this.transitionToRoute('/messages/add/message');\n            messageData = this.get('model.messages').findBy('id', params.id);\n            this.autoFillData(messageData);\n        },\n        showRow: function (msg) {\n            var message, promise, userlevel;\n            message = $.extend(true, {}, this.get('model.messages').findBy('id', msg.id)); //make deep copy so message can be re-opened without reloading site\n            //find users who have read and who have not (admin only)\n            userlevel = this.get('session.currentUser.userlevel');\n            message.created = moment.utc(message.created).local().format('LLLL');\n            if (\n                userlevel === '5' ||\n                (userlevel === '6' &&\n                    message['creator_user'] === this.get('session.currentUser.id'))\n            ) {\n                promise = this.get('Collector').ttapi({\n                    method: 'get',\n                    url: 'messages/receivers/' + msg.id,\n                });\n                return promise.then((data) => {\n                    var i, len, receivers, ref, row, userids, users_notread, users_read;\n                    if (data.receivers) {\n                        receivers = data.receivers;\n                        userids = [];\n                        ref = data.receivers;\n                        for (i = 0, len = ref.length; i < len; i++) {\n                            row = ref[i];\n                            userids.push(row.user);\n                        }\n                        users_read = Em.A([]);\n                        users_notread = Em.A([]);\n                        return this.store\n                            .query('user', {\n                                id: userids.join(','),\n                                order: 'lastname',\n                                limit: 'all',\n                            })\n                            .then((users) => {\n                                users.forEach((user) => {\n                                    const receiver_row = receivers.findBy(\n                                        'user',\n                                        parseInt(user.id),\n                                    );\n                                    user.set('readstatus', receiver_row.status);\n                                    if (receiver_row.status === 'new') {\n                                        return users_notread.pushObject(user);\n                                    } else {\n                                        return users_read.pushObject(user);\n                                    }\n                                });\n                                message.users_read = users_read;\n                                message.users_notread = users_notread;\n                                return this.set('currentMessage', message);\n                            });\n                    }\n                });\n            } else {\n                return this.set('currentMessage', message);\n            }\n        },\n        //            @set \"currentMessage\", message\n        markAsRead: function () {\n            var promise;\n            if (Em.isNone(this.get('currentMessage'))) {\n                return;\n            }\n            //do not mark as read when impersonating\n            if (this.get('appCtrl.impersonate')) {\n                this.set('currentMessage', null);\n                return;\n            }\n            //mark as read\n            promise = this.get('Collector').ttapi({\n                method: 'post',\n                url: 'messages/markasread/' + this.get('currentMessage.id'),\n            });\n            return promise.then((back) => {\n                //remove currentmessage\n                this.set('currentMessage', null);\n                return console.log('removed');\n            });\n        },\n    },\n});\n\nexport default MessagesListController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/messages/list/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MessagesListRoute;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nMessagesListRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    ttapi: Ember.inject.service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n    },\n    limit: 25,\n    model: function (params) {\n        var offset, page, url;\n        page = params.page;\n        offset = (page - 1) * this.get('limit');\n        url = '/messages/all';\n        url += '?limit=' + this.get('limit') + '&offset=' + offset;\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return this.get('ttapi')\n                .request(url, {\n                    type: 'GET',\n                })\n                .then((data) => {\n                    return resolve(data);\n                })\n                .catch(reject);\n        });\n    },\n    actions: {\n        refreshModel: function () {\n            return this.refresh();\n        },\n    },\n});\n\nexport default MessagesListRoute;\n","export default Ember.HTMLBars.template({\"id\":\"t60FglFd\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"order\\\",\\\"rowAction\\\",\\\"noRowsText\\\",\\\"hideSort\\\"],[[24,[\\\"columns\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"data\\\"]],[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",[24,[\\\"order\\\"]],\\\"showRow\\\",[28,\\\"t\\\",[\\\"report.no_rows\\\"],null],[24,[\\\"hideSort\\\"]]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pages\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentMessage\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"currentMessage\\\",\\\"header\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"currentMessage\\\",\\\"sticky\\\"]],\\\"1\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],\\\"5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-warning\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"unstick\\\",[24,[\\\"currentMessage\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"unstick_row\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"message-date-header\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[24,[\\\"currentMessage\\\",\\\"created\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"currentMessage\\\"]],\\\"creator_name\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                - \\\"],[7,\\\"i\\\",true],[8],[1,[28,\\\"get\\\",[[24,[\\\"currentMessage\\\"]],\\\"creator_name\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"mess-ages/types/messageboard\\\",null,[[\\\"message\\\"],[[24,[\\\"currentMessage\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/messages/list/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/messages/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MessagesRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nMessagesRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default MessagesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"fSEtyYWx\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/multitask/loading/template.hbs\"}});","import { set } from '@ember/object';\nimport { typeOf } from '@ember/utils';\nimport GeneralReportController from '../../../controllers/general-report';\n\n// eslint-disable-next-line ember/alias-model-in-controller\nexport default GeneralReportController.extend({\n    actions: {\n        filterChangeAction(value, field) {\n            if (typeOf(value) === 'object' || typeOf(value) === 'instance') {\n                return set(this, field, value.id);\n            } else {\n                return set(this, field, value);\n            }\n        },\n    },\n\n    date:\n        moment().startOf('isoweek').subtract(1, 'week').format('YYYY-MM-DD') +\n        '_' +\n        moment().format('YYYY-MM-DD'),\n});\n","import { set } from '@ember/object';\nimport GeneralReportRoute from '../../../routes/general-report';\n\nconst MateriallogReportRoute = GeneralReportRoute.extend({\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        taskname: {\n            refreshModel: true,\n        },\n    },\n    form: 'multitask',\n\n    model(params) {\n        if (params.page) {\n            delete params.page;\n        }\n        return set(this.controllerFor('multitask.report'), 'qParams', params);\n    },\n});\n\nexport default MateriallogReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"K/Te03Ln\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[0,\\\" \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"multitask\\\",[22,\\\"qParams\\\"],\\\"date,project,user,q,groupBy\\\",[28,\\\"hash\\\",null,[[\\\"date\\\",\\\"order\\\"],[[24,[\\\"date\\\"]],\\\"date-\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/multitask/report/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nexport default Route.extend(AuthenticatedRouteMixin);\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/my-sites/add-image-component/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MySitesAddImageComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport { resizeImage } from 'tt4/utils/file-util';\n\nimport $ from 'jquery';\n\nMySitesAddImageComponent = Ember.Component.extend({\n    tagName: 'span',\n    store: Ember.inject.service(),\n    project_image_observer: Em.observer('file', function () {\n        var project, projectImage;\n        project = this.get('project');\n        projectImage = this.get('file');\n        return this.get('store')\n            .findRecord('project', project.id)\n            .then((record) => {\n                var images;\n                images = record.get('image');\n                //do not delete old images if there are already multiple images\n                if (images.length > 1) {\n                    //put new image as default (first in array)\n                    images.unshiftObject(projectImage[0]);\n                    projectImage = images;\n                }\n                if (projectImage === null) {\n                    record.set('image', '');\n                } else {\n                    record.set('image', projectImage);\n                }\n                return record.save().then(() => {\n                    if (this.get('updateImage')) {\n                        return this.updateImage();\n                    }\n                });\n            });\n    }),\n    data: Em.A([]),\n    change: function (e) {\n        var file, i, len, ref, results, self;\n        self = this;\n        this.set('data', Em.A([]));\n        ref = e.target.files;\n        results = [];\n        for (i = 0, len = ref.length; i < len; i++) {\n            file = ref[i];\n            results.push(self.readFile(file));\n        }\n        return results;\n    },\n    readFile: function (file) {\n        var acceptedTypes, file_data, reader, ref, self;\n        self = this;\n        acceptedTypes = ['image/gif', 'image/png', 'image/jpg', 'image/jpeg'];\n        this.set('error', null);\n        if (((ref = file.type), indexOf.call(acceptedTypes, ref) >= 0)) {\n            file_data = {};\n            file_data.name = file.name;\n            return resizeImage(file, 960, 960, 80).then((resized) => {\n                file_data.file = resized;\n                return resizeImage(resized, 200, 200, 80).then((ersized) => {\n                    var data;\n                    file_data.preview = resized;\n                    data = self.get(data);\n                    data.pushObject(file_data);\n                    return self.set('file', data);\n                });\n            });\n        } else {\n            reader = new FileReader();\n            reader.onloadend = function (e) {\n                var api_format, dataURL, parse_file;\n                dataURL = e.target.result;\n                parse_file = dataURL.split(',');\n                api_format = {\n                    data: parse_file[1],\n                    name: file.name,\n                };\n                return self.set('file', api_format);\n            };\n            return reader.readAsDataURL(file);\n        }\n    },\n    actions: {\n        addFile: function () {\n            return $(this.get('element')).find('.file_input').click();\n        },\n    },\n});\n\nexport default MySitesAddImageComponent;\n","export default Ember.HTMLBars.template({\"id\":\"E6KVBet5\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"input\\\",true],[10,\\\"class\\\",\\\"hide file_input\\\"],[11,\\\"value\\\",[22,\\\"value\\\"]],[10,\\\"type\\\",\\\"file\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link mysites-btn-delete\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addFile\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-camera\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/my-sites/add-image-component/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/my-sites/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MySitesController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nMySitesController = Ember.Controller.extend({\n    queryParams: ['site', 'project'],\n    session: Ember.inject.service(),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    google: Ember.inject.service(),\n    mySites: Ember.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    tools: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    gps: Em.inject.service('gps'),\n    wtService: Em.inject.service(),\n    cdn: Em.inject.service(),\n    error: Em.inject.service(),\n    project: '',\n    projects: Ember.computed(function () {\n        var c;\n        c = this.get('Collector');\n        if (c.testNeedsOne('presence') && !c.testNeedsOne('worktime')) {\n            return this.store.query('project', {\n                sideload: true,\n                presence_project: 'on',\n            });\n        } else {\n            return this.store.query('project', {\n                sideload: true,\n            });\n        }\n    }),\n    showAddSiteButton: Em.computed.gt('session.currentUser.services.linkings.length', 0),\n    serviceList: Em.computed('session.currentUser.services.linkings', function () {\n        return this.get('session.currentUser.services.linkings').map(function (item) {\n            return {\n                id: item.username,\n                name: item.company + ' - ' + item.username,\n                company: item.company,\n                partnerid: item.partnerid,\n            };\n        });\n    }),\n    currentService: Em.computed.alias('session.currentUser.username'),\n    selectProjectField: Em.computed(function () {\n        var c, field;\n        c = this.get('Collector');\n        if (c.fieldExists('worktime', 'project')) {\n            field = c.field('worktime', 'project');\n        } else if (c.fieldExists('presence', 'project')) {\n            field = c.field('presence', 'project');\n        } else if (c.fieldExists('orientation', 'ori_site')) {\n            field = c.field('orientation', 'ori_site');\n        } else if (c.fieldExists('tr', 'project')) {\n            field = c.field('tr', 'project');\n        } else if (c.fieldExists('mvr', 'project')) {\n            field = c.field('mvr', 'project');\n        } else {\n            return null;\n        }\n        return field;\n    }),\n    selectProject: Em.computed('selectProjectField', function () {\n        var field;\n        field = this.get('selectProjectField');\n        if (field) {\n            field.prompt = 'my-sites.add_site';\n            field.skipForcedGPS = true;\n        }\n        return field;\n    }),\n    isMySitesStored: false,\n    /*isMySitesStored_observer: Em.observer 'model.[]', ->\n          self = @\n          storageData = JSON.parse(localStorage.getItem(@get('localStorageId') ))\n          if storageData\n              @set 'isMySitesStored', true\n          else\n              @set 'isMySitesStored', false\n\n          self.set \"showGpsButton\", false\n          #check if projects has gps locations\n          $.each @get(\"model\"), (key, item) =>\n              if item.get(\"location_map\")\n                  self.set \"showGpsButton\", true\n   */\n    showGpsButton: false,\n    setNumberOfWorkersAtProjects: function (projects) {\n        var params, promise;\n        params = Em.Object.create({\n            sideload: true,\n            endtime: '(empty)',\n        });\n        promise = this.store.query('worktime', params);\n        return promise.then(function (worktimes) {\n            var tmp_dict;\n            tmp_dict = [];\n            projects.forEach(function (project) {\n                return project.set('active_workers', 0);\n            });\n            worktimes.forEach(function (item) {\n                var count;\n                if (tmp_dict.hasOwnProperty(item.get('project.id'))) {\n                    count = tmp_dict.get(item.get('project.id')) + 1;\n                    return (tmp_dict[item.get('project.id')] = count);\n                } else {\n                    return (tmp_dict[item.get('project.id')] = 1);\n                }\n            });\n            return tmp_dict.forEach(function (value, projectId) {\n                return projects.forEach(function (project) {\n                    if (project.get('id').toString() === projectId.toString()) {\n                        return project.set('active_workers', value);\n                    }\n                });\n            });\n        });\n    },\n    project_ids_observer: Em.observer('model.[]', 'session.currentUser', function () {\n        if (!this.get('session.currentUser')) {\n            return;\n        }\n        if (this.get('model.length') === 0) {\n            return;\n        }\n        return this.updateSites().then(() => {\n            return this.saveMySitesToLocalStorage();\n        });\n    }),\n    // If model contains sites that have not all the information fetch it now\n    updateSites: function () {\n        var store;\n        store = this.get('store');\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promises, sites;\n            sites = this.get('model');\n            promises = [];\n            sites.forEach((site) => {\n                var promise;\n                if (!site.partnerid || site.partnerid === 'NaN') {\n                    site.partnerid = this.get('session.currentUser.partnerid');\n                }\n                if ('name' in site) {\n                    return;\n                }\n                promise = store.findRecord('project', site.id);\n                promises.push(promise);\n                return promise.then(\n                    (project) => {\n                        return this.get('mySites').getMySiteObject(project, site);\n                    },\n                    (reason) => {},\n                );\n            });\n            // this should never happen\n            if (promises.length === 0) {\n                return resolve();\n            } else {\n                return Em.RSVP.Promise.all(promises).then(() => {\n                    return resolve();\n                });\n            }\n        });\n    },\n    /*\n  loadMySitesFromLocalStorage: Ember.on 'init', Ember.observer 'session.currentUser','refresh', ->\n      return if not @get 'session.currentUser'\n      mySites = @get('mySites').loadFromLocalStorage()\n\n      if @get('site')\n          @setCurrentMySite {id: @get('site')}\n\n      if mySites.length < 1\n          @loadEverythingToMySites()\n      else\n          @addOwnedProjectsToMySites()\n\n  */\n    addOwnedProjectsToMySites: function () {\n        var c, mySites, promise, userId;\n        if (!this.get('session.currentUser')) {\n            return;\n        }\n        c = this.get('Collector');\n        if (!c.fieldExists('project', 'owner')) {\n            return;\n        }\n        mySites = this.get('model');\n        if (!mySites) {\n            return;\n        }\n        userId = this.get('session.currentUser.id');\n        promise = this.store.query('project', {\n            owner: userId,\n            sideload: true,\n        });\n        return promise.then((projects) => {\n            var add_these;\n            add_these = projects.reject((project) => {\n                return mySites.findBy('id', project.id);\n            });\n            if (add_these.length > 0) {\n                add_these.forEach((project) => {\n                    return mySites.pushObject(this.get('mySites').getMySiteObject(project));\n                });\n                return this.saveMySitesToLocalStorage();\n            }\n        });\n    },\n    loadEverythingToMySites: function () {\n        var promise, userId;\n        promise = this.get('projects');\n        userId = this.get('session.currentUser.id');\n        return promise.then((projects) => {\n            var mySites, tmp_projects;\n            tmp_projects = projects.filter((record) => {\n                if (record.get('owner')) {\n                    return record.get('owner').get('id') === userId;\n                } else {\n                    return false;\n                }\n            });\n            if (tmp_projects.length > 0) {\n                projects = tmp_projects;\n            }\n            mySites = projects.slice(0, 100).map((record) => {\n                return this.get('mySites').getMySiteObject(record);\n            });\n            return this.set('model', Em.A(mySites));\n        });\n    },\n    saveMySitesToLocalStorage: function () {\n        return this.get('mySites').saveToLocalStorage(\n            this.get('model').sortBy('used').reverse().slice(0, 100),\n        );\n    },\n    changeService: function (site) {\n        var partnerid, ret, service;\n        Em.assert(site.partnerid, 'mySite partnerid not set');\n        partnerid = site.partnerid;\n        service = Em.A(this.get('session.currentUser.services.linkings')).findBy(\n            'partnerid',\n            '' + partnerid,\n        );\n        ret = confirm(this.get('intl').t('mysites.change_service'));\n        if (ret) {\n            return this.get('tools').change_service(service.username, '#/my-sites?site=' + site.id);\n        }\n    },\n    setCurrentMySite: function (site) {\n        return this.get('wtService')\n            .unlessOpenWt(site)\n            .then(\n                () => {\n                    return this.get('store')\n                        .findRecord('project', site.id)\n                        .then(\n                            (siteRecord) => {\n                                var modelsite;\n                                if (siteRecord.get('row_info.status') === 'removed') {\n                                    this.get('model').removeObject(\n                                        this.get('model').findBy('id', site.id),\n                                    );\n                                    this.saveMySitesToLocalStorage();\n                                    return;\n                                }\n                                modelsite = this.get('model').findBy('id', site.id);\n                                this.get('mySites').getMySiteObject(siteRecord, modelsite);\n                                this.saveMySitesToLocalStorage();\n                                this.get('localStorageWrapper').setUserSetting(\n                                    'currentMySite',\n                                    parseInt(site.id, 10),\n                                );\n                                this.set('session.currentUser.currentMySite', siteRecord);\n                                return this.doTransition(siteRecord);\n                            },\n                            (reason) => {\n                                this.get('model').removeObject(\n                                    this.get('model').findBy('id', site.id),\n                                );\n                                return this.saveMySitesToLocalStorage();\n                            },\n                        );\n                },\n                () => {\n                    this.get('wtService').showOpenWtError();\n                    return this.set('saving', false);\n                },\n            );\n    },\n    doTransition: function (record) {\n        if (\n            record.get('presence_project') &&\n            this.get('Collector').testNeeds(['presence@add', 'userfieldcheck.id06kort'])\n        ) {\n            return this.transitionToRoute('presences.add');\n        } else if (\n            this.get('Collector').testNeeds([\n                'worktime',\n                'products.timetracker_clockcard||worktime.starttime@disabled||products.timetracker_hybrid',\n                'modulecontrol.worktimes',\n            ])\n        ) {\n            if (this.get('Collector').testNeedsOne('flag.clockcard-25')) {\n                return this.transitionToRoute({ queryParams: { modal: 'timecard' } });\n            }\n            return this.transitionToRoute('timetracker.timecard.add');\n        } else if (\n            this.get('Collector').testNeeds([\n                'worktime@add',\n                '!worktime.starttime@disabled',\n                '!products.timetracker_hybrid',\n                'modulecontrol.worktimes',\n            ])\n        ) {\n            return this.transitionToRoute('timetracker.add');\n        } else if (this.get('Collector').testNeeds(['orientation', 'orientation@add'])) {\n            return this.transitionToRoute('orientations.add');\n        } else if (this.get('Collector').testNeeds(['tr', 'tr@add'])) {\n            return this.transitionToRoute('site_safety.measurement.add', 'add', 'tr');\n        } else if (this.get('Collector').testNeeds(['mvr', 'mvr@add'])) {\n            return this.transitionToRoute('site_safety.measurement.add', 'add', 'mvr');\n        } else {\n            return this.get('dialogs').alert(\n                this.get('intl').t('mysites.no_rights_for_this_project'),\n            );\n        }\n    },\n    filteredSites: Em.computed(\n        'model.@each.partnerid',\n        'model',\n        'model.[]',\n        'session.currentUser.services',\n        function () {\n            var partnerids, services, sites;\n            if (!this.get('session.currentUser.services')) {\n                return Em.A();\n            }\n            services = this.get('session.currentUser.services');\n            partnerids = Em.A(services.linkings).map(function (item) {\n                return parseInt(item.partnerid, 10);\n            });\n            partnerids.push(services.partnerid);\n            sites = this.get('model').filter(function (item) {\n                var ref;\n                return (ref = item.partnerid), indexOf.call(partnerids, ref) >= 0;\n            });\n            return sites.sortBy('used').reverse();\n        },\n    ),\n    currentlySelectedProjectForAddingMysite: null,\n    actions: {\n        openOverview: function (site) {\n            var c;\n            c = this.get('Collector');\n            if (this.get('session.currentUser.userlevel') === '3' || c.testNeeds(['project@add'])) {\n                return this.get('store')\n                    .findRecord('project', site.id)\n                    .then((siteRecord) => {\n                        this.set('session.currentUser.currentMySite', siteRecord);\n                        this.transitionToRoute('projects.edit.overview', site.id);\n                    });\n            } else {\n                return this.set('projectinfo', site.id);\n            }\n        },\n        openFilesview: function (site) {\n            var c;\n            c = this.get('Collector');\n            if (c.testNeeds(['project@add'])) {\n                return this.transitionToRoute('projects.edit.project-files', site.id);\n            } else {\n                return this.set('projectfiles', site.id);\n            }\n        },\n        removeProjectModal: function () {\n            return this.set('projectinfo', '');\n        },\n        removeFilesModal: function () {\n            return this.set('projectfiles', '');\n        },\n        openAddSiteModalOn: function () {\n            this.set('showAddSiteModal', true);\n            return false;\n        },\n        removeModal: function () {\n            return this.set('showAddSiteModal', false);\n        },\n        addNewSiteFromMySites: function (project) {\n            var mySitesProjects;\n            if (!project) {\n                return;\n            }\n            mySitesProjects = this.get('model');\n            if (!mySitesProjects.findBy('id', project.get('id'))) {\n                return this.get('store')\n                    .query('project', {\n                        id: project.get('id'),\n                        sideload: true,\n                    })\n                    .then((found_projects) => {\n                        var found_project;\n                        found_project = found_projects.get('firstObject');\n                        return mySitesProjects.pushObject(\n                            this.get('mySites').getMySiteObject(found_project),\n                        );\n                    });\n            }\n        },\n        removeSiteFromMySites: function (projectId) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('mysites.confirm_remove'))\n                .then((con) => {\n                    if (con) {\n                        this.get('model').removeObject(projectId);\n                        if (this.get('model.length') === 0) {\n                            return this.get('mySites').removeAllSites();\n                        } else {\n                            return this.saveMySitesToLocalStorage();\n                        }\n                    }\n                });\n        },\n        projectClicked: function (site) {\n            if (site.partnerid !== this.get('session.currentUser.services.partnerid')) {\n                return this.changeService(site);\n            } else {\n                return this.setCurrentMySite(site);\n            }\n        },\n        imageUpdated: function (site_id) {\n            var promise, site, sites, store;\n            store = this.get('store');\n            sites = this.get('model');\n            site = sites.findBy('id', site_id);\n            promise = store.findRecord('project', site_id);\n            return promise.then(\n                (project) => {\n                    return this.get('mySites').getMySiteObject(project, site);\n                },\n                (reason) => {},\n            );\n        },\n        //clearMySites: () ->\n        //    @set 'mySitesProjectIds', Em.A []\n        projectSelected: function (project) {\n            this.set('currentlySelectedProjectForAddingMysite', project);\n            this.set('showAddSiteNowButton', project ? true : false);\n            return false;\n        },\n        addSiteNow: function (service, project) {\n            var promise;\n            promise = this.get('Collector').ttapi({\n                url: 'tunnel/findRow/project/' + project,\n                data: {\n                    username: service,\n                },\n            });\n            promise.then((data) => {\n                var found, mySitesProjects, mysites, newsite;\n                mysites = this.get('mySites');\n                newsite = mysites.getMySiteObject(Em.Object.create(data.project));\n                service = this.get('serviceList').findBy('id', service);\n                Em.set(newsite, 'partnerid', parseInt(service.partnerid, 10));\n                Em.set(newsite, 'company', service.company);\n                //mysites.addSiteObject newsite\n                mySitesProjects = this.get('model');\n                found = mySitesProjects.find(function (item) {\n                    return parseInt(item.id, 10) === newsite.id;\n                });\n                if (!found) {\n                    return mySitesProjects.pushObject(newsite);\n                }\n            });\n            return this.set('showAddSiteModal', false);\n        },\n        addMySite: function (project) {\n            if (project) {\n                return this.send('addNewSiteFromMySites', project);\n            }\n        },\n        openGpsMap: function () {\n            var locs, rows, self;\n            self = this;\n            if (!this.get('showGpsMap')) {\n                locs = [];\n                rows = self.get('model');\n                $.each(this.get('model'), (key, item) => {\n                    var loc;\n                    loc = {};\n                    loc.project = JSON.parse(item.get('location_map'));\n                    return locs.push(loc);\n                });\n                this.set('mapMarkers', locs);\n                return this.set('showGpsMap', true);\n            } else {\n                return self.set('showGpsMap', false);\n            }\n        },\n        updateMySitesPicture: function (record, mysite) {\n            this.get('mySites').getMySiteObject(record, mysite);\n            return this.set('edit_id', null);\n        },\n        toggleEditMode: function (site) {\n            var edit_id;\n            edit_id = this.get('edit_id');\n            if (edit_id === site.id) {\n                return this.set('edit_id', null);\n            } else {\n                return this.set('edit_id', site.id);\n            }\n        },\n        fetchNearest: function () {\n            var project_promise, self;\n            self = this;\n            this.set('project_fetching', true);\n            project_promise = this.get('store').findAll('project', {\n                reload: true,\n            });\n            return project_promise.then((projects) => {\n                var options;\n                options = {\n                    enableHighAccuracy: true,\n                    maximumAge: 5000,\n                };\n                if (navigator.geolocation) {\n                    return navigator.geolocation.getCurrentPosition(\n                        function (location) {\n                            var add_project,\n                                dialog_text,\n                                nearProject,\n                                shortestDist,\n                                shortestProject;\n                            shortestProject = null;\n                            nearProject = null;\n                            shortestDist = null;\n                            projects.forEach(function (project) {\n                                var distance, pres_latlng, proj_latlng, proj_loc;\n                                if (project.get('location_map')) {\n                                    proj_loc = JSON.parse(project.get('location_map'));\n                                    if (proj_loc) {\n                                        proj_latlng = new window.google.maps.LatLng(\n                                            proj_loc.latitude,\n                                            proj_loc.longitude,\n                                        );\n                                        pres_latlng = new window.google.maps.LatLng(\n                                            location.coords.latitude,\n                                            location.coords.longitude,\n                                        );\n                                        distance =\n                                            window.google.maps.geometry.spherical.computeDistanceBetween(\n                                                proj_latlng,\n                                                pres_latlng,\n                                            );\n                                        if (shortestProject === null || shortestDist > distance) {\n                                            shortestProject = project;\n                                            return (shortestDist = distance);\n                                        }\n                                    }\n                                }\n                            });\n                            self.set('project_fetching', false);\n                            add_project = false;\n                            if (shortestProject) {\n                                //find if project already in mysites list\n                                if (self.get('filteredSites').length > 0) {\n                                    if (\n                                        !self\n                                            .get('filteredSites')\n                                            .findBy('id', shortestProject.get('id'))\n                                    ) {\n                                        add_project = true;\n                                    } else {\n                                        add_project = false;\n                                    }\n                                } else {\n                                    add_project = true;\n                                }\n                                if (add_project) {\n                                    dialog_text = self\n                                        .get('intl')\n                                        .t('my-sites.add_project_and_continue', {\n                                            project_name: shortestProject.get('name'),\n                                        });\n                                    return self\n                                        .get('dialogs')\n                                        .confirm(dialog_text)\n                                        .then((con) => {\n                                            if (con) {\n                                                self.send('addNewSiteFromMySites', shortestProject);\n                                                return self.setCurrentMySite(shortestProject);\n                                            }\n                                        });\n                                } else {\n                                    dialog_text = self\n                                        .get('intl')\n                                        .t('my-sites.continue_to_project', {\n                                            project_name: shortestProject.get('name'),\n                                        });\n                                    return self\n                                        .get('dialogs')\n                                        .confirm(dialog_text)\n                                        .then((con) => {\n                                            if (con) {\n                                                return self.setCurrentMySite(shortestProject);\n                                            }\n                                        });\n                                }\n                            } else {\n                                return self\n                                    .get('dialogs')\n                                    .alert(\n                                        self.get('intl').t('my-sites.no_shortest_project_found'),\n                                    );\n                            }\n                        },\n                        (reason) => {\n                            return this.get('error').notify(reason);\n                        },\n                        options,\n                    );\n                }\n            });\n        },\n        removeAll: function () {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('mysites.confirm_remove_all'))\n                .then((con) => {\n                    if (con) {\n                        return this.get('mySites')\n                            .removeAllSites()\n                            .then(() => {\n                                this.set('model', []);\n                                return this.saveMySitesToLocalStorage();\n                            });\n                    }\n                });\n        },\n    },\n});\n\nexport default MySitesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/my-sites/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MySitesRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nMySitesRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    session: Ember.inject.service(),\n    mySites: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    localStorageWrapper: Ember.inject.service(),\n    localStorageId: 'movenium_tt_users_my_sites',\n    model: function (params) {\n        var promise, self;\n        self = this;\n        //get sites from localstorage and update them\n\n        //do not fetch mysites from ttapi/LS when in testing mode\n        if (Ember.testing) {\n            return Em.A([]);\n        }\n        promise = this.getMySites();\n        return promise.then((all_sites) => {\n            var i,\n                len,\n                not_own_sites,\n                own_sites,\n                par,\n                partnerid,\n                projects_from_api,\n                site,\n                updated_own_projects;\n            partnerid = this.get('session.currentUser.partnerid');\n            //get only sites from localstorage where partnerid is same as currentuser partnerid\n            own_sites = Em.A([]);\n            not_own_sites = Em.A([]);\n            for (i = 0, len = all_sites.length; i < len; i++) {\n                site = all_sites[i];\n                if (site.partnerid === partnerid) {\n                    own_sites.push(site);\n                } else {\n                    not_own_sites.push(site);\n                }\n            }\n            // filter broken sites\n            own_sites = own_sites.filter(function (item) {\n                return Ember.get(item, 'id');\n            });\n            //update own sites and return them and other ones\n            if (own_sites.length > 0) {\n                //get own projects\n                par = {};\n                par.id = own_sites.mapBy('id').join(',');\n                if (this.get('Collector').testNeeds(['project.maincontractor'])) {\n                    par.sideload = 'maincontractor.name';\n                }\n                updated_own_projects = Em.A([]);\n                projects_from_api = this.store.query('project', par);\n                return projects_from_api.then(function (projs) {\n                    var sites;\n                    //get each project from api\n                    projs.forEach(function (proj) {\n                        var proj_obj;\n                        proj_obj = self.get('mySites').getMySiteObject(proj);\n                        // ugly hack to get correct used timestamp from original mysite row\n                        if (own_sites.findBy('id', proj.get('id'))) {\n                            Ember.set(\n                                proj_obj,\n                                'used',\n                                moment(\n                                    Ember.get(own_sites.findBy('id', proj.get('id')), 'used'),\n                                ).format('YYYY-MM-DD HH:mm:ss'),\n                            );\n                        }\n                        return updated_own_projects.pushObject(proj_obj);\n                    });\n                    //combine updated own projects and other mysites from localstorage\n                    sites = Em.A([]);\n                    sites.pushObjects(not_own_sites);\n                    sites.pushObjects(updated_own_projects);\n                    return sites;\n                });\n            } else {\n                return all_sites;\n            }\n        });\n    },\n    getMySites: function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var ret, sites;\n            ret = Em.A(this.get('localStorageWrapper').getItemWithBackend('mySites'));\n            if (!sites) {\n                //sites = ret.local # do not fetch localstorage saved projects\n                sites = [];\n            }\n            return ret.backend.then(\n                (more_sites) => {\n                    var found, i, len, site;\n                    for (i = 0, len = more_sites.length; i < len; i++) {\n                        site = more_sites[i];\n                        if (!site) {\n                            continue;\n                        }\n                        found = sites.find(function (item) {\n                            return item.id === site.id;\n                        });\n                        if (!found) {\n                            site.partnerid = parseInt(site.partnerid, 10);\n                            sites.push(site);\n                        }\n                    }\n                    return resolve(sites);\n                },\n                (e) => {\n                    return resolve([]);\n                },\n            );\n        });\n    },\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.addOwnedProjectsToMySites();\n    },\n});\n\n/*\nself = @\nparams.id = @get('mySitesProjects').mapBy('id').join ','\nparams.sideload = true\n\nif params.id == \"\"\n    return Em.A []\n\nunsorted_mySitesProjects = @.store.query('project', params)\n\nsortedMySitesProjects = Em.A []\n\nprojectIds = @get('mySitesProjects')\n\nunsorted_mySitesProjects.then (projects) =>\n    projectIds.forEach (localStoredId) =>\n        projects.forEach (project) ->\n            projectId = project.get('id')\n            if (localStoredId == projectId)\n                sortedMySitesProjects.pushObject(project)\n\n    @setNumberOfWorkersAtProjects(sortedMySitesProjects)\n\nreturn sortedMySitesProjects\n*/\nexport default MySitesRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/my-sites/select-project/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MySitesSelectProjectComponent;\n\nimport Ember from 'ember';\n\nimport databaseField from '../../collector/fields/database-field/component';\n\nMySitesSelectProjectComponent = databaseField.extend({\n    layoutName: 'collector/fields/database-field',\n\n    //   override database-field\n\n    normalDropdownOptions: Em.computed('options', 'defaultValueForNormalDropdown', function () {\n        return this.get('options').map((option) => {\n            Ember.set(option, 'name', option.text);\n            return option;\n        });\n    }),\n    //use_normal_dropdown_limit: 4\n    queryBackend: function (form) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise;\n            promise = this.get('Collector').ttapi({\n                url: 'tunnel/findAll/' + this.get('form'),\n                data: {\n                    field: this.get('object'),\n                    limit: this.get('ajax_search_limit'),\n                    q: this.get('query'),\n                    username: this.get('username'),\n                },\n            });\n            return promise.then((data) => {\n                this.set('queryRowCount', data.count);\n                return resolve(\n                    Em.A(data[form + 's']).map(function (item) {\n                        return Em.Object.create(item);\n                    }),\n                );\n            }, reject);\n        });\n    },\n    getText: function (record) {\n        return record.text;\n    },\n    pushToStore: function () {},\n    addToLastused: function () {},\n    getOptionsFromLocalStorage: function () {\n        return Em.A([]);\n    },\n    fetchRecordById: function (id) {\n        return new Em.RSVP.Promise(function (resolve) {\n            return resolve(id);\n        });\n    },\n    reload: Em.observer('username', function () {\n        return this.initilizeDropdown();\n    }),\n});\n\nexport default MySitesSelectProjectComponent;\n","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed, get, set } from '@ember/object';\n\nexport default Component.extend({\n    session: service(),\n    store: service(),\n    analytics: service(),\n    Collector: service('collector-service'),\n\n    totalPlaceholderImgs: 5,\n    editing: false,\n\n    showEditLink: computed(function () {\n        return get(this, 'Collector').testNeeds(['project@add']);\n    }),\n\n    // if site is from current service and maincontactorname can be found return it\n    // otherwise return companyname of the owner service\n    companyName: computed(function () {\n        if (\n            get(this, 'Collector').testNeeds(['project.maincontractor']) &&\n            get(this, 'mySite.partnerid') == get(this, 'session.currentUser.services.partnerid')\n        ) {\n            const project = get(this, 'store').peekRecord('project', get(this, 'mySite.id'));\n            if (project) {\n                const maincontractor = get(project, 'maincontractor.name');\n                if (maincontractor) return maincontractor;\n            }\n        }\n\n        return get(this, 'mySite.company');\n    }),\n\n    actions: {\n        projectClicked(mySite) {\n            this.analytics.customData = { category: 'my-sites' };\n            this.projectClicked(mySite);\n        },\n\n        updateImage() {\n            this.imageUpdated(get(this, 'mySite.id'));\n            set(this, 'editing', false);\n        },\n\n        removeSiteFromMySites(mySite) {\n            this.removeSiteFromMySites(mySite);\n        },\n\n        openOverview(mySite) {\n            this.openOverview(mySite);\n        },\n\n        openFilesview(mySite) {\n            this.openFilesview(mySite);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"gS8uFFc8\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-4\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-card\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"editing\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 mysites-close\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link mysites-btn-close\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editing\\\"]]],null],false]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cancel\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"h1\\\",true],[10,\\\"class\\\",\\\"my-sites-header\\\"],[8],[1,[24,[\\\"mySite\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"projectClicked\\\",[24,[\\\"mySite\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"mySite\\\",\\\"image\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"editing\\\"]],\\\"image-open\\\",\\\"image\\\"],null]],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[28,\\\"api-image\\\",[[24,[\\\"mySite\\\",\\\"image\\\"]]],null],\\\"')\\\"]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"editing\\\"]],\\\"image-open\\\",\\\"image\\\"],null]],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[28,\\\"random-mysite-image\\\",[[24,[\\\"mySite\\\",\\\"id\\\"]],[24,[\\\"totalPlaceholderImgs\\\"]]],null],\\\"')\\\"]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"unless\\\",[[24,[\\\"editing\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-panel-text\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showEditLink\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h1\\\",true],[8],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"my-sites-project-name\\\",\\\"projects.edit\\\",[24,[\\\"mySite\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[0,\\\" \\\"],[1,[24,[\\\"mySite\\\",\\\"name\\\"]],false],[0,\\\" \\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h1\\\",true],[8],[1,[24,[\\\"mySite\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[7,\\\"p\\\",true],[8],[1,[24,[\\\"mySite\\\",\\\"number\\\"]],false],[0,\\\" - \\\"],[4,\\\"if\\\",[[24,[\\\"companyName\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[22,\\\"companyName\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                         \\\\n                    \\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"mySite\\\",\\\"partnerid\\\"]],[24,[\\\"session\\\",\\\"currentUser\\\",\\\"services\\\",\\\"partnerid\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"editing\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row mysites-float\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"project@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"my-sites/add-image-component\\\",null,[[\\\"project\\\",\\\"updateImage\\\"],[[24,[\\\"mySite\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateImage\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-action mysites-btn-delete\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeSiteFromMySites\\\",[24,[\\\"mySite\\\"]]]],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default pull-left\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openOverview\\\",[24,[\\\"mySite\\\"]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Search\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"submenu.project.overview\\\"],null]],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"projectfile\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default pull-left\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openFilesview\\\",[24,[\\\"mySite\\\"]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-file\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"my-sites.projectfiles\\\"],null]],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default pull-right mysites-float\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editing\\\"]]],null],true]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"general.edit\\\"],null]],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/my-sites/site-card/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"NaOOvJxf\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\",\\\"mySite\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"filteredSites\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"item\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-header-buttons\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"item\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddSiteButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openAddSiteModalOn\\\"]],[8],[1,[28,\\\"t\\\",[\\\"my-sites.add_site\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"change\\\"],[[24,[\\\"selectProject\\\"]],\\\"addMySite\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeAll\\\"]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Delete\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary my-sites-gps-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"fetchNearest\\\"]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project_fetching\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Globe\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"my-sites.fetch_nearest\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showGpsButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openGpsMap\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Globe\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showGpsMap\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"gps-location-map\\\",null,[[\\\"zoomLevel\\\",\\\"projectmarkers\\\"],[5,[24,[\\\"mapMarkers\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"filteredSites\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"my-sites/site-card\\\",null,[[\\\"mySite\\\",\\\"projectClicked\\\",\\\"removeSiteFromMySites\\\",\\\"openOverview\\\",\\\"openFilesview\\\",\\\"imageUpdated\\\"],[[23,2,[]],[28,\\\"action\\\",[[23,0,[]],\\\"projectClicked\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeSiteFromMySites\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openOverview\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openFilesview\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"imageUpdated\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"filteredSites\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"my-sites.add_new_my_site\\\"],null],false],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-5 col my-sites-welcome\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"my-sites.add_new_my_site_description\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddSiteButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openAddSiteModalOn\\\"]],[8],[1,[28,\\\"t\\\",[\\\"my-sites.add_site\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"change\\\"],[[24,[\\\"selectProject\\\"]],\\\"addMySite\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-5 col my-sites-welcome\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"my-sites.add_new_my_site_gps_description\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary my-sites-gps-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"fetchNearest\\\"]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project_fetching\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Globe\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"my-sites.fetch_nearest\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHidden\\\"],[[23,0,[\\\"showAddSiteModal\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showAddSiteModal\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"modal-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"my-sites.add_site\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"my-sites.add_site_help\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"my-sites.select_contractor\\\"],null],false],[9],[0,\\\"\\\\n\\\\n            \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\"],[\\\"form-control add-fields\\\",[24,[\\\"serviceList\\\"]],[24,[\\\"currentService\\\"]]]]],false],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"my-sites.select_project\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"my-sites/select-project\\\",null,[[\\\"username\\\",\\\"field\\\",\\\"_class\\\",\\\"bubbleChange\\\"],[[24,[\\\"currentService\\\"]],[24,[\\\"selectProjectField\\\"]],\\\"form-control add-fields\\\",\\\"projectSelected\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddSiteNowButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addSiteNow\\\",[24,[\\\"currentService\\\"]],[24,[\\\"currentlySelectedProjectForAddingMysite\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"my-sites.addSite\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"projectinfo\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-container\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"project-info\\\",null,[[\\\"project\\\"],[[24,[\\\"projectinfo\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-overlay\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"projectfiles\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"my-sites.projectfiles\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeFilesModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"project-files\\\",null,[[\\\"project\\\"],[[24,[\\\"projectfiles\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/my-sites/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default class NovaCostcentersRoute extends Route {}\n","export default Ember.HTMLBars.template({\"id\":\"7exrkSDP\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\"],\\\"statements\\\":[[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showFilters\\\"],[\\\"novacostcenter\\\",\\\"q\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"history\\\"]]],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/nova-costcenters/template.hbs\"}});","import Controller, { inject as controller } from '@ember/controller';\nimport { computed, get, set } from '@ember/object';\nconst { alias } = computed;\n\nexport default Controller.extend({\n    addController: controller('orientations/add'),\n    init() {\n        this._super(...arguments);\n    },\n    worksite: alias('addController.record.ori_site'),\n    users: alias('addController.users'),\n    content: alias('model'),\n\n    actions: {\n        async save() {\n            if (!this.lockgroupid) {\n                this.transitionToRoute('orientations.add.signatures');\n                return;\n            }\n            let lock = await get(this, 'store').findRecord('lockgroup', this.lockgroupid);\n\n            //set(this,'saving', true);\n            let passesToBeSaved = [];\n\n            for (var item of this.selectedUsers) {\n                var record = get(this, 'store').createRecord('lockpermission', {\n                    user: item,\n                    lockgroupid: lock,\n                    pass_start: this.pass_start,\n                    pass_end: this.pass_end,\n                });\n                passesToBeSaved.pushObject(record);\n                //await record.save();\n            }\n            set(this, 'addController.passesToBeSaved', passesToBeSaved);\n            if (get(this, 'addController.record')) {\n                get(this, 'addController.record').rollbackAttributes(); // do not leave any orphan records\n            }\n            this.transitionToRoute('orientations.add.signatures');\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"JIxPvw56\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"orientations/add-passes\\\",null,[[\\\"selectedProject\\\",\\\"preSelectedUsers\\\",\\\"selectedUsers\\\",\\\"lockgroupid\\\",\\\"pass_start\\\",\\\"pass_end\\\"],[[24,[\\\"worksite\\\"]],[24,[\\\"users\\\"]],[28,\\\"mut\\\",[[24,[\\\"selectedUsers\\\"]]],null],[28,\\\"mut\\\",[[24,[\\\"lockgroupid\\\"]]],null],[28,\\\"mut\\\",[[24,[\\\"pass_start\\\"]]],null],[28,\\\"mut\\\",[[24,[\\\"pass_end\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add.confirm\\\"]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-left\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"previous\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"],[[\\\"on\\\"],[\\\"click\\\"]]],[8],[1,[28,\\\"t\\\",[\\\"orientations.confirm_and_sign\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/add/add-passes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/checkboxes/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar checkboxesController;\n\nimport Ember from 'ember';\n\ncheckboxesController = Ember.Controller.extend({\n    //    needs: 'orientations/add'\n    addController: Ember.inject.controller('orientations/add'),\n    json: function () {\n        var key, model, self, temp;\n        model = this.get('addController.model.record');\n        if (!model) {\n            return;\n        }\n        temp = Ember.A([]);\n        self = this;\n        this.get('checkboxes').forEach(function (item) {\n            if (item.checked) {\n                return temp.pushObject(item.key);\n            }\n        });\n        key = this.get('model.checkboxes.key');\n        return model.set(key, temp);\n    }.observes('checkboxes.@each.checked'),\n    checkboxes: Ember.computed.alias('model.checkboxes.options'),\n    title: Ember.computed.alias('model.checkboxes.title'),\n    group: Ember.computed.alias('model.group'),\n    firstGroup: Ember.computed.equal('group', 0),\n    lastGroup: Ember.computed('group', function () {\n        return this.get('group') === this.get('model.count') - 1;\n    }),\n    previousGroup: Ember.computed('group', function () {\n        return this.get('group') - 1;\n    }),\n    nextGroup: Ember.computed('group', function () {\n        return this.get('group') + 1;\n    }),\n    mandatory: Ember.computed('model', function () {\n        return this.get('addController.mandatoryArr')[this.get('model.checkboxes.key')];\n    }),\n    valid: Ember.computed('mandatory', 'checkboxes.@each.checked', function () {\n        var checkboxes;\n        if (this.get('mandatory')) {\n            checkboxes = this.get('checkboxes');\n            return checkboxes.get('length') === checkboxes.filterBy('checked').get('length');\n        }\n        return true;\n    }),\n    actions: {\n        toggleCheckbox: function (box) {\n            box.toggleProperty('checked');\n            return false;\n        },\n    },\n});\n\nexport default checkboxesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/checkboxes/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsAddCheckboxesRoute;\n\nimport Ember from 'ember';\n\nimport OrientationsSubRoute from '../sub/route';\n\nOrientationsAddCheckboxesRoute = OrientationsSubRoute.extend({\n    model: function (params) {\n        var group_key, groups;\n        groups = this.modelFor('orientations.add').get('checkbox_groups');\n        group_key = params.group;\n        if (group_key === 'last') {\n            group_key = groups.length - 1;\n        }\n        return Ember.Object.create({\n            checkboxes: groups[group_key],\n            group: parseInt(group_key, 10),\n            count: groups.length,\n        });\n    },\n});\n\nexport default OrientationsAddCheckboxesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"5OApBKSZ\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\",\\\"index\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"padding-left\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CheckedCheckbox\\\"],[8],[9],[0,\\\" \\\"],[1,[22,\\\"title\\\"],false],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\" \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"checkboxes\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-4 col-sm-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3 col-md-3 col-lg-2\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"classNames\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"form-control top-buffer\\\",[23,1,[\\\"checked\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"col-xs-9 col-md-9 col-lg-10\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleCheckbox\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[23,1,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"compare-helper\\\",[3,[23,2,[]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix visible-md-block\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"compare-helper\\\",[2,[23,2,[]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix visible-sm-block\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-info-sign\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.checkboxes.mandatory\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"firstGroup\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.orientations_parent\\\"],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add.parent\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-left\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"previous\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-left\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"previous\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add.checkboxes\\\",[24,[\\\"previousGroup\\\"]]]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-left\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"previous\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"valid\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"lastGroup\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add.confirm\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"next\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add.checkboxes\\\",[24,[\\\"nextGroup\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"next\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/add/checkboxes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/confirm/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar confirmController;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\nimport config from 'tt4/config/environment';\n\nconfirmController = Ember.Controller.extend({\n    //    needs: [\"orientations/add\"]\n    addController: Ember.inject.controller('orientations/add'),\n    indexController: Ember.inject.controller('orientations/add/index'),\n    record: Ember.computed.alias('addController.record'),\n    Collector: Ember.inject.service('collector-service'),\n    VastuuGroup: Em.inject.service('vastuu-group'),\n    intl: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    saving: false,\n    passBlockLoading: false,\n    validPassBlocks: Ember.A(), // helper array to store the pass blocks by users\n    passDatesAlreadySet: false, // helper variable to check if the pass dates have been set\n    fileField: Ember.computed('record.ori_site.file', function () {\n        var field;\n        field = this.get('Collector').field('project', 'file');\n        field.value = this.get('record.ori_site.file');\n        this.set('record.file', this.get('record.ori_site.file'));\n        return field;\n    }),\n\n    placeHolder: Ember.computed('validPassBlocks.[]', function () {\n        if (this.get('validPassBlocks').length === 1) {\n            return this.get('intl').t('select.all');\n        }\n        return this.get('intl').t('orientations.validation.select_rest');\n    }),\n\n    // computed property to get the users that are not selected to any pass block\n    unselectedUsers: Ember.computed('addController.users', function () {\n        const users = this.get('addController.userRecords');\n        let userArray = [];\n        for (let user of users) {\n            userArray.push({\n                id: user.get('id'),\n                name: user.get('firstname') + ' ' + user.get('lastname'),\n            });\n        }\n        let selectedUsers = [];\n        // now we have the users, let's add the selected users to the selectedUsers array\n        for (let block of this.get('validPassBlocks')) {\n            for (let user of block.users) {\n                selectedUsers.push(user.id);\n            }\n        }\n        // now we have the selected users, let's remove them from the userArray\n        userArray = userArray.filter((user) => {\n            return !selectedUsers.includes(user.id);\n        });\n        return userArray;\n    }),\n    // if false, do not show the button to add more blocks\n    areThereUnselectedUsers: Ember.computed('unselectedUsers', 'validPassBlocks.[]', function () {\n        // if no user-blocks are added, we need to use special validation here that skips zero users check\n        // because zero user-blocks is valid in the case where we are not adding passes to any users\n        // and the result of areUserPassesValid has to be inverted so that this function returns true if there are unselected users\n        // normally areUserPassesValid would return false if there are unselected users\n        const ret = !this.areUserPassesValid(true);\n        // if all users passes are not valid, we have still unselected users\n        return ret;\n    }),\n\n    extras: Ember.computed(function () {\n        var extras, extras_tmp;\n        extras_tmp = collector.forms.orientation.objects;\n        extras = [];\n        $.each(extras_tmp, function (index, obj) {\n            if (obj.type !== 'checkboxgroup') {\n                if (index.indexOf('addon_') >= 0) {\n                    obj.ext = index;\n                    return extras.push(obj);\n                }\n            }\n        });\n        return extras;\n    }),\n    passStart: moment().format('YYYY-MM-DD'),\n    unvalid: Em.A([]),\n    setPassDates: function () {\n        if (this.Collector.testNeeds(['project.proj_end'])) {\n            if (this.get('record.ori_site.proj_end')) {\n                return this.setPassDatesTo(null, this.get('record.ori_site.proj_end'));\n            } else {\n                return this.setPassDatesTo();\n            }\n        } else {\n            return this.setPassDatesTo();\n        }\n    },\n    setPassDatesTo: function (start, end) {\n        if (start) {\n            this.set('record.pass_start', moment(start).format('YYYY-MM-DD'));\n        } else {\n            this.set('record.pass_start', moment().format('YYYY-MM-DD'));\n        }\n        if (end) {\n            return this.set('record.pass_end', moment(end).format('YYYY-MM-DD'));\n        } else {\n            return this.set('record.pass_end', moment().add(1, 'months').format('YYYY-MM-DD'));\n        }\n    },\n    clearPassDates: function () {\n        if (this.get('showPassDates')) {\n            this.set('record.pass_start', null);\n            this.set('record.pass_end', null);\n            return this.set('showPassDates', false);\n        }\n    },\n    checkTVEmployerStatus: async function (users) {\n        if (!this.get('Collector').testNeeds(['!products.vg_reliable_partner_disabled'])) {\n            return null;\n        }\n        try {\n\n            // Extract necessary fields for the batch endpoint\n            const employers = users.map(user => ({\n                id: user.get('employer.id'),\n                emp_id: user.get('employer.emp_id'),\n                name: user.get('employer.name'),\n                tv_status: user.get('employer.tv_status')\n            })).filter(emp => emp.id && emp.emp_id);\n\n            if (employers.length === 0) {\n                return null;\n            }\n\n            // Call the batch update method\n            const response = await this.VastuuGroup.updateReliablePartnerStatusesAndReports(employers);\n\n            return response;\n\n        } catch (error) {\n            console.error('Error checking TV employer status:', error);\n            throw error;\n        }\n    },\n    actions: {\n        removePassBlock: function (block_id) {\n            // find correct block by id and filter it out\n            this.set(\n                'validPassBlocks',\n                this.get('validPassBlocks').filter((block) => block.id !== block_id),\n            );\n            // notify unselectedUsers to update the selected users\n            this.notifyPropertyChange('unselectedUsers');\n        },\n        startDateChanged: function (id) {\n            let block = this.get('validPassBlocks').find((block) => block.id === id);\n            if (!block) {\n                return;\n            }\n            if (!moment(block.pass_start).isValid()) {\n               this.set(`validPassBlocks.${id}.startDateError`, true);\n            } else {\n                this.set(`validPassBlocks.${id}.startDateError`, false);\n            }\n        },\n        endDateChanged: function (id) {\n            let block = this.get('validPassBlocks').find((block) => block.id === id);\n            if (!block) {\n                return;\n            }\n            if (!moment(block.pass_end).isValid()) {\n               this.set(`validPassBlocks.${id}.endDateError`, true);\n            } else {\n                this.set(`validPassBlocks.${id}.endDateError`, false);\n            }\n        },\n        addNewPassPanel: async function () {\n            this.set('passBlockLoading', true);\n            if (!this.passDatesAlreadySet) {\n                await this.getPassDatesFromProject();\n            } else {\n                this.set('passDatesAlreadySet', true);\n            }\n            this.get('validPassBlocks').pushObject({\n                id: this.get('validPassBlocks').length,\n                pass_start: this.get('record.pass_start'),\n                pass_end: this.get('record.pass_end'),\n                extra_info: null,\n                users: [],\n            });\n            // if there are only one user unselected, add it to a new pass block\n            if (this.get('unselectedUsers').length === 1) {\n                this.send('addUserToPassBlock', this.get('validPassBlocks').length - 1, [\n                    this.get('unselectedUsers')[0],\n                ]);\n            }\n            this.set('passBlockLoading', false);\n        },\n        addUserToPassBlock: function (block_id, users) {\n            this.set(`validPassBlocks.${block_id}.users`, users);\n            // notify unselectedUsers to update the selected users\n            this.notifyPropertyChange('unselectedUsers');\n        },\n        async save(row) {\n            this.set('saving', true);\n            var dummy, k, mandatory, records, self, store, users, v, valid;\n            self = this;\n            mandatory = this.get('addController.mandatoryArr');\n            valid = true;\n            this.set('unvalid', Em.A([]));\n\n            for (k in mandatory) {\n                v = mandatory[k];\n                if (\n                    !row.get(k) &&\n                    k !== 'ori_user' &&\n                    k !== 'ori_site' &&\n                    k !== 'ori_date' &&\n                    k !== 'ori_place' &&\n                    k !== 'sign_emp_img' &&\n                    k !== 'sign_per_img'\n                ) {\n                    self.get('unvalid').pushObject(\n                        self.get('intl').t('orientations.validation.' + k),\n                    );\n                    valid = false;\n                }\n            }\n            // go through all the pass blocks and check that the pass start and end dates are valid\n            for (let block of this.get('validPassBlocks')) {\n                if (moment(block.pass_start).isAfter(block.pass_end)) {\n                    self.get('unvalid').pushObject(\n                        self.get('intl').t('orientations.validation.pass_start_before_end'),\n                    );\n                    valid = false;\n                }\n            }\n\n            if (valid) {\n                this.set('addController.disableLinks', true);\n                users = this.get('addController.users');\n                store = this.get('store');\n                dummy = row.serialize();\n                dummy.ori_site = store.peekRecord('project', dummy.ori_site);\n                records = Em.A([]);\n\n                for (let id of users) {\n                    try {\n                        let oriuser = await self\n                            .get('Collector')\n                            .findFormRelations('orientation', 'ori_user', {\n                                id: id,\n                            });\n\n                        var record, ref, user;\n                        user = oriuser[0];\n                        dummy.ori_user = user;\n                        if (self.get('Collector').fieldExists('orientation', 'parent')) {\n                            dummy.parent = self.get('addController.selected_parents')[id];\n                        }\n                        record = store.createRecord('orientation', dummy);\n\n                        // get the pass dates for the user\n                        let passData = self.getPassDataForUser(user);\n                        if (passData) {\n                            record.set('pass_start', passData.pass_start);\n                            record.set('pass_end', passData.pass_end);\n                            record.set('extra_info', passData.extra_info);\n                        }\n                        records.pushObject(record);\n                    } catch (error) {\n                        console.error('Error occurred while processing user:', error);\n                    }\n                }\n            }\n            // if there are no unselected users, go to the next step\n            if (valid && this.areUserPassesValid()) {\n                if (this.get('Collector').testNeedsOne('employer')) {\n                    try {\n                        let queriedUsers = await store.query('user', {\n                            id: users.join(','),\n                            sideload: true,\n                        });\n\n                        var usersWithUniqueEmployers;\n                        usersWithUniqueEmployers = queriedUsers.uniqBy('employer.emp_id');\n\n                        try {\n                            await this.checkTVEmployerStatus(usersWithUniqueEmployers);\n                        } catch (error) {\n                            console.error('Error fetching or checking employer:', error);\n                        }\n                    } catch (error) {\n                        console.error('Error occurred while querying users:', error);\n                    }\n                }\n                self.set('addController.orientations', records);\n                self.clearPassDates();\n\n                if (\n                    (ref = self.get('addController.projectHasLocks')) != null ? ref._result : void 0\n                ) {\n                    self.transitionToRoute('orientations.add.add-passes');\n                } else {\n                    self.transitionToRoute('orientations.add.signatures');\n                    row.rollbackAttributes();\n                }\n            } else if (!this.areUserPassesValid()) {\n                // add validation error to unvalid-array\n                self.get('unvalid').pushObject(\n                    self.get('intl').t('orientations.validation.unselected_users'),\n                );\n            }\n            this.set('saving', false);\n        },\n        setFile: function (file, field) {\n            return this.set('record.file', file);\n        },\n    },\n    getPassDatesFromProject: async function () {\n        // Mark the function as async\n        var oriProjId;\n        if (Modernizr.inputtypes.date) {\n            oriProjId = this.get('indexController.record.ori_site.id');\n\n            if (this.Collector.testNeeds(['employer', 'urakkaraportointi'])) {\n                try {\n                    const user = await this.store.findRecord(\n                        'user',\n                        this.get('addController.users.firstObject'),\n                        { reload: true },\n                    );\n                    const contracts = await this.store.query('urakkaraportointi', {\n                        contract_employer: user.get('employer.id'),\n                    });\n\n                    const contractEndDateFound = contracts\n                        .sortBy('contract_month')\n                        .reverseObjects()\n                        .any((contract) => {\n                            const contrProjId = contract.get('contract_project.id');\n                            if (contrProjId === oriProjId) {\n                                this.setPassDatesTo(null, contract.get('contract_end_date'));\n                            }\n                            return contrProjId === oriProjId;\n                        });\n\n                    if (!contractEndDateFound) {\n                        this.setPassDates();\n                    }\n                } catch (error) {\n                    console.error('Error occurred while fetching data:', error);\n                }\n            } else {\n                this.setPassDates();\n            }\n        } else {\n            return false;\n        }\n    },\n    // helper function to get the pass dates for the user from the validPassBlocks array\n    getPassDataForUser(user) {\n        for (let block of this.get('validPassBlocks')) {\n            if (block.users.some((u) => u.id === user.id)) {\n                return {\n                    pass_start: block.pass_start,\n                    pass_end: block.pass_end,\n                    extra_info: block.extra_info,\n                };\n            }\n        }\n        // user was not found from the validPassBlocks array so we take the first block that doesn't have any users and return its pass dates\n        for (let block of this.get('validPassBlocks')) {\n            if (block.users.length === 0) {\n                return {\n                    pass_start: block.pass_start,\n                    pass_end: block.pass_end,\n                    extra_info: block.extra_info,\n                };\n            }\n        }\n    },\n\n    // Passes are valid if:\n    // 1. No blocks has been added (no need to add passes to any users, special validation)\n    // 2. If there is only one block without users\n    // 3. if there are no blocks without users, number of users combined in the blocks is the same as the number of users in the addController.users array\n    areUserPassesValid: function (skipZeroCheck = false) {\n        if (!skipZeroCheck && this.get('validPassBlocks').length === 0) {\n            return true;\n        }\n        let blocksWithoutUsers = this.get('validPassBlocks').filter(\n            (block) => block.users.length === 0,\n        );\n        if (blocksWithoutUsers.length > 1) {\n            return false;\n        }\n        if (blocksWithoutUsers.length === 1) {\n            return true;\n        }\n        let userCount = this.get('validPassBlocks').reduce(\n            (acc, block) => acc + block.users.length,\n            0,\n        );\n        return userCount === this.get('addController.users').length;\n    },\n});\n\nexport default confirmController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/confirm/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar confirmRoute;\n\nimport Ember from 'ember';\n\nimport OrientationsSubRoute from '../sub/route';\n\nconfirmRoute = OrientationsSubRoute.extend({\n    model: function () {\n        var id;\n        if (\n            this.Collector.testNeeds(['project.proj_end']) ||\n            this.Collector.testNeeds(['orientation.file'])\n        ) {\n            id = this.controllerFor('orientations.add').get('projectRecord').get('id');\n            return this.store.findRecord('project', id, {\n                reload: true,\n            });\n        }\n    },\n    // make sure we reset the validPassBlocks array when we leave the route\n    resetController(controller, isExiting, transition) {\n        if (isExiting) {\n            controller.set('validPassBlocks', Ember.A()); // Reset the array\n        }\n    },\n});\n\nexport default confirmRoute;\n","export default Ember.HTMLBars.template({\"id\":\"wZHhfV5u\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\",\\\"extra\\\",\\\"block\\\",\\\"option\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 pr-5\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"special_warning\\\"],[8],[1,[28,\\\"t\\\",[\\\"orientations.special_warning\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[4,\\\"if\\\",[[24,[\\\"addController\\\",\\\"mandatoryArr\\\",\\\"special_warning\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"class\\\",\\\"name\\\",\\\"placeholderTranslation\\\",\\\"value\\\"],[\\\"3\\\",\\\"form-control input-lg\\\",[24,[\\\"special_warning\\\"]],\\\"orientations.special_warning\\\",[24,[\\\"record\\\",\\\"special_warning\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"orientation.file\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"orientations.file\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"                        \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"file\\\",\\\"orientation\\\",[28,\\\"get\\\",[[24,[\\\"record\\\",\\\"ori_site\\\"]],\\\"file\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector/fields/fileupload-field-ver3\\\",null,[[\\\"field\\\",\\\"hidden\\\",\\\"bubbleChange\\\",\\\"model\\\"],[[24,[\\\"fileField\\\"]],true,\\\"setFile\\\",[24,[\\\"record\\\",\\\"ori_site\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"validPassBlocks\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-primary link\\\"],[10,\\\"data-anchor\\\",\\\"pass-block\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"orientations.pass_dates\\\"],null],false],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"action\\\",[[23,0,[]],\\\"removePassBlock\\\",[23,3,[\\\"id\\\"]]],null]]],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@anchorName\\\"],[[28,\\\"t\\\",[\\\"orientations.users\\\"],null],\\\"orientations-users\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n                            \\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@class\\\",\\\"@searchEnabled\\\",\\\"@options\\\",\\\"@selected\\\",\\\"@onChange\\\",\\\"@placeholder\\\"],[\\\"form-control add-fields\\\",true,[23,0,[\\\"unselectedUsers\\\"]],[23,3,[\\\"users\\\"]],[28,\\\"fn\\\",[[28,\\\"action\\\",[[23,0,[]],\\\"addUserToPassBlock\\\",[23,3,[\\\"id\\\"]]],null]],null],[23,0,[\\\"placeHolder\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[1,[23,4,[\\\"name\\\"]],false],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column pt-4\\\"],[10,\\\"data-anchor\\\",\\\"pass-dates-block\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 pr-4\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"pass_start\\\"],[11,\\\"style\\\",[28,\\\"if\\\",[[23,3,[\\\"startDateError\\\"]],\\\"color: red;\\\",\\\"\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"orientations.pass_start\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[4,\\\"if\\\",[[24,[\\\"addController\\\",\\\"mandatoryArr\\\",\\\"pass_start\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"name\\\",\\\"startDate\\\",\\\"change\\\"],[\\\"form-control input-lg\\\",[23,3,[\\\"pass_start\\\"]],\\\"pass_start\\\",[24,[\\\"passStart\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"startDateChanged\\\",[23,3,[\\\"id\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"startDateError\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger mt-4\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"t\\\",[\\\"validation.error.date_correct\\\"],null],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 pl-4\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"pass_end\\\"],[11,\\\"style\\\",[28,\\\"if\\\",[[23,3,[\\\"endDateError\\\"]],\\\"color: red;\\\",\\\"\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"orientations.pass_end\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[4,\\\"if\\\",[[24,[\\\"addController\\\",\\\"mandatoryArr\\\",\\\"pass_end\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"startDate\\\",\\\"change\\\"],[\\\"form-control input-lg\\\",\\\"pass_end\\\",[23,3,[\\\"pass_end\\\"]],[24,[\\\"passStart\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"endDateChanged\\\",[23,3,[\\\"id\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"endDateError\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger mt-4\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"t\\\",[\\\"validation.error.date_correct\\\"],null],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pt-6\\\"],[10,\\\"data-anchor\\\",\\\"extra-info-block\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"extra_info\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.orientation.extra_info\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[4,\\\"if\\\",[[24,[\\\"addController\\\",\\\"mandatoryArr\\\",\\\"extra_info\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\"],[\\\"3\\\",\\\"form-control input-lg\\\",\\\"extra_info\\\",[23,3,[\\\"extra_info\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[3]},null],[4,\\\"if\\\",[[23,0,[\\\"areThereUnselectedUsers\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\",\\\"@form\\\"],[[23,0,[\\\"passBlockLoading\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addNewPassPanel\\\"],null],\\\"btn btn-primary\\\",\\\"orientation\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"orientations.add-pass-block-button\\\"],null],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"extras\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector-field\\\",null,[[\\\"field\\\",\\\"model\\\"],[[23,2,[]],[23,0,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"unvalid\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.validation\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"padding-left\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"unvalid\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[1,[23,1,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add.checkboxes\\\",\\\"last\\\"]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-left\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"previous\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[10,\\\"data-anchor\\\",\\\"add-pass-next-button-container\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\"],[[23,0,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"addController\\\",\\\"record\\\"]]],null],\\\"btn btn-primary btn-block btn-lg\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"orientations.confirm_and_sign\\\"],null],false],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/add/confirm/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsAddController;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nOrientationsAddController = Ember.Controller.extend({\n    //    needs: 'orientations/add/signatures'\n    signaturesController: Em.inject.controller('orientations/add/signatures'),\n    record: Ember.computed.alias('model.record'),\n    checkbox_groups: Ember.computed.alias('model.checkbox_groups'),\n    evented: Em.inject.service(),\n    selected_parents: {},\n    router: Em.inject.service(),\n    users: Em.A([]),\n    date: Ember.computed(function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n    init: function () {\n        this._super();\n        return this.evented.on('onResumed', this, 'updateDate');\n    },\n    willDestroyElement: function () {\n        this._super();\n        return this.evented.off('onResumed', this, 'updateDate');\n    },\n    updateDate: function () {\n        return this.notifyPropertyChange('date');\n    },\n    place: null,\n    disableLinks: Em.computed('model.record.ori_site', 'users', {\n        get: function () {\n            if (this._value) {\n                return this._value;\n            }\n            if (this.get('model.record.ori_site') && this.get('users').length) {\n                return false;\n            } else {\n                return true;\n            }\n        },\n        set: function (key, value) {\n            return (this._value = value);\n        },\n    }),\n    projectObserver: async function () {\n        if (this.get('model.record.ori_site')) {\n            // Refetch the ori_site project to make sure\n            // all project properties are loaded\n            const project = (\n                await this.store.query('project', {\n                    id: this.get('model.record.ori_site.id'),\n                })\n            ).get('firstObject');\n\n            if (project) {\n                this.set('model.record.special_warning', project.get('special_warnings'));\n                return this.set('place', project.get('city'));\n            } else {\n                this.set('model.record.special_warning', null);\n                return this.set('place', null);\n            }\n        }\n    }.observes('model.record.ori_site'),\n    projects: Ember.computed(function () {\n        return this.store.findAll('project');\n    }),\n    projectHasLocks: Ember.computed('model.record.ori_site', {\n        get: function () {\n            var locksPromise;\n            if (!this.Collector.testNeedsOne('products.worksite_areas')) {\n                return false;\n            }\n            if (!this.get('model.record.ori_site')) {\n                return false;\n            }\n            locksPromise = this.store.query('lockgroup', {\n                project: this.get('model.record.ori_site.id'),\n            });\n            return locksPromise.then(this.hasLocks.bind(this));\n        },\n        set: function (key, value) {\n            return value;\n        },\n    }),\n    hasLocks: function (locks) {\n        return locks.length > 0;\n    },\n    mandatoryArr: [],\n    mandatory: function () {\n        var arr, form, k, v;\n        form = collector.forms.orientation.objects;\n        arr = {};\n        for (k in form) {\n            v = form[k];\n            if (v.features.mandatory) {\n                arr[k] = true;\n            }\n        }\n        return this.set('mandatoryArr', arr);\n    }.observes('model'),\n});\n\nexport default OrientationsAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsAddIndexController;\n\nimport Ember from 'ember';\n\nOrientationsAddIndexController = Ember.Controller.extend({\n    //    needs: 'orientations/add'\n    addController: Ember.inject.controller('orientations/add'),\n    record: Ember.computed.alias('addController.record'),\n    dialogs: Em.inject.service(),\n    intl: Em.inject.service(),\n    flags: Em.inject.service(),\n    initapp: Ember.inject.service(),\n    showButtonNext: Em.computed(\n        'record.ori_site',\n        'addController.users',\n        'addController.users.length',\n        'loading',\n        'addController.userRecords.length',\n        'addController.projectRecord',\n        function () {\n            if (\n                this.get('addController.userRecords') &&\n                this.get('addController.userRecords').length &&\n                this.get('addController.projectRecord') &&\n                this.get('addController.users').indexOf(null) < 0\n            ) {\n                return this.get('loading') === false;\n            } else {\n                return false;\n            }\n        },\n    ),\n    loading: false,\n    skip_users: Em.A([]),\n    /*\n  overlapArr: Em.A([])\n\n  overlap: (->\n      self = @\n      users = @get('addController.users')\n      if users && @get('record.ori_site')\n          @set(\"overlapArr\", Em.A([]))\n          users.forEach( (user)->\n              orientations = self.store.query('orientation', {\"ori_site\": self.get('record.ori_site.id'), \"ori_user\": user})\n              orientations.then( ->\n                  if orientations.get('length') > 0\n                      self.set('addController.disableLinks', true)\n                      user = self.store.findRecord('user', user)\n                      user.then(\n                          self.get('overlapArr').pushObject(user)\n                      )\n              )\n          )\n  ).observes('addController.users', 'addController.model.record.ori_site')\n\n  */\n    actions: {\n        projectChanged: function (project) {\n            return this.get('record').set('ori_site', project);\n        },\n        updateUsers: function (users) {\n            return this.set('addController.users', users.mapBy('id'));\n        },\n        activateCardRegister: function () {\n            var productname;\n            this.set('savingCardRegister', 'start');\n            productname = 'cardregister';\n            return this.get('Collector')\n                .addProduct(productname)\n                .then(() => {\n                    this.get('initapp').clearInit();\n                    this.set('savingCardRegister', 'done');\n                    return this.get('dialogs')\n                        .alert(this.get('intl').t('general.settings_refresh_needed'))\n                        .then(function () {\n                            return location.reload();\n                        });\n                });\n        },\n        usersChanged: function (users) {\n            return this.set('addController.users', users.mapBy('id'));\n        },\n        userSelected: function (id) {\n            var orientations;\n            if (!this.get('record.ori_site')) {\n                this.get('dialogs')\n                    .alert(this.get('intl').t('orientations.select_project_first'))\n                    .then(() => {\n                        return this.set('addController.users', Em.A([]));\n                    });\n                return;\n            }\n            this.set('loading', true);\n            orientations = this.store.query('orientation', {\n                ori_site: this.get('record.ori_site.id'),\n                ori_user: id,\n            });\n            return orientations.then((found) => {\n                this.set('loading', false);\n                if (found.get('length') > 0) {\n                    return this.get('dialogs')\n                        .alert(this.get('intl').t('orientations.already_orientated'))\n                        .then(() => {\n                            var filtered;\n                            filtered = this.get('addController.users').reject(function (item) {\n                                return item === id;\n                            });\n                            return this.set('addController.users', filtered);\n                        });\n                }\n            });\n        },\n        userAlreadyAdded: function (user) {\n            return this.get('dialogs').alert(this.get('intl').t('orientations.user_already_added'));\n        },\n        changeSelectedProject: function (record) {\n            var orientations, users_oriented, users_oriented_obj;\n            this.set('record.ori_site', record);\n            this.set('addController.users', Em.A([]));\n            //find users which have orientations to this project\n            orientations = this.store.query('orientation', {\n                ori_site: this.get('record.ori_site.id'),\n                sideload: true,\n            });\n            users_oriented = [];\n            users_oriented_obj = [];\n            return orientations.then((oris) => {\n                oris.forEach((ori) => {\n                    users_oriented.push(ori.get('ori_user.id'));\n                    return users_oriented_obj.push(ori.get('ori_user'));\n                });\n                this.set('skip_users_obj', users_oriented_obj);\n                return this.set('skip_users', users_oriented);\n            });\n        },\n    },\n});\n\nexport default OrientationsAddIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsAddIndexRoute;\n\nimport Ember from 'ember';\n\nOrientationsAddIndexRoute = Ember.Route.extend({\n    session: Em.inject.service(),\n    settings: Em.inject.service('customer-settings'),\n    intl: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    // when orientations are saved and user comes back to .add route create new orientation\n    beforeModel: function () {\n        var checkAll, checkAllBoxes, orientations, ref;\n        orientations = this.controllerFor('orientations/add');\n        if (!orientations.get('model')) {\n            return;\n        }\n        if (!orientations.get('model.record')) {\n            checkAll = this.get('settings.settings').filterBy('key', 'orientations_check_all');\n            checkAllBoxes = false;\n            if (checkAll.length > 0 && ((ref = checkAll[0].value) === 'on' || ref === 'true')) {\n                checkAllBoxes = true;\n            }\n            // reset controller\n            orientations.set('employer_signature', null);\n            orientations.set('users', Ember.A([]));\n            orientations.set('place', null);\n            orientations.set('selected_parents', {});\n            orientations.set('disableLinks', null);\n            orientations.get('model.checkbox_groups').forEach(function (item) {\n                return item.options.forEach(function (option) {\n                    return option.set('checked', checkAllBoxes ? true : false);\n                });\n            });\n            return orientations.set('model.record', this.store.createRecord('orientation'));\n        }\n    },\n    afterModel: function (model) {\n        var controller, orientations, users_oriented, users_oriented_obj;\n        // if project is preselected change it also to the record\n        if (this.controllerFor('orientations/add').projectRecord) {\n            model.set('record.ori_site', this.controllerFor('orientations/add').projectRecord);\n        }\n        if (this.get('session.currentUser.currentMySite')) {\n            controller = this.controllerFor('orientations/add/index');\n            //console.log @get \"session.currentUser.currentMySite\"\n            model.set('record.ori_site', this.get('session.currentUser.currentMySite'));\n            //find users which have orientations to this project\n            orientations = this.store.query('orientation', {\n                ori_site: this.get('session.currentUser.currentMySite.id'),\n                sideload: true,\n            });\n            users_oriented = [];\n            users_oriented_obj = [];\n            return orientations.then((oris) => {\n                oris.forEach((ori) => {\n                    users_oriented.push(ori.get('ori_user.id'));\n                    return users_oriented_obj.push(ori.get('ori_user'));\n                });\n                controller.set('skip_users_obj', users_oriented_obj);\n                return controller.set('skip_users', users_oriented);\n            });\n        }\n    },\n\n    actions: {\n        willTransition: function(transition) {\n            if (this._discardConfirmed) {\n                this._discardConfirmed = false;\n                return true;\n            }\n\n            var controller = this.controllerFor('orientations/add/index');\n            let userRecords = controller.get('addController.userRecords') || [];\n            let hasDirty = userRecords.some(r => r && r.hasDirtyAttributes);\n\n            if (hasDirty) {\n                transition.abort();\n                this.dialogs\n                    .confirm(this.intl.t('orientations.dialog.discard_unsaved.orientation_changes'))\n                    .then(confirmed => {\n                        if (confirmed) {\n                            this._discardConfirmed = true;\n                            transition.retry();\n                        }\n                    });\n                return false;\n            }\n            return true;\n        }\n    },\n\n});\n\n//controller.send 'changeSelectedProject', @get \"session.currentUser.currentMySite\"\nexport default OrientationsAddIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"sKawjWac\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"orientations/select-users\\\",null,[[\\\"activateCardRegister\\\",\\\"savingCardRegister\\\",\\\"updateUsers\\\",\\\"project\\\",\\\"projectChanged\\\",\\\"users\\\",\\\"usersChanged\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"activateCardRegister\\\"],null],[24,[\\\"savingCardRegister\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateUsers\\\"],null],[28,\\\"mut\\\",[[24,[\\\"addController\\\",\\\"projectRecord\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"projectChanged\\\"],null],[28,\\\"mut\\\",[[24,[\\\"addController\\\",\\\"userRecords\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"usersChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-xs-offset-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showButtonNext\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.orientations_parent\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add.parent\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"next\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add.checkboxes\\\",0]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"next\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/add/index/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get } from '@ember/object';\n\nexport default Component.extend({\n    actions: {\n        parentChanged(value) {\n            const userid = get(this, 'user');\n            if (!value) {\n                set(this, 'parents.' + userid, null);\n            } else {\n                set(this, 'parents.' + userid, value);\n            }\n            this.parentSelected(userid, value);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"Gnp0YkW/\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/field-comp\\\",[\\\"orientation.parent\\\"],[[\\\"_class\\\",\\\"change\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"parentChanged\\\",[24,[\\\"parent\\\"]]]]],false],[0,\\\"\\\\n    \\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/add/parent-selector/template.hbs\"}});","import Controller, { inject as controller } from '@ember/controller';\nimport { computed, get, set } from '@ember/object';\nconst { alias } = computed;\n\nexport default Controller.extend({\n    addController: controller('orientations/add'),\n    init() {\n        this._super(...arguments);\n        this.selectedParentsStates = [];\n    },\n    selected_parents: alias('addController.selected_parents'),\n    users: alias('addController.users'),\n    content: alias('model'),\n\n    showButtonNext: computed('selectedParentsStates.@each.parentSelected', function () {\n        //First time in page when nothing is selected...\n        if (get(this, 'selectedParentsStates').length == 0) {\n            return false;\n        }\n        const usersWithoutParent = get(this, 'selectedParentsStates').filter((item) => {\n            return !item.parentSelected;\n        });\n        if (usersWithoutParent.length == 0) return true;\n        else return false;\n    }),\n\n    actions: {\n        parentSelected(user, value) {\n            // super ugly hax but orientations just are\n            if (get(this, 'selectedParentsStates').length == 0) {\n                const arr = [];\n                get(this, 'users').forEach((userid) => {\n                    arr.push({ user: userid, parentSelected: false });\n                });\n                set(this, 'selectedParentsStates', arr);\n            }\n            const item = get(this, 'selectedParentsStates').findBy('user', user);\n            set(item, 'parentSelected', value ? true : false);\n        },\n    },\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"D+RWT3q8\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-fluid\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"padding-left\\\"],[8],[1,[28,\\\"t\\\",[\\\"orientations.select_parentforusers\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"addController\\\",\\\"users\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"          \\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"orientation-user col-sm-6 col-lg-4 col-xs-12\\\"],[8],[1,[28,\\\"collector/value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"orientation\\\",\\\"ori_user\\\",[23,1,[]]]]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"orientation-parent col-sm-6 col-lg-4 col-xs-12\\\"],[8],[1,[28,\\\"orientations/add/parent-selector\\\",null,[[\\\"user\\\",\\\"parents\\\",\\\"parentSelected\\\"],[[23,1,[]],[24,[\\\"selected_parents\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"parentSelected\\\"],null]]]],false],[9],[0,\\\"       \\\\n                \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-left\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"previous\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showButtonNext\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add.checkboxes\\\",0]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"next\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/add/parent/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsAddRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nOrientationsAddRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    dialogs: Ember.inject.service(),\n    settings: Ember.inject.service('customer-settings'),\n    capi: Ember.inject.service('collector-service'),\n    notifications: Ember.inject.service(),\n    intl: Em.inject.service(),\n    router: Em.inject.service(),\n    checkbox_groups: function () {\n        var checkAll, checkAllBoxes, ref, self, temp;\n        self = this;\n        temp = Ember.A([]);\n        checkAll = this.get('settings.settings').filterBy('key', 'orientations_check_all');\n        checkAllBoxes = false;\n        if (\n            (checkAll.length > 0 && ((ref = checkAll[0].value) === 'on' || ref === 'true')) ||\n            this.get('checkAll')\n        ) {\n            checkAllBoxes = true;\n        }\n        $.each(collector.forms.orientation.objects, function (title) {\n            var options_arr;\n            if (this.type !== 'checkboxgroup') {\n                return;\n            }\n            if (!this.options) {\n                return;\n            }\n            options_arr = Ember.A([]);\n            $.each(this.options, function (key) {\n                var text;\n                text =\n                    this.substring(0, 1) === '$'\n                        ? self.get('intl').t('orientations.' + title + '.' + key)\n                        : this;\n                return options_arr.pushObject(\n                    Ember.Object.create({\n                        checked: checkAllBoxes ? true : null,\n                        key: key,\n                        text: text,\n                    }),\n                );\n            });\n            return temp.pushObject({\n                title: this.name ? this.name : self.get('intl').t('orientations.' + title),\n                key: title,\n                options: options_arr,\n            });\n        });\n        return temp;\n    },\n    model: function () {\n        return Ember.Object.create({\n            record: this.store.createRecord('orientation'),\n            checkbox_groups: this.checkbox_groups(),\n        });\n    },\n    // Function to handle the saving process of orientations and related data\n    async continueSaving(signature, orientations) {\n        // Indicate that the saving process has started\n        this.set('controller.signaturesController.saving', true);\n        let currentObj = null; // Variable to hold the current orientation object being processed\n\n        try {\n            // Iterate through each orientation object\n            for (let obj of orientations) {\n                currentObj = obj;\n                // Set the place and date for the orientation\n                obj.set('ori_place', this.get('controller.place'));\n                obj.set('ori_date', this.get('controller.date'));\n\n                // If a signature is provided, set it for the orientation\n                if (signature) {\n                    obj.set('sign_emp_img', signature);\n                }\n\n                // Save any passes that need to be saved\n                if (this.get('controller.passesToBeSaved')) {\n                    await this.savePasses(this.get('controller.passesToBeSaved'));\n                    this.set('controller.passesToBeSaved', null);\n                }\n\n                // If the work permit product is in use, copy work permits to the new orientation record\n                if (this.capi.testNeedsOne('products.workPermit')) {\n                    // copy the work permits from the ori_user to the new orientation record\n                    const oriWorkPermits = await this.copyWorkPermits(obj);\n                    obj.set('workpermit', oriWorkPermits);\n                    // copy no_certificate_required from the original user to the new orientation record\n                    obj.set('no_certificate_required', obj.get('ori_user.no_certificate_required'));\n                }\n\n                // Save the orientation object\n                await obj.save();\n            }\n            // If the orientations were saved successfully\n\n            currentObj = null; // Reset currentObj after saving all orientations\n\n            // Transition to the saved state and reset controller properties\n            this.transitionTo('orientations.add.saved');\n            this.get('controller').set('model.record', null);\n            this.get('controller').set('users', null);\n            this.get('controller').set('projectRecord', null);\n            this.get('controller').set('userRecords', null);\n            this.get('controller').set('orientations_was_saved', true);\n\n        } catch (error) {\n\n            // Include the current orientation object user in the error context if available\n            let errorContext = '';\n            if (currentObj && currentObj.get('ori_user')) {\n                errorContext = ` ${this.get('intl').t('orientations.save_failed_for_user')} ${currentObj.get('ori_user.firstname')} ${currentObj.get('ori_user.lastname')} `;\n            }\n\n            const errorMessage = `${this.get('intl').t('general.error_prefix')} ${errorContext} ${error}`;\n            this.notifications.error(errorMessage, { autoClear: true });\n        } finally {\n            // Ensure the saving indicator is reset regardless of success or failure\n            this.set('controller.signaturesController.saving', false);\n        }\n    },\n\n    // Function to save a list of passes\n    async savePasses(passes) {\n        for (let pass of passes) {\n            await pass.save(); // Save each pass individually\n        }\n    },\n\n    // Function to copy user work permits and return those in an array\n    async copyWorkPermits(obj) {\n        const workPermits = obj.get('ori_user.workpermit');\n        // Create and save copies of all work permits in parallel\n        const oriWorkPermits = await Promise.all(\n            workPermits.toArray().map((permit) => {\n                // Create a copy of the workpermit record\n                const permitCopy = this.capi.copyRecord(permit);\n                // Save the original workpermit id to copied record for reference\n                permitCopy.set('isCopyOf', permit.get('id'));\n                // Save the copied workpermit\n                return permitCopy.save();\n            })\n        );\n        // Return the array of copied work permits\n        return oriWorkPermits;\n    },\n\n    actions: {\n        willTransition: function (transition) {\n            var oris, target, unsavedRecords;\n            unsavedRecords = false;\n            target = transition.targetName.split('.');\n            oris = this.store.peekAll('orientation');\n            oris.forEach(function (orientation) {\n                if (orientation.get('isNew') === true) {\n                    return (unsavedRecords = true);\n                }\n            });\n            if (this.get('router').get('currentRouteName') === 'orientations.add.index') {\n                if (target[0] !== 'orientations') {\n                    if (this.get('controller.orientations')) {\n                        this.get('controller.orientations').forEach(function (item) {\n                            return item.rollbackAttributes();\n                        });\n                    } else {\n                        this.get('controller.model.record').rollbackAttributes();\n                    }\n                    this.set('controller.users', Em.A([]));\n                    return true;\n                }\n            }\n            if (target[0] === 'orientations' || unsavedRecords === false) {\n                return true;\n            }\n            if (!this.get('allowTransition')) {\n                transition.abort();\n            } else {\n                return true;\n            }\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('orientations.move'))\n                .then((con) => {\n                    if (!con) {\n                        return transition.abort();\n                    } else {\n                        this.get('controller').set('users', null);\n                        this.get('controller').set('projectRecord', null);\n                        this.get('controller').set('userRecords', null);\n                        if (this.get('controller.orientations')) {\n                            this.get('controller.orientations').forEach(function (item) {\n                                return item.rollbackAttributes();\n                            });\n                        } else {\n                            this.get('controller.model.record').rollbackAttributes();\n                        }\n                        this.set('controller.users', Em.A([]));\n                        this.set('allowTransition', true);\n                        return transition.retry();\n                    }\n                });\n        },\n        save: function () {\n            var mandatory, orientations, sigController, signature, signaturesMissing;\n            sigController = this.get('controller.signaturesController');\n            sigController.send('validate');\n            if (sigController.get('errors')) {\n                return;\n            }\n            signaturesMissing = false;\n            orientations = this.get('controller.orientations');\n            signature = sigController.get('model.employer_signature');\n            orientations.forEach(function (obj) {\n                if (!obj.get('sign_per_img')) {\n                    return (signaturesMissing = true);\n                }\n            });\n            if (!signature || signaturesMissing) {\n                mandatory = this.get('controller.mandatoryArr');\n                if (\n                    (!signature && mandatory['sign_emp_img']) ||\n                    (signaturesMissing && mandatory['sign_per_img'])\n                ) {\n                    return this.get('dialogs').alert(\n                        this.get('intl').t('orientations.mandatory_signatures_missing'),\n                    );\n                } else {\n                    return this.get('dialogs')\n                        .confirm(this.get('intl').t('orientations.signatures_missing'))\n                        .then((continueSaving) => {\n                            //if !confirm(@get('intl').t(\"orientations.signatures_missing\"))\n                            //    continueSaving = false\n                            if (continueSaving) {\n                                return this.continueSaving(signature, orientations);\n                            }\n                        });\n                }\n            } else {\n                return this.continueSaving(signature, orientations);\n            }\n        },\n    },\n});\n\nexport default OrientationsAddRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/saved/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar savedController;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nimport pdfExport from '../../../../mixins/pdf-export';\n\nimport { alias } from '@ember/object/computed';\n\nsavedController = Ember.Controller.extend(pdfExport, {\n    //    needs: ['application','orientations/add']\n    addController: Ember.inject.controller('orientations/add'),\n    application: Ember.inject.controller(),\n    exportFile: Ember.inject.service(),\n    content: alias('model'),\n    showColumns: ['project', 'special_warning', 'place', 'date', 'pass_valid'],\n    checked_amount: Ember.computed('addController.orientations.firstObject', function () {\n        var arr, groups, orientation;\n        orientation = this.get('addController.orientations.firstObject');\n        if (!orientation) {\n            return;\n        }\n        groups = this.get('content.checkbox_groups');\n        arr = [];\n        groups.forEach(function (obj) {\n            var i, ori;\n            ori = orientation.get(obj.key);\n            if (!ori) {\n                arr.push({\n                    title: obj.title,\n                    amount: 0,\n                    length: obj.options.length,\n                });\n                return;\n            }\n            i = 0;\n            ori.forEach(function (item) {\n                if (item) {\n                    return i++;\n                }\n            });\n            return arr.push({\n                title: obj.title,\n                amount: i,\n                length: obj.options.length,\n            });\n        });\n        return arr;\n    }),\n    extraFields: Ember.computed(function () {\n        var extras, extras_tmp, self;\n        extras_tmp = collector.forms.orientation.objects;\n        extras = [];\n        self = this;\n        $.each(extras_tmp, function (index, obj) {\n            if (obj.type !== 'checkboxgroup') {\n                if (index.indexOf('addon_') >= 0) {\n                    return extras.push({\n                        name: obj.name,\n                        value: self.get('addController.orientations.firstObject.' + index),\n                    });\n                }\n            }\n        });\n        return extras;\n    }),\n    export_special_pdf: function (data) {\n        var filters, ids, postParams, url;\n        url = 'pdf/orientation';\n        ids = [];\n        filters = {};\n        data.forEach((row) => {\n            ids.push(row.id);\n            return (filters['ori_date'] = row.get('ori_date'));\n        });\n        postParams = {\n            filters: JSON.stringify(filters),\n            form: 'orientation',\n            lang: moment.locale(),\n            type: 'base64',\n            id: ids.join(','),\n        };\n        return this.get('Collector').ttapi({\n            dataType: 'text',\n            url: url,\n            data: postParams,\n        });\n    },\n    actions: {\n        pdf_export: function () {\n            var data, promise;\n            this.set('showLoader', true);\n            data = this.get('addController.orientations');\n            promise = this.export_special_pdf(data);\n            if (promise) {\n                promise.then((content) => {\n                    this.set('showLoader', false);\n                    return this.get('exportFile').exportFile(content, 'export', 'pdf', true);\n                });\n                return promise.catch((e) => {\n                    alert('pdf export failed: ' + JSON.stringify(e));\n                    return this.set('showLoader', false);\n                });\n            }\n        },\n    },\n});\n\nexport default savedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/saved/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar savedRoute;\n\nimport Ember from 'ember';\n\nimport OrientationsSubRoute from '../sub/route';\n\nsavedRoute = OrientationsSubRoute.extend();\n\nexport default savedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"4iJM9Rp0\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"item\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.saved.title\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.saved.text\\\"],[[\\\"count\\\"],[[24,[\\\"addController\\\",\\\"orientations\\\",\\\"length\\\"]]]]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"checked_amount\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[1,[23,2,[\\\"title\\\"]],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge badge-important\\\"],[8],[1,[23,2,[\\\"amount\\\"]],false],[0,\\\" / \\\"],[1,[23,2,[\\\"length\\\"]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.project\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\",\\\"ori_site\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.special_warning\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\",\\\"special_warning\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.place\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\",\\\"ori_place\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.date\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\",\\\"ori_date\\\"]],\\\"L\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\",\\\"pass_start\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.pass_valid\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\",\\\"pass_start\\\"]],\\\"L\\\"],null],false],[0,\\\" - \\\"],[4,\\\"if\\\",[[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\",\\\"pass_end\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"moment-format\\\",[[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\",\\\"pass_end\\\"]],\\\"L\\\"],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\",\\\"file\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.file\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"file\\\",\\\"orientation\\\",[28,\\\"get\\\",[[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\"]],\\\"file\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"extraFields\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[4,\\\"if\\\",[[23,1,[\\\"value\\\"]]],null,{\\\"statements\\\":[[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"name\\\"]],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[23,1,[\\\"value\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-m-link btn-lg btn-block\\\",\\\"orientations.reports\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-m-link btn-lg btn-block\\\",\\\"orientations.add.index\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"orientations.add_more\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-lg btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"pdf_export\\\"]],[8],[1,[28,\\\"t\\\",[\\\"orientations.pdf-export\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/add/saved/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/signatures/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsAddSignaturesController;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nimport { alias } from '@ember/object/computed';\n\nOrientationsAddSignaturesController = Ember.Controller.extend({\n    //    needs: ['application','orientations/add']\n    session: Em.inject.service(),\n    intl: Em.inject.service(),\n    addController: Ember.inject.controller('orientations/add'),\n    applicationController: Ember.inject.controller('application'),\n    orientations: Ember.computed.alias('addController.orientations'),\n    content: alias('model'),\n    showSignatureModal: false,\n    checkBoxes: Ember.computed('addController.orientations', function () {\n        var arr, groups, intl, orientation;\n        orientation = this.get('addController.orientations.firstObject');\n        intl = this.get('intl');\n        if (!orientation) {\n            return;\n        }\n        groups = this.get('content.checkbox_groups');\n        arr = [];\n        groups.forEach(function (obj) {\n            var i, subArr;\n            subArr = [];\n            i = 0;\n            obj.options.forEach(function (item) {\n                var name;\n                if (item && item.get('checked')) {\n                    name =\n                        item.get('text.string') && item.get('text.string').substring(0, 1) === '$'\n                            ? intl.t('orientations.' + obj.key + '.' + item.get('key'))\n                            : item.get('text');\n                    return subArr.push({\n                        name: name,\n                    });\n                }\n            });\n            if (subArr.length > 0) {\n                return arr.push({\n                    title: obj.title,\n                    checkboxes: subArr,\n                    length: obj.options.length,\n                });\n            }\n        });\n        return arr;\n    }),\n    extraFields: Ember.computed(function () {\n        var extras, extras_tmp, self;\n        extras_tmp = collector.forms.orientation.objects;\n        extras = [];\n        self = this;\n        $.each(extras_tmp, function (index, obj) {\n            if (obj.type !== 'checkboxgroup') {\n                if (index.indexOf('addon_') >= 0) {\n                    return extras.push({\n                        name: obj.name,\n                        value: self.get('addController.orientations.firstObject.' + index),\n                    });\n                }\n            }\n        });\n        return extras;\n    }),\n    actions: {\n        validate: function () {\n            var data;\n            data = this.get('addController.place');\n            if (!data || data === null || data === '') {\n                this.set('error', this.get('intl').t('field.error.mandatory'));\n                this.set('errors', true);\n            } else {\n                this.set('error', null);\n                this.set('errors', false);\n            }\n            return false;\n        },\n        addPhoto: function (user, image) {\n            user.set('image', image);\n            return user.save();\n        },\n        openSignatureModal: function (model, field) {\n            var signature;\n            this.set('signatureModel', model);\n            this.set('signatureField', field);\n            signature = Ember.get(model, field);\n            this.set('selectedSignature', signature);\n            return this.set('showSignatureModal', true);\n        },\n        changeSignature: function (value) {\n            var field, model;\n            model = this.get('signatureModel');\n            field = this.get('signatureField');\n            Ember.set(model, field, value);\n            return this.set('showSignatureModal', false);\n        },\n    },\n});\n\n// @signatureModel[@signatureField] = value\n// Ember.set(@get 'signatureModel', @get 'signatureField', value)\nexport default OrientationsAddSignaturesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/signatures/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar signaturesRoute;\n\nimport Ember from 'ember';\n\nimport OrientationsSubRoute from '../sub/route';\n\nsignaturesRoute = OrientationsSubRoute.extend();\n\nexport default signaturesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"h2VZ+eGv\",\"block\":\"{\\\"symbols\\\":[\\\"record\\\",\\\"checkbox_group\\\",\\\"subgroup\\\",\\\"field\\\"],\\\"statements\\\":[[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.project\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"orientations\\\",\\\"0\\\",\\\"ori_site\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.special_warning\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"orientations\\\",\\\"0\\\",\\\"special_warning\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"orientations\\\",\\\"0\\\",\\\"pass_start\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.pass_valid\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"orientations\\\",\\\"0\\\",\\\"pass_start\\\"]],\\\"L\\\"],null],false],[0,\\\" - \\\"],[4,\\\"if\\\",[[24,[\\\"orientations\\\",\\\"0\\\",\\\"pass_end\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"moment-format\\\",[[24,[\\\"orientations\\\",\\\"0\\\",\\\"pass_end\\\"]],\\\"L\\\"],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"extraFields\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[4,\\\"if\\\",[[23,4,[\\\"value\\\"]]],null,{\\\"statements\\\":[[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[23,4,[\\\"name\\\"]],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[23,4,[\\\"value\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[10,\\\"data-toggle\\\",\\\"collapse\\\"],[10,\\\"data-target\\\",\\\"#collapseGroup\\\"],[10,\\\"aria-expanded\\\",\\\"false\\\"],[10,\\\"aria-controls\\\",\\\"collapseGroup\\\"],[10,\\\"type\\\",\\\"button\\\"],[8],[0,\\\"\\\\n      \\\"],[1,[28,\\\"t\\\",[\\\"orientations.checked_groups\\\"],null],false],[0,\\\"   \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"caret\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"collapse\\\"],[10,\\\"id\\\",\\\"collapseGroup\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"checkBoxes\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[8],[1,[23,2,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[\\\"checkboxes\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[1,[23,3,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.employer_signature\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",[29,[\\\"list-group-item \\\",[28,\\\"if\\\",[[24,[\\\"model\\\",\\\"employer_signature\\\"]],\\\"list-group-item-success\\\"],null]]]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"action\\\",[[23,0,[]],\\\"openSignatureModal\\\",[24,[\\\"model\\\"]],\\\"employer_signature\\\"],null]]],[8],[0,\\\"\\\\n        \\\"],[1,[24,[\\\"session\\\",\\\"currentUser\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"session\\\",\\\"currentUser\\\",\\\"lastname\\\"]],false],[0,\\\"\\\\n        \\\"],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"employer_signature\\\"]]],null,{\\\"statements\\\":[[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"orientations signature-preview\\\"],[11,\\\"src\\\",[24,[\\\"model\\\",\\\"employer_signature\\\"]]],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"field.type.signature\\\"],null]],[8],[9],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"orientations-icon glyphicon glyphicon-ok-sign pull-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.users_signature\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"list-group orientated-users\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"addController\\\",\\\"orientations\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3 col-sm-2 col-md-1\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"ori_user\\\",\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"user-icon\\\",[[23,1,[\\\"ori_user\\\",\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],[[\\\"text\\\"],[[28,\\\"concat\\\",[[23,1,[\\\"ori_user\\\",\\\"firstname\\\"]],\\\" \\\",[23,1,[\\\"ori_user\\\",\\\"lastname\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"add-photo\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"file-picker\\\",null,[[\\\"onChange\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"addPhoto\\\",[23,1,[\\\"ori_user\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Camera\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9 col-sm-10 col-md-11 signature\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",[29,[\\\"list-group-item \\\",[28,\\\"if\\\",[[23,1,[\\\"sign_per_img\\\"]],\\\"list-group-item-success\\\"],null]]]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"action\\\",[[23,0,[]],\\\"openSignatureModal\\\",[23,1,[]],\\\"sign_per_img\\\"],null]]],[8],[0,\\\"\\\\n                    \\\"],[1,[23,1,[\\\"ori_user\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"ori_user\\\",\\\"lastname\\\"]],false],[0,\\\"\\\\n                    \\\"],[4,\\\"if\\\",[[23,1,[\\\"sign_per_img\\\"]]],null,{\\\"statements\\\":[[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"orientations signature-preview\\\"],[11,\\\"src\\\",[23,1,[\\\"sign_per_img\\\"]]],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"field.type.signature\\\"],null]],[8],[9],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"orientations-icon glyphicon glyphicon-ok-sign pull-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[5,\\\"signature-modal\\\",[],[[\\\"@open\\\",\\\"@onHide\\\",\\\"@signatureSrc\\\",\\\"@onChange\\\"],[[23,0,[\\\"showSignatureModal\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showSignatureModal\\\"]]],null],false],null],[23,0,[\\\"selectedSignature\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeSignature\\\"],null]]]],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"orientations.date\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"moment-format\\\",[[24,[\\\"addController\\\",\\\"date\\\"]],\\\"L\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-9\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"orientations.place\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"addController\\\",\\\"mandatoryArr\\\",\\\"ori_place\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"focus-out\\\"],[\\\"text\\\",\\\"form-control input-lg\\\",[24,[\\\"addController\\\",\\\"place\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validate\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control input-lg\\\",[24,[\\\"addController\\\",\\\"place\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[1,[23,0,[\\\"error\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general_add.error\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg btn-block\\\"],[12,\\\"disabled\\\",[22,\\\"errors\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-SaveDisk\\\"],[8],[9],[0,\\\"  \\\"],[1,[28,\\\"t\\\",[\\\"orientations.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/add/signatures/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/sub/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar subRoute;\n\nimport Ember from 'ember';\n\nimport ResetScrollMixin from '../../../../mixins/reset-scroll';\n\nsubRoute = Ember.Route.extend(ResetScrollMixin, {\n    beforeModel: function () {\n        var orientations;\n        orientations = this.controllerFor('orientations.add');\n        // this situation occurs when orientation is saved and trying to add another one\n        if (orientations.get('orientations_was_saved')) {\n            return;\n        }\n        if (!orientations.get('users').length) {\n            return this.transitionTo('orientations.add');\n        }\n    },\n});\n\nexport default subRoute;\n","export default Ember.HTMLBars.template({\"id\":\"0zcWIPfC\",\"block\":\"{\\\"symbols\\\":[\\\"group\\\",\\\"index\\\",\\\"group\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.orientation\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"orientations.reports\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row hidden-xs hidden-sm\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ol\\\",true],[10,\\\"class\\\",\\\"breadcrumb\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disableLinks\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"active\\\"],[8],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Conference\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.add\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.orientations_parent\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\" \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Conference\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.parent\\\"],null],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"checkbox_groups\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[8],[0,\\\" \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-CheckedCheckbox\\\"],[8],[9],[0,\\\" \\\"],[1,[23,3,[\\\"title\\\"]],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[8],[0,\\\" \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Note\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.confirm\\\"],null],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[23,0,[\\\"projectHasLocks\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Password\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.add-passes\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"li\\\",true],[8],[0,\\\" \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Signature\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.signatures\\\"],null],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\"],[\\\"li\\\",\\\"link\\\",\\\"orientations.add.index\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Conference\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.add\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.orientations_parent\\\"],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\"],[\\\"li\\\",\\\"link\\\",\\\"orientations.add.parent\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Conference\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.parent\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"checkbox_groups\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\",\\\"model\\\"],[\\\"li\\\",\\\"link\\\",\\\"orientations.add.checkboxes\\\",[23,2,[]]]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-CheckedCheckbox\\\"],[8],[9],[0,\\\" \\\"],[1,[23,1,[\\\"title\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2]},null],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\"],[\\\"li\\\",\\\"link\\\",\\\"orientations.add.confirm\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Note\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.confirm\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"await\\\",[[23,0,[\\\"projectHasLocks\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\"],[\\\"li\\\",\\\"link\\\",\\\"orientations.add.add-passes\\\"]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Password\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.add-passes\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"disabled\\\",\\\"route\\\"],[\\\"li\\\",\\\"link\\\",\\\"true\\\",\\\"orientations.add.signatures\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Signature\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.signatures\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nOrientationsEditRoute = GeneralAddRoute.extend({\n    modelName: 'orientation',\n    edit: true,\n    afterSave: 'orientations.reports',\n    setupController: function (controller, model) {\n        controller.set('model', model);\n        controller.set(\n            'fieldSettings',\n            Em.A({\n                edit: true,\n            }),\n        );\n        return controller.set('edit', true);\n    },\n});\n\nexport default OrientationsEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"UHzkg9mg\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/edit/template.hbs\"}});","import Controller from '@ember/controller';\nimport { computed, get, set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    collector: service('collector-service'),\n\n    queryParams: ['ori_site'],\n\n    ori_site: null,\n    orientations: alias('model'),\n\n    data: computed('orientations', function () {\n        // Get the data from the model and convert it to a format that the tree component can use\n        // The structure of the data is as follows:\n        // [employer.name, parent.name]\n        const data = get(this, 'orientations').map((item) => {\n            return [get(item, 'ori_employer.name'), get(item, 'parent.name')];\n        });\n\n        // Add the parent names of those parents that are not presented as ori_employer in the data\n        // After this we have all the parents in the data\n        get(this, 'orientations').forEach((item) => {\n            const parentName = get(item, 'parent.name') || null;\n            const isFoundAlready = data.find((item) => item[0] === parentName);\n\n            if (parentName && !isFoundAlready) {\n                data.push([parentName, null]);\n            }\n        });\n\n        //\n        const dataWithoutNulls = data.filter((item) => item[0]);\n        const dataWithoutLoops = dataWithoutNulls.filter((item) => item[0] !== item[1]);\n\n        const nestedData = this.convertToNestedArray(dataWithoutLoops);\n\n        const flattenedData = this.flatten(nestedData);\n\n        const result = flattenedData.map((item) => {\n            return {\n                ...item,\n                lastindex: item.level - 1,\n                levelAsRange: Array.from({ length: item.level }, (_, index) => index + 1),\n            };\n        });\n\n        return result;\n    }),\n\n    projectField: computed(function () {\n        const fieldArray = get(this, 'collector').fieldArray('orientation');\n        return fieldArray.findBy('name', 'ori_site');\n    }),\n\n    actions: {\n        projectChanged(value) {\n            set(this, 'ori_site', value ? get(value, 'id') : null);\n        },\n    },\n\n    convertToNestedArray(rows) {\n        // Format the rows to objects\n        rows = rows.map((row) => {\n            return { name: row[0], parent: row[1], children: [] };\n        });\n\n        // Create trees from all the rows\n        const trees = [];\n        // Rows that have been iterated\n        const iteratedRows = [];\n\n        // Cut the loops\n        // If there are two rows that have each other as parent, rename parent from one of them\n        const loopParents = [];\n        rows.forEach((row) => {\n            if (row.parent) {\n                const parent = rows.find((item) => item.name === row.parent);\n                if (parent && parent.parent === row.name) {\n                    if (!loopParents.includes(parent.parent)) {\n                        parent.parent = parent.parent + ' (esiintyy useassa eri roolissa)';\n                        loopParents.push(parent.parent);\n                    } else {\n                        parent.parent =\n                            +' (esiintyy useassa eri roolissa ' +\n                            '(' +\n                            loopParents.filter((item) => item === parent.parent).length +\n                            ')' +\n                            ')';\n                        loopParents.push(parent.parent);\n                    }\n                }\n            }\n        });\n\n        // If row has a parent who has no row in the data, add it to the data\n        rows.forEach((row) => {\n            if (row.parent && !rows.find((item) => item.name === row.parent)) {\n                rows.push({ name: row.parent, parent: null, children: [] });\n            }\n        });\n\n        const nestRows = (tempRows, levels = 1) => {\n            // Copy the rows to avoid modifying the original array\n            let rowsCopied = tempRows;\n\n            const iterate = (rows) => {\n                for (const row of rows) {\n                    if (!row.parent) {\n                        trees.push(row);\n                        iteratedRows.push(row);\n                    } else {\n                        const parent = rows.find((item) => item.name === row.parent);\n                        if (parent) {\n                            parent.children.push(row);\n                            iteratedRows.push(row);\n                        }\n                    }\n                }\n            };\n\n            let levelsIterated = 0;\n            while (levelsIterated < levels) {\n                const rows = rowsCopied.filter(\n                    (row) => !iteratedRows.find((tree) => tree.name === row.name),\n                );\n                iterate(rows);\n                if (rows.length === 0) break;\n                levelsIterated++;\n            }\n        };\n\n        nestRows(rows, 10);\n        return trees;\n    },\n\n    flatten(data) {\n        const flattenStructure = (node, level, result, breadCrumps, breadCrumpsArray) => {\n            result.push({\n                name: node.name,\n                level,\n                hasChildren: node.children.length > 0,\n                childrenCount: node.children.length,\n                breadCrumps: `${breadCrumps} > ${node.name}`.substring(6),\n                breadCrumpsArray: breadCrumpsArray,\n            });\n\n            if (node.children && node.children.length > 0) {\n                for (const child of node.children) {\n                    if (breadCrumpsArray.includes(child.name)) return;\n\n                    flattenStructure(child, level + 1, result, `${breadCrumps} > ${node.name}`, [\n                        ...breadCrumpsArray,\n                        node.name,\n                    ]);\n                }\n            }\n        };\n\n        const result = [];\n        flattenStructure({ name: '', children: data }, -1, result, '', []);\n\n        return result.slice(1);\n    },\n});\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Route.extend({\n    store: service(),\n\n    queryParams: {\n        ori_site: {\n            refreshModel: true,\n        },\n    },\n\n    model: function (params) {\n        if (!params.ori_site) return []; // we do not want to even load the data if no project is selected\n\n        params.sideload = true;\n        params.groupBy = 'parent,ori_employer';\n        params.limit = 'all';\n        const data = get(this, 'store').query('orientation', params);\n        return data;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"zK88RUXq\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"level\\\",\\\"index\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6 col-lg-4 filter-comp-component\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"projectField\\\"]]],[[\\\"change\\\",\\\"useAsFilter\\\"],[\\\"projectChanged\\\",true]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"ori_site\\\"]]],null,{\\\"statements\\\":[[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"ml-8\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[4,\\\"each\\\",[[23,1,[\\\"levelAsRange\\\"]]],null,{\\\"statements\\\":[[7,\\\"td\\\",true],[10,\\\"width\\\",\\\"50px\\\"],[10,\\\"style\\\",\\\"text-align:center;\\\"],[8],[1,[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[]],[23,1,[\\\"lastindex\\\"]]],null],\\\"-\\\"],null],false],[9]],\\\"parameters\\\":[2,3]},null],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[10,\\\"colspan\\\",\\\"100\\\"],[10,\\\"class\\\",\\\"px-3 py-3\\\"],[11,\\\"title\\\",[23,1,[\\\"breadCrumps\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"hasChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge ml-2\\\"],[10,\\\"style\\\",\\\"transform: translateY(-2px);\\\"],[8],[1,[23,1,[\\\"childrenCount\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"general.choose_project_first\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/employeetree/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsHistoryRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nOrientationsHistoryRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default OrientationsHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"kB/yjEWO\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"orientation\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/history/template.hbs\"}});","import Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport EmberObject from '@ember/object';\nimport { A } from '@ember/array';\nimport moment from 'moment';\n\nexport default class OrientationsInactivePassesController extends Controller {\n  @service intl;\n  @service flags;\n  @service store;\n  @service notifications;\n  @service router;\n  @service capi;\n\n  queryParams = ['ori_site', 'page'];\n\n  @tracked ori_site = null;\n  @tracked page = 1;\n\n  rowsPerPage = 100;\n  columns = ['ori_user', 'ori_employer', 'pass_start', 'pass_end'];\n  form = 'orientation';\n\n  get filters() {\n    return A([\n      EmberObject.create({\n        field: 'ori_site',\n        form: 'orientation',\n        type: 'database',\n        value: this.ori_site,\n        singleselect: true,\n      }),\n    ]);\n  }\n\n  get pageCount() {\n    const count = this.model?.count ?? 0;\n    return Math.ceil(count / this.rowsPerPage);\n  }\n\n  get translatedColumns() {\n    return this.columns.map((column) =>\n      this.intl.t(`report.orientation.${column}`)\n    );\n  }\n\n  get message() {\n    if (this.model?.error === 'no_site_selected') {\n      return this.intl.t('orientations.message_select_site_first');\n    }\n    return null;\n  }\n\n  get data() {\n    const rawData = this.model?.passive_users;\n    if (!rawData) {\n      return null;\n    }\n\n    return A(\n      rawData.map((row) =>\n        EmberObject.create({\n          id: row.user_id,\n          ori_id: row.ori_id,\n          user_id: row.user_id,\n          ori_user: row.ori_user,\n          ori_employer: row.ori_employer,\n          pass_start: row.pass_start,\n          pass_end: row.pass_end,\n        })\n      )\n    );\n  }\n\n  get checkedActions() {\n    return [{ name: 'revoke_passes' }];\n  }\n\n  @action\n  filterChanged(value, fieldName) {\n    this.page = 1;\n    this[fieldName] = value?.id || null;\n  }\n\n\n  /**\n   * Revokes orientation passes for selected users by setting their pass end date to yesterday.\n   * This effectively makes their passes expired.\n   */\n  @action\n  async revokePasses(action, row) {\n    if (action !== 'checkedRowsAction' || !row.rows?.length) {\n      return;\n    }\n\n    const yesterdayStr = moment().subtract(1, 'days').format('YYYY-MM-DD');\n    const oriIds = row.rows.map((selectedRow) => selectedRow.ori_id);\n\n    try {\n      await this.capi.request('orientations', {\n        method: 'PUT',\n        contentType: 'application/json',\n        data: JSON.stringify({\n          orientation: {\n            id: oriIds,\n            pass_end: yesterdayStr,\n            meta: {\n              insert_history: true,\n            },\n          },\n        }),\n      });\n\n      this.notifications.success(\n        this.intl.t('orientations.passes_revoked_success'), { autoClear: true }\n      );\n      // Refresh the route to reflect changes\n      this.router.transitionTo('orientations.inactive-passes', {\n        queryParams: { ori_site: this.ori_site, page: this.page },\n      });\n    } catch (error) {\n      this.notifications.error(\n        `${this.intl.t('general.error_prefix')} ${error}`\n      );\n    }\n  }\n}\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\n\nexport default class OrientationsInactivePassesRoute extends Route {\n  @service ttapi;\n\n  queryParams = {\n    ori_site: {\n      refreshModel: true,\n    },\n    page: {\n      refreshModel: true,\n    },\n  };\n\n  async model(params) {\n    // No site selected - show message instead of making API call\n    if (!params.ori_site) {\n      return {\n        passive_users: null,\n        count: 0,\n        error: 'no_site_selected',\n      };\n    }\n\n    const limit = 100;\n    const offset = params.page ? (params.page - 1) * limit : 0;\n\n    return this.ttapi.request('/orientations/inactive_passes', {\n      type: 'GET',\n      data: {\n        ori_site: params.ori_site,\n        limit,\n        offset,\n      },\n    });\n  }\n}\n","export default Ember.HTMLBars.template({\"id\":\"TZmUmKLP\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"orientations-inactive-passes\\\"],[8],[0,\\\"\\\\n  \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.orientations.inactive_passes.title\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"  \\\"],[5,\\\"report-filters\\\",[],[[\\\"@filters\\\",\\\"@form\\\",\\\"@filterValueChanged\\\"],[[23,0,[\\\"filters\\\"]],[23,0,[\\\"form\\\"]],[23,0,[\\\"filterChanged\\\"]]]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"message\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n      \\\"],[7,\\\"h4\\\",true],[8],[1,[23,0,[\\\"message\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"table-comp\\\",[],[[\\\"@columns\\\",\\\"@translated_columns\\\",\\\"@data\\\",\\\"@checkable\\\",\\\"@hideSort\\\",\\\"@checkedActions\\\",\\\"@bubbleActions\\\"],[[23,0,[\\\"columns\\\"]],[23,0,[\\\"translatedColumns\\\"]],[23,0,[\\\"data\\\"]],true,true,[23,0,[\\\"checkedActions\\\"]],[23,0,[\\\"revokePasses\\\"]]]]],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"    \\\"],[5,\\\"pagi-nate\\\",[],[[\\\"@rowsPerPage\\\",\\\"@currentPage\\\",\\\"@pageCount\\\"],[[23,0,[\\\"rowsPerPage\\\"]],[23,0,[\\\"page\\\"]],[23,0,[\\\"pageCount\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/inactive-passes/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"rcZk2W8C\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/own-orientation/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OwnOrientationsController;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nOwnOrientationsController = Ember.Controller.extend({\n    //    needs: ['application','orientations/add']\n    session: Em.inject.service(),\n    intl: Em.inject.service(),\n    addController: Ember.inject.controller('orientations/add'),\n    applicationController: Ember.inject.controller('application'),\n    orientations: Ember.computed.alias('addController.orientations'),\n    errors: 0,\n    has_errors: false,\n    validate_fields: ['ori_place', 'sign_per_img'],\n    signatureField: Ember.computed(function () {\n        return this.get('Collector').field('orientation', 'sign_per_img');\n    }),\n    fileField: Ember.computed('model.record.ori_site', function () {\n        var field;\n        field = this.get('Collector').field('project', 'file');\n        field.value = this.get('model.record.ori_site.file');\n        return field;\n    }),\n    ori_place: Em.computed(function () {\n        if (this.get('model.project.city')) {\n        }\n    }),\n    checkBoxes: Em.computed(function () {\n        var arr, groups, intl;\n        intl = this.get('intl');\n        groups = this.get('model.checkbox_groups');\n        arr = [];\n        groups.forEach(function (obj) {\n            var i, subArr;\n            subArr = [];\n            i = 0;\n            obj.options.forEach(function (item) {\n                var name;\n                if (item) {\n                    name =\n                        item.get('text.string') && item.get('text.string').substring(0, 1) === '$'\n                            ? intl.t('orientations.' + obj.key + '.' + item.get('key'))\n                            : item.get('text');\n                    return subArr.push({\n                        name: name,\n                    });\n                }\n            });\n            if (subArr.length > 0) {\n                return arr.push({\n                    title: obj.title,\n                    checkboxes: subArr,\n                    length: obj.options.length,\n                });\n            }\n        });\n        return arr;\n    }),\n    extraFields: Ember.computed(function () {\n        var extras, extras_tmp, self;\n        extras_tmp = collector.forms.orientation.objects;\n        extras = [];\n        self = this;\n        $.each(extras_tmp, function (index, obj) {\n            if (obj.type !== 'checkboxgroup') {\n                if (index.indexOf('addon_') >= 0) {\n                    return extras.push({\n                        name: obj.name,\n                        value: self.get('addController.orientations.firstObject.' + index),\n                    });\n                }\n            }\n        });\n        return extras;\n    }),\n    mandatoryArr: Em.computed('model', function () {\n        var arr, form, k, v;\n        form = collector.forms.orientation.objects;\n        arr = {};\n        for (k in form) {\n            v = form[k];\n            if (v.features.mandatory) {\n                arr[k] = true;\n            }\n        }\n        return arr;\n    }),\n    actions: {\n        validate: function () {\n            var field, j, len, ref;\n            ref = this.get('validate_fields');\n            for (j = 0, len = ref.length; j < len; j++) {\n                field = ref[j];\n                if (\n                    (!this.get('model.record.' + field) ||\n                        this.get('model.record.' + field) === null ||\n                        this.get('model.record.' + field) === '') &&\n                    !this.get('error_' + field)\n                ) {\n                    this.set('error_' + field, true);\n                    this.incrementProperty('errors');\n                } else if (this.get('model.record.' + field) && this.get('error_' + field)) {\n                    this.set('error_' + field, false);\n                    this.decrementProperty('errors');\n                }\n            }\n            if (this.get('errors') === 0) {\n                this.set('has_errors', false);\n            } else {\n                this.set('has_errors', true);\n            }\n            return false;\n        },\n        setSignature: function (value) {\n            this.set('model.record.sign_per_img', value);\n            return this.send('validate');\n        },\n        setFile: function (file, field) {\n            return this.set('model.record.file', file);\n        },\n    },\n});\n\nexport default OwnOrientationsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/own-orientation/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar signaturesRoute;\n\nimport Ember from 'ember';\n\nimport addRoute from '../add/route';\n\nimport config from '../../../config/environment';\n\nsignaturesRoute = addRoute.extend({\n    session: Em.inject.service(),\n    checkAll: true,\n    model: function (params) {\n        var project;\n        project = this.get('store').findRecord('project', params.id, {\n            reload: true,\n        });\n        return project.then((proj) => {\n            return Ember.RSVP.hash({\n                checkbox_groups: this.checkbox_groups(),\n                record: this.get('store').createRecord('orientation', {\n                    ori_site: proj,\n                    ori_place: proj.get('city'),\n                    ori_date: moment().format('YYYY-MM-DD'),\n                    ori_user: this.get('session.currentUser'),\n                    pass_start: moment().format('YYYY-MM-DD'),\n                    pass_end: proj.get('proj_end'),\n                    special_warning: proj.get('special_warnings'),\n                    file: proj.get('file'),\n                }),\n            });\n        });\n    },\n    toDataUrl: function (url, callback) {\n        var img_url, xhr;\n        img_url = config.APP.COLLECTOR_API_URL + '/' + url;\n        xhr = new XMLHttpRequest();\n        if (window.XMLHttpRequest) {\n            xhr = new XMLHttpRequest();\n        } else {\n            xhr = new ActiveXObject('Microsoft.XMLHTTP');\n        }\n        xhr.onload = function () {\n            var reader;\n            reader = new FileReader();\n            reader.onloadend = function () {\n                callback(reader.result);\n            };\n            reader.readAsDataURL(xhr.response);\n        };\n        xhr.open('GET', img_url);\n        xhr.responseType = 'blob';\n        return xhr.send();\n    },\n    actions: {\n        save: function (row, model) {\n            var controller, i, item, j, key, len, len1, options, ref, ref1, tmp;\n            controller = this.get('controller');\n            controller.send('validate');\n            if (controller.get('has_errors')) {\n                return;\n            }\n            ref = model['checkbox_groups'];\n            for (i = 0, len = ref.length; i < len; i++) {\n                item = ref[i];\n                tmp = [];\n                ref1 = item.options;\n                for (j = 0, len1 = ref1.length; j < len1; j++) {\n                    options = ref1[j];\n                    tmp.push(options.key);\n                }\n                key = item.key;\n                row.set(key, tmp);\n            }\n            return row.save().then(() => {\n                return this.transitionTo('timetracker.worktime-list');\n            });\n        },\n    },\n});\n\nexport default signaturesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Vubbitep\",\"block\":\"{\\\"symbols\\\":[\\\"checkbox_group\\\",\\\"subgroup\\\"],\\\"statements\\\":[[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.worksite_info\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.project\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"model\\\",\\\"record\\\",\\\"ori_site\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.special_warning\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"model\\\",\\\"record\\\",\\\"ori_site\\\",\\\"special_warnings\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"record\\\",\\\"ori_site\\\",\\\"file\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.file\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[1,[28,\\\"collector/fields/fileupload-field-ver3\\\",null,[[\\\"field\\\",\\\"hidden\\\",\\\"bubbleChange\\\",\\\"model\\\"],[[24,[\\\"fileField\\\"]],true,\\\"setFile\\\",[24,[\\\"record\\\",\\\"ori_site\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"file\\\",\\\"orientation\\\",[28,\\\"get\\\",[[24,[\\\"model\\\",\\\"record\\\",\\\"ori_site\\\"]],\\\"file\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.checked_groups\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"checkBoxes\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[8],[1,[23,1,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"checkboxes\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.worker_signature\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"list-group orientated-users\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/fields/signature-field\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"bubbleChange\\\",\\\"model\\\",\\\"showModal\\\",\\\"placeholderText\\\"],[[24,[\\\"signatureField\\\"]],\\\"add-fields\\\",\\\"setSignature\\\",[24,[\\\"model\\\",\\\"record\\\"]],[24,[\\\"signature\\\"]],[28,\\\"concat\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"firstname\\\"]],\\\" \\\",[24,[\\\"session\\\",\\\"currentUser\\\",\\\"lastname\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"error_sign_per_img\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"field.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"orientations.date\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"moment-format\\\",[[24,[\\\"addController\\\",\\\"date\\\"]],\\\"L\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-9\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"orientations.place\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"mandatoryArr\\\",\\\"ori_place\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"focus-out\\\"],[\\\"text\\\",\\\"form-control input-lg\\\",[24,[\\\"model\\\",\\\"record\\\",\\\"ori_place\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validate\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control input-lg\\\",[24,[\\\"model\\\",\\\"record\\\",\\\"ori_place\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"error_ori_place\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"field.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"has_errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general_add.error\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg btn-block\\\"],[12,\\\"disabled\\\",[22,\\\"has_errors\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"model\\\",\\\"record\\\"]],[24,[\\\"model\\\"]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-SaveDisk\\\"],[8],[9],[0,\\\"  \\\"],[1,[28,\\\"t\\\",[\\\"orientations.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/own-orientation/template.hbs\"}});","import Controller from '@ember/controller';\nimport { get, set, computed } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { htmlSafe } from '@ember/string';\nimport EmberError from '@ember/error';\nimport config from 'tt4/config/environment';\n\nexport default Controller.extend({\n    Collector: service('collector-service'),\n    ajax: service(),\n    session: service(),\n    intl: service(),\n    cc: service(),\n    ttapi: service(),\n    notifications: service(),\n    store: service(),\n    flags: service(),\n\n    localStorageKey: 'passes',\n    pass_ends_range: null,\n\n    passes: alias('model'),\n\n    rollockIntegration: computed(function () {\n        if (config.target === 'release-next') {\n            return 'rollock_qa';\n        } else {\n            return 'rollock';\n        }\n    }),\n    \n    showMegaflexSyncDetails: computed(function () {\n        return get(this, 'flags').test('megaflex-sync-details');\n    }),\n\n    limitedSyncFailedDetails: computed('syncFailedDetails.[]', function () {\n        const failedDetails = get(this, 'syncFailedDetails');\n        if (failedDetails && failedDetails.length > 0) {\n            return failedDetails.slice(0, 10);\n        }\n        return [];\n    }),\n\n    remainingErrorCount: computed('syncFailedDetails.[]', function () {\n        const failedDetails = get(this, 'syncFailedDetails');\n        if (failedDetails && failedDetails.length > 10) {\n            return failedDetails.length - 10;\n        }\n        return 0;\n    }),\n\n    progress: computed('numericalProgress', function () {\n        return get(this, 'numericalProgress') + ' %';\n    }),\n\n    progressStyle: computed('progress', function () {\n        return htmlSafe('width: ' + get(this, 'numericalProgress') + '%');\n    }),\n\n    syncModalHeader: computed('syncType', function () {\n        const syncType = get(this, 'syncType') || 'rollock';\n        return `${syncType}.sync.modal_header`;\n    }),\n\n    syncExecutingMessage: computed('syncType', function () {\n        const syncType = get(this, 'syncType') || 'rollock';\n        return `${syncType}.sync.executing`;\n    }),\n\n    timecleanProjects: computed('model.timcleanProjects', function () {\n        if (!get(this, 'model.timecleanProjects')) {\n            return null;\n        } else {\n            return get(this, 'model.timecleanProjects').map((project) => {\n                return { id: project.id, name: project.name };\n            });\n        }\n    }),\n\n    actions: {\n        showTimecleanModal() {\n            set(this, 'showTimecleanModal', true);\n        },\n\n        syncRollock(rows) {\n            rows = this._initializeSync(rows, 'rollock.sync.no_users', 'rollock');\n            \n            if (rows.length === 0) return;\n\n            let rollockIntegration = get(this, 'rollockIntegration');\n            let url = this.cc.host + '/' + rollockIntegration;\n            let accessToken = get(this, 'session.data.authenticated.access_token');\n\n            rows.forEach((row) => {\n                get(this, 'ajax').request(url, {\n                    type: 'POST',\n                    headers: {\n                        Authorization: 'Bearer ' + accessToken,\n                    },\n                    contentType: 'application/json',\n                    data: JSON.stringify(row),\n                    success: () => {\n                        this.incrementProgress();\n                    },\n                    error: (e) => {\n                        this.incrementProgress();\n                        throw new EmberError(JSON.stringify(e));\n                    },\n                });\n            });\n        },\n\n        syncMegaflex(rows) {\n            rows = this._initializeSync(rows, 'megaflex.sync.no_users', 'megaflex');\n            \n            if (rows.length === 0) return;\n\n            set(this, 'syncSuccess', true);\n            set(this, 'syncFailedDetails', []);\n\n            // Process each orientation one by one\n            this.processMegaflexSync(rows, 0);\n        },\n\n        close() {\n            set(this, 'allDone', false);\n            set(this, 'syncSuccess', true);\n            set(this, 'syncErrorMessage', null);\n            set(this, 'syncFailedDetails', null);\n            set(this, 'showErrorDetails', false);\n            set(this, 'showSyncProgress', false);\n        },\n        \n        toggleErrorDetails() {\n            this.toggleProperty('showErrorDetails');\n        },\n    },\n\n    _initializeSync(rows, errorMessageKey, syncType) {\n        //only try to sync if user has a pass with an end time\n        const filteredRows = rows.filter((row) => get(row, 'pass_end'));\n        set(this, 'rowAmount', filteredRows.length);\n\n        if (filteredRows.length === 0) {\n            get(this, 'notifications').error(get(this, 'intl').t(errorMessageKey), {\n                autoClear: true,\n            });\n            return [];\n        }\n\n        set(this, 'syncType', syncType);\n        set(this, 'showSyncProgress', true);\n        set(this, 'allDone', false);\n        set(this, 'numericalProgress', 0);\n        set(this, 'count', 0);\n\n        return filteredRows;\n    },\n\n    processMegaflexSync(rows, index) {\n        if (index >= rows.length) {\n            // All done - show summary\n            set(this, 'allDone', true);\n            this._showMegaflexSyncSummary();\n            return;\n        }\n\n        const row = rows[index];\n        const orientationId = get(row, 'id');\n        const userId = get(row, 'user_id');\n\n        get(this, 'ttapi')\n            .request('api/megaflex/personSync', {\n                method: 'POST',\n                data: { orientation_id: orientationId },\n            })\n            .then((response) => this._handlePersonSyncSuccess(response, orientationId, userId, rows, index))\n            .catch((error) => this._handlePersonSyncError(error, orientationId, userId, rows, index));\n    },\n\n    _handlePersonSyncSuccess(response, orientationId, userId, rows, index) {\n        if (!response.success) {\n            // Track failed sync\n            set(this, 'syncSuccess', false);\n            const failedDetails = get(this, 'syncFailedDetails') || [];\n            failedDetails.push({\n                orientation_id: orientationId,\n                user_id: userId,\n                reason_key: response.message_key,\n                error: response.data ? response.data.error : null\n            });\n            set(this, 'syncFailedDetails', failedDetails);\n        }\n        \n        this.incrementProgress();\n        \n        // Process next orientation\n        this.processMegaflexSync(rows, index + 1);\n    },\n\n    _handlePersonSyncError(error, orientationId, userId, rows, index) {\n        // Track error\n        set(this, 'syncSuccess', false);\n        const failedDetails = get(this, 'syncFailedDetails') || [];\n        failedDetails.push({\n            orientation_id: orientationId,\n            user_id: userId,\n            reason_key: 'megaflex.error.sync_exception',\n            error: error.message || JSON.stringify(error)\n        });\n        set(this, 'syncFailedDetails', failedDetails);\n        \n        this.incrementProgress();\n        \n        // Continue with next orientation despite error\n        this.processMegaflexSync(rows, index + 1);\n    },\n\n    _showMegaflexSyncSummary() {\n        const rowAmount = get(this, 'rowAmount');\n        const failedDetails = get(this, 'syncFailedDetails') || [];\n        const successCount = rowAmount - failedDetails.length;\n        const failedCount = failedDetails.length;\n\n        if (failedCount === 0) {\n            // All succeeded\n            const message = get(this, 'intl').t('megaflex.sync.complete', {\n                success: successCount,\n                skipped: 0,\n                failed: 0\n            });\n            get(this, 'notifications').success(message, {\n                autoClear: true,\n            });\n        } else if (failedCount === rowAmount) {\n            // All failed\n            const message = get(this, 'intl').t('megaflex.sync.all_failed', {\n                failed: failedCount\n            });\n            set(this, 'syncErrorMessage', message);\n            get(this, 'notifications').error(message, {\n                autoClear: true,\n                clearDuration: 10000\n            });\n        } else {\n            // Partial success\n            const message = get(this, 'intl').t('megaflex.sync.partial_success', {\n                success: successCount,\n                failed: failedCount\n            });\n            set(this, 'syncErrorMessage', message);\n            get(this, 'notifications').warning(message, {\n                autoClear: true,\n                clearDuration: 10000\n            });\n        }\n    },\n\n    incrementProgress() {\n        let count = get(this, 'count');\n        let rowAmount = get(this, 'rowAmount');\n\n        count++;\n        if (count === rowAmount) set(this, 'allDone', true);\n\n        set(this, 'count', count);\n        set(this, 'numericalProgress', Math.floor((count / rowAmount) * 100));\n    },\n});\n","import Route from '@ember/routing/route';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport RSVP from 'rsvp';\n\nexport default Route.extend({\n    Collector: service('collector-service'),\n    ttapi: service(),\n\n    queryParams: {\n        'ori_site': {\n            refreshModel: true,\n        },\n        'pass_end:pass_end': {\n            refreshModel: true,\n        },\n    },\n\n    model(params) {\n        // if pass_end qParam is given, pass it to the form-report component and set the pass_ends_range filter to the given value\n        // so that we can transition (from anomalies widget) to the report with the pass_ends_range filter set\n        set(this.controllerFor('orientations/passes'), 'qParams', params);\n        set(\n            this.controllerFor('orientations/passes'),\n            'pass_ends_range',\n            params['pass_end:pass_end'],\n        );\n\n        if (this.Collector.testNeeds(['products.rfid'])) {\n            return RSVP.hash({\n                timecleanProjects: get(this, 'ttapi')._get('/api/gateList/projects'),\n            });\n        }\n    },\n});\n","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\n/*\nThis component wants    \ntimecleanProjects = array of {id:project.id, name:project.name}\nshowTimecleanModal = true/false\n*/\nexport default Component.extend({\n    ttapi: service(),\n\n    init() {\n        this._super();\n        //if gatelist projects are found, automatically select the first to the dropdown\n        let firstProject = get(this, 'timecleanProjects.firstObject');\n        if (firstProject) set(this, 'project', firstProject.id);\n    },\n\n    actions: {\n        syncTimeclean(project = null) {\n            set(this, 'timecleanSynced', false);\n            if (!project) return;\n            set(this, 'loading', true);\n            set(this, 'error', false);\n            get(this, 'ttapi')\n                ._post('/api/gateList/updateGateList', { project: project })\n                .then(this.completeSyncing.bind(this))\n                .catch(this.handleError.bind(this));\n        },\n\n        close() {\n            set(this, 'showTimecleanModal', false);\n            set(this, 'timecleanSynced', false);\n            set(this, 'loading', false);\n            set(this, 'error', false);\n        },\n\n        projectChanged() {\n            set(this, 'timecleanSynced', false);\n            set(this, 'loading', false);\n            set(this, 'error', false);\n        },\n    },\n\n    completeSyncing() {\n        set(this, 'loading', false);\n        set(this, 'timecleanSynced', true);\n    },\n\n    handleError(e) {\n        set(this, 'loading', false);\n        if (e.message) {\n            set(this, 'error', e.message);\n        } else {\n            set(this, 'error', e);\n        }\n        set(this, 'timecleanSynced', false);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"OGuMg9xR\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showTimecleanModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"timeclean.sync.modal_header\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"timecleanSynced\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"timeclean.sync.description\\\"],null],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timeclean.sync.gate_projects\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"timecleanProjects\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"change\\\",\\\"classes\\\"],[[24,[\\\"timecleanProjects\\\"]],[24,[\\\"project\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"projectChanged\\\"],null],\\\"form-control\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timeclean.sync.no_devices\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"timecleanSynced\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"timeclean.sync.command_sent\\\"],null],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[22,\\\"error\\\"],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"timecleanSynced\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-lg btn-block btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-lg btn-block btn-success\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"syncTimeclean\\\",[24,[\\\"project\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-lg btn-block btn-info\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/passes/sync-timeclean-modal/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"WeryqAbD\",\"block\":\"{\\\"symbols\\\":[\\\"failedItem\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\",\\\"sendChange\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@localStorageKey\\\",\\\"@showColumns\\\",\\\"@showFilters\\\",\\\"@filter\\\",\\\"@blockFilters\\\",\\\"@filterByValues\\\",\\\"@skipCustomQueryParams\\\",\\\"@hideAdditionalFiltersButton\\\"],[\\\"orientation\\\",[23,0,[\\\"localStorageKey\\\"]],\\\"ori_user,ori_site,pass_start,pass_end,ori_employer,extra_info\\\",\\\"ori_user,ori_site,ori_employer\\\",[28,\\\"hash\\\",null,[[\\\"pass_start\\\",\\\"pass_end\\\"],[\\\"!null\\\",\\\"!null\\\"]]],true,[23,0,[\\\"qParams\\\"]],true,true]],{\\\"statements\\\":[[0,\\\"\\\\n      \\\"],[6,[23,2,[\\\"filters\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n          \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"filter-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"pass.filter.pass_valid_range\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"date-range-picker\\\",null,[[\\\"fieldName\\\",\\\"dateChange\\\",\\\"value\\\"],[\\\"pass_start:pass_end\\\",[28,\\\"action\\\",[[23,0,[]],[23,6,[]]],null],[24,[\\\"pass_valid_range\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"filter-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"pass.filter.pass_ends_range\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"date-range-picker\\\",null,[[\\\"fieldName\\\",\\\"dateChange\\\",\\\"value\\\"],[\\\"pass_end:pass_end\\\",[28,\\\"action\\\",[[23,0,[]],[23,6,[]]],null],[24,[\\\"pass_ends_range\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n    \\\"],[6,[23,2,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"rollock\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,5,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"syncRollock\\\",[23,3,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"rollock.sync\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"modules.megaflex\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,5,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"syncMegaflex\\\",[23,3,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"megaflex.sync\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.rfid\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,5,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"showTimecleanModal\\\"],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"timeclean.sync\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n      \\\"],[6,[23,3,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"edit\\\"]]],[0,\\\"\\\\n      \\\"],[6,[23,3,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"orientations/passes/sync-timeclean-modal\\\",null,[[\\\"timecleanProjects\\\",\\\"showTimecleanModal\\\"],[[24,[\\\"timecleanProjects\\\"]],[24,[\\\"showTimecleanModal\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSyncProgress\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[[24,[\\\"syncModalHeader\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"allDone\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[[24,[\\\"syncExecutingMessage\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"syncErrorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"megaflex.sync.error\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[22,\\\"syncErrorMessage\\\"],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"syncFailedDetails\\\"]],[24,[\\\"showMegaflexSyncDetails\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mt-3\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"panel-heading\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleErrorDetails\\\"]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"glyphicon glyphicon-chevron-\\\",[28,\\\"if\\\",[[24,[\\\"showErrorDetails\\\"]],\\\"down\\\",\\\"right\\\"],null]]]],[8],[9],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"t\\\",[\\\"megaflex.error_details\\\"],null],false],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge\\\"],[8],[1,[24,[\\\"syncFailedDetails\\\",\\\"length\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showErrorDetails\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-unstyled\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"limitedSyncFailedDetails\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"mb-2\\\"],[8],[0,\\\"\\\\n                                                \\\"],[7,\\\"strong\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.id\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[23,1,[\\\"orientation_id\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"user_id\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                                    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"strong\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.user\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[23,1,[\\\"user_id\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                                \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"strong\\\",true],[8],[1,[28,\\\"t\\\",[\\\"megaflex.error.reason\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"reason_key\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                                    \\\"],[1,[28,\\\"t\\\",[[23,1,[\\\"reason_key\\\"]]],[[\\\"person\\\",\\\"error\\\"],[[23,1,[\\\"user_id\\\"]],[23,1,[\\\"error\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                                    \\\"],[1,[28,\\\"t\\\",[\\\"megaflex.error.sync_exception\\\"],[[\\\"person\\\",\\\"error\\\"],[[23,1,[\\\"user_id\\\"]],[23,1,[\\\"error\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"remainingErrorCount\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[10,\\\"style\\\",\\\"padding: 10px 15px; border-top: 1px solid #ddd;\\\"],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"em\\\",true],[8],[1,[22,\\\"remainingErrorCount\\\"],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"megaflex.error.more_errors\\\"],null],false],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[10,\\\"aria-valuenow\\\",\\\"20\\\"],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[11,\\\"style\\\",[22,\\\"progressStyle\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[22,\\\"progress\\\"],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/passes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/reports/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationController;\n\nimport Ember from 'ember';\nimport { inject as service } from '@ember/service';\nimport { computed } from '@ember/object';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nOrientationController = GeneralReportController.extend({\n    Collector: service('collector-service'),\n\n    useAddonFormReport: computed(function() {\n        return this.Collector.testNeeds(['products.orientations_parent||products.workPermit||products.orientations_allow_employer_edit']);\n    }),\n\n    filters: Em.A([\n        Em.Object.create({\n            field: 'ori_site',\n        }),\n        Em.Object.create({\n            field: 'ori_date',\n        }),\n    ]),\n    projectObserver: function () {\n        return this.set('page', 1);\n    }.observes('project'),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideEdit: true,\n        }),\n        sortByColumn: 'ori_date',\n    }),\n    ori_date:\n        moment().subtract(2, 'year').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    queryParams: ['page', 'user', 'ori_site', 'ori_employer', 'ori_user', 'ori_date'],\n    filter: false,\n    search: false,\n    user: null,\n    ori_site: null,\n    project: null,\n    ori_employer: null,\n    ori_user: null,\n    //    status: 'all'\n    form: 'orientation',\n    //Could not get this from model for some reason\n    localStorageKey: 'Tt4.Orientation',\n    // These should probably go to general report controller and be loaded from settings api\n    showColumns: [\n        'ori_date',\n        'special_warning',\n        'ori_place',\n        'ori_user',\n        'ori_site',\n        'ori_employer',\n        'sign_emp_img',\n        'sign_per_img',\n    ],\n    cancelRoute: 'orientations.reports',\n    actions: {\n        closeEditModal: function () {\n            this.editRecord.rollbackAttributes();\n            return this.set('editRecord', null);\n        },\n    },\n});\n\nexport default OrientationController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/reports/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nOrientationRoute = GeneralReportRoute.extend({\n    form: 'orientation',\n    queryParams: {\n        ori_date: {\n            refreshModel: true,\n            replace: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        ori_site: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        //params.ori_date = params.date\n        //delete params.date\n        if (params.project) {\n            if (params.project !== 'null') {\n                params.ori_site = params.project;\n            }\n        }\n        delete params.project;\n        params.sideload = true;\n        return this.store.query('orientation', params);\n    },\n});\n\nexport default OrientationRoute;\n","export default Ember.HTMLBars.template({\"id\":\"kn3T89bT\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"useAddonFormReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showFilters\\\",\\\"@filterByValues\\\"],[\\\"orientation\\\",\\\"ori_date,ori_site,ori_user,ori_employer\\\",[23,0,[\\\"qParams\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"editRecord\\\"]]],null]],null],\\\"remove,history,overview,edit\\\"]]],[0,\\\"\\\\n\\\\n            \\\"],[6,[23,3,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"formatter\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"formatter\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"editRecord\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.add_orientation\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"collector/form-add/forms/orientation\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\",\\\"@showSaved\\\"],[\\\"orientation\\\",[23,0,[\\\"editRecord\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null],true]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/reports/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nOrientationsRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default OrientationsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"ZV87ncKr\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/withoutori/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsWithoutoriController;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nOrientationsWithoutoriController = Ember.Controller.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    dialogs: Em.inject.service(),\n    store: Em.inject.service(),\n    flags: Ember.inject.service(),\n    addController: Ember.inject.controller('orientations/add'),\n    columns: ['project', 'user'],\n    rowsPerPage: 25,\n    pageCount: Ember.computed('model.count', function () {\n        return Math.ceil(this.get('model.count') / this.get('rowsPerPage'));\n    }),\n    page: 1,\n    form: 'orientation',\n    daysBack: Em.computed(function () {\n        return this.flags.test(\"users-without-ori-period\") ?? 30;\n    }),\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'ori_site',\n                form: 'orientation',\n                value: this.get('ori_site'),\n            }),\n            Em.Object.create({\n                field: 'employer',\n                form: 'user',\n                value: this.get('employer'),\n            }),\n        ]);\n    }),\n    queryParams: ['ori_site', 'employer', 'page'],\n    ori_site: null,\n    employer: null,\n    // get translation for every column\n    translated_columns: Em.computed('columns', function () {\n        var c, columns, intl, translated_columns;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        columns = this.get('columns');\n        translated_columns = [];\n        $.each(columns, (key, item) => {\n            return translated_columns.push(intl.t('report.userswithoutori.' + item));\n        });\n        return translated_columns;\n    }),\n    message: Em.computed('model', function () {\n        if (this.get('model.error') === 'too_many_users') {\n            return this.get('intl').t('orientations.message_too_many_users');\n        }\n    }),\n    data: Em.computed('model', function () {\n        var columns, data, formatted_data, ids;\n        data = this.get('model.users');\n        if (!data) {\n            return null;\n        }\n        ids = [];\n        columns = this.get('columns');\n        formatted_data = Em.A([]);\n        data.forEach((unformatted_row) => {\n            var row;\n            row = Ember.Object.create();\n            if (unformatted_row.id) {\n                row.id = unformatted_row.id;\n            }\n            row.id = unformatted_row['projectid'] + '_' + unformatted_row['userid'];\n            $.each(columns, (key, column) => {\n                var cell;\n                cell = unformatted_row[column];\n                if (!Number.isInteger(cell)) {\n                    return (row[column] = new Ember.String.htmlSafe(cell));\n                } else {\n                    return (row[column] = cell);\n                }\n            });\n            return formatted_data.pushObjects([row]);\n        });\n        return formatted_data;\n    }),\n    checkedActions: Em.computed(function () {\n        return [\n            {\n                name: 'orientateUsers',\n            },\n        ];\n    }),\n    actions: {\n        catchActions: function (action, row) {\n            var addController,\n                data,\n                i,\n                ids_array,\n                lastprojectid,\n                len,\n                projectid,\n                promise,\n                promises,\n                tmp_rows,\n                userObjs,\n                userids;\n            if (action === 'checkedRowsAction') {\n                userids = [];\n                userObjs = [];\n                tmp_rows = row.rows;\n                addController = this.get('addController');\n                lastprojectid = '';\n                projectid = tmp_rows[0].id.split('_')[0];\n                promises = [];\n                for (i = 0, len = tmp_rows.length; i < len; i++) {\n                    data = tmp_rows[i];\n                    ids_array = data.id.split('_'); // projectid, userid\n                    userids.push(ids_array[1]);\n                    promise = this.get('store').findRecord('user', ids_array[1]);\n                    promises.push(promise);\n                    promise.then((user) => {\n                        return userObjs.push(user);\n                    });\n                    if (lastprojectid !== '' && lastprojectid !== ids_array[0]) {\n                        this.get('dialogs').alert(\n                            this.get('intl').t('orientations.warning_multiple_projects'),\n                        );\n                        return;\n                    }\n                    lastprojectid = ids_array[0];\n                }\n                Promise.all(promises).then(() => {\n                    return this.get('store')\n                        .findRecord('project', projectid)\n                        .then((project) => {\n                            addController.set('users', userids);\n                            addController.set('userData', userObjs);\n                            this.set('session.currentUser.currentMySite', project);\n                            // support new orientation user selector\n                            addController.set('projectRecord', project);\n                            addController.set('userRecords', userObjs);\n                            return this.transitionToRoute('orientations.add');\n                        });\n                });\n            }\n        },\n        filterChanged: function (value, fieldName) {\n            this.set('page', 1);\n            if (Em.isEmpty(value)) {\n                return this.set(fieldName, null);\n            } else {\n                return this.set(fieldName, value);\n            }\n        },\n    },\n});\n\nexport default OrientationsWithoutoriController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/withoutori/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsWithoutoriRoute;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nOrientationsWithoutoriRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    ttapi: Ember.inject.service(),\n    queryParams: {\n        ori_site: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        if (Em.isEmpty(params.ori_site)) {\n            delete params.ori_site;\n        }\n        if (Em.isEmpty(params.employer)) {\n            delete params.employer;\n        }\n        params.limit = 25;\n        params.offset = 0;\n        if (params.page) {\n            params.offset = params.page * params.limit - params.limit;\n            delete params.page;\n        }\n        return this.get('ttapi').request('/orientations/users_without_ori', {\n            type: 'GET',\n            data: params,\n        });\n    },\n});\n\nexport default OrientationsWithoutoriRoute;\n","export default Ember.HTMLBars.template({\"id\":\"OXuDkM2y\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.orientations.without_ori.title\\\"],[[\\\"days\\\"],[[24,[\\\"daysBack\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"message\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n   \\\"],[7,\\\"h4\\\",true],[8],[1,[22,\\\"message\\\"],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"ids\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"order\\\",\\\"rowAction\\\",\\\"checkable\\\",\\\"checkedActions\\\"],[[24,[\\\"columns\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"data\\\"]],[24,[\\\"ids\\\"]],[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",[24,[\\\"order\\\"]],\\\"showRow\\\",true,[24,[\\\"checkedActions\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"rowsPerPage\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/withoutori/template.hbs\"}});","/* eslint-disable ember/no-observers */\nimport { alias } from '@ember/object/computed';\nimport Controller, { inject as controller } from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { computed, observer, get, set } from '@ember/object';\n\nconst PassAddController = Controller.extend({\n    saved: controller(),\n\n    Collector: service('collector-service'),\n    intl: service(),\n\n    chooseUser: true,\n    no_orientation: false,\n    showNext: false,\n    no_orientation_error: false,\n\n    pass_start_error: false,\n    pass_end_error: false,\n\n    save_disabled: false,\n\n    content: alias('model'),\n\n    oriUserField: computed(function () {\n        return this.Collector.formField('orientation', 'ori_user');\n    }),\n    oriProjectField: computed(function () {\n        return this.Collector.formField('orientation', 'ori_site');\n    }),\n\n    overlap: observer('user', 'ori_site', function () {\n        if (this.user && this.ori_site) {\n            return this.store\n                .query('orientation', { ori_site: this.ori_site.id, ori_user: this.user.id })\n                .then(this.handleData.bind(this));\n        }\n    }),\n\n    actions: {\n        continue() {\n            return set(this, 'chooseUser', false);\n        },\n        updateDisabledButton() {\n            const pass_start = get(this, 'content.pass_start');\n            const pass_end = get(this, 'content.pass_end');\n            if (moment(pass_start).isValid() && moment(pass_end).isValid()) {\n                set(this, 'save_disabled', false);\n            } else {\n                set(this, 'save_disabled', true);\n            }\n        },\n        startDateChanged: function (pass_start) {\n            if (!moment(pass_start).isValid()) {\n               set(this, `pass_start_error`, true);\n               set(this, \"save_disabled\", true);\n            } else {\n                set(this, `pass_start_error`, false);\n            }\n            this.send('updateDisabledButton');\n        },\n        endDateChanged: function (pass_end) {\n            if (!moment(pass_end).isValid()) {\n               set(this, `pass_end_error`, true);\n            } else {\n                set(this, `pass_end_error`, false);\n            }\n            this.send('updateDisabledButton');\n        },\n        async save() {\n            const row = await this.content.save();\n\n            set(this, 'no_orientation', false);\n            set(this, 'content', null);\n            set(this, 'showNext', false);\n            set(this, 'chooseUser', true);\n            set(this, 'user', null);\n            set(this, 'saved.model', row);\n            set(this, 'saved.afterSave', 'orientations.passes');\n\n            return this.transitionToRoute('saved');\n        },\n    },\n\n    async handleData(orientation) {\n        if (orientation.length === 0) {\n            set(this, 'no_orientation_error', this.intl.t('orientations.no_orientation_error'));\n            return set(this, 'showNext', false);\n        } else {\n            set(this, 'content', orientation.firstObject);\n            set(this, 'no_orientation_error', false);\n            set(this, 'showNext', true);\n            const oriProjId = orientation.firstObject.ori_site.id;\n            if (this.Collector.testNeeds(['employer', 'urakkaraportointi'])) {\n                const contracts = await this.store.query('urakkaraportointi', {\n                    contract_employer: get(this, 'user.employer.id'),\n                });\n                const contractEndDateFound = contracts\n                    .sortBy('contract_month')\n                    .reverseObjects()\n                    .any((contract) => {\n                        const contrProjId = get(contract, 'contract_project.id');\n                        if (contrProjId === oriProjId) {\n                            set(this, 'content.pass_start', moment().format('YYYY-MM-DD'));\n                            set(this, 'content.pass_end', get(contract, 'contract_end_date'));\n                        }\n                        return contrProjId === oriProjId;\n                    });\n                if (!contractEndDateFound) {\n                    set(this, 'content.pass_start', moment().format('YYYY-MM-DD'));\n                    return set(\n                        this,\n                        'content.pass_end',\n                        moment().add(1, 'months').format('YYYY-MM-DD'),\n                    );\n                }\n            } else {\n                set(this, 'content.pass_start', moment().format('YYYY-MM-DD'));\n                return set(\n                    this,\n                    'content.pass_end',\n                    moment().add(1, 'months').format('YYYY-MM-DD'),\n                );\n            }\n        }\n    },\n});\nexport default PassAddController;\n","import Route from '@ember/routing/route';\n\nconst PassAddRoute = Route.extend();\n\nexport default PassAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"emPmTw00\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.pass\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"orientations.passes\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"chooseUser\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6 col-lg-4 col-lg-offset-4 col-md-offset-3 col-sm-offset-2\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.site\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"component\\\",[\\\"collector/fields/power-database\\\"],[[\\\"field\\\",\\\"onchange\\\"],[[24,[\\\"oriProjectField\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"ori_site\\\"]]],null]],null]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6 col-lg-4 col-lg-offset-4 col-md-offset-3 col-sm-offset-2\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientation.ori_user\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"component\\\",[\\\"collector/fields/power-database\\\"],[[\\\"field\\\",\\\"onchange\\\"],[[24,[\\\"oriUserField\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"user\\\"]]],null]],null]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"no_orientation_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[22,\\\"no_orientation_error\\\"],false],[7,\\\"br\\\",true],[8],[9],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"orientations.add\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"orientations.add_orientation\\\"],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showNext\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"continue\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-primary link\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"orientations.pass_dates\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"pass_start\\\"],[11,\\\"style\\\",[28,\\\"if\\\",[[24,[\\\"pass_start_error\\\"]],\\\"color: red;\\\",\\\"\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"orientations.pass_start\\\"],null],false],[9],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"mandatoryArr\\\",\\\"pass_start\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"name\\\",\\\"startDate\\\",\\\"change\\\"],[\\\"form-control input-lg\\\",[24,[\\\"content\\\",\\\"pass_start\\\"]],\\\"pass_start\\\",[24,[\\\"passStart\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"startDateChanged\\\",[24,[\\\"content\\\",\\\"pass_start\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"pass_start_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger mt-4\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"validation.error.date_correct\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"pass_end\\\"],[11,\\\"style\\\",[28,\\\"if\\\",[[24,[\\\"pass_end_error\\\"]],\\\"color: red;\\\",\\\"\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"orientations.pass_end\\\"],null],false],[9],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"mandatoryArr\\\",\\\"pass_end\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"startDate\\\",\\\"change\\\"],[\\\"form-control input-lg\\\",\\\"pass_end\\\",[24,[\\\"content\\\",\\\"pass_end\\\"]],[24,[\\\"passStart\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"endDateChanged\\\",[24,[\\\"content\\\",\\\"pass_end\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"pass_end_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger mt-4\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"validation.error.date_correct\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"extra_info\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.orientation.extra_info\\\"],null],false],[9],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"mandatoryArr\\\",\\\"extra_info\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\"],[\\\"3\\\",\\\"form-control input-lg\\\",\\\"extra_info\\\",[24,[\\\"content\\\",\\\"extra_info\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[12,\\\"disabled\\\",[22,\\\"save_disabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/pass/add/template.hbs\"}});","import { alias } from '@ember/object/computed';\nimport Controller from '@ember/controller';\n\nconst PassIndexController = Controller.extend({\n    content: alias('model'),\n});\n\nexport default PassIndexController;\n","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst PassIndexRoute = Route.extend(AuthenticatedRouteMixin);\n\nexport default PassIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"DtK76DsM\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/pass/index/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst PassRoute = Route.extend(AuthenticatedRouteMixin);\n\nexport default PassRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/password/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PasswordIndexController;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nimport initController from '../../../mixins/init-controller';\n\nPasswordIndexController = Ember.Controller.extend(initController, {\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    localStorageWrapper: Ember.inject.service(),\n    errorMessage: null,\n    loadingMessage: null,\n    okMessage: null,\n    init_functions: function () {\n        var ls, username;\n        this._super();\n        ls = this.get('localStorageWrapper');\n        username = ls.getSavedUsername();\n        return this.set('savedUsername', username);\n    },\n    actions: {\n        cancel: function () {\n            return this.transitionToRoute('login');\n        },\n        sendLink: function (type) {\n            var intl, req, self, username;\n            intl = this.get('intl');\n            this.set('errorMessage', null);\n            this.set('loadingMessage', intl.t('password.sending_recovery_link'));\n            self = this;\n            username = this.get('savedUsername');\n            req = this.Collector.ttapi({\n                url: 'password_recovery/send',\n                data: {\n                    username: username,\n                    type: type,\n                    language: moment.locale(),\n                    callback_url: config.APP.password_recovery_callbackurl,\n                },\n                method: 'post',\n            });\n            return req.then(\n                function (resp) {\n                    var message;\n                    self.set('loadingMessage', null);\n                    if (resp.sms_sent) {\n                        message = intl.t('password.link_sent_to_number');\n                        self.set('okMessage', message);\n                    }\n                    if (resp.email_sent) {\n                        message = intl.t('password.link_sent_to_email');\n                        return self.set('okMessage', message);\n                    }\n                },\n                (reason) => {\n                    var message;\n                    message = intl.t('password.link_sending_failed');\n                    return this.set('errorMessage', message);\n                },\n            );\n        },\n    },\n});\n\nexport default PasswordIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/password/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PasswordIndexRoute;\n\nimport Ember from 'ember';\n\nimport initRoute from '../../../mixins/init-route';\n\nPasswordIndexRoute = Ember.Route.extend(initRoute);\n\nexport default PasswordIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Otk8BFvF\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"password-recovery\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container password\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"popup\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"password_header\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/brand/first_time_loader_logo.svg\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"header.path.login\\\"],null]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n            \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-signin\\\"],[10,\\\"role\\\",\\\"form\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"form-signin-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"password.header\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[1,[22,\\\"errorMessage\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loadingMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[22,\\\"loadingMessage\\\"],false],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress progress-striped active\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[10,\\\"aria-valuenow\\\",\\\"100\\\"],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[10,\\\"style\\\",\\\"width: 100%\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"okMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[22,\\\"okMessage\\\"],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"loadingMessage\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"okMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner-addon left-addon\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-user\\\"],[8],[9],[0,\\\"\\\\n\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"id\\\",\\\"value\\\",\\\"class\\\",\\\"placeholder\\\",\\\"autocapitalize\\\"],[\\\"identification\\\",[24,[\\\"savedUsername\\\"]],\\\"form-control add-fields\\\",[28,\\\"t\\\",[\\\"login.username\\\"],null],\\\"off\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"okMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-lg btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendLink\\\",\\\"email\\\"]],[8],[1,[28,\\\"t\\\",[\\\"password.get_new_password_email\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-lg btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendLink\\\",\\\"sms\\\"]],[8],[1,[28,\\\"t\\\",[\\\"password.get_new_password_sms\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-lg btn-warning btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"password.back_to_login\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\" \\\"],[2,\\\" /container \\\"],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/password/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/password/recovery/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PasswordRecoveryController;\n\nimport Ember from 'ember';\n\nPasswordRecoveryController = Ember.Controller.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    queryParams: ['a', 'u', 'c', 'h'],\n    disabled: true,\n    showPasswordChange: false,\n    paramObs: Ember.observer('a', 'u', 'c', 'h', function () {\n        return Ember.run.once(this, this.checkHash);\n    }),\n    checkHash: function () {\n        var intl, req, self;\n        self = this;\n        intl = this.get('intl');\n        req = this.Collector.ttapi({\n            url: 'password_recovery/checkParams',\n            data: {\n                a: this.get('a'),\n                u: this.get('u'),\n                c: this.get('c'),\n                h: this.get('h'),\n            },\n            method: 'post',\n        });\n        return req.then(\n            function (resp) {\n                return self.set('showPasswordChange', true);\n            },\n            function (reason) {\n                return self.set(\n                    'errorMessage',\n                    intl.t('password.recovery.' + reason.payload.error),\n                );\n            },\n        );\n    },\n    passwordObs: Ember.observer('new_password', function () {\n        if (this.get('new_password').length < 8) {\n            this.set('showLengthError', true);\n            return this.set('disabled', true);\n        } else {\n            this.set('showLengthError', false);\n            return this.set('disabled', false);\n        }\n    }),\n    actions: {\n        changePassword: function () {\n            var intl, req, self;\n            intl = this.get('intl');\n            this.set('loadingMessage', intl.t('password.recovery.changing_password'));\n            this.set('showPasswordChange', false);\n            self = this;\n            req = this.Collector.ttapi({\n                url: 'password_recovery/setPassword',\n                data: {\n                    a: this.get('a'),\n                    u: this.get('u'),\n                    c: this.get('c'),\n                    h: this.get('h'),\n                    password: this.get('new_password'),\n                },\n                method: 'post',\n            });\n            return req.then(\n                function (resp) {\n                    self.set('okMessage', intl.t('password.recovery.password_changed'));\n                    return self.set('loadingMessage', null);\n                },\n                function (reason) {\n                    self.set(\n                        'errorMessage',\n                        intl.t('password.recovery.' + reason.responseJSON.error),\n                    );\n                    return self.set('loadingMessage', null);\n                },\n            );\n        },\n        cancel: function () {\n            return this.transitionToRoute('login');\n        },\n    },\n});\n\nexport default PasswordRecoveryController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/password/recovery/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PasswordRecoveryRoute;\n\nimport Ember from 'ember';\n\nPasswordRecoveryRoute = Ember.Route.extend();\n\nexport default PasswordRecoveryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"lzpY+MoK\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"password-recovery\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container password\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"popup\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"password_header\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/brand/login_logo.png\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"header.path.login\\\"],null]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n            \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-signin\\\"],[10,\\\"role\\\",\\\"form\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"form-signin-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"password.recovery.header\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[1,[22,\\\"errorMessage\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loadingMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[22,\\\"loadingMessage\\\"],false],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress progress-striped active\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[10,\\\"aria-valuenow\\\",\\\"100\\\"],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[10,\\\"style\\\",\\\"width: 100%\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"okMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[22,\\\"okMessage\\\"],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showPasswordChange\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner-addon left-addon\\\"],[8],[0,\\\"\\\\n\\\\n                        \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-lock\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"id\\\",\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"placeholder\\\",\\\"autocapitalize\\\"],[\\\"password\\\",\\\"password\\\",[24,[\\\"new_password\\\"]],\\\"form-control add-fields\\\",[28,\\\"t\\\",[\\\"password.recovery.new_password\\\"],null],\\\"off\\\"]]],false],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLengthError\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right text-danger\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-exclamation-sign\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"password.recovery.too_short_password\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"disabled\\\",[22,\\\"disabled\\\"]],[12,\\\"class\\\",\\\"btn btn-lg btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changePassword\\\"]],[8],[1,[28,\\\"t\\\",[\\\"password.recovery.change\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-lg btn-warning btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"password.back_to_login\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\" \\\"],[2,\\\" /container \\\"],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/password/recovery/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/password/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PasswordRoute;\n\nimport Ember from 'ember';\n\nPasswordRoute = Ember.Route.extend();\n\nexport default PasswordRoute;\n","export default Ember.HTMLBars.template({\"id\":\"FwnWcisE\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/password/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/accident/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceAccidentController;\n\nimport Ember from 'ember';\n\nPresenceAccidentController = Ember.Controller.extend({\n    Collector: Em.inject.service('collector-service'),\n    showTable: Ember.computed('filterValues', function () {\n        var filterValues, project;\n        filterValues = this.get('filterValues');\n        if (!filterValues) {\n            return false;\n        }\n        project = filterValues.findBy('name', 'project');\n        return !Ember.isEmpty(project.value);\n    }),\n    path: 'presence',\n    rows: 0,\n    getRows: Em.observer('filterValues', function () {\n        var c, project, promise, query, query_str_arr, url;\n        url = this.get('path');\n        query = this.get('filterValues');\n        project = query.findBy('name', 'project');\n        if (Ember.isEmpty(project.value)) {\n            return;\n        }\n        if (query) {\n            query_str_arr = [];\n            $.each(query, (key, item) => {\n                if (!item.value) {\n                    return;\n                }\n                return query_str_arr.push(item.name + '=' + item.value);\n            });\n            if (query_str_arr.length === 0) {\n                this.set('rows', 0);\n            }\n            url += '?' + query_str_arr.join('&');\n        }\n        url += '&limit=1&out=(empty)';\n        c = this.get('Collector');\n        promise = c.ttapi({\n            url: url,\n        });\n        return promise.then((data) => {\n            return this.set('rows', data.count);\n        });\n    }),\n});\n\nexport default PresenceAccidentController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/accident/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceAccidentRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nPresenceAccidentRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default PresenceAccidentRoute;\n","export default Ember.HTMLBars.template({\"id\":\"p3uxP2uY\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/filters-comp\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"values\\\"],[\\\"project\\\",\\\"presence\\\",[24,[\\\"filterValues\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showTable\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"presence.accident.on_site\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"blockquote\\\",true],[8],[7,\\\"h1\\\",true],[8],[1,[22,\\\"rows\\\"],false],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[1,[28,\\\"api-report\\\",null,[[\\\"filters\\\",\\\"path\\\",\\\"translationPrefix\\\",\\\"pdfSubHeader\\\"],[[24,[\\\"filterValues\\\"]],\\\"accident\\\",\\\"report.accident\\\",\\\"project\\\"]]],false],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/accident/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceAddController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\nimport { get } from '@ember/object';\n\nimport collector from '../../../classes/collector';\n\nimport $ from 'jquery';\n\nimport { captureException } from '@sentry/browser';\n\nPresenceAddController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    location: Ember.computed(function () {\n        return collector.getFormObject('presence.location');\n    }),\n    projectObs: function () {\n        return this.set('selectedProject', this.get('model.project'));\n    }.observes('model.project.name'),\n    projectField: Em.computed('model', function () {\n        var field;\n        field = this.get('Collector').fieldArray('presence', ['project'])[0];\n        field.value = this.get('model.project');\n        field.filterOptions = {\n            presence_project: 'on',\n        };\n        return field;\n    }),\n    mySiteSelected: Em.computed.and('session.currentUser.currentMySite', 'outActive'),\n    setCurrentMySite: Em.on(\n        'init',\n        Em.observer('session.currentUser.currentMySite', 'outActive', 'model', function () {\n            var site;\n            if (!this.get('outActive') || !this.get('model')) {\n                return;\n            }\n            site = this.get('session.currentUser.currentMySite');\n            if (site) {\n                return this.set('model.project', site);\n            }\n        }),\n    ),\n    projectDisabled: Ember.computed('inActive', function () {\n        if (this.get('inActive')) {\n            return 'disabled';\n        } else {\n            return false;\n        }\n    }),\n    force_location: Ember.computed(function () {\n        if (\n            collector.getFormObject('project.force_location') &&\n            this.get('session.currentUser.userlevel') !== '5'\n        ) {\n            return true;\n        }\n    }),\n    custom_projects: Em.A([]),\n    inoutLoading: false,\n    getIn: function (row) {\n        var self;\n        self = this;\n        if (!this.get('inActive')) {\n            return this.get('store')\n                .findRecord('project', this.get('selectedProject.id'), {\n                    reload: true,\n                })\n                .then((project) => {\n                    if (!project.get('presence_project')) {\n                        this.get('dialogs').alert(this.get('intl').t('presence.not_an_pl_project'));\n                        this.set('inActive', false);\n                        this.set('outActive', true);\n                        this.set('inoutLoading', false);\n                        return;\n                    }\n                    row.set('project', project);\n                    return this.saveRow(row, 'in').then(function () {\n                        self.set('inActive', true);\n                        return self.set('outActive', false);\n                    });\n                });\n        }\n    },\n    getOut: function (row) {\n        var self;\n        self = this;\n        if (!this.get('outActive')) {\n            return this.saveRow(row, 'out').then(function () {\n                self.set('inActive', false);\n                return self.set('outActive', true);\n            });\n        }\n    },\n    saveRow: function (row, status) {\n        var self;\n        self = this;\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            this.set('apiError', null);\n            if (status === 'out') {\n                row.set('in', void 0);\n                row.set('out', moment().format('HH:mm'));\n            } else if (status === 'in') {\n                row.set('in', moment().format('HH:mm'));\n                row.set('date', moment().format('YYYY-MM-DD'));\n            } else if (status === 'error') {\n                //                row.set 'out', moment().format('HH:mm')\n                row.set('in', void 0);\n                row.set('status', 'error_out');\n            }\n            return row.save().then(\n                function () {\n                    var newrow, store;\n                    if (status === 'out' || status === 'error') {\n                        store = self.get('store');\n                        newrow = store.createRecord('presence', {\n                            date: moment().format('YYYY-MM-DD'),\n                            project: self.get('selectedProject'),\n                            in: moment().format('HH:mm'),\n                        });\n                        self.set('model', newrow);\n                    }\n                    self.set('inoutLoading', false);\n                    return resolve();\n                },\n                (error) => {\n                    captureException(error);\n                    const errorCode = get(error, 'errors.0.errorMeta.message');\n                    let message = JSON.stringify(error.errors != null ? error.errors : error);\n\n                    if (errorCode === 'not found') {\n                        message = this.get('intl').t('validation.error.id06_not_found');\n                    } else if (errorCode) {\n                        const translationKey = `user.action.checkid06.reason_${errorCode}`;\n                        if (this.get('intl').exists(translationKey))\n                            message = this.get('intl').t(translationKey);\n                    }\n\n                    this.set('apiError', message);\n\n                    self.set('inoutLoading', false);\n                    return reject(error);\n                },\n            );\n        });\n    },\n    //time out counter 10 to 0\n    seconds: 0,\n    updateSecs: function () {\n        if (this.get('seconds') === 0) {\n            return;\n        }\n        return Ember.run.later(() => {\n            this.decrementProperty('seconds');\n            return this.updateSecs();\n        }, 1000);\n    },\n    //presence over 16h\n    checkPresenceOver16h: function () {\n        var diff, in_datetime, now, self;\n        //only when checking out\n        if (this.get('outActive')) {\n            return;\n        }\n        self = this;\n        now = moment();\n        in_datetime = moment(this.get('model.date') + ' ' + this.get('model.in'));\n        diff = now.diff(in_datetime, 'hours');\n        this.set('hoursActive', diff);\n        if (diff >= 16) {\n            //show alert\n            return this.get('dialogs')\n                .alert(this.get('intl').t('presence.over16h_automatic_checkout'))\n                .then((con) => {\n                    var row;\n                    row = this.get('model');\n                    return this.saveRow(row, 'error').then(function () {\n                        self.set('inActive', false);\n                        self.set('outActive', true);\n                        return self.set('hoursActive', null);\n                    });\n                });\n        }\n    },\n    showEndLocation: Em.computed(function () {\n        if (collector.getFormObject('presence.end_location')) {\n            return true;\n        }\n    }),\n    actions: {\n        changeValue: function (value, fieldName) {\n            var self, store;\n            self = this;\n            store = this.get('store');\n            return store.find('project', value).then(function (project) {\n                self.set('selectedProject', project);\n                return self.set('model.project', project);\n            });\n        },\n        setProject: function (value) {\n            return this.set('selectedProject', value);\n        },\n        worksitePresence: function (value) {\n            var row;\n            // If button is timed out we just return and do nothing\n            if (this.get('timeout')) {\n                //animate on click when timeout\n                $('.big-icon').addClass('anim-no-project');\n                setTimeout(function () {\n                    return $('.big-icon').removeClass('anim-no-project');\n                }, 500);\n                return;\n            }\n            row = this.get('model');\n            if (this.get('selectedProject')) {\n                //set loading indicator\n                this.set('inoutLoading', true);\n                // Set button to timed out so we can't spamclick it\n                this.set('timeout', true);\n                this.set('seconds', 5);\n                this.updateSecs();\n                // Remove the timeout after x amount of time\n                Em.run.later(\n                    this,\n                    function () {\n                        return this.set('timeout', false);\n                    },\n                    5000,\n                );\n                // Add animation class\n                $('.big-icon').addClass('anim-check-in');\n                // Remove the animation class after it has run\n                Em.run.later(\n                    this,\n                    function () {\n                        return $('.big-icon').removeClass('anim-check-in');\n                    },\n                    500,\n                );\n                // Stamp in or out just before the animation has finished\n                return Em.run.later(\n                    this,\n                    function () {\n                        // started new presence\n                        if (value === 'in') {\n                            this.getIn(row);\n                        }\n                        // ended presence\n                        if (value === 'out') {\n                            return this.getOut(row);\n                        }\n                    },\n                    300,\n                );\n            } else {\n                //animate on click when no project (should be done with liquidfire)\n                $('.big-icon').addClass('anim-no-project');\n                return setTimeout(function () {\n                    return $('.big-icon').removeClass('anim-no-project');\n                }, 500);\n            }\n        },\n    },\n});\n\nexport default PresenceAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nPresenceAddRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    gui: Ember.inject.service(),\n    modelName: 'presence',\n    controllerName: 'presences.add',\n    savedRoute: 'presences.saved',\n    beforeModel: function () {\n        this._super(...arguments);\n        return this.set('gui.hideMobileHeader', true);\n    },\n    model: function (params) {\n        var date_range;\n        params.sideload = true;\n        //get presences from today and yesterday\n        date_range =\n            moment().subtract(1, 'weeks').format('YYYY-MM-DD') +\n            '_' +\n            moment().format('YYYY-MM-DD');\n        return this.store\n            .query('presence', {\n                date: date_range,\n                user: 'self',\n                sideload: true,\n                out: '(empty)',\n                status: 'open',\n            })\n            .then((data) => {\n                var firstObject;\n                firstObject = data.get('firstObject');\n                this.set('currentPresence', firstObject != null);\n                if (firstObject) {\n                    return firstObject;\n                } else {\n                    return this.store.createRecord('presence', {\n                        date: moment().format('YYYY-MM-DD'),\n                    });\n                }\n            });\n    },\n    setupController: function (controller, model) {\n        if (this.get('currentPresence')) {\n            controller.set('inActive', true);\n            controller.set('outActive', false);\n        } else {\n            controller.set('outActive', true);\n            controller.set('inActive', false);\n        }\n        controller.set('model', model);\n        //check if presence is over 16h old\n        return controller.checkPresenceOver16h();\n    },\n    resetController: function (controller, isExiting, transition) {\n        this._super.apply(this, arguments);\n        if (isExiting) {\n            return this.set('gui.hideMobileHeader', false);\n        }\n    },\n});\n\nexport default PresenceAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"8nhnTGMb\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.presence\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"presences.index\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6 col-lg-4 col-lg-offset-4 col-md-offset-3 col-sm-offset-2\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"presence-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"presence.worksite\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"mySiteSelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"presence-text\\\"],[8],[7,\\\"b\\\",true],[8],[1,[24,[\\\"session\\\",\\\"currentUser\\\",\\\"company_info\\\",\\\"company_name\\\"]],false],[0,\\\" - \\\"],[1,[24,[\\\"selectedProject\\\",\\\"name\\\"]],false],[9],[0,\\\" \\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"my-sites\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.change\\\"],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"projectDisabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"presence-text\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[24,[\\\"selectedProject\\\"]],\\\"project\\\",\\\"presence\\\"]]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"change\\\"],[[24,[\\\"projectField\\\"]],\\\"form-control add-fields\\\",\\\"setProject\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selectedProject\\\",\\\"help\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-info-sign\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[24,[\\\"selectedProject\\\",\\\"help\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"presence-icons text-center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"outActive\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"in\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"selectedProject\\\"]],\\\"active\\\"],null],\\\" big-icon circle-background \\\",[28,\\\"if\\\",[[24,[\\\"timeout\\\"]],\\\"timeout\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"worksitePresence\\\",\\\"in\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"inoutLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"load-text\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"presence.loading\\\"],null],false],[0,\\\"\\\\n                                \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"presence.check\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"presence.in\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"timeout\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[22,\\\"seconds\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"out\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"big-icon circle-background \\\",[28,\\\"if\\\",[[24,[\\\"timeout\\\"]],\\\"timeout\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"worksitePresence\\\",\\\"out\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"inoutLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"load-text\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"presence.loading\\\"],null],false],[0,\\\"\\\\n                                \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"presence.check\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"presence.out\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"timeout\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[22,\\\"seconds\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"presence-text\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selectedProject\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"inActive\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"presence.currently_on_worksite\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"outActive\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"presence.currently_not_on_worksite\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"location\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6 col-lg-4 col-lg-offset-4 col-md-offset-3 col-sm-offset-2\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group text-center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"outActive\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showEndLocation\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"gps-location\\\",null,[[\\\"value\\\",\\\"model\\\"],[[24,[\\\"model\\\",\\\"end_location\\\"]],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"gps-location\\\",null,[[\\\"value\\\",\\\"model\\\"],[[24,[\\\"model\\\",\\\"location\\\"]],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"gps-location\\\",null,[[\\\"value\\\",\\\"model\\\"],[[24,[\\\"model\\\",\\\"location\\\"]],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"apiError\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.error_prefix\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[8],[1,[22,\\\"apiError\\\"],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/add/template.hbs\"}});","import OrientationsAviController from '../../timetracker/avi/controller';\nimport EmberObject from '@ember/object';\nimport { A } from '@ember/array';\nimport { alias } from '@ember/object/computed';\n\nexport default OrientationsAviController.extend({\n    notinuse: alias('model'),\n    filters: A([\n        EmberObject.create({ field: 'project', form: 'presence', singleselect: 'true' }),\n        EmberObject.create({ field: 'homecountry', form: 'user', type: 'dropdown_country' }),\n    ]),\n});\n","import OrientationsAviRoute from '../../timetracker/avi/route';\n\nexport default OrientationsAviRoute.extend({\n    templateName: 'timetracker.avi',\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresencesEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nPresencesEditController = GeneralAddController.extend({\n    session: Em.inject.service(),\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n    disableFields: Em.observer('model', function () {\n        var cust;\n        if (\n            this.get('session.currentUser.userlevel') !== '5' &&\n            this.get('session.currentUser.userlevel') !== '3' &&\n            !moment(this.get('model.date')).isSame(moment().format('YYYY-MM-DD'))\n        ) {\n            cust = {\n                in: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                out: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                user: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                project: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                date: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                location: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n            };\n            return this.set('customization', cust);\n        }\n    }),\n});\n\nexport default PresencesEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nPresenceEditRoute = GeneralAddRoute.extend({\n    modelName: 'presence',\n    controllerName: 'presences/edit',\n    edit: true,\n    //    model: (params) ->\n    //        @store.findRecord(@get('modelName'), params.id)\n    afterSave: 'presences.report',\n});\n\nexport default PresenceEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"JdbWXU9f\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/employer-sums/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresencesEmployerSumsController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nPresencesEmployerSumsController = GeneralReportController.extend({\n    showColumns: ['employer', 'hours'],\n    filters: Em.A([\n        Em.Object.create({\n            field: 'project',\n        }),\n        Em.Object.create({\n            field: 'date',\n        }),\n    ]),\n    objects: Ember.computed(function () {\n        return {\n            employer: {\n                type: 'database',\n                features: {},\n                options: {\n                    form: 'employer',\n                    fields: ['emp_id', 'name'],\n                },\n            },\n            hours: {\n                type: 'hours',\n                features: {},\n            },\n        };\n    }),\n    form: 'presence',\n    date:\n        moment().startOf('month').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    queryParams: ['project', 'page', 'date'],\n    project: null,\n    page: null,\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n            hideCheckbox: true,\n        }),\n    }),\n});\n\nexport default PresencesEmployerSumsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/employer-sums/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresencesEmployerSumsRoute;\n\nimport Ember from 'ember';\n\nPresencesEmployerSumsRoute = Ember.Route.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n            replace: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        delete params.page;\n        if (params.project === null) {\n            delete params.project;\n        }\n        //        params.date =\n        params.groupBy = 'employer';\n        return this.Collector.cget('presence', params, true);\n    },\n});\n\nexport default PresencesEmployerSumsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"TmQWFsNz\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"presence\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"type\\\",\\\"localStorageKey\\\",\\\"settings\\\",\\\"form_objects\\\"],[\\\"bubbleTransition\\\",\\\"presence\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],\\\"group\\\",\\\"presence_employer_sums\\\",[24,[\\\"settings\\\"]],[24,[\\\"objects\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/employer-sums/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceHistoryRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nPresenceHistoryRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default PresenceHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"cT/L46+L\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"presence\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/history/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nPresenceIndexController = GeneralReportController.extend({\n    form: 'presence',\n    showColumns: ['in', 'user', 'project', 'date'],\n    queryParams: ['page', 'project', 'employer', 'user'],\n    filters: Em.A([\n        Em.Object.create({\n            field: 'project',\n        }),\n    ]),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n        }),\n    }),\n    actions: {\n        closeEditModal: function () {\n            this.editRecord.rollbackAttributes();\n            return this.set('editRecord', null);\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        exportShare: function () {\n            var params, promise;\n            params = {\n                limit: 'all',\n            };\n            if (this.qParams) {\n                Object.entries(this.qParams).forEach(function (filter) {\n                    if (filter[1] && filter[0] !== 'status') {\n                        return (params[filter[0]] = filter[1]);\n                    }\n                });\n            }\n            if (this.qParams['order']) {\n                params.order = this.qParams['order'];\n            }\n            this.set('showShareModal', true);\n            promise = this.get('Collector').ttapi({\n                url: 'share/link',\n                method: 'post',\n                data: {\n                    params: params,\n                    values: {\n                        form: this.get('form'),\n                        lang: this.get('intl.primaryLocale'),\n                    },\n                },\n            });\n            return promise.then((back) => {\n                return this.set(\n                    'shareUrl',\n                    this.get('Collector').ttapi_url() + '/share?k=' + back.link,\n                );\n            });\n        },\n    },\n    date: moment().subtract(7, 'days').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    project: null,\n});\n\nexport default PresenceIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nPresenceIndexRoute = GeneralReportRoute.extend({\n    form: 'presence',\n    session: Em.inject.service(),\n    flags: Em.inject.service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-presence')) {\n            params.sideload = true;\n            params.out = '(empty)';\n            if (this.get('session.currentUser.userlevel') === '1') {\n                params.user = 'self';\n            }\n            params.date =\n                moment().subtract(7, 'days').format('YYYY-MM-DD') +\n                '_' +\n                moment().format('YYYY-MM-DD');\n            return this.store.query('presence', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('presences.index').set('qParams', params);\n        }\n    },\n});\n\nexport default PresenceIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"sWdbtOp5\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"ExportMore\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-presence\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\",\\\"@localStorageKey\\\"],[\\\"presence\\\",[22,\\\"qParams\\\"],\\\"project,user,employer\\\",\\\"user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"date\\\",\\\"out\\\"],[[23,0,[\\\"date\\\"]],\\\"(empty)\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null],\\\"open_presences\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,6,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,6,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ExportMore\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Pdf\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"PdfFull\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Excel\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Csv\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"EmailApproval\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"RemovedStatus\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,5,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"exportShare\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"report.actions.share\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"editRecord\\\"]]],null]],null],\\\"remove,history,edit\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"presence\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"settings\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"summableFieldTypes\\\"],[\\\"bubbleTransition\\\",\\\"presence\\\",[24,[\\\"settings\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],false]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"editRecord\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.add_presence\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"collector/form-add/forms/presence\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\"],[\\\"presence\\\",[23,0,[\\\"editRecord\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/index/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"JahmqWLr\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/location/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Controller;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    columnList: ['name', 'start', 'end', 'info'],\n    translated_columns: Em.computed(function () {\n        return ['name', 'start', 'end', 'info'];\n    }),\n    queryParams: ['date', 'page', 'order'],\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    limit: 10,\n    page: 1,\n    pageCount: Ember.computed('model.users.meta.count', function () {\n        var limit;\n        limit = this.get('limit') ? this.get('limit') : 25;\n        return Math.ceil(this.get('model.users.meta.count') / limit);\n    }),\n    data: Em.computed('model.beaconData', function () {\n        var arr, format, i, len, name, ref, retArr, row;\n        retArr = [];\n        format = moment.localeData().longDateFormat('L') + ' HH:mm:ss';\n        ref = this.get('model.beaconData');\n        for (name in ref) {\n            arr = ref[name];\n            if (arr.length > 0) {\n                for (i = 0, len = arr.length; i < len; i++) {\n                    row = arr[i];\n                    retArr.pushObject(\n                        Ember.Object.create({\n                            name: name,\n                            start: moment(row['start']).format(format),\n                            end: moment(row['end']).format(format),\n                            info: row['info'],\n                        }),\n                    );\n                }\n            } else {\n                retArr.pushObject(\n                    Ember.Object.create({\n                        name: name,\n                        start: null,\n                        end: null,\n                        info: null,\n                    }),\n                );\n            }\n        }\n        return retArr;\n    }),\n    dateObs: Ember.observer('filterValues', function () {\n        var date, values;\n        values = this.get('filterValues');\n        if (!values) {\n            if (!values) {\n                date =\n                    moment().startOf('week').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('week').format('YYYY-MM-DD');\n            }\n        } else {\n            date = Ember.get(values.findBy('name', 'date'), 'value');\n        }\n        return this.set('date', date);\n    }),\n    backendurl: Ember.computed(function () {\n        return Ember.get(config, 'APP.BEACONBACKENDURL');\n    }),\n    partnerid: Ember.computed(function () {\n        return this.get('session.currentUser.services.partnerid');\n    }),\n    actions: {\n        catchActions: function (action, params) {\n            return;\n            // this doesn't work yet\n            if (\n                action === 'columnClicked' ||\n                action === 'removeRow' ||\n                action === 'changeStatus' ||\n                action === 'checkRow' ||\n                action === 'rowHistory' ||\n                action === 'lockRows' ||\n                action === 'deleteChecked' ||\n                action === 'restoreChecked'\n            ) {\n                return this.send(action, params);\n            } else {\n                return this.sendAction(action, params, this.get('settings'));\n            }\n        },\n        click: function (item) {\n            if (item.info.split(' ')[0] === 'notregistered') {\n                this.set('showBeaconInfo', true);\n                return this.set('selectedBeacon', item);\n            }\n        },\n        close: function () {\n            return this.set('showBeaconInfo', false);\n        },\n        columnClicked: function (order) {\n            var currentOrder;\n            currentOrder = this.get('order');\n            if (currentOrder === order || currentOrder === null) {\n                currentOrder = order + '-';\n            } else {\n                currentOrder = order;\n            }\n            return this.set('order', currentOrder);\n        },\n    },\n});\n\nexport default Controller;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/location/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Route;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nRoute = Ember.Route.extend({\n    session: Ember.inject.service(),\n    collector: Ember.inject.service('collector-service'),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        order: {\n            refreshModel: true,\n        },\n    },\n    backendurl: Ember.computed(function () {\n        return Ember.get(config, 'APP.BEACONBACKENDURL');\n    }),\n    model: function (params) {\n        var beaconDataArr, limit, order, promise, promises, user_params, usrs, wirepas;\n        beaconDataArr = {};\n        promises = [];\n        limit = 10;\n        order = null;\n        if ((params.order = 'name')) {\n            order = 'lastname';\n        } else if ((params.order = 'name-')) {\n            order = 'lastname-';\n        }\n        params.offset = params.page != null ? (params.page - 1) * limit : 0;\n        wirepas = this.get('collector').testNeeds(['user.wirepas']) ? true : false;\n        user_params = {\n            limit: limit,\n            offset: params.offset,\n            order: order,\n        };\n        if (wirepas) {\n            user_params.wirepas = '!(empty)';\n        } else {\n            user_params.phone_imei = '!(empty)';\n        }\n        usrs = this.get('store').query('user', user_params);\n        promise = new Em.RSVP.Promise((resolve) => {\n            return usrs.then((users) => {\n                users.forEach((user) => {\n                    var name;\n                    name = user.get('firstname') + ' ' + user.get('lastname');\n                    return promises.push(\n                        $.ajax({\n                            url:\n                                this.get('backendurl') +\n                                (wirepas ? '/rigado/getBulks' : '/beacon/getBulks'),\n                            data: {\n                                partnerid: this.get('session.currentUser.services.partnerid'),\n                                maxpause: 20,\n                                scanlevel: 0,\n                                resolution: 15,\n                                imei: user.get(wirepas ? 'wirepas' : 'phone_imei'),\n                                date: params.date,\n                            },\n                            success: (data) => {\n                                return (beaconDataArr[name] = data);\n                            },\n                        }),\n                    );\n                });\n                return Em.RSVP.Promise.all(promises).then(() => {\n                    return resolve();\n                });\n            });\n        });\n        return promise.then(() => {\n            return Ember.RSVP.hash({\n                beaconData: beaconDataArr,\n                users: usrs,\n            });\n        });\n    },\n});\n\nexport default Route;\n","export default Ember.HTMLBars.template({\"id\":\"T8GBwm2S\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/filters-comp\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"values\\\",\\\"change\\\"],[\\\"date\\\",\\\"worktime\\\",[24,[\\\"filterValues\\\"]],\\\"filterChange\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\" row report-main-content\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\"],[[24,[\\\"columnList\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"data\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/location/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/locationtree/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Controller;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nController = Ember.Controller.extend();\n\nexport default Controller;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/locationtree/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Route;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nRoute = Ember.Route.extend({\n    backendurl: Ember.computed(function () {\n        return Ember.get(config, 'APP.BEACONBACKENDURL');\n    }),\n    model: function (params) {\n        return $.ajax({\n            url: this.get('backendurl') + '/rigado/tree',\n        });\n    },\n});\n\nexport default Route;\n","export default Ember.HTMLBars.template({\"id\":\"9uobqkFZ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\"],[[24,[\\\"model\\\"]],\\\"tree\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/locationtree/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceReportController;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nPresenceReportController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    dialogs: Em.inject.service(),\n    showColumns: ['date', 'project', 'user', 'employer', 'in', 'out', 'hours', 'status'],\n    summableFieldTypes: ['hours'],\n    form: 'presence',\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n                value: this.get('project'),\n            }),\n            Em.Object.create({\n                field: 'employer',\n            }),\n            Em.Object.create({\n                field: 'user',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n        ]);\n    }),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: {\n                modal: true,\n            },\n        }),\n        sortByColumn: 'date-,in-',\n    }),\n    ownExports: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                action: 'export_skatteverket',\n                text: this.get('intl').t('report.presence.export_skatteverket'),\n            }),\n        ]);\n    }),\n    queryParams: ['project', 'date', 'user', 'employer', 'status'],\n    project: null,\n    user: null,\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    status: 'all',\n    actions: {\n        closeEditModal: function () {\n            this.editRecord.rollbackAttributes();\n            return this.set('editRecord', null);\n        },\n        ownExportAction: function (action) {\n            return this.send(action);\n        },\n        export_skatteverket: function () {\n            var c, promise, self;\n            self = this;\n            if (!this.get('project')) {\n                this.get('dialogs').alert(\n                    this.get('intl').t('report.presence.export_skatteverket_select_project'),\n                );\n                return;\n            }\n            c = this.get('Collector');\n            promise = c.ccapi({\n                url: 'skatteverketv4?date=' + this.get('date') + '&project=' + this.get('project'),\n            });\n            return promise.then((data) => {\n                var a, company, name;\n                if (data.error) {\n                    throw new Ember.Error(\n                        'skatteverket export (' +\n                            data.integration +\n                            ') failed: ' +\n                            data.error +\n                            ', code:' +\n                            data.code,\n                    );\n                    return;\n                }\n                name = 'movenium_export';\n                company = self.get('session.currentUser.company');\n                if (company) {\n                    name = company;\n                }\n                a = document.createElement('a');\n                a.setAttribute(\n                    'href',\n                    'data:text/xml;charset=utf-8,\\uFEFF' + encodeURIComponent(data),\n                );\n                //a.href = 'data:attachment/csv,' + encodeURIComponent(csvString);\n                a.target = '_blank';\n                a.download = name + '_skatteverket.xml';\n                document.body.appendChild(a);\n                return a.click();\n            });\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        exportShare: function () {\n            var params, promise;\n            params = {\n                limit: 'all',\n            };\n            if (this.qParams) {\n                Object.entries(this.qParams).forEach(function (filter) {\n                    if (filter[1] && filter[0] !== 'status') {\n                        return (params[filter[0]] = filter[1]);\n                    }\n                });\n            }\n            if (this.qParams['order']) {\n                params.order = this.qParams['order'];\n            }\n            this.set('showShareModal', true);\n            promise = this.get('Collector').ttapi({\n                url: 'share/link',\n                method: 'post',\n                data: {\n                    params: params,\n                    values: {\n                        form: this.get('form'),\n                        lang: this.get('intl.primaryLocale'),\n                    },\n                },\n            });\n            return promise.then((back) => {\n                return this.set(\n                    'shareUrl',\n                    this.get('Collector').ttapi_url() + '/share?k=' + back.link,\n                );\n            });\n        },\n    },\n});\n\nexport default PresenceReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceReportRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nPresenceReportRoute = GeneralReportRoute.extend({\n    form: 'presence',\n    flags: service(),\n    queryParams: {\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-presence')) {\n            params.sideload = true;\n            return this.store.query('presence', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('presences.report').set('qParams', params);\n        }\n    },\n});\n\nexport default PresenceReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"kyeYGSuG\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"ExportMore\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-presence\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\",\\\"@showFilters\\\"],[\\\"presence\\\",[22,\\\"qParams\\\"],\\\"user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"date\\\",\\\"order\\\"],[[23,0,[\\\"date\\\"]],\\\"date-,in-\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null],\\\"project,employer,user,date,q\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,6,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,6,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,6,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,6,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/presences/report?modal=presence%2C\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ExportMore\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Pdf\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"PdfFull\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Excel\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Csv\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"EmailApproval\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"RemovedStatus\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,5,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"exportShare\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"report.actions.share\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"export_taxman\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,5,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"export_skatteverket\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"report.presence.export_skatteverket\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"editRecord\\\"]]],null]],null],\\\"remove,history,overview,edit\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\",\\\"summableFieldTypes\\\",\\\"ownExports\\\",\\\"ownExportAction\\\",\\\"localStorageKey\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]],[24,[\\\"summableFieldTypes\\\"]],[24,[\\\"ownExports\\\"]],\\\"ownExportAction\\\",\\\"presence-history\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"editRecord\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.add_presence\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"collector/form-add/forms/presence\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\"],[\\\"presence\\\",[23,0,[\\\"editRecord\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresencesRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nPresencesRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default PresencesRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsAddController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nimport collector from '../../../classes/collector';\n\nimport config from '../../../config/environment';\n\nProjectsAddController = GeneralAddController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    userId: Ember.computed('session.currentUser.id', function () {\n        return this.get('session.currentUser.id');\n    }),\n    customization: Ember.computed('model', function () {\n        var self;\n        self = this;\n        return {\n            number: {\n                default: function () {\n                    if (!self.get('model.isNew')) {\n                        return;\n                    }\n                    return self.store\n                        .query('project', {\n                            sideload: true,\n                            limit: 1,\n                            order: 'number-',\n                        })\n                        .then((projects) => {\n                            var e, number;\n                            try {\n                                number = parseInt(projects.get('firstObject.number'), 10);\n                                if (!number) {\n                                    number = 0;\n                                }\n                                return self.set('model.number', ++number);\n                            } catch (error) {\n                                e = error;\n                            }\n                        });\n                },\n            },\n            // nothing to do..\n            skv_number: {\n                template: 'projects/add/skv_number',\n            },\n            phone: {\n                template: 'projects/add/phone',\n            },\n            owner: {\n                filterOptions: {\n                    userlevel: '!1',\n                },\n            },\n        };\n    }),\n    contact_person_name: Em.observer('model.contact_user', function () {\n        if (this.get('model.contact_user') == null) {\n            this.set('model.contact_person', null);\n            this.set('model.email', null);\n            this.set('model.phone', null);\n            return;\n        }\n        //set contact person field\n        if (!this.get('model.contact_user.email') && !this.get('model.contact_user.phone')) {\n            return this.store\n                .findRecord('user', this.get('model.contact_user.id'), {\n                    reload: true,\n                })\n                .then(() => {\n                    return this.setContactPersonInfo();\n                });\n        } else {\n            return this.setContactPersonInfo();\n        }\n    }),\n    setContactPersonInfo: function () {\n        this.set(\n            'model.contact_person',\n            this.get('model.contact_user').get('lastname') +\n                ' ' +\n                this.get('model.contact_user').get('firstname'),\n        );\n        if (this.get('model.contact_user').get('email')) {\n            this.set('model.email', this.get('model.contact_user').get('email'));\n        } else {\n            this.set('model.email', null);\n        }\n        if (this.get('model.contact_user').get('phone')) {\n            this.set('model.phone', this.get('model.contact_user').get('phone'));\n        } else {\n            this.set('model.phone', null);\n        }\n        //if finnishbuilder-module, set also other contact information\n        if (this.get('Collector').testNeeds(['modules.finnishbuilder'])) {\n            this.set('model.proj_firstname', this.get('model.contact_user').get('firstname'));\n            this.set('model.proj_lastname', this.get('model.contact_user').get('lastname'));\n            if (this.get('model.contact_user').get('email')) {\n                return this.set('model.proj_email', this.get('model.contact_user').get('email'));\n            } else {\n                return this.set('model.proj_email', null);\n            }\n        }\n    },\n    countryLists: Ember.inject.service(),\n    setCountryCode: function () {\n        var code, codes, codesByNumber, companyCountry, i, len, model, number, ref, userCountry;\n        model = this.get('model');\n        codes = this.get('countryLists.phoneList');\n        codesByNumber = codes.mapBy('number');\n        userCountry = this.get('session.currentUser.homecountry');\n        companyCountry = this.get('session.currentUser.company_info.country');\n        number = null;\n        if (\n            !model.get('phone') ||\n            (((ref = model.get('phone')), indexOf.call(codesByNumber, ref) >= 0) &&\n                !this.get('countryCodeSetManually'))\n        ) {\n            for (i = 0, len = codes.length; i < len; i++) {\n                code = codes[i];\n                if (code.id === userCountry) {\n                    number = code.number;\n                    break;\n                } else if (code.id === companyCountry) {\n                    number = code.number;\n                }\n            }\n            if (number) {\n                return model.set('phone', number);\n            }\n        }\n    },\n    actions: {\n        generalAddAction: function (type, param) {\n            if (type === 'changeCountry') {\n                return this.changeCountry(param);\n            }\n            if (type === 'setCountryCode') {\n                return this.setCountryCode();\n            }\n        },\n    },\n    changeCountry: function (countrycode) {\n        this.set('countryCodeSetManually', true);\n        return this.set('model.phone', countrycode);\n    },\n});\n\nexport default ProjectsAddController;\n","export default Ember.HTMLBars.template({\"id\":\"0Qd9RM+R\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-phone-field\\\"],[8],[0,\\\"\\\\n    \\\"],[5,\\\"bs-dropdown\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"button\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-toggle form-control add-fields\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[28,\\\"country-flag\\\",[[24,[\\\"model\\\",\\\"phone\\\"]],\\\"number\\\"],null],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+358\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-fi\\\"],[8],[9],[0,\\\" +358\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+46\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-se\\\"],[8],[9],[0,\\\" +46\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+371\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-lv\\\"],[8],[9],[0,\\\" +371\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+372\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-ee\\\"],[8],[9],[0,\\\" +372\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+48\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-pl\\\"],[8],[9],[0,\\\" +48\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+44\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-gb\\\"],[8],[9],[0,\\\" +44\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+49\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-de\\\"],[8],[9],[0,\\\" +49\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+33\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-fr\\\"],[8],[9],[0,\\\" +33\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+36\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-hu\\\"],[8],[9],[0,\\\" +36\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+34\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-es\\\"],[8],[9],[0,\\\" +34\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+31\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-nl\\\"],[8],[9],[0,\\\" +31\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+47\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-no\\\"],[8],[9],[0,\\\" +47\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+370\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-lt\\\"],[8],[9],[0,\\\" +370\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+1\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-us\\\"],[8],[9],[0,\\\" +1\\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\",\\\"focus-in\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"field\\\",\\\"ext\\\"]],[24,[\\\"placeholder\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"setCountryCode\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/add/phone/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nProjectsAddRoute = GeneralAddRoute.extend({\n    modelName: 'project',\n    controllerName: 'projects.add',\n    sharedAfterSave: 'shared.project',\n    savedRoute: 'projects.saved',\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    actions: {\n        save: function (isPromiseResolved = false) {\n            var address, city, ctrl, isUniqueAddress, m, zip;\n            ctrl = this.controllerFor('projects.add');\n            if (isPromiseResolved) {\n                this._super();\n                return ctrl.get('errors').removeObject('projectExists');\n            } else {\n                isUniqueAddress = true;\n                m = this.currentModel;\n                address = m.get('address');\n                zip = m.get('zip');\n                city = m.get('city');\n                return this.store\n                    .query('project', {\n                        address: address,\n                    })\n                    .then((projects) => {\n                        projects.every((project) => {\n                            if (\n                                (project.get('address') === address &&\n                                    address &&\n                                    project.get('city') === city &&\n                                    city) ||\n                                (project.get('zip') === zip && zip)\n                            ) {\n                                isUniqueAddress = false;\n                                this.get('dialogs')\n                                    .confirm(this.get('intl').t('project.add.project_exists_error'))\n                                    .then((con) => {\n                                        if (con) {\n                                            return this.send('save', true);\n                                        } else {\n                                            ctrl.get('errors').pushObject('projectExists');\n                                            return this.send('save', true);\n                                        }\n                                    });\n                            }\n                            return isUniqueAddress; //stop loop when address is found\n                        });\n                        if (isUniqueAddress) {\n                            return this.send('save', true);\n                        }\n                    });\n            }\n        },\n    },\n});\n\nexport default ProjectsAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"5yQhybw6\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-9\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"skv_number\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-2\\\"],[8],[0,\\\"\\\\n           \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"btn btn-m-link btn-lg btn-block\\\"],[10,\\\"role\\\",\\\"button\\\"],[10,\\\"onclick\\\",\\\"window.open('https://www.skatteverket.se/foretag/etjansterochblanketter/allaetjanster/tjanster/seanmalandraochavanmalbyggarbetsplatser.4.309a41aa1672ad0c8372766.html', '_blank')\\\"],[8],[1,[28,\\\"t\\\",[\\\"projects.link_to_skv\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/add/skv_number/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"7WObp7zW\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/add-file/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsAddFileController;\n\nimport Ember from 'ember';\n\nProjectsAddFileController = Ember.Controller.extend();\n\nexport default ProjectsAddFileController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/add-file/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditAddFileRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nProjectsEditAddFileRoute = GeneralAddRoute.extend({\n    modelName: 'projectfile',\n    afterSave: Ember.computed('form', function () {\n        return {\n            //route: \"forms.form-report\"\n            route: 'projects.edit.project-files',\n            params: this.modelFor('projects.edit').get('id'),\n        };\n    }),\n    model: function (params) {\n        var project;\n        project = this.modelFor('projects.edit');\n        return this.store.createRecord('projectfile', {\n            project: project,\n        });\n    },\n});\n\nexport default ProjectsEditAddFileRoute;\n","export default Ember.HTMLBars.template({\"id\":\"dfX3MSdc\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/add-file/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { action, set, notifyPropertyChange } from '@ember/object';\nexport default class ProjectCardListController extends Controller {\n    @service ttapi;\n\n    @alias('model') projectId;\n\n    /**\n     * Retrieves users who have recorded presence or worktime entries on this project\n     * @returns {Promise<{users: Array, count: number}>} Project users with their taxnumbers and employers\n     */\n\n    get projectUsers() {\n        let params = {};\n\n        params.project = this.projectId;\n        params.limit = 'all';\n        params.cols = 'taxnumber,employer';\n\n        return this.ttapi.request('api/project/users', { data: params });\n    }\n\n    get taxnumbers() {\n        return this.getTaxnumbers();\n    }\n\n    get usesProjectFilter() {\n        return this.showReport && this._projectUsersCount > 400 && !this.employer && !this.user;\n    }\n\n    async getTaxnumbers() {\n        const projectUsers = await this.projectUsers;\n        set(this, '_projectUsersCount', projectUsers.count);\n        set(this, 'showReport', true);\n\n        if (this.employer || this.user) {\n            let users = projectUsers.users;\n            if (this.employer)\n                users = projectUsers.users.filterBy('employer', parseInt(this.employer.id));\n            if (this.user) users = projectUsers.users.filterBy('taxnumber', this.user.taxnumber);\n\n            const taxnumbers = users.mapBy('taxnumber');\n            return taxnumbers.join(',') || 'not_found';\n        }\n\n        if (projectUsers.count > 400) {\n            return 'projectId:' + this.projectId;\n        }\n\n        const taxnumbers = projectUsers.users.mapBy('taxnumber');\n        return taxnumbers.join(',') || 'not_found';\n    }\n\n    @action\n    showCard(row) {\n        set(this, 'cardRow', row);\n        set(this, 'showModal', true);\n    }\n\n    @action\n    setEmployer(employer) {\n        set(this, 'employer', employer);\n        notifyPropertyChange(this, 'taxnumbers');\n        notifyPropertyChange(this, 'usesProjectFilter');\n    }\n\n    @action\n    setUser(user) {\n        set(this, 'user', user);\n        notifyPropertyChange(this, 'taxnumbers');\n        notifyPropertyChange(this, 'usesProjectFilter');\n    }\n}\n","import Route from '@ember/routing/route';\nimport { get } from '@ember/object';\n\nexport default class ProjectCardListRoute extends Route {\n    model() {\n        return get(this.modelFor('projects.edit'), 'id');\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"u2lVTZZE\",\"block\":\"{\\\"symbols\\\":[\\\"taxnumber\\\",\\\"Report\\\",\\\"Table\\\",\\\"field\\\",\\\"value\\\",\\\"unformatted\\\",\\\"row\\\",\\\"Report\\\",\\\"Table\\\",\\\"field\\\",\\\"value\\\",\\\"unformatted\\\",\\\"row\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"employer\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25 pr-5\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"form-report-filter-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"defaults.field.employer\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"user.employer\\\"],[[\\\"useAsFilter\\\",\\\"value\\\",\\\"usePowerDropdown\\\",\\\"change\\\"],[true,[24,[\\\"employer\\\",\\\"id\\\"]],true,\\\"setEmployer\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"form-report-filter-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"defaults.field.user\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"worktime.user\\\"],[[\\\"useAsFilter\\\",\\\"value\\\",\\\"usePowerDropdown\\\",\\\"change\\\"],[true,[24,[\\\"user\\\",\\\"id\\\"]],true,\\\"setUser\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"presence.user\\\"],[[\\\"useAsFilter\\\",\\\"value\\\",\\\"usePowerDropdown\\\",\\\"change\\\"],[true,[24,[\\\"user\\\",\\\"id\\\"]],true,\\\"setUser\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"let\\\",[[28,\\\"await\\\",[[23,0,[\\\"taxnumbers\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-empty\\\",[[23,1,[]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"showReport\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"usesProjectFilter\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showFilters\\\",\\\"@showColumns\\\",\\\"@extraParams\\\",\\\"@localStorageKey\\\",\\\"@jsonapi\\\",\\\"@hideCreatedColumn\\\",\\\"@hideAdditionalFiltersButton\\\"],[\\\"card\\\",\\\"date,type\\\",\\\"name,taxnumber,type,date,image,owner\\\",[28,\\\"hash\\\",null,[[\\\"projectId\\\"],[[23,0,[\\\"projectId\\\"]]]]],\\\"project.cards\\\",true,true,true]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"Table\\\"]],[],[[\\\"@selectable\\\",\\\"@formatCells\\\"],[false,true]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"Cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,10,[]],\\\"image\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,11,[]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[23,11,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"showCard\\\",[23,13,[]]]],[8],[0,\\\"\\\\n                                    \\\"],[5,\\\"user-competences/card\\\",[],[[\\\"@width\\\",\\\"@record\\\"],[50,[23,13,[]]]]],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[23,11,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"]],\\\"parameters\\\":[10,11,12,13]}],[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[9]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showFilters\\\",\\\"@showColumns\\\",\\\"@filter\\\",\\\"@localStorageKey\\\",\\\"@jsonapi\\\",\\\"@hideCreatedColumn\\\",\\\"@hideAdditionalFiltersButton\\\"],[\\\"card\\\",\\\"date,type\\\",\\\"name,taxnumber,type,date,image,owner\\\",[28,\\\"hash\\\",null,[[\\\"taxnumber\\\"],[[23,1,[]]]]],\\\"project.cards\\\",true,true,true]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"Table\\\"]],[],[[\\\"@selectable\\\",\\\"@formatCells\\\"],[false,true]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,3,[\\\"Cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[]],\\\"image\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,5,[]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[23,5,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"showCard\\\",[23,7,[]]]],[8],[0,\\\"\\\\n                                    \\\"],[5,\\\"user-competences/card\\\",[],[[\\\"@width\\\",\\\"@record\\\"],[50,[23,7,[]]]]],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[23,5,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"]],\\\"parameters\\\":[4,5,6,7]}],[0,\\\"\\\\n                    \\\"],[6,[23,3,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"modal-container\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showModal\\\"]]],null]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup modal-image-popup\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"user-competences/card\\\",[],[[\\\"@width\\\",\\\"@record\\\"],[450,[22,\\\"cardRow\\\"]]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-overlay\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/card-list/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { computed, get } from '@ember/object';\n\nexport default Controller.extend({\n    init() {\n        this._super();\n        this.showColumns =\n            'contract_month,contract_employer,contract_type,contract_number,contract_start_date,contract_end_date,contract_billed,contract_total_price,contract_flipped';\n    },\n    project: alias('model'),\n\n    defaultValues: computed('project', function () {\n        return { contract_project: get(this, 'project') };\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"zAuCjNjJ\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\"],\\\"statements\\\":[[4,\\\"collector/form-report\\\",null,[[\\\"form\\\",\\\"showColumns\\\",\\\"filter\\\"],[\\\"urakkaraportointi\\\",[24,[\\\"showColumns\\\"]],[24,[\\\"defaultValues\\\"]]]],{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"filters\\\"]],\\\"expected `report.filters` to be a contextual component but found a string. Did you mean `(component report.filters)`? ('tt4/pods/projects/edit/contract_report/template.hbs' @ L2:C6) \\\"],null]],[[\\\"showColumns\\\"],[\\\"contract_month,contract_employer\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/projects/edit/contract_report/template.hbs' @ L3:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"rowActions\\\"]],\\\"expected `table.rowActions` to be a contextual component but found a string. Did you mean `(component table.rowActions)`? ('tt4/pods/projects/edit/contract_report/template.hbs' @ L4:C10) \\\"],null]],[[\\\"showActions\\\"],[\\\"edit,remove\\\"]]],false],[0,\\\"\\\\n        \\\"],[1,[23,2,[\\\"no-content\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/contract_report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nimport config from '../../../config/environment';\n\nProjectsEditController = GeneralAddController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Em.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n    subMenus: Ember.computed('dashboardView.[]', 'model.proj_type', function () {\n        var c, subMenus;\n        c = this.get('Collector');\n        subMenus = [\n            {\n                link: 'projects.edit.overview',\n                text: 'submenu.project.overview',\n            },\n            {\n                link: 'projects.edit.index',\n                text: 'menu.edit_project',\n                needs: ['!userlevel=3'],\n            },\n            {\n                link: 'projects.edit.project-files',\n                text: 'menu.project-files',\n                needs: ['projectfile'],\n            },\n            {\n                link: 'projects.edit.working-now',\n                text: 'menu.people_working_now',\n                needs: ['worktime'],\n            },\n            {\n                link: 'projects.edit.subprojects',\n                text: 'submenu.project.subprojects',\n                needs: ['subproject', 'project@edit'],\n            },\n            {\n                link: 'projects.edit.tasks',\n                text: 'submenu.project.tasks',\n                needs: ['task||multitask', 'project@edit'],\n            },\n            {\n                link: 'projects.edit.notices',\n                text: 'submenu.project.notices',\n                needs: ['notice'],\n            },\n            {\n                link: 'projects.edit.trnotices',\n                text: 'submenu.project.trnotices',\n                needs: ['trnotice'],\n            },\n            {\n                link: 'projects.edit.project-users',\n                text: 'submenu.project.project-users',\n                needs: ['products.rakentajanpaketti'],\n            },\n            {\n                link: 'projects.edit.linked-users',\n                text: 'submenu.project.linked_users',\n                needs: ['!products.generic_timetracker', '!products.base_basic'],\n            },\n            {\n                link: 'projects.edit.open_worktimes',\n                text: 'submenu.project.open_worktimes',\n                needs: ['userlevel=3'],\n            },\n            {\n                link: 'projects.edit.passes',\n                text: 'submenu.project.passes',\n                needs: ['orientation', 'userlevel=3'],\n            },\n            {\n                link: 'projects.edit.rollocks',\n                text: 'submenu.project.rollocks',\n                needs: ['rollock', 'userlevel=5'],\n            },\n            {\n                link: 'projects.edit.greenboxes',\n                text: 'submenu.project.greenboxes',\n                needs: ['modules.megaflex', 'userlevel=5'],\n            },            \n            {\n                link: 'projects.edit.tv-status',\n                text: 'submenu.project.tv_status',\n                needs: ['project@edit', 'employer', '!products.generic_timetracker'],\n            },\n            {\n                link: 'projects.edit.card-list',\n                text: 'submenu.project.card-list',\n                needs: ['!products.personalliggareandid06', 'products.cardregister', 'employer'],\n            },\n            {\n                link: 'projects.edit.taxmanerrors',\n                text: 'submenu.project.taxmanerrors',\n                needs: ['export_taxman'],\n            },\n        ];\n        if (this.get('model.proj_type') === '3' || this.get('model.proj_type') === '4') {\n            subMenus.pushObject({\n                link: 'projects.edit.contract_report',\n                text: 'submenu.project.contract_report',\n                needs: ['project@edit', 'export_taxman'],\n            });\n        }\n        return subMenus.filter(function (item) {\n            if (item.needs) {\n                return c.testNeeds(item.needs);\n            }\n            return true;\n        });\n    }),\n    contact_person_name: Em.observer('model.contact_user', function () {\n        var c;\n        //do not change values when entering edit mode, only when changing contact_user\n        if (!this.get('model.hasDirtyAttributes')) {\n            return;\n        }\n        c = this.get('Collector');\n        if (this.get('model.contact_user') == null) {\n            this.set('model.contact_person', null);\n            this.set('model.email', null);\n            this.set('model.phone', null);\n            return;\n        }\n        //set contact person field\n        this.set(\n            'model.contact_person',\n            this.get('model.contact_user').get('lastname') +\n                ' ' +\n                this.get('model.contact_user').get('firstname'),\n        );\n        if (this.get('model.contact_user').get('email')) {\n            this.set('model.email', this.get('model.contact_user').get('email'));\n        } else {\n            this.set('model.email', null);\n        }\n        if (this.get('model.contact_user').get('phone')) {\n            this.set('model.phone', this.get('model.contact_user').get('phone'));\n        } else {\n            this.set('model.phone', null);\n        }\n        //if finnishbuilder-module, set also other contact information\n        if (c.testNeeds(['modules.finnishbuilder'])) {\n            this.set('model.proj_firstname', this.get('model.contact_user').get('firstname'));\n            this.set('model.proj_lastname', this.get('model.contact_user').get('lastname'));\n            if (this.get('model.contact_user').get('email')) {\n                return this.set('model.proj_email', this.get('model.contact_user').get('email'));\n            } else {\n                return this.set('model.proj_email', null);\n            }\n        }\n    }),\n    projectImage: Ember.computed('model.image', function () {\n        var image;\n        image = this.get('model.image');\n        if (image != null && image.length > 0) {\n            if (image[0].url) {\n                return Ember.String.htmlSafe(config.APP.COLLECTOR_API_URL + '/' + image[0].url);\n            } else if (image[0].file) {\n                return Ember.String.htmlSafe(image[0].file);\n            } else {\n                return Ember.String.htmlSafe('img/placeholder.png');\n            }\n        } else {\n            return Ember.String.htmlSafe('img/placeholder.png');\n        }\n    }),\n});\n\nexport default ProjectsEditController;\n","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { computed } from '@ember/object';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    evented: service(),\n    \n    showInfo: false,\n    row: null,\n\n    project: alias('model'),\n\n    defaultValues: computed('project', function () {\n        return { project: get(this, 'project') };\n    }),\n\n    actions: {\n        rowAdded() {\n            // Trigger the report to refresh via the evented service\n            this.evented.storeEvent('insert', 'greenboxdevice', null);\n        },\n        toggleInfo(row) {\n            if (row) {\n                set(this, 'row', row);\n            } else {\n                set(this, 'row', null);\n            }\n            this.toggleProperty('showInfo');\n        },\n    },\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"eds86nkr\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\",\\\"modal\\\",\\\"form\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"greenboxdevice@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"auto-modal\\\",[],[[\\\"@header\\\"],[[28,\\\"collector-form-name\\\",[\\\"greenboxdevice\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,5,[\\\"open\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],[23,5,[\\\"show\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,5,[\\\"content\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"collector/form-add\\\",[],[[\\\"@form\\\",\\\"@defaults\\\",\\\"@close\\\",\\\"@rowAdded\\\"],[\\\"greenboxdevice\\\",[22,\\\"defaultValues\\\"],[28,\\\"action\\\",[[23,0,[]],[23,5,[\\\"close\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"fields\\\"]],[],[[\\\"@only\\\"],[\\\"greenbox_id\\\"]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"saved\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filter\\\",\\\"@showFilters\\\",\\\"@showColumns\\\",\\\"@hideAdditionalFiltersButton\\\"],[\\\"greenboxdevice\\\",[22,\\\"defaultValues\\\"],\\\"q,greenbox_id\\\",\\\"greenbox_id,direction,zone\\\",true]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"        \\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"remove,edit\\\"]]],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/greenboxes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nProjectsEditIndexController = GeneralAddController.extend({\n    customization: Ember.computed('model', function () {\n        return {\n            owner: {\n                filterOptions: {\n                    userlevel: '!1',\n                },\n            },\n        };\n    }),\n});\n\nexport default ProjectsEditIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nProjectsEditIndexRoute = GeneralAddRoute.extend({\n    controllerName: 'projects/edit/index',\n    model: function () {\n        return this.modelFor('projects.edit');\n    },\n});\n\nexport default ProjectsEditIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"T7AGXoTc\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/linked-users/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsLinkedUsersController;\n\nimport Ember from 'ember';\n\nProjectsLinkedUsersController = Ember.Controller.extend({\n    Collector: Em.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    intl: Em.inject.service(),\n    applicationController: Ember.inject.controller('application'),\n    rowActions: [\n        {\n            action: 'editRow',\n            icon: 'move move-Pencil',\n        },\n    ],\n    updatePath: function (model) {\n        return this.set('path', 'linked_users_for?to=' + model.get('id'));\n    },\n    rows: 0,\n    //init: ->\n    //    @getRows()\n\n    // these are copied from users/linked, but left here so that if someday we need to add filters etc to this controller, there is already some stuff ready\n    /*\n  getRows: ->\n      url = @get('path')\n      query = @get 'filterValues'\n\n      if query\n          query_str_arr = []\n          $.each query, (key,item) =>\n              return if not item.value\n              query_str_arr.push item.name + \"=\" + item.value\n          if query_str_arr.length == 0\n              @set 'rows', 0\n          url += \"?\" + query_str_arr.join(\"&\")\n\n      url += \"&limit=1&out=(empty)\"\n      c = @get 'Collector'\n      promise = c.ttapi\n          url: url\n\n      promise.then (data) =>\n          @set 'rows', data.count\n\n  */\n    actions: {\n        editRow: function (params) {\n            return this.transitionToRoute('users.edit', params.id).then(function (newRoute) {\n                return newRoute.controller.set('afterSave', 'projects.index');\n            });\n        },\n        removeRow: function (params) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    if (con) {\n                        return this.get('store')\n                            .findRecord('user', params.id)\n                            .then((record) => {\n                                return record.destroyRecord();\n                            });\n                    }\n                });\n        },\n    },\n});\n\nexport default ProjectsLinkedUsersController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/linked-users/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsLinkedUsersRoute;\n\nimport Ember from 'ember';\n\nProjectsLinkedUsersRoute = Ember.Route.extend({\n    setupController: function (controller, model) {\n        return controller.updatePath(model);\n    },\n});\n\nexport default ProjectsLinkedUsersRoute;\n","export default Ember.HTMLBars.template({\"id\":\"JmMtcGUQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[1,[28,\\\"api-report\\\",null,[[\\\"filters\\\",\\\"path\\\",\\\"translationPrefix\\\",\\\"pdfSubHeader\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"editRow\\\",\\\"removeRow\\\",\\\"hideExports\\\"],[[24,[\\\"filterValues\\\"]],[24,[\\\"path\\\"]],\\\"report.linked_users\\\",\\\"linked_users\\\",[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",\\\"editRow\\\",\\\"removeRow\\\",true]]],false],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/linked-users/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"DMvb2ApK\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/notices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditNoticesController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nProjectsEditNoticesController = GeneralReportController.extend({\n    form: 'notice',\n    showColumns: ['fixbydate', 'project', 'title', 'desc', 'status', 'pic', 'user'],\n    queryParams: ['date', 'status', 'user'],\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n        }),\n        sortByColumn: 'fixbydate',\n    }),\n    filters: Em.A([]),\n    status: 'all',\n});\n\nexport default ProjectsEditNoticesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/notices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditNoticesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nProjectsEditNoticesRoute = GeneralReportRoute.extend({\n    form: 'notice',\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var project;\n        params = this._super(params);\n        params.sideload = true;\n        project = this.modelFor('projects.edit');\n        params.project = project.get('id');\n        return this.store.query('notice', params);\n    },\n});\n\nexport default ProjectsEditNoticesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"+wXz5O0Z\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/notices/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/open-worktimes/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsOpenWorktimesController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nProjectsOpenWorktimesController = GeneralReportController.extend({\n    form: 'worktime',\n    showColumns: ['status', 'user', 'date'],\n    queryParams: ['date', 'status', 'user'],\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n        }),\n        sortByColumn: 'date',\n    }),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'date',\n        }),\n    ]),\n    status: 'open',\n    project: null,\n    page: null,\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n});\n\nexport default ProjectsOpenWorktimesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/open-worktimes/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsOpenWorktimesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nProjectsOpenWorktimesRoute = GeneralReportRoute.extend({\n    form: 'worktime',\n    session: Em.inject.service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n            replace: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var project;\n        params = this._super(params);\n        params.sideload = true;\n        project = this.modelFor('projects.edit');\n        params.project = project.get('id');\n        params.status = 'open';\n        params.date =\n            moment().startOf('week').format('YYYY-MM-DD') +\n            '_' +\n            moment().endOf('week').format('YYYY-MM-DD');\n        return this.store.query('worktime', params);\n    },\n});\n\nexport default ProjectsOpenWorktimesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"RPGd/bLk\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/open-worktimes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/overview/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditOverviewController;\n\nimport Ember from 'ember';\n\nimport DS from 'ember-data';\n\nProjectsEditOverviewController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    store: Ember.inject.service(),\n    session: Ember.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    hiddenDashboardObjects: [],\n    dashboardObjects: Em.computed('model.project', function () {\n        var c, objs;\n        c = this.get('Collector');\n        objs = [];\n        if (c.testNeedsOne('presence')) {\n            objs.push({\n                name: 'presence',\n                title: 'project.overview.title.presences',\n                styles: 'order: 0',\n            });\n        }\n        if (c.testNeedsOne('worktime')) {\n            objs.push({\n                name: 'worktime',\n                title: 'project.overview.title.worktimes',\n                styles: 'order: 1',\n            });\n        }\n        if (c.testNeedsOne('worktask')) {\n            objs.push({\n                name: 'worktask',\n                title: 'report.worktasks.report',\n                styles: 'order: 2',\n            });\n        }\n        if (c.testNeedsOne('tr')) {\n            objs.push({\n                name: 'tr',\n                title: 'project.overview.tr_index.mean',\n                styles: 'order: 3',\n            });\n        }\n        if (c.testNeedsOne('mvr')) {\n            objs.push({\n                name: 'mvr',\n                title: 'project.overview.mvr_index.mean',\n                styles: 'order: 4',\n            });\n        }\n        if (c.testNeedsOne('export_taxman')) {\n            objs.push({\n                name: 'taxmanerror',\n                title: 'submenu.project.taxmanerrors',\n                styles: 'order: 5',\n            });\n        }\n        if (c.testNeedsOne('export_taxman') && this.get('model.project.proj_type') === '3') {\n            objs.push({\n                name: 'contractTaxmanerror',\n                title: 'project.overview.contract_taxmanerrors',\n                styles: 'order: 6',\n            });\n        }\n        if (c.testNeedsOne('employer') && !c.testNeedsOne('products.generic_timetracker')) {\n            objs.push({\n                name: 'tv_status',\n                title: 'submenu.project.tv_status',\n                styles: 'order: 7',\n            });\n        }\n        return objs;\n    }),\n    dashboardView: Em.computed('dashboardObjects', function () {\n        var i, len, lsDbHide, object, ref, tmp, tmp_hidden;\n        tmp = [];\n        tmp_hidden = [];\n        lsDbHide = this.get('localStorageWrapper').getUserSetting('hideDashboard');\n        ref = this.get('dashboardObjects');\n        for (i = 0, len = ref.length; i < len; i++) {\n            object = ref[i];\n            if (lsDbHide.indexOf(object.name) > -1) {\n                tmp_hidden.push(object);\n            } else {\n                tmp.push(object);\n            }\n        }\n        this.set('hiddenDashboardObjects', tmp_hidden);\n        return tmp;\n    }),\n    pie_options: {\n        pieHole: 0.9,\n        chartArea: {\n            width: '90%',\n            height: '95%',\n        },\n        height: 200,\n        width: 200,\n        pieSliceTextStyle: {\n            color: 'black',\n            fontSize: 20,\n        },\n        pieSliceText: 'value',\n    },\n    //        slices: {\n    //            1: {offset: 0.02}\n    //            2: {offset: 0.02}\n    //            3: {offset: 0.02}\n    //        }\n    form: 'user',\n    fields: Ember.computed(function () {\n        var obj;\n        obj = {\n            first_row: this.hasFields(['firstname', 'lastname']),\n            rows: [this.hasFields(['personid', 'userlevel'])],\n        };\n        return obj;\n    }),\n    hasFields: function (fields, form = null) {\n        var c, field, i, len, ret;\n        c = this.get('Collector');\n        if (!form) {\n            form = 'user';\n        }\n        ret = [];\n        for (i = 0, len = fields.length; i < len; i++) {\n            field = fields[i];\n            if (c.fieldExists(form, field)) {\n                ret.push(field);\n            }\n        }\n        return ret;\n    },\n    tr_mean: Ember.computed('model.tr', function () {\n        var color, mean, trs;\n        trs = this.get('model.tr');\n        mean = this.calculateMean(trs, 'tr_rating');\n        color = this.getRatingColor(mean);\n        return {\n            mean: mean.toFixed(0) + '%',\n            color: color,\n        };\n    }),\n    mvr_mean: Ember.computed('model.mvr', function () {\n        var color, mean, mvrs;\n        mvrs = this.get('model.mvr');\n        mean = this.calculateMean(mvrs, 'mvr_rating');\n        color = this.getRatingColor(mean);\n        return {\n            mean: mean.toFixed(0) + '%',\n            color: color,\n        };\n    }),\n    getRatingColor: function (value) {\n        if (value >= 95) {\n            return 'good-rating';\n        } else if (value >= 90) {\n            return 'decent-rating';\n        } else if (value < 90) {\n            return 'bad-rating';\n        } else {\n            return 'default';\n        }\n    },\n    calculateMean: function (data, field) {\n        var total;\n        if (data.get('meta.count') === 0) {\n            return '-';\n        }\n        total = 0;\n        data.forEach(function (item) {\n            return (total += item.get(field));\n        });\n        return total / data.get('meta.count');\n    },\n    sensors: Ember.computed('model.project.sensors', function () {\n        var url;\n        url = this.get('model.project.sensors');\n        if (url) {\n            return DS.PromiseObject.create({\n                promise: this.fetchSensorData(url),\n            });\n        }\n    }),\n    sensorList: Ember.computed('sensors.isFulfilled', function () {\n        var sensors;\n        sensors = this.get('sensors');\n        console.log('sensors', sensors);\n        if (sensors && sensors.isFulfilled) {\n            return sensors.content.map(function (core, key) {\n                return {\n                    id: key,\n                    name: core.name,\n                };\n            });\n        }\n    }),\n    selectedCores: Ember.computed('selectedSensor', 'sensors.isFulfilled', function () {\n        var selectedSensor;\n        if (!this.get('sensors.isFulfilled')) {\n            return [];\n        }\n        selectedSensor = this.get('selectedSensor') || 0;\n        return this.get('sensors.content')[selectedSensor].sensors;\n    }),\n    fetchSensorData: function (url) {\n        var c, intl;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            return c\n                .ccapi({\n                    url: 'sensors_mama',\n                    data: {\n                        key: url,\n                    },\n                })\n                .then((data) => {\n                    var all_sensors, chart, core, i, j, len, len1, ref, ref1, row, sensors;\n                    all_sensors = [];\n                    ref = data.cores;\n                    for (i = 0, len = ref.length; i < len; i++) {\n                        core = ref[i];\n                        if (core.values == null) {\n                            continue;\n                        }\n                        sensors = [];\n                        ref1 = core.values;\n                        for (j = 0, len1 = ref1.length; j < len1; j++) {\n                            row = ref1[j];\n                            chart = this.getChartOptionsByType(row.type, row);\n                            if (!chart) {\n                                continue;\n                            }\n                            chart.chart = [\n                                ['Label', 'Value'],\n                                [intl.t('sensor.type.' + row.type), chart.value],\n                            ];\n                            sensors.push(chart);\n                        }\n                        if (sensors.length > 0) {\n                            all_sensors.push({\n                                name: core.tags.length > 0 ? core.tags[0] : core.name,\n                                sensors: sensors,\n                            });\n                        }\n                    }\n                    return resolve(all_sensors);\n                });\n        });\n    },\n    getChartOptionsByType: function (type, data) {\n        var temp;\n        if (data.name === 'Dew Point') {\n            // don't know better way to skip this one.. so hack for now :)\n            return;\n        }\n        temp = {};\n        temp.value = data.value;\n        temp.unit = data.unit;\n        if (type === 'temperature') {\n            temp.chart_options = {\n                yellowFrom: 25,\n                yellowTo: 35,\n                redFrom: 35,\n                redTo: 50,\n                max: 50,\n                min: -50,\n                width: 150,\n                height: 150,\n            };\n        }\n        if (type === 'pressure') {\n            temp.unit = 'k' + data.unit;\n            temp.value = Math.floor(data.value / 100) / 10;\n            temp.chart_options = {\n                greenFrom: 95,\n                greenTo: 110,\n                max: 120,\n                min: 80,\n                width: 150,\n                height: 150,\n            };\n        }\n        if (type === 'humidity') {\n            temp.chart_options = {\n                yellowFrom: 75,\n                yellowTo: 85,\n                redFrom: 85,\n                redTo: 100,\n                max: 100,\n                min: 50,\n                width: 150,\n                height: 150,\n            };\n        }\n        if (type === 'temperature' || type === 'pressure' || type === 'humidity') {\n            return temp;\n        } else {\n            return null;\n        }\n    },\n    actions: {\n        transitionWithParams: function (key) {\n            return this.transitionToRoute('projects.edit.taxmanerrors').then((targetRoute) => {\n                return targetRoute.controller.set('taxmanKey', key);\n            });\n        },\n        removeDashboardObject: function (object) {\n            var lsDbHide;\n            // update localstorage\n            lsDbHide = this.get('localStorageWrapper').getUserSetting('hideDashboard');\n            if (lsDbHide.length > 0) {\n                lsDbHide.push(object.name);\n            } else {\n                lsDbHide = [object.name];\n            }\n            this.get('localStorageWrapper').setUserSetting('hideDashboard', lsDbHide);\n            // update computed-property so we can update view in realtime\n            this.get('dashboardView').removeObject(object);\n            this.get('hiddenDashboardObjects').pushObject(object);\n            return false;\n        },\n        restoreDashboardObject: function (object) {\n            var index, lsDbHide;\n            // update localstorage\n            lsDbHide = this.get('localStorageWrapper').getUserSetting('hideDashboard');\n            if (lsDbHide.length > 0) {\n                index = lsDbHide.indexOf(object.name);\n                if (index !== -1) {\n                    lsDbHide.splice(index, 1);\n                }\n            }\n            this.get('localStorageWrapper').setUserSetting('hideDashboard', lsDbHide);\n            // update computed-property so we can update view in realtime\n            this.get('dashboardView').pushObject(object);\n            this.get('hiddenDashboardObjects').removeObject(object);\n            return false;\n        },\n        editRow: function (row) {\n            var form, id;\n            form = row.get('constructor.modelName');\n            id = row.get('id');\n            return this.transitionToRoute({\n                queryParams: {\n                    modal: [form, id],\n                },\n            });\n        },\n    },\n    worktasks: Ember.computed('model.worktask', function () {\n        var i,\n            item,\n            j,\n            len,\n            len1,\n            pie_done,\n            pie_overdue,\n            pie_upcoming,\n            ref,\n            worktask,\n            worktask_pie,\n            worktasks;\n        worktask = this.get('model.worktask');\n        worktask_pie = Em.A([\n            [\n                this.get('intl').t('report.worktasks.report'),\n                this.get('intl').t('report.worktasks.report'),\n            ],\n        ]);\n        pie_overdue = 0;\n        pie_upcoming = 0;\n        pie_done = 0;\n        worktasks = [];\n        ref = worktask.content;\n        for (i = 0, len = ref.length; i < len; i++) {\n            item = ref[i];\n            worktasks.push(item._data);\n        }\n        for (j = 0, len1 = worktasks.length; j < len1; j++) {\n            item = worktasks[j];\n            if (moment().isBefore(item.date) && item.status === 'open') {\n                pie_upcoming++;\n            } else if (item.status === 'fixed') {\n                pie_done++;\n            } else if (moment().isAfter(item.date) && item.status === 'open') {\n                pie_overdue++;\n            }\n        }\n        worktask_pie.push([this.get('intl').t('worktask_pie.upcoming'), pie_upcoming]);\n        worktask_pie.push([this.get('intl').t('worktask_pie.done'), pie_done]);\n        worktask_pie.push([this.get('intl').t('worktask_pie.overdue'), pie_overdue]);\n        return worktask_pie;\n    }),\n    openWorktasks: Ember.computed('model.worktask', function () {\n        return this.get('model.worktask').filterBy('status', 'open');\n    }),\n    fixedWorktasks: Ember.computed('model.worktask', function () {\n        return this.get('model.worktask').filterBy('status', 'fixed');\n    }),\n    worktaskFields: Ember.computed(function () {\n        var obj;\n        obj = {\n            first_row: this.hasFields(['date', 'name'], 'worktask'),\n            rows: [this.hasFields(['est_hours', 'hours', 'photos'], 'worktask')],\n        };\n        return obj;\n    }),\n    worktimes: Ember.computed('model.worktime', function () {\n        var i, item, j, len, len1, pie_approved, pie_open, ref, worktime, worktime_pie, worktimes;\n        worktime = this.get('model.worktime');\n        worktime_pie = Em.A([\n            [\n                this.get('intl').t('project.overview.title.worktimes'),\n                this.get('intl').t('project.overview.title.worktimes'),\n            ],\n        ]);\n        pie_open = 0;\n        pie_approved = 0;\n        worktimes = [];\n        ref = worktime.content;\n        for (i = 0, len = ref.length; i < len; i++) {\n            item = ref[i];\n            worktimes.push(item._data);\n        }\n        for (j = 0, len1 = worktimes.length; j < len1; j++) {\n            item = worktimes[j];\n            if (item.status === 'open') {\n                pie_open++;\n            } else if (item.status === 'approved') {\n                pie_approved++;\n            }\n        }\n        worktime_pie.push([this.get('intl').t('worktime_pie.open'), pie_open]);\n        worktime_pie.push([this.get('intl').t('worktime_pie.approved'), pie_approved]);\n        return worktime_pie;\n    }),\n    openWorktimes: Ember.computed('model.worktime', function () {\n        return this.get('model.worktime').filterBy('status', 'open');\n    }),\n    approvedWorktimes: Ember.computed('model.worktime', function () {\n        return this.get('model.worktime').filterBy('status', 'approved');\n    }),\n    presences: Ember.computed('model.presence', function () {\n        var i, item, j, len, len1, pie_total, presence, presence_pie, presences, ref;\n        presence = this.get('model.presence');\n        presence_pie = Em.A([\n            [\n                this.get('intl').t('project.overview.title.presences'),\n                this.get('intl').t('project.overview.title.presences'),\n            ],\n        ]);\n        pie_total = 0;\n        presences = [];\n        ref = presence.content;\n        for (i = 0, len = ref.length; i < len; i++) {\n            item = ref[i];\n            presences.push(item._data);\n        }\n        for (j = 0, len1 = presences.length; j < len1; j++) {\n            item = presences[j];\n            pie_total++;\n        }\n        presence_pie.push([this.get('intl').t('presence_pie.total'), pie_total]);\n        return presence_pie;\n    }),\n    taxmanerrors: Ember.computed('model', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                return this.get('store')\n                    .findAll('exportContactPerson')\n                    .then((contacts) => {\n                        contacts = contacts.filter((contact) => {\n                            return contact.get('isNew') === false;\n                        });\n                        if (contacts.length > 0) {\n                            return this.get('Collector')\n                                .ccapi({\n                                    url:\n                                        'vstyonte?date=' +\n                                        moment().startOf('month').format('YYYY-MM-DD') +\n                                        '_' +\n                                        moment().endOf('month').format('YYYY-MM-DD') +\n                                        '&project=' +\n                                        this.get('model.project.id'),\n                                })\n                                .then((back) => {\n                                    var data, pie_total, taxman_pie;\n                                    taxman_pie = Em.A([\n                                        [\n                                            this.get('intl').t('submenu.project.taxmanerrors'),\n                                            this.get('intl').t('submenu.project.taxmanerrors'),\n                                        ],\n                                    ]);\n                                    data = JSON.parse(back).validations;\n                                    pie_total = Object.keys(data).length;\n                                    taxman_pie.push([\n                                        this.get('intl').t('taxmam_pie.total'),\n                                        pie_total,\n                                    ]);\n                                    return resolve({\n                                        value: taxman_pie,\n                                    });\n                                });\n                        }\n                    });\n            }),\n        });\n    }),\n    contractTaxmanerrors: Ember.computed('model', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                return this.get('store')\n                    .findAll('exportContactPerson')\n                    .then((contacts) => {\n                        contacts = contacts.filter((contact) => {\n                            return contact.get('isNew') === false;\n                        });\n                        if (contacts.length > 0) {\n                            return this.get('Collector')\n                                .ccapi({\n                                    url:\n                                        'vsurakka?contract_month=' +\n                                        moment().format('YYYY-MM') +\n                                        '&project=' +\n                                        this.get('model.project.id'),\n                                })\n                                .then((back) => {\n                                    var data, pie_total, taxman_pie;\n                                    taxman_pie = Em.A([\n                                        [\n                                            this.get('intl').t(\n                                                'project.overview.contract_taxmanerrors',\n                                            ),\n                                            this.get('intl').t(\n                                                'project.overview.contract_taxmanerrors',\n                                            ),\n                                        ],\n                                    ]);\n                                    data = JSON.parse(back).validations;\n                                    pie_total = Object.keys(data).length;\n                                    taxman_pie.push([\n                                        this.get('intl').t('contract_taxman_pie.total'),\n                                        pie_total,\n                                    ]);\n                                    return resolve({\n                                        value: taxman_pie,\n                                    });\n                                });\n                        }\n                    });\n            }),\n        });\n    }),\n    tv_status: Ember.computed('model.projectUsers', function () {\n        var employers,\n            i,\n            item,\n            len,\n            pie_alert,\n            pie_check,\n            pie_not_found,\n            pie_ok,\n            pie_stop,\n            pie_waiting,\n            tv_status_pie;\n        employers = this.get('model.projectUsers.employers');\n        tv_status_pie = Em.A([\n            [\n                this.get('intl').t('submenu.project.tv_status'),\n                this.get('intl').t('submenu.project.tv_status'),\n            ],\n        ]);\n        pie_ok = 0;\n        pie_not_found = 0;\n        pie_stop = 0;\n        pie_check = 0;\n        pie_waiting = 0;\n        pie_alert = 0;\n        for (i = 0, len = employers.length; i < len; i++) {\n            item = employers[i];\n            if (item.tv_status) {\n                if (item.tv_status === 'ok') {\n                    pie_ok++;\n                } else if (item.tv_status === 'ei_loydy') {\n                    pie_not_found++;\n                } else if (item.tv_status === 'seis') {\n                    pie_stop++;\n                } else if (item.tv_status === 'selvita') {\n                    pie_check++;\n                } else if (item.tv_status === 'odotetaan') {\n                    pie_waiting++;\n                } else if (item.tv_status === 'huomioi') {\n                    pie_alert++;\n                }\n            }\n        }\n        tv_status_pie.push([this.get('intl').t('employer.tv_status.ok'), pie_ok]);\n        tv_status_pie.push([this.get('intl').t('employer.tv_status.ei_loydy'), pie_not_found]);\n        tv_status_pie.push([this.get('intl').t('employer.tv_status.seis'), pie_stop]);\n        tv_status_pie.push([this.get('intl').t('employer.tv_status.selvita'), pie_check]);\n        tv_status_pie.push([this.get('intl').t('employer.tv_status.odotetaan'), pie_waiting]);\n        tv_status_pie.push([this.get('intl').t('employer.tv_status.huomioi'), pie_alert]);\n        return tv_status_pie;\n    }),\n});\n\nexport default ProjectsEditOverviewController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/overview/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditOverviewRoute;\n\nimport Ember from 'ember';\n\nimport DS from 'ember-data';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nProjectsEditOverviewRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    //localStorageWrapper: Ember.inject.service()\n    beforeModel: function () {\n        this._super(...arguments);\n        return this.set('gui.hideMobileHeader', false);\n    },\n    model: function () {\n        var c, project, sideload, store;\n        //lsDbHide = @get('localStorageWrapper').getUserSetting 'hideDashboard'\n        project = this.modelFor('projects.edit');\n        sideload = [\n            'user.firstname',\n            'user.lastname',\n            'user.image',\n            'user.personid',\n            'user.userlevel',\n        ];\n        store = this.get('store');\n        c = this.get('Collector');\n        return Ember.RSVP.hash({\n            project: project,\n            tr: c.testNeedsOne('tr')\n                ? store.query('tr', {\n                      project: project.get('id'),\n                      date:\n                          moment().subtract(1, 'months').format('YYYY-MM-DD') +\n                          '_' +\n                          moment().format('YYYY-MM-DD'),\n                  })\n                : void 0,\n            mvr: c.testNeedsOne('mvr')\n                ? store.query('mvr', {\n                      project: project.get('id'),\n                      date:\n                          moment().subtract(1, 'months').format('YYYY-MM-DD') +\n                          '_' +\n                          moment().format('YYYY-MM-DD'),\n                  })\n                : void 0,\n            worktime: c.testNeedsOne('worktime')\n                ? store.query('worktime', {\n                      date: moment().format('YYYY-MM-DD'),\n                      project: project.get('id'),\n                      sideload: sideload,\n                      limit: 'all',\n                  })\n                : void 0,\n            presence: c.testNeedsOne('presence')\n                ? store.query('presence', {\n                      date: moment().format('YYYY-MM-DD'),\n                      project: project.get('id'),\n                      sideload: sideload,\n                      limit: 'all',\n                      groupBy: 'user',\n                      out: '(empty)',\n                  })\n                : void 0,\n            worktask: c.testNeedsOne('worktask')\n                ? store.query('worktask', {\n                      date:\n                          moment().startOf('week').format('YYYY-MM-DD') +\n                          '_' +\n                          moment().endOf('week').format('YYYY-MM-DD'),\n                      project: project.get('id'),\n                      sideload: ['user.image'],\n                  })\n                : void 0,\n            projectUsers: c.testNeedsOne('employer')\n                ? this.get('ttapi').request('api/project/users', {\n                      data: {\n                          project: project.get('id'),\n                          sideload: ['employer.name', 'employer.tv_status'],\n                          limit: 'all',\n                      },\n                  })\n                : void 0,\n        });\n    },\n});\n\nexport default ProjectsEditOverviewRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Z4jJjhF0\",\"block\":\"{\\\"symbols\\\":[\\\"db\\\",\\\"dd\\\",\\\"ddm\\\",\\\"db\\\",\\\"db\\\"],\\\"statements\\\":[[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more display-menu\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,2,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Settings\\\"],[8],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,2,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"item\\\"]],[[12,\\\"class\\\",\\\"dropdown-header\\\"]],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.columns.shown\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"dashboardView\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeDashboardObject\\\",[23,5,[]]]],[8],[1,[28,\\\"t\\\",[[23,5,[\\\"title\\\"]]],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,3,[\\\"item\\\"]],[[12,\\\"class\\\",\\\"disabled\\\"]],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"\\\"],[8],[7,\\\"i\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.empty\\\"],null],false],[9],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[6,[23,3,[\\\"item\\\"]],[[12,\\\"class\\\",\\\"dropdown-header\\\"]],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.columns.hidden\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"hiddenDashboardObjects\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"restoreDashboardObject\\\",[23,4,[]]]],[8],[1,[28,\\\"t\\\",[[23,4,[\\\"title\\\"]]],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,3,[\\\"item\\\"]],[[12,\\\"class\\\",\\\"disabled\\\"]],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"\\\"],[8],[7,\\\"i\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.empty\\\"],null],false],[9],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"project-overview-container\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[10,\\\"style\\\",\\\"order: 3\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"dashboardView\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[11,\\\"style\\\",[23,1,[\\\"styles\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"tr\\\"],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"site_safety.report.tr.data\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-list-container\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.overview.tr_index.mean\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"tr\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"tr\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"overview-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums-card\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"rating-value \\\",[24,[\\\"tr_mean\\\",\\\"color\\\"]]]]],[8],[1,[24,[\\\"tr_mean\\\",\\\"mean\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"mvr\\\"],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"site_safety.report.mvr.data\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-list-container\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.overview.mvr_index.mean\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"mvr\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"mvr\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"overview-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums-card\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"rating-value \\\",[24,[\\\"mvr_mean\\\",\\\"color\\\"]]]]],[8],[7,\\\"span\\\",true],[8],[1,[24,[\\\"mvr_mean\\\",\\\"mean\\\"]],false],[9],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"worktime\\\"],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"timetracker.worktime-list\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-list-container\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.overview.title.worktimes\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"worktime\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"overview-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums-card\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"top-users\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\"],[[24,[\\\"worktimes\\\"]],\\\"pie\\\",\\\"#D9534F,#5CB85C\\\",[24,[\\\"pie_options\\\"]]]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"presence\\\"],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"projects.edit.working-now\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"presence\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-list-container\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.overview.title.presences\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"presence\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"overview-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums-card\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"top-users\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\"],[[24,[\\\"presences\\\"]],\\\"pie\\\",\\\"#5CB85C\\\",[24,[\\\"pie_options\\\"]]]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"worktask\\\"],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"worktasks.report\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktask\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-list-container\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.worktasks.report\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"worktask\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"overview-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums-card\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"top-users\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\"],[[24,[\\\"worktasks\\\"]],\\\"pie\\\",\\\"#FFC56C,#5CB85C,#D9534F\\\",[24,[\\\"pie_options\\\"]]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"taxmanerror\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                 \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionWithParams\\\",\\\"vstyonte\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"export_taxman\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-list-container\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"submenu.project.taxmanerrors\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"taxmanerrors\\\",\\\"value\\\",\\\"1\\\",\\\"1\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"overview-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums-card\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"top-users\\\"],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\"],[[24,[\\\"taxmanerrors\\\",\\\"value\\\"]],\\\"pie\\\",\\\"#D9534F\\\",[24,[\\\"pie_options\\\"]]]]],false],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"contractTaxmanerror\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionWithParams\\\",\\\"vsurakka\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"export_taxman\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-list-container\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.overview.contract_taxmanerrors\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"contractTaxmanerrors\\\",\\\"value\\\",\\\"1\\\",\\\"1\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"overview-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums-card\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"top-users\\\"],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\"],[[24,[\\\"contractTaxmanerrors\\\",\\\"value\\\"]],\\\"pie\\\",\\\"#D9534F\\\",[24,[\\\"pie_options\\\"]]]]],false],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"tv_status\\\"],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"projects.edit.tv-status\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"employer\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-list-container\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"submenu.project.tv_status\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"projectUsers\\\",\\\"users\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"overview-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums-card\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"top-users\\\"],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\"],[[24,[\\\"tv_status\\\"]],\\\"pie\\\",\\\"#5CB85C,#D9D24F,#D9534F,#FFC56C,#316395,#994499\\\",[24,[\\\"pie_options\\\"]]]]],false],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-list-container\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[[23,1,[\\\"title\\\"]]],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-card-item\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card-number\\\"],[8],[1,[28,\\\"get\\\",[[24,[\\\"model\\\"]],[28,\\\"concat\\\",[[23,1,[\\\"name\\\"]],\\\".meta.count\\\"],null]],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card-content card-number-content\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"h4\\\",true],[8],[4,\\\"link-to\\\",null,[[\\\"route\\\",\\\"model\\\"],[[28,\\\"concat\\\",[\\\"projects.edit.\\\",[23,1,[\\\"name\\\"]]],null],[24,[\\\"model\\\",\\\"project\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"project.overview.title.\\\",[23,1,[\\\"name\\\"]],\\\"_link\\\"],null]],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card-status\\\"],[8],[0,\\\"\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"projects.overview.nothing_to_show\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/overview/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/passes/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsPassesController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nProjectsPassesController = GeneralReportController.extend({\n    filters: Em.A([\n        Em.Object.create({\n            field: 'ori_user',\n        }),\n    ]),\n    ori_site: null,\n    projectObserver: function () {\n        return this.set('page', 1);\n    }.observes('project'),\n    settings: Em.Object.create({\n        localStorageKey: 'project-passes',\n    }),\n    queryParams: [\n        {\n            ori_site: {\n                as: 'project',\n            },\n        },\n        'page',\n        'ori_employer',\n        'ori_user',\n    ],\n    pass_end: '!(empty)',\n    pass_start: '!(empty)',\n    form: 'orientation',\n    //localStorageKey: \"project-passes\"\n    showColumns: ['ori_user', 'pass_start', 'pass_end'],\n});\n\nexport default ProjectsPassesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/passes/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsPassesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nProjectsPassesRoute = GeneralReportRoute.extend({\n    form: 'orientation',\n    queryParams: {\n        ori_site: {\n            refreshModel: true,\n            replace: true,\n        },\n        date: {\n            refreshModel: true,\n            replace: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var project;\n        params = this._super(params);\n        params.ori_date = params.date;\n        delete params.date;\n        if (params.project) {\n            if (params.project !== 'null') {\n                params.ori_site = params.project;\n            }\n        }\n        delete params.project;\n        params.sideload = true;\n        params.pass_end =\n            moment().format('YYYY-MM-DD') + '_' + moment().add(7, 'day').format('YYYY-MM-DD');\n        project = this.modelFor('projects.edit');\n        params.ori_site = project.get('id');\n        return this.store.query('orientation', params);\n    },\n});\n\nexport default ProjectsPassesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"IfGqctLy\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/passes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/project-files/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsViewProjectFileController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nProjectsViewProjectFileController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'ori_site',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    ori_site: null,\n    projectFilesObserver: function () {\n        return this.set('page', 1);\n    }.observes('projectfile'),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideEdit: true,\n            hideHistory: true,\n        }),\n    }),\n    queryParams: [\n        'page',\n        'user',\n        {\n            ori_site: {\n                as: 'project',\n            },\n        },\n        'row_info_status',\n        'q',\n    ],\n    row_info_status: null,\n    filter: false,\n    search: false,\n    form: 'projectfile',\n    showColumns: ['description', 'file'],\n    cancelRoute: 'projects.projectfiles',\n    show_link: false,\n    link: Ember.computed(function () {\n        return {\n            link: ['projects.edit.add-file'],\n            translated: this.get('intl').t('menu.add_project_file'),\n        };\n    }),\n    actions: {\n        tmp: function () {\n            return console.log('joo');\n        },\n    },\n});\n\nexport default ProjectsViewProjectFileController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/project-files/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditProjectFilesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nProjectsEditProjectFilesRoute = GeneralReportRoute.extend({\n    Collector: Ember.inject.service('collector-service'),\n    gui: Ember.inject.service(),\n    beforeModel: function () {\n        this._super(...arguments);\n        return this.set('gui.hideMobileHeader', false);\n    },\n    queryParams: {\n        ori_date: {\n            refreshModel: true,\n            replace: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        ori_site: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var project;\n        params = this._super(params);\n        params.ori_date = params.date;\n        delete params.date;\n        if (params.project) {\n            if (params.project !== 'null') {\n                params.ori_site = params.project;\n            }\n        }\n        delete params.project;\n        params.sideload = true;\n        project = this.modelFor('projects.edit');\n        //console.log project.get('id')\n        params['project'] = project.get('id');\n        return this.store.query('projectfile', params);\n    },\n});\n\nexport default ProjectsEditProjectFilesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"EC2p3Ep2\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[0,\\\"\\\\n         \\\"],[4,\\\"link-to\\\",null,[[\\\"params\\\"],[[24,[\\\"link\\\",\\\"link\\\"]]]],{\\\"statements\\\":[[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary wide-button\\\"],[8],[1,[24,[\\\"link\\\",\\\"translated\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"formatter\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"formatter\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/project-files/template.hbs\"}});","import Controller from '@ember/controller';\nimport EmberObject, { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport { A } from '@ember/array';\nimport avi from '../../../../mixins/avi';\nimport initController from '../../../../mixins/init-controller';\n\nexport default Controller.extend(avi, initController, {\n    intl: service(),\n    ttapi: service(),\n    store: service(),\n    Collector: service('collector-service'),\n    limit: 25,\n    page: 1,\n    queryObject: null,\n    employer: null,\n    init() {\n        this._super(...arguments);\n        this.columns = this.Collector.fieldArray('user');\n        this.showColumns = this.columns.mapBy('name');\n        this.queryParams = this.showColumns.concat(['page', 'q']);\n        this.rowActions = [\n            { action: 'edit', icon: 'move move-Pencil', text: this.intl.t('general.edit') },\n        ];\n        this.queryObject = {};\n    },\n\n    project: alias('model.project'),\n    data: alias('model.data'),\n\n    filters: computed(function () {\n        let filterArr = A([\n            EmberObject.create({ field: 'employer', form: 'user', singleselect: 'true' }),\n            EmberObject.create({ type: 'searchbox' }),\n        ]);\n\n        // Add all the possible filters from user report as \"more filters\"\n        const filterTypes = [\n            'date',\n            'database',\n            'databasearray',\n            'multiselect',\n            'dropdown_options',\n            'dropdown_values',\n            'dropdown_userlevel',\n            'dropdown_country',\n            'checkbox',\n        ];\n        for (const col of this.columns) {\n            if (!filterTypes.includes(col.type)) continue;\n            if (col.name === 'employer') continue;\n            filterArr.pushObject(\n                EmberObject.create({\n                    field: col.name,\n                    form: col.form,\n                    type: col.type,\n                    options: col.options,\n                    extra: true,\n                }),\n            );\n        }\n        return filterArr;\n    }),\n\n    pages: computed('data.count', function () {\n        return Math.ceil(get(this, 'data.count') / get(this, 'limit'));\n    }),\n    translated_columns: computed(function () {\n        return get(this, 'columns').mapBy('translated_name');\n    }),\n\n    actions: {\n        filterChanged(value, field) {\n            if (!value) value = '';\n            value = value.id || value;\n            set(this, field, value);\n        },\n\n        action(type, row) {\n            if (type === 'edit') {\n                this.transitionToRoute('users.edit', row.id).then((newRoute) =>\n                    this._afterSave(newRoute),\n                );\n            }\n        },\n    },\n\n    _afterSave(newRoute) {\n        newRoute.controller.afterSave = {\n            route: 'projects.edit.project-users',\n            params: this.project.id,\n        };\n    },\n\n    init_functions() {\n        this._super();\n    },\n});\n","import GeneralReportRoute from '../../../../routes/general-report';\nimport { get } from '@ember/object';\nimport { hash } from 'rsvp';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\n\nexport default GeneralReportRoute.extend({\n    ttapi: service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n\n    model(params) {\n        params = this._super(params);\n\n        // Delete empty params and add all params to queryParams so filtering works\n        Object.keys(params).forEach((param) => {\n            if (isEmpty(params[param])) delete params[param];\n            this.queryParams[param] = { refreshModel: true };\n        });\n        let project = this.modelFor('projects.edit');\n        params.project = get(project, 'id');\n        let data = get(this, 'ttapi').request('/avi/project_users', {\n            type: 'GET',\n            data: params,\n        });\n        return hash({\n            data: data,\n            project: project,\n        });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"v50oMRIl\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"columns\\\",\\\"rowActions\\\",\\\"button\\\",\\\"column\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mt-4 row report-main-content\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\",\\\"hideClearFilters\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\",true]]],false],[0,\\\"\\\\n\\\"],[4,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"checkable\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"hideSort\\\"],[[24,[\\\"showColumns\\\"]],[24,[\\\"translated_columns\\\"]],[23,0,[\\\"data\\\",\\\"users\\\"]],false,[24,[\\\"rowActions\\\"]],\\\"action\\\",true]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[11,\\\"class\\\",[29,[[23,1,[\\\"class\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                        \\\"],[5,\\\"addon/value-format\\\",[],[[\\\"@form\\\",\\\"@field\\\",\\\"@value\\\"],[\\\"user\\\",[23,5,[]],[28,\\\"get\\\",[[23,1,[]],[23,5,[]]],null]]]],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[4,\\\"if\\\",[[23,3,[\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-row-icon invisible\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[[23,4,[\\\"icon\\\"]]]]],[3,\\\"action\\\",[[23,0,[]],\\\"action\\\",[23,4,[\\\"action\\\"]],[23,1,[]]]],[8],[4,\\\"if\\\",[[23,4,[\\\"text\\\"]]],null,{\\\"statements\\\":[[0,\\\" \\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,4,[\\\"text\\\"]]]]],false],[0,\\\" \\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2,3]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pages\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/project-users/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { computed } from '@ember/object';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    cc: service(),\n    showInfo: false,\n    row: null,\n\n    project: alias('model'),\n\n    lock: computed('row', function () {\n        return get(this, 'cc').request('rollock-lock-status', {\n            data: {\n                serialNumber: get(this, 'row.serialnumber'),\n                throwErrors: true,\n            },\n        });\n    }),\n\n    defaultValues: computed('project', function () {\n        return { project: get(this, 'project') };\n    }),\n\n    actions: {\n        rowAdded() {\n            this.notifyPropertyChange('defaultValues');\n        },\n        toggleInfo(row) {\n            if (row) {\n                set(this, 'row', row);\n            } else {\n                set(this, 'row', null);\n            }\n            this.toggleProperty('showInfo');\n        },\n    },\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"/dhjBqUi\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"row\\\",\\\"modal\\\",\\\"form\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"rollock@add\\\"],null]],null,{\\\"statements\\\":[[4,\\\"auto-modal\\\",null,[[\\\"header\\\"],[[28,\\\"collector-form-name\\\",[\\\"rollock\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"open\\\"]],\\\"expected `modal.open` to be a contextual component but found a string. Did you mean `(component modal.open)`? ('tt4/pods/projects/edit/rollocks/template.hbs' @ L5:C11) \\\"],null]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],[23,4,[\\\"show\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"content\\\"]],\\\"expected `modal.content` to be a contextual component but found a string. Did you mean `(component modal.content)`? ('tt4/pods/projects/edit/rollocks/template.hbs' @ L6:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"defaults\\\",\\\"close\\\",\\\"rowAdded\\\"],[\\\"rollock\\\",[24,[\\\"defaultValues\\\"]],[28,\\\"action\\\",[[23,0,[]],[23,4,[\\\"close\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null]]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"fields\\\"]],\\\"expected `form.fields` to be a contextual component but found a string. Did you mean `(component form.fields)`? ('tt4/pods/projects/edit/rollocks/template.hbs' @ L8:C18) \\\"],null]],[[\\\"only\\\"],[\\\"serialnumber,direction,description\\\"]]],false],[0,\\\"\\\\n                \\\"],[1,[23,5,[\\\"buttons\\\"]],false],[0,\\\"\\\\n                \\\"],[1,[23,5,[\\\"saved\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"collector/form-report\\\",null,[[\\\"form\\\",\\\"filter\\\",\\\"showColumns\\\"],[\\\"rollock\\\",[24,[\\\"defaultValues\\\"]],\\\"serialnumber,direction,description\\\"]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/projects/edit/rollocks/template.hbs' @ L19:C7) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"rowActions\\\"]],\\\"expected `table.rowActions` to be a contextual component but found a string. Did you mean `(component table.rowActions)`? ('tt4/pods/projects/edit/rollocks/template.hbs' @ L20:C11) \\\"],null]],[[\\\"showActions\\\"],[\\\"remove\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Globe\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"rollock.lock_status.tooltip\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"toggleInfo\\\",[23,3,[]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"        \\\"],[1,[23,2,[\\\"no-content\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showInfo\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"close\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"toggleInfo\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"lock\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"lock\\\"]]],null],\\\"firmwareVersion\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"rollock.lock_status.lastConnection\\\"],null],false],[0,\\\":\\\"],[9],[1,[28,\\\"moment-format\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"lock\\\"]]],null],\\\"lastConnection\\\"],null],\\\"llll\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"rollock.lock_status.timeZone\\\"],null],false],[0,\\\":\\\"],[9],[1,[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"lock\\\"]]],null],\\\"timeZone\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"rollock.lock_status.locale\\\"],null],false],[0,\\\":\\\"],[9],[1,[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"lock\\\"]]],null],\\\"locale\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"rollock.lock_status.firmwareVersion\\\"],null],false],[0,\\\":\\\"],[9],[1,[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"lock\\\"]]],null],\\\"firmwareVersion\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"rollock.lock_status.not_found\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/rollocks/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nProjectsEditRoute = GeneralAddRoute.extend({\n    modelName: 'project',\n    controllerName: 'projects/edit',\n    edit: true,\n    afterSave: 'projects',\n});\n\nexport default ProjectsEditRoute;\n","import Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { computed, get, set } from '@ember/object';\nimport { filterBy, gt } from '@ember/object/computed';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    Collector: service('collector-service'),\n    session: service(),\n    store: service(),\n    dialogs: service(),\n    intl: service(),\n    queryParams: ['searchTerm'],\n\n    searchTerm: '',\n    dirtyRecords: filterBy('model.allSubProjects', 'hasDirtyAttributes', true),\n    hasDirtyRecords: gt('dirtyRecords.length', 0),\n    subproject: alias('model'),\n    _subprojects: computed('model.{subprojects,subprojects.[]}', function () {\n        if (get(this, 'Collector').testNeeds(['products.subprojectsmulti'])) {\n            return get(this, 'model.subprojects').map((item) => {\n                set(item, 'selected', get(item, 'project').includes(get(this, 'model.recordid'))); // eslint-disable-line\n                return item;\n            });\n        } else {\n            return get(this, 'model.subprojects').map((item) => {\n                item.selected = true;\n                return item;\n            });\n        }\n    }),\n\n    actions: {\n        searchChanged(term) {\n            set(this, 'searchTerm', term);\n        },\n        save() {\n            set(this, 'saving', true);\n\n            const promises = [];\n            get(this, 'dirtyRecords').forEach((record) => {\n                promises.push(record.save());\n            });\n\n            Promise.all(promises).then(() => this._setSavingFalse());\n        },\n\n        toggle(record) {\n            // skip toggling if multi subprojects is not on\n            if (!get(this, 'Collector').testNeeds(['products.subprojectsmulti'])) {\n                return;\n            }\n\n            if (get(record, 'project').includes(get(this, 'model.recordid'))) {\n                get(record, 'project').removeObject(get(this, 'model.recordid'));\n            } else {\n                get(record, 'project').pushObject(get(this, 'model.recordid'));\n            }\n\n            record.send('becomeDirty');\n\n            this.notifyPropertyChange('_subprojects');\n        },\n        changeNewSubprojectName(newName) {\n            set(this, 'newSubprojectName', newName);\n        },\n\n        addSubproject(name) {\n            set(this, 'saving', true);\n\n            let record;\n            if (get(this, 'edit')) {\n                set(this, 'edit.name', name);\n                record = get(this, 'edit');\n            } else {\n                const project = get(this, 'Collector').testNeeds(['products.subprojectsmulti'])\n                    ? [get(this, 'model.recordid')]\n                    : get(this, 'model.record');\n                record = get(this, 'store').createRecord('subproject', {\n                    name: name,\n                    project: project,\n                });\n            }\n            record.save().then(() => this._refresh());\n        },\n\n        open(record) {\n            const field = get(this, 'Collector').field('subproject', 'name');\n            field.value = record ? get(record, 'name') : '';\n            set(this, 'edit', record);\n            set(this, 'field', field);\n            set(this, 'showAddPopup', true);\n        },\n\n        remove(record) {\n            let confirm_text = get(this, 'intl').t('general.remove_row');\n            if (get(this, 'Collector').testNeedsOne('products.subprojectsmulti')) {\n                confirm_text = get(this, 'intl').t('subproject.remove_subproject', {\n                    count: get(record, 'project.length'),\n                });\n            }\n            get(this, 'dialogs')\n                .confirm(confirm_text)\n                .then((con) => this._removeRecord(con, record));\n        },\n    },\n\n    _setSavingFalse() {\n        set(this, 'saving', false);\n    },\n    _refresh() {\n        set(this, 'saving', false);\n        set(this, 'showAddPopup', false);\n        this.send('refreshModel');\n    },\n    _removeRecord(con, record) {\n        if (con) {\n            record.destroyRecord();\n        }\n    },\n});\n","import { inject as service } from '@ember/service';\nimport Route from '@ember/routing/route';\nimport { hash } from 'rsvp';\nimport { get } from '@ember/object';\n\nexport default Route.extend({\n    Collector: service('collector-service'),\n    session: service(),\n\n    queryParams: {\n        searchTerm: {\n            refreshModel: true,\n        },\n    },\n\n    model(params) {\n        // if subprojectsmulti is not we are just using form-report\n        if (!get(this, 'Collector').testNeeds(['products.subprojectsmulti']))\n            return { project: this.modelFor('projects.edit') };\n\n        let subprojectparams = {};\n\n        if (get(this, 'Collector').testNeeds(['products.subprojects'])) {\n            subprojectparams.project = get(this.modelFor('projects.edit'), 'id');\n        }\n\n        if (params.searchTerm) {\n            subprojectparams.q = params.searchTerm;\n        }\n\n        return hash({\n            record: this.modelFor('projects.edit'),\n            recordid: parseInt(get(this.modelFor('projects.edit'), 'id'), 10),\n            subprojects: this.store.query('subproject', subprojectparams),\n            allSubProjects: this.store.peekAll('subproject'),\n        });\n    },\n\n    actions: {\n        refreshModel() {\n            this.refresh();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"DcuMDeGE\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"subproject\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.subprojectsmulti\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"search-box\\\",null,[[\\\"value\\\",\\\"change\\\",\\\"classes\\\"],[[24,[\\\"searchTerm\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"searchChanged\\\"],null],\\\"form-control add-field\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group link-component-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_subprojects\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"list-group-item link\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"subproject@remove\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"badge\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,3,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Delete\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.subprojectsmulti\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[\\\"badge \\\",[28,\\\"if\\\",[[23,3,[\\\"selected\\\"]],\\\"link-comp-badge\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,3,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"p\\\",false],[12,\\\"class\\\",\\\"link-component-name\\\"],[12,\\\"title\\\",[29,[[23,3,[\\\"name\\\"]]]]],[3,\\\"action\\\",[[23,0,[]],\\\"open\\\",[23,3,[]]]],[8],[1,[23,3,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"subproject@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block project.task.button-margin\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"open\\\"]],[8],[1,[28,\\\"t\\\",[\\\"add.subproject\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddPopup\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"add.subproject\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAddPopup\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"collector/field-container\\\",null,[[\\\"field\\\",\\\"change\\\"],[[24,[\\\"field\\\"]],\\\"changeNewSubprojectName\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row record-comp-buttons\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addSubproject\\\",[24,[\\\"newSubprojectName\\\"]]]],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAddPopup\\\"]]],null],false]],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasDirtyRecords\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block project.task.button-margin\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"collector/form-report\\\",null,[[\\\"form\\\",\\\"filter\\\",\\\"showColumns\\\"],[\\\"subproject\\\",[28,\\\"hash\\\",null,[[\\\"project\\\"],[[24,[\\\"model\\\",\\\"project\\\"]]]]],\\\"number,name,description\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[23,1,[\\\"add\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/projects/edit/subprojects/template.hbs' @ L67:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"rowActions\\\"]],\\\"expected `table.rowActions` to be a contextual component but found a string. Did you mean `(component table.rowActions)`? ('tt4/pods/projects/edit/subprojects/template.hbs' @ L68:C14) \\\"],null]],[[\\\"showActions\\\"],[\\\"edit,remove\\\"]]],false],[0,\\\"\\\\n            \\\"],[1,[23,2,[\\\"action\\\"]],false],[0,\\\"\\\\n            \\\"],[1,[23,2,[\\\"no-content\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/subprojects/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/tasks/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditTasksController;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nProjectsEditTasksController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    form: 'task',\n    show_linker_modal: false,\n    hide_linker: false,\n    actions: {\n        modalRecordSaved: function (settings, record) {\n            var c, id;\n            this.set('hide_linker', true);\n            id = this.get('model.record.id');\n            c = this.get('Collector');\n            return c\n                .getLinks(id, this.get('model.record.constructor.modelName'), 'task')\n                .then((tmp_links) => {\n                    var all_links, i, len, link, links;\n                    links = tmp_links['tasks'];\n                    all_links = [];\n                    all_links.push(record.id);\n                    for (i = 0, len = links.length; i < len; i++) {\n                        link = links[i];\n                        all_links.push(link['id']);\n                    }\n                    return c\n                        .saveLinks(\n                            id,\n                            this.get('model.record.constructor.modelName'),\n                            'task',\n                            all_links,\n                        )\n                        .then((links) => {\n                            this.set('hide_linker', false);\n                            this.set('show_linker_modal', false);\n                            return false;\n                        });\n                });\n        },\n        removeModal: function () {\n            return this.set('show_linker_modal', false);\n        },\n        openDialog: function () {\n            this.set('show_linker_modal', true);\n            return false;\n        },\n    },\n});\n\nexport default ProjectsEditTasksController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/tasks/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditTasksRoute;\n\nimport Ember from 'ember';\n\nProjectsEditTasksRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Em.inject.service(),\n    modelCreator: Ember.inject.service('model-creator'),\n    model: function (params) {\n        var c, field;\n        c = this.get('Collector');\n        if (c.fieldExists('worktime', 'task')) {\n            field = c.field('worktime', 'task');\n        } else {\n            field = c.field('multitask', 'taskname');\n        }\n        return Ember.RSVP.hash({\n            record: this.modelFor('projects.edit'),\n            field: field.options.fields,\n            tasks: this.modelFor('task'),\n        });\n    },\n    actions: {\n        //has to reload /forms to get reload setting to work\n        willTransition: function (transition) {\n            return this.get('modelCreator').createEmberModels();\n        },\n    },\n});\n\nexport default ProjectsEditTasksRoute;\n","export default Ember.HTMLBars.template({\"id\":\"IQ+HWOre\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"projects.edit.tasks.title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"projects.edit.tasks.description\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n   \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hide_linker\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/linker-comp\\\",null,[[\\\"model\\\",\\\"link\\\",\\\"show_fields\\\",\\\"linkTo\\\"],[[24,[\\\"model\\\",\\\"record\\\"]],\\\"task\\\",[24,[\\\"model\\\",\\\"field\\\"]],\\\"project\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n   \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"task@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block project.task.button-margin\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openDialog\\\"]],[8],[1,[28,\\\"t\\\",[\\\"add.task\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_linker_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"menu.add_task\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"cancelClicked\\\",\\\"recordSaved\\\"],[[24,[\\\"form\\\"]],[24,[\\\"record\\\"]],\\\"removeModal\\\",\\\"modalRecordSaved\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/tasks/template.hbs\"}});","import Controller from '@ember/controller';\nimport { computed, get } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    store: service(),\n    intl: service(),\n\n    selectedMonth: 0,\n\n    init() {\n        this._super();\n        this.contacts = get(this, 'store').findAll('exportContactPerson');\n        this.settings = { form: 'export-contact-person' };\n    },\n\n    taxmanerror: alias('model'),\n    taxmanKey: computed('taxmanerror.proj_type', function () {\n        if (get(this, 'taxmanerror.proj_type') == '4') {\n            return 'vsurakka';\n        } else {\n            return 'vstyonte';\n        }\n    }),\n    taxmanOptions: computed(function () {\n        return [\n            { id: 'vstyonte', name: get(this, 'intl').t('taxman.version.taxman_tyonte') },\n            { id: 'vsurakka', name: get(this, 'intl').t('taxman.version.taxman_urakka') },\n        ];\n    }),\n\n    contactSet: computed('contacts.[]', function () {\n        let contacts = get(this, 'contacts').filter((contact) => {\n            return get(contact, 'isNew') === false;\n        });\n        return contacts.length > 0;\n    }),\n\n    months: computed(function () {\n        let count = 0;\n        let montharr = [];\n\n        while (count < 36) {\n            const obj = {\n                id: count,\n                name: moment().subtract(count++, 'months').format('MMMM YYYY'),\n            };\n            montharr.push(obj);\n        }\n        return montharr;\n    }),\n\n    values: computed('model.id', function () {\n        let month = get(this, 'selectedMonth');\n\n        let moment_month = moment().subtract(month, 'months');\n\n        const project = get(get(this, 'model'), 'id');\n\n        let arr = [];\n\n        if (get(this, 'taxmanKey') == 'vstyonte') {\n            arr = [\n                {\n                    name: 'date',\n                    value:\n                        moment_month.startOf('month').format('YYYY-MM-DD') +\n                        '_' +\n                        moment_month.endOf('month').format('YYYY-MM-DD'),\n                },\n                {\n                    name: 'project',\n                    value: project,\n                },\n            ];\n        } else {\n            arr = [\n                {\n                    name: 'contract_month',\n                    value: moment_month.format('YYYY-MM'),\n                },\n                {\n                    name: 'contract_project',\n                    value: project,\n                },\n            ];\n        }\n\n        return arr;\n    }),\n\n    actions: {\n        toggleModal(settings, record) {\n            if (record) this.notifyPropertyChange('contacts');\n            this.toggleProperty('showModal');\n        },\n\n        fetchErrors() {\n            this.notifyPropertyChange('values');\n        },\n    },\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"56kNXxRy\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row mt-5\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[\\\"form-control input-lg\\\",[24,[\\\"months\\\"]],[24,[\\\"selectedMonth\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"taxmanerror\\\",\\\"proj_type\\\"]],\\\"3\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\"],[\\\"form-control input-lg\\\",[24,[\\\"taxmanOptions\\\"]],[24,[\\\"taxmanKey\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 mt-1\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"fetchErrors\\\"]],[8],[1,[28,\\\"t\\\",[\\\"taxman.fetch_errors\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"contactSet\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"taxman.contactnotset\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"taxman.set_contact\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"taxman/taxreport-component\\\",null,[[\\\"key\\\",\\\"query\\\",\\\"onlyErrors\\\",\\\"requestMethod\\\"],[[24,[\\\"taxmanKey\\\"]],[24,[\\\"values\\\"]],true,\\\"POST\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"taxman.add_contact\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"settings\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"settings\\\"]],\\\"toggleModal\\\",\\\"toggleModal\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/taxmanerrors/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Bvg8zf7Z\",\"block\":\"{\\\"symbols\\\":[\\\"sublink\\\",\\\"sensor\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-fluid\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],\\\"3\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-3 col-md-4 col-sm-6 col-xs-12 my-profile-circle-image-div img-project-div\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-profile-circle-image img-circle img-project\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url(\\\",[22,\\\"projectImage\\\"],\\\");\\\"]]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-6 col-md-6 col-sm-6 col-xs-12\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],\\\"3\\\"],null]],null,{\\\"statements\\\":[[7,\\\"h2\\\",true],[8],[1,[24,[\\\"model\\\",\\\"name\\\"]],false],[9],[7,\\\"h5\\\",true],[8],[1,[28,\\\"concat\\\",[[24,[\\\"model\\\",\\\"proj_firstname\\\"]],\\\" \\\",[24,[\\\"model\\\",\\\"proj_lastname\\\"]]],null],false],[0,\\\" \\\"],[9],[7,\\\"h5\\\",true],[8],[1,[24,[\\\"model\\\",\\\"phone\\\"]],false],[9],[7,\\\"h5\\\",true],[8],[1,[24,[\\\"model\\\",\\\"description\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"project.sensors\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sensors\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"sensors\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"class\\\"],[\\\"loading-icon\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"sensors\\\",\\\"values\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sensor-item\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[8],[1,[23,2,[\\\"value\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"unit\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"options\\\"],[[23,2,[\\\"chart\\\"]],\\\"gauge\\\",[23,2,[\\\"chart_options\\\"]]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"subMenus\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subMenus\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"div\\\",\\\"submenu-item\\\",[23,1,[\\\"link\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/trnotices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditTrnoticesController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nProjectsEditTrnoticesController = GeneralReportController.extend({\n    form: 'trnotice',\n    showColumns: ['date', 'project', 'title', 'desc', 'status', 'pic', 'user'],\n    queryParams: ['date', 'status', 'user'],\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n        }),\n        sortByColumn: 'date',\n    }),\n    filters: Em.A([]),\n    status: 'all',\n});\n\nexport default ProjectsEditTrnoticesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/trnotices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditTrnoticesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nProjectsEditTrnoticesRoute = GeneralReportRoute.extend({\n    form: 'trnotice',\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var project;\n        params = this._super(params);\n        params.sideload = true;\n        project = this.modelFor('projects.edit');\n        params.project = project.get('id');\n        return this.store.query('trnotice', params);\n    },\n});\n\nexport default ProjectsEditTrnoticesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"DmndEcUd\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/trnotices/template.hbs\"}});","import Controller from '@ember/controller';\nimport EmberObject, { computed, get } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\nimport { htmlSafe } from '@ember/string';\nimport config from 'tt4/config/environment';\nimport { isEmpty } from '@ember/utils';\n\nexport default Controller.extend({\n    intl: service(),\n    Collector: service('collector-service'),\n\n    init() {\n        this._super(...arguments);\n        this.columnList = ['name', 'tv_status', 'date_checked', 'tv_pdf'];\n    },\n    content: alias('model.users'),\n    statusFilter: alias('model.status'),\n\n    translated_columns: computed(function () {\n        return get(this, 'columnList').map((column) => {\n            return get(this, 'intl').t('report.employer.' + column);\n        });\n    }),\n\n    data: computed('content', function () {\n        let model = get(this, 'content.employers');\n        if (!model) return;\n\n        if (this.statusFilter) {\n            model = model.filter((row) => row.tv_status === this.statusFilter);\n        }\n\n        let formattedRows = A([]);\n\n        model.forEach((row) => {\n            row.tv_status = this.formatTvStatus(row.tv_status);\n            row.tv_pdf = !isEmpty(row.tv_pdf)\n                ? get(this, 'Collector')._format_(row.tv_pdf, 'employer', 'tv_pdf')\n                : [];\n\n            formattedRows.push(EmberObject.create(row));\n        });\n\n        return formattedRows;\n    }),\n\n    formatTvStatus(status) {\n        if (!status) return;\n        let formatted = get(this, 'intl').t('employer.tv_status.' + status);\n\n        if (status !== 'ei_loydy') {\n            return htmlSafe(\n                '<img class=\"report-img\" src=\"' +\n                    config.APP.CDN_URL +\n                    '/images/tv' +\n                    status +\n                    '.png\" title=\"' +\n                    formatted +\n                    '\">',\n            );\n        } else {\n            return get(this, 'intl').t('employer.tv_status.' + status);\n        }\n    },\n});\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\n\nexport default Route.extend({\n    ttapi: service(),\n\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n    },\n\n    async model(queryparams) {\n        const projectId = get(this.modelFor('projects.edit'), 'id');\n\n        return {\n            users: await get(this, 'ttapi').request('api/project/employersTvStatus', {\n                data: { project: projectId }\n            }),\n            status: queryparams.status,\n        };\n    },\n\n    resetController(controller, isExiting) {\n        if (isExiting) {\n            // Reset the status query parameter to its default value\n            set(controller, 'status', null);\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"CrQIaIBe\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row report-main-content\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\"],[[24,[\\\"columnList\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"data\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/tv-status/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/working-now/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorkingNowController;\n\nimport Ember from 'ember';\n\nimport { inject as service } from '@ember/service';\n\nWorkingNowController = Ember.Controller.extend({\n    ttapi: service(),\n    intl: service(),\n    actions: {\n        showModal: function () {\n            this.set('showModal', true);\n            this.set('messageSent', false);\n            this.set('message_error', false);\n            return false;\n        },\n        closeModal: function () {\n            return this.set('showModal', false);\n        },\n        sendMessage: function () {\n            var message, params, receivers, self, title;\n            self = this;\n            params = {};\n            receivers = [];\n            title = this.get('title');\n            message = this.get('message_content');\n            if (title == null || title === '' || message == null || message === '') {\n                this.set('message_error', true);\n                return;\n            }\n            this.get('model').map((user) => {\n                return receivers.push(user.id);\n            });\n            params.receivers = receivers;\n            params.header = title;\n            params.message = message;\n            return this.get('ttapi')\n                .request('/messages/new_message', {\n                    type: 'POST',\n                    data: params,\n                })\n                .then((data) => {\n                    this.set('messageSent', true);\n                    this.set('title', '');\n                    return this.set('message_content', '');\n                });\n        },\n    },\n});\n\nexport default WorkingNowController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/working-now/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditWorkingNowRoute;\n\nimport Ember from 'ember';\n\nProjectsEditWorkingNowRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    queryParams: {\n        project: {\n            refreshModel: true,\n            replace: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var project, prparams, wtparams;\n        //params = @._super(params)\n        project = this.modelFor('projects.edit');\n        wtparams = {};\n        prparams = {};\n        wtparams.project = project.get('id').toString();\n        wtparams.sideload = ['user.firstname', 'user.lastname', 'user.phone', 'user.image'];\n        wtparams.endtime = '(empty)';\n        prparams.project = project.get('id').toString();\n        prparams.sideload = ['user.firstname', 'user.lastname', 'user.phone', 'user.image'];\n        prparams.out = '(empty)';\n        prparams.groupBy = 'user';\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var c, promarr;\n            promarr = [];\n            c = this.get('Collector');\n            return Ember.RSVP.hash({\n                presences: c.testNeedsOne('presence')\n                    ? this.store.query('presence', prparams)\n                    : void 0,\n                worktimes: c.testNeedsOne('worktime')\n                    ? this.store.query('worktime', wtparams)\n                    : void 0,\n            }).then(function (values) {\n                if (values['worktimes']) {\n                    values['worktimes'].forEach(function (item) {\n                        return promarr.push(item.get('user'));\n                    });\n                }\n                if (values['presences']) {\n                    values['presences'].forEach(function (item) {\n                        return promarr.push(item.get('user'));\n                    });\n                }\n                return resolve(promarr.uniq());\n            });\n        });\n    },\n});\n\nexport default ProjectsEditWorkingNowRoute;\n","export default Ember.HTMLBars.template({\"id\":\"mys/St6h\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\"],\\\"statements\\\":[[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.number_of_working_users_today\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[24,[\\\"model\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"project.send_message\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-fluid\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"user-working-div\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-1 col-md-1 col-sm-3 col-xs-3 my-profile-circle-image-div\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"image\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"user-profile-circle-image img-circle\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[28,\\\"api-image\\\",[[23,1,[\\\"image\\\",\\\"firstObject\\\",\\\"url\\\"]]],null],\\\"');\\\"]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"user-profile-circle-image img-circle\\\"],[10,\\\"id\\\",\\\"image\\\"],[10,\\\"style\\\",\\\"background-image:url('img/user-profile-lg-gray.png');\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-3 col-md-3 col-sm-3 col-xs-3 user-working-data\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[8],[1,[23,1,[\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-3 col-md-3 col-sm-3 col-xs-3 user-working-data\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.phone\\\"],null],false],[0,\\\": \\\"],[1,[23,1,[\\\"phone\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"project.send_message\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"messageSent\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"project.message_sent\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[24,[\\\"message_error\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"project.modal.title\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control\\\",[28,\\\"mut\\\",[[24,[\\\"title\\\"]]],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"project.modal.message\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"class\\\",\\\"rows\\\",\\\"value\\\"],[\\\"form-control\\\",6,[28,\\\"mut\\\",[[24,[\\\"message_content\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendMessage\\\",[24,[\\\"title\\\"]],[24,[\\\"message_content\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"saved.modal.send_message\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/working-now/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsHistoryRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nProjectsHistoryRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default ProjectsHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"KoEgfp0j\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"project\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/history/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"lPwB/9At\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/inactive-loading/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    ttapi: service(),\n    Collector: service('collector-service'),\n\n    init() {\n        this._super(...arguments);\n        this.endpoint = this.ttapi.host + '/inactive_projects';\n        this.types = this.getTypes();\n    },\n\n    content: alias('model'),\n\n    getTypes() {\n        let typesArr = [];\n        if (this.Collector.formExists('worktime')) typesArr.push('worktime');\n        if (this.Collector.formExists('presence')) typesArr.push('presence');\n\n        return typesArr.join(',');\n    },\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"hhpcajh3\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"projects.report.inactive_projects\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[9],[0,\\\"\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showFilters\\\",\\\"@filter\\\",\\\"@hideAdditionalFiltersButton\\\"],[\\\"project\\\",\\\"q\\\",[28,\\\"hash\\\",null,[[\\\"endpoint\\\",\\\"types\\\"],[[23,0,[\\\"endpoint\\\"]],[23,0,[\\\"types\\\"]]]]],true]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/inactive/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport pdfMixin from '../../../mixins/pdf-export';\n\nimport { generateQrCode } from 'tt4/utils/qrcode-generator';\n\nProjectsIndexController = GeneralReportController.extend(pdfMixin, {\n    flags: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    exportFile: Ember.inject.service(),\n    form: 'project',\n    showColumns: [\n        'number',\n        'name',\n        'address',\n        'city',\n        'zip',\n        'proj_type',\n        'proj_end',\n        'description',\n    ],\n    queryParams: ['page', 'q', 'group', 'customer', 'owner', 'contact_user'],\n    filters: Em.A([\n        Em.Object.create({\n            field: 'group',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    status: 'active',\n    group: null,\n    contact_user: null,\n    owner: null,\n    customer: null,\n    settings: Em.Object.create({\n        rowActions: [],\n        massedit: true,\n    }),\n    init_functions: function () {\n        if (!this.get('flags').test('form-report-projects')) {\n            this._super();\n            this.addSelfRegisteringHelp();\n            this.addSmsHelp();\n            return this.addSafetyNoticeUrlCreation();\n        } else {\n            return null;\n        }\n    },\n    addSmsHelp: function () {\n        var _self;\n        _self = this;\n        if (\n            !this.get('Collector').testNeeds([\n                'products.personalliggareandid06||products.personalliggare',\n            ])\n        ) {\n            return;\n        }\n        return this.get('settings.rowActions').push({\n            text: this.get('intl').t('general.smshelp'),\n            action: function (self, projects) {\n                return _self.send('smsHelpFunction', projects);\n            },\n        });\n    },\n    addSelfRegisteringHelp: function () {\n        var _self;\n        _self = this;\n        // hidden for now.. waiting new way to do the whole thing\n        if (!this.get('Collector').testNeeds(['presence', '!products.kulunvalvonta'])) {\n            return;\n        }\n        return this.get('settings.rowActions').push({\n            text: this.get('intl').t('general.usersigninghelp'),\n            action: function (self, projects) {\n                return _self.send('selfRegisteringHelp', projects);\n            },\n        });\n    },\n    addSafetyNoticeUrlCreation: function () {\n        var _self;\n        _self = this;\n        if (\n            !this.get('Collector').testNeeds(['products.measurement_tr||products.measurement_mvr'])\n        ) {\n            return;\n        }\n        return this.get('settings.rowActions').push({\n            text: this.get('intl').t('project.anon_safety_observation'),\n            action: (self, projects) => {\n                return _self.send('safetyNoticeUrlCreationAction', projects);\n            },\n        });\n    },\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        transitionToEditRoute: function (row) {\n            return this.transitionToRoute('projects.edit', row);\n        },\n        showRemovedRows: function () {\n            if (this.get('settings.showStatus') === 'removed') {\n                return this.set('settings.showStatus', 'normal');\n            } else {\n                return this.set('settings.showStatus', 'removed');\n            }\n        },\n\n\n        safetyNoticeUrlCreationAction: function (projects) {\n            var projArr = [];\n            projects.forEach((project) => {\n                projArr.push(project.get('id'));\n            });\n            this.set('gettingUrl', true);\n            return this.get('Collector')\n                .ttapi({\n                    url: 'safety_notice_shorturl',\n                    method: 'post',\n                    data: {\n                        projectids: projArr,\n                        lang: moment.locale(),\n                    },\n                })\n                .then((data) => {\n                    if (data.urls) {\n                        const qrCodeDataUrls = {};\n                        for (const [projectId, url] of Object.entries(data.urls)) {\n                            qrCodeDataUrls[projectId] = generateQrCode(url); // Use plain URL\n                        }\n                        return this.get('Collector')\n                            .ttapi({\n                                url: 'safety_notice_pdf',\n                                method: 'post',\n                                data: {\n                                    originalUrls: data.urls,\n                                    qrCodeDataUrls: qrCodeDataUrls,\n                                    projectids: projArr,\n                                },\n                            })\n                            .then((response) => {\n                                if (response.url) {\n                                    window.open(response.url, '_blank');\n                                }\n                            });\n                    }\n                });\n        },\n        selfRegisteringHelp: function (projects) {\n            /*\n      CREATE USER SIGNING PDF HELP - this is so horrible!!!!!! .. but does the thing\n      */\n            var _self,\n                arr,\n                creator,\n                currenturl,\n                getLongUrl,\n                getTinyUrl,\n                i,\n                intl,\n                len,\n                project,\n                promise,\n                promise_arr,\n                writtenForm;\n            intl = this.get('intl');\n            _self = this;\n            currenturl = window.location.href.split('#')[0];\n            creator = this.get('session.currentUser.username');\n            if (!creator) {\n                alert('Error occured. Please, log in again.');\n                return;\n            }\n            getLongUrl = function (projectid, creator) {\n                return new Em.RSVP.Promise(function (resolve, reject) {\n                    var store, url, userid;\n                    url = '#/register/user?project=' + projectid + '&creator=' + creator;\n                    userid = _self.get('session.currentUser.id');\n                    store = _self.get('store');\n                    return store\n                        .query('user', {\n                            id: userid,\n                            sideload: ['employer.name', 'employer.emp_id', 'employer.country'],\n                        })\n                        .then(() => {\n                            var employer;\n                            employer = _self.get('session.currentUser.employer');\n                            if (employer) {\n                                if (!employer.get('country')) {\n                                    reject({\n                                        missing: 'employer_country',\n                                    });\n                                }\n                                url += '&employer_name=' + encodeURIComponent(employer.get('name'));\n                                url += '&employer_id=' + encodeURIComponent(employer.get('emp_id'));\n                                url +=\n                                    '&employer_country=' +\n                                    encodeURIComponent(employer.get('country'));\n                                return resolve({\n                                    longurl: url,\n                                    employer: employer.get('name'),\n                                });\n                            } else {\n                                return store\n                                    .query('employer', {\n                                        main: 'on',\n                                    })\n                                    .then((employers) => {\n                                        employer = employers.get('firstObject');\n                                        if (employer == null) {\n                                            return alert(\n                                                'Main employer is not set. Cannot create help.',\n                                            );\n                                        } else {\n                                            url +=\n                                                '&employer_name=' +\n                                                encodeURIComponent(employer.get('name'));\n                                            url +=\n                                                '&employer_id=' +\n                                                encodeURIComponent(employer.get('emp_id'));\n                                            url +=\n                                                '&employer_country=' +\n                                                encodeURIComponent(employer.get('country'));\n                                            return resolve({\n                                                longurl: url,\n                                                employer: employer.get('name'),\n                                            });\n                                        }\n                                    });\n                            }\n                        });\n                });\n            };\n            getTinyUrl = function (projectid, projectname) {\n                return new Em.RSVP.Promise(function (resolve, reject) {\n                    //resolve \"http://goo.gl/Aer43 \" + projectid\n                    return getLongUrl(projectid, creator).then(\n                        (ret) => {\n                            var call;\n                            call = _self.Collector.ttapi({\n                                url: 'code/generate',\n                                data: {\n                                    longUrl: currenturl + ret.longurl,\n                                },\n                                method: 'post',\n                            });\n                            return call.then(function (back) {\n                                return resolve({\n                                    project: projectname,\n                                    url: back.id,\n                                    employer: ret.employer,\n                                });\n                            });\n                        },\n                        function (error) {\n                            return reject(error);\n                        },\n                    );\n                });\n            };\n            writtenForm = function (url) {\n                var arr, ascii, character, characters, i, len, numbers, ret_arr, str;\n                arr = url.split('/');\n                str = arr[arr.length - 1];\n                characters = str.split('');\n                numbers = intl.t('general.numbers').split(',');\n                ret_arr = [];\n                for (i = 0, len = characters.length; i < len; i++) {\n                    character = characters[i];\n                    ascii = character.charCodeAt(0);\n                    ret_arr.push(\n                        ascii >= 48 && ascii <= 57\n                            ? numbers[ascii - 48]\n                            : ascii >= 65 && ascii <= 90\n                              ? intl.t('general.big_char') + ' ' + character\n                              : ascii >= 97 && ascii <= 122\n                                ? intl.t('general.small_char') +\n                                  ' ' +\n                                  String.fromCharCode(ascii - 32)\n                                : void 0,\n                    );\n                }\n                return ret_arr.join(', ');\n            };\n            promise_arr = [];\n            arr = [];\n            for (i = 0, len = projects.length; i < len; i++) {\n                project = projects[i];\n                promise = getTinyUrl(project.get('id'), project.get('name'));\n                promise_arr.push(promise);\n                promise.then(function (back) {\n                    return arr.push(back);\n                });\n            }\n            return Em.RSVP.Promise.all(promise_arr).then(\n                function () {\n                    var codeBlock, elem, first, j, len1, pdfElements, start;\n                    pdfElements = [];\n                    first = true;\n                    for (j = 0, len1 = arr.length; j < len1; j++) {\n                        elem = arr[j];\n                        if (elem.url.indexOf('=') < 0) {\n                            start = elem.url.lastIndexOf('/') + 1; // when using http://m0v.eu/<code> url\n                        } else {\n                            start = elem.url.indexOf('=') + 1; // when using kehityspurkki or p.move (http://p.movenium.com/next/ttapi/public/code?code=<code>)\n                        }\n                        codeBlock = elem.url.substring(start);\n                        if (first) {\n                            pdfElements.push(elem.project + ' - ' + elem.employer);\n                        } else {\n                            pdfElements.push({\n                                text: elem.project + ' - ' + elem.employer,\n                                pageBreak: 'before',\n                            });\n                        }\n                        pdfElements.push(' ');\n                        pdfElements.push(intl.t('general.usersigninghelp_before').toString());\n                        pdfElements.push({\n                            text: elem.url,\n                            style: 'bigText',\n                            margin: [10, 10, 10, 10],\n                        });\n                        pdfElements.push('(' + writtenForm(elem.url) + ')');\n                        pdfElements.push(' ');\n                        pdfElements.push(intl.t('general.usersigninghelp_after').toString());\n                        pdfElements.push({\n                            text: codeBlock,\n                            style: 'bigText',\n                            margin: [10, 10, 10, 10],\n                        });\n                        first = false;\n                    }\n                    return _self.createPdfFromElements(pdfElements);\n                },\n                (error) => {\n                    if (error.missing) {\n                        return self\n                            .get('dialogs')\n                            .alert(\n                                self\n                                    .get('intl')\n                                    .t('user_invite.pdf_create.missing.' + error.missing),\n                            );\n                    } else {\n                        return self.get('dialogs').alert(self.get('intl').t('general.error'));\n                    }\n                },\n            );\n        },\n        //########################################################\n        smsHelpFunction: function (projects) {\n            var _self, first, i, intl, len, pdfElements, project, text;\n            intl = this.get('intl');\n            pdfElements = [];\n            first = true;\n            _self = this;\n            for (i = 0, len = projects.length; i < len; i++) {\n                project = projects[i];\n                if (!project.get('number')) {\n                    alert(\n                        intl.t('general.smshelperror', {\n                            projectname: project.get('name'),\n                            projectnumber: project.get('number'),\n                        }),\n                    );\n                    continue;\n                }\n                text = intl.t('general.smshelptext', {\n                    projectname: project.get('name'),\n                    projectnumber: project.get('number'),\n                });\n                if (first) {\n                    pdfElements.push(text);\n                } else {\n                    pdfElements.push({\n                        text: text,\n                        pageBreak: 'before',\n                    });\n                }\n                first = false;\n            }\n            if (pdfElements.length > 0) {\n                return _self.createPdfFromElements(pdfElements);\n            }\n        },\n    },\n});\n\nexport default ProjectsIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nProjectsIndexRoute = GeneralReportRoute.extend({\n    flags: Ember.inject.service(),\n    form: 'project',\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        if (\n            !this.get('flags').test('form-report-projects') &&\n            !this.get('flags').test('ember-movenium-form-report-projects')\n        ) {\n            params = this._super(params);\n            params.sideload = true;\n            return this.store.query('project', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('projects.index').set('qParams', params);\n        }\n    },\n});\n\nexport default ProjectsIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"SnW3vasg\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"row\\\",\\\"tableAction\\\",\\\"more\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-projects\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@filterByValues\\\",\\\"@form\\\",\\\"@showFilters\\\",\\\"@filterChangeAction\\\"],[[22,\\\"qParams\\\"],\\\"project\\\",\\\"group,customer,owner,contact_user,q\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,6,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/projects/edit/\\\"]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"presence\\\",\\\"!products.kulunvalvonta\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,9,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"selfRegisteringHelp\\\",[23,7,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"general.usersigninghelp\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.personalliggareandid06||products.personalliggare\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,9,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"smsHelpFunction\\\",[23,7,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"general.smshelp\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.measurement_tr||products.measurement_mvr\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,9,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"safetyNoticeUrlCreationAction\\\",[23,7,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"project.anon_safety_observation\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"]],\\\"parameters\\\":[9]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"transitionToEditRoute\\\"],null],\\\"remove,history,overview,edit\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"form-report-projects\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"collector/form-report\\\",[],[[\\\"@filterByValues\\\",\\\"@form\\\"],[[22,\\\"qParams\\\"],\\\"project\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"filters\\\"]],[],[[\\\"@showColumns\\\",\\\"@filterChangeAction\\\"],[\\\"group,customer,owner,contact_user,q\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"more\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"qrCode\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"presence\\\",\\\"!products.kulunvalvonta\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,5,[\\\"row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"selfRegisteringHelp\\\",[23,2,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"general.usersigninghelp\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.personalliggareandid06||products.personalliggare\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,5,[\\\"row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"smsHelpFunction\\\",[23,2,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"general.smshelp\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.measurement_tr||products.measurement_mvr\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,5,[\\\"row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"safetyNoticeUrlCreationAction\\\",[23,2,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"project.anon_safety_observation\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"inlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"pdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"columnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"exportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"gps\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"rowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"remove,history\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionToEditRoute\\\",[23,3,[]]]],[8],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"no-content\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"project\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"settings\\\",\\\"_showGpsButton\\\"],[\\\"bubbleTransition\\\",\\\"project\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"settings\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/index/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"EXiTH9B8\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/magickey/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsMagickeyController;\n\nimport Ember from 'ember';\n\nProjectsMagickeyController = Ember.Controller.extend({\n    queryParams: ['magic_key'],\n    Collector: Em.inject.service('collector-service'),\n    intl: Em.inject.service(),\n    mySites: Em.inject.service(),\n    session: Em.inject.service(),\n    tools: Em.inject.service(),\n    store: Em.inject.service(),\n    selfregister_url: null,\n    createNewUserAndLogin: function (creator, projectid) {\n        var p1, userinfo;\n        userinfo = {\n            project: projectid,\n            creator: creator,\n            person_country: this.get('session.currentUser.homecountry')\n                ? this.get('session.currentUser.homecountry')\n                : null,\n            lastname: this.get('session.currentUser.lastname'),\n            firstname: this.get('session.currentUser.firstname'),\n            id06card: this.get('session.currentUser.id06kort'),\n            person_code: this.get('session.currentUser.personid'),\n            relative_name: this.get('session.currentUser.relative_name'),\n            relative_phone: this.get('session.currentUser.relative_phone'),\n            email: this.get('session.currentUser.email'),\n            phone: this.get('session.currentUser.phone'),\n            id06valid: this.get('session.currentUser.id06valid'),\n            taxnumber: this.get('session.currentUser.taxnumber'),\n            birthdate: this.get('session.currentUser.birthdate'),\n            contract_type: this.get('session.currentUser.emp_relation'),\n            workpass: this.get('session.currentUser.workpass'),\n        };\n        //number: @get 'session.currentUser.number'\n        p1 = new Ember.RSVP.Promise((resolve, reject) => {\n            var employer;\n\n            // first fetch employer from api to get the needed info (emp_id and country)\n            if (this.get('Collector').testNeedsOne('employer')) {\n                return this.get('store')\n                    .findRecord('employer', this.get('session.currentUser.employer.id'), {\n                        reload: true,\n                    })\n                    .then((employer) => {\n                        userinfo['employer_name'] = employer.get('name');\n                        userinfo['employer_id'] = employer.get('emp_id');\n                        userinfo['employer_country'] = employer.get('country');\n                        return resolve(userinfo);\n                    });\n            } else {\n                //if service doesnt have employers on, employer is the current company\n                employer = this.get('session.currentUser.company_info');\n                userinfo['employer_name'] = employer.get('company_name');\n                userinfo['employer_id'] = employer.get('id');\n                userinfo['employer_country'] = employer.get('country');\n                return resolve(userinfo);\n            }\n        });\n        return p1.then((userinfo) => {\n            var promise;\n            promise = this.get('Collector').ttapi({\n                url: 'registerUser',\n                method: 'post',\n                data: {\n                    userinfo: userinfo,\n                },\n            });\n            return promise.then((back) => {\n                this.get('mySites').addSiteWithJustId(projectid);\n                return this.get('tools').change_service(back.username, '#/my-sites');\n            });\n        });\n    },\n    actions: {\n        changeuser: function () {\n            var c, params, username;\n            username = this.get('change_user_username');\n            c = this.get('Collector');\n            params = {\n                url: 'login',\n                type: 'POST',\n                data: {\n                    change_user: username,\n                },\n            };\n            return c.ajax(params).then((data) => {\n                return this.transitionToRoute('token', data.refresh_token, {\n                    queryParams: {\n                        url: window.location.href,\n                    },\n                });\n            });\n        },\n        add_project_with_magickey: function (magickey) {\n            var c, promise;\n            c = this.get('Collector');\n            if (!magickey) {\n                this.set('error', this.get('intl').t('magic_key.error_key_not_given'));\n                return;\n            }\n            this.set('error', null);\n            promise = c.ttapi({\n                url: 'send_magickey',\n                method: 'post',\n                data: {\n                    magickey: magickey,\n                },\n            });\n            return promise.then(\n                (back) => {\n                    switch (back.type) {\n                        case 'linked':\n                            if (back.projectid) {\n                                this.get('mySites').addSite(back.projectid, true);\n                            }\n                            return this.set('show_linking_done', true);\n                        case 'selfregister':\n                            this.set('selfregister_url', back.url);\n                            if (back.creator) {\n                                return this.createNewUserAndLogin(back.creator, back.project);\n                            } else {\n                                // fall back version if ttapi isnt returning creator\n                                return this.set('show_needs_selfregister', true);\n                            }\n                            break;\n                        case 'changeuser':\n                            this.set('change_user_username', back.username);\n                            return this.set('show_needs_changeuser', true);\n                        default:\n                            this.set('error', 'unknown error!!');\n                            return console.error(\n                                'Unknown response for add_project_with_magickey ' +\n                                    JSON.stringify(back),\n                            );\n                    }\n                },\n                (reason) => {\n                    return this.set(\n                        'error',\n                        this.get('intl').t('magic_key.error_' + reason.payload.error),\n                    );\n                },\n            );\n        },\n    },\n});\n\nexport default ProjectsMagickeyController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/magickey/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsMagickeyRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nProjectsMagickeyRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default ProjectsMagickeyRoute;\n","export default Ember.HTMLBars.template({\"id\":\"fu8ez7CT\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.join-project\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"my-sites\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-md-4 col-sm-offset-3 col-md-offset-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"magic_key.enter_key\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"magic_key.description\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"text\\\",[24,[\\\"magic_key\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[23,0,[\\\"error\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_needs_selfregister\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"magic_key.needs_to_selfregister\\\"],null],false],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[29,[[22,\\\"selfregister_url\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"magic_key.goto_selfregister\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_needs_changeuser\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"magic_key.needs_to_changeuser\\\"],null],false],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"changeuser\\\"]],[8],[1,[28,\\\"t\\\",[\\\"magic_key.chageuser_now\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_linking_done\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"magic_key.linking_done\\\"],null],false],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add_project_with_magickey\\\",[24,[\\\"magic_key\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"magic_key.send\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/magickey/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/removed/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsRemovedController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nProjectsRemovedController = GeneralReportController.extend({\n    flags: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    form: 'project',\n    showColumns: ['number', 'name', 'proj_type', 'proj_end', 'description'],\n    queryParams: ['page', 'q', 'group'],\n    init_functions: function () {\n        if (this.get('flags').test('form-report-projects')) {\n            return null;\n        } else {\n            return this._super();\n        }\n    },\n    filters: Em.A([\n        Em.Object.create({\n            field: 'group',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    row_info_status: 'removed',\n    group: null,\n    settings: Em.Object.create({\n        showStatus: 'removed',\n        rowActions: [],\n    }),\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n    },\n});\n\nexport default ProjectsRemovedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/removed/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nProjectsIndexRoute = GeneralReportRoute.extend({\n    flags: Ember.inject.service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        if (\n            !this.get('flags').test('form-report-projects') &&\n            !this.get('flags').test('ember-movenium-form-report-projects')\n        ) {\n            params = this._super(params);\n            params.sideload = true;\n            return this.store.query('project', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('projects.removed').set('qParams', params);\n        }\n    },\n});\n\nexport default ProjectsIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"zzVJveOk\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"settings\\\",\\\"showStatus\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"projects.report.removed_projects\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-projects\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showRemoved\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@filterChangeAction\\\",\\\"@localStorageKey\\\"],[\\\"project\\\",true,[22,\\\"qParams\\\"],\\\"group,q\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null],\\\"removed_project\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,6,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"form-report-projects\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"collector/form-report\\\",[],[[\\\"@form\\\",\\\"@localStorageKey\\\",\\\"@showRemoved\\\",\\\"@filterByValues\\\"],[\\\"project\\\",\\\"removed_project\\\",true,[22,\\\"qParams\\\"]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"filters\\\"]],[],[[\\\"@showColumns\\\",\\\"@filterChangeAction\\\"],[\\\"group,q\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"actions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"rowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"no-content\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"project\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"hideRemoveControls\\\",\\\"filters\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",\\\"project\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],true,[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/removed/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsReportController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport $ from 'jquery';\n\nProjectsReportController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    queryParams: ['project', 'date'],\n    date: moment().subtract(1, 'month').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    columns: Em.A([\n        Em.Object.create({\n            field: 'user',\n            form: 'worktime',\n        }),\n        Em.Object.create({\n            field: 'project',\n            form: 'worktime',\n        }),\n        Em.Object.create({\n            field: 'work_hours',\n            form: 'worktime',\n        }),\n        Em.Object.create({\n            field: 'absence_hours',\n            form: 'abcense',\n        }),\n    ]),\n    summableFields: {\n        worktime: 'work_hours',\n        abcense: 'absence_hours',\n    },\n    hasRequiredFilters: Em.computed('project', function () {\n        return !!this.get('project');\n    }),\n    filters: Em.computed(function () {\n        var params, rangesPromise;\n        rangesPromise = $.Deferred();\n        if (this.get('Collector').formExists('wage_period')) {\n            params = {\n                limit: 20,\n                order: 'period_end_date-,period_start_date-',\n                period_start_date:\n                    moment().subtract(1, 'years').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD'),\n            };\n            this.get('store')\n                .query('wage-period', params)\n                .then(function (periods) {\n                    var ranges;\n                    ranges = {};\n                    periods.forEach(function (period) {\n                        var name;\n                        if (period.get('period_name')) {\n                            name = period.get('period_name');\n                        } else {\n                            name =\n                                moment(period.get('period_start_date')).format('L') +\n                                ' - ' +\n                                moment(period.get('period_end_date')).format('L');\n                        }\n                        return (ranges[name] = [\n                            moment(period.get('period_start_date')),\n                            moment(period.get('period_end_date')),\n                        ]);\n                    });\n                    return rangesPromise.resolve(ranges);\n                });\n        } else {\n            rangesPromise.resolve({});\n        }\n        return Em.A([\n            Em.Object.create({\n                field: 'date',\n                form: 'worktime',\n                ranges: rangesPromise,\n            }),\n            Em.Object.create({\n                field: 'project',\n                form: 'worktime',\n            }),\n        ]);\n    }),\n});\n\nexport default ProjectsReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsReportRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nProjectsReportRoute = GeneralReportRoute.extend({\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var absenceParams;\n        params = this._super(params);\n        params.sideload = true;\n        params.groupBy = 'user,project';\n        absenceParams = {\n            startdate: params.date,\n            sideload: true,\n            groupBy: 'user',\n        };\n        return Ember.RSVP.hash({\n            worktimes: this.store.query('worktime', params),\n            abcenses: this.store.query('abcense', absenceParams),\n        });\n    },\n});\n\nexport default ProjectsReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"/1tl8u1X\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"sum-report\\\",null,[[\\\"model\\\",\\\"summableFields\\\",\\\"columns\\\",\\\"hasRequiredFilters\\\",\\\"mainForm\\\",\\\"idField\\\"],[[24,[\\\"model\\\"]],[24,[\\\"summableFields\\\"]],[24,[\\\"columns\\\"]],[24,[\\\"hasRequiredFilters\\\"]],\\\"worktime\\\",\\\"user.id\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/rfiddevices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsRfiddevicesController;\n\nimport Ember from 'ember';\n\nProjectsRfiddevicesController = Ember.Controller.extend({\n    report: Ember.computed('filters.@each.value', function () {\n        return Ember.Object.create({\n            form: 'rfiddevice',\n            query: this.get('filters').map(function (filter) {\n                return {\n                    name: filter.get('field'),\n                    value: filter.get('value'),\n                };\n            }),\n            refreshRows: true,\n        });\n    }),\n    rowActions: [\n        {\n            action: 'rowHistory',\n            icon: 'move move-Search',\n        },\n        {\n            action: 'removeRow',\n            icon: 'move move-Delete',\n        },\n        {\n            action: 'remoteControl',\n            icon: 'move move-Remote',\n        },\n        {\n            action: 'editRow',\n            icon: 'move move-Pencil',\n        },\n    ],\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n                type: 'database',\n                form: 'rfiddevice',\n                name: 'project',\n                singleselect: true,\n            }),\n            Em.Object.create({\n                field: 'user',\n                type: 'database',\n                form: 'rfiddevice',\n                name: 'project',\n                singleselect: true,\n            }),\n        ]);\n    }),\n    actions: {\n        showRemoteControl: function (onoff = true) {\n            this.set('showEditor', onoff);\n            return false;\n        },\n        editRow: function (row) {\n            return this.store.findRecord('rfiddevice', row.id).then((record) => {\n                record.on('didUpdate', () => {\n                    this.get('report').toggleProperty('refreshRows');\n                    return record.off('didUpdate');\n                });\n                return this.transitionToRoute({\n                    queryParams: {\n                        modal: ['rfiddevice', row.id],\n                    },\n                });\n            });\n        },\n        addRow: function () {\n            var record;\n            record = this.store.createRecord('rfiddevice');\n            record.set('date', moment().format('YYYY-MM-DD'));\n            record.on('didCreate', () => {\n                this.get('report').toggleProperty('refreshRows');\n                return record.off('didCreate');\n            });\n            return this.transitionToRoute({\n                queryParams: {\n                    modal: ['rfiddevice', 'new'],\n                },\n            });\n        },\n        openEditor: function (row) {\n            this.set('imei', row.get('imei'));\n            return this.send('showRemoteControl', true);\n        },\n        filterChanged: function (value, field) {\n            if (value == null) {\n                return this.set(field, '');\n            } else {\n                return this.set(field, value.id);\n            }\n        },\n    },\n});\n\nexport default ProjectsRfiddevicesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/rfiddevices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsRfiddevicesRoute;\n\nimport Ember from 'ember';\n\nProjectsRfiddevicesRoute = Ember.Route.extend();\n\nexport default ProjectsRfiddevicesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"ALa9iVqw\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"rfiddevice\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addRow\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"settings\\\",\\\"rowActions\\\",\\\"editRow\\\",\\\"remoteControl\\\"],[[24,[\\\"report\\\"]],[24,[\\\"rowActions\\\"]],\\\"editRow\\\",\\\"openEditor\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showEditor\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"imei\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"showRemoteControl\\\",false],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"famoco-editor\\\",null,[[\\\"imei\\\",\\\"close\\\"],[[24,[\\\"imei\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"showRemoteControl\\\",false],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/rfiddevices/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nProjectsRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default ProjectsRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/saved/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsSavedController;\n\nimport Ember from 'ember';\n\nimport savedController from '../../../controllers/saved';\n\nProjectsSavedController = savedController.extend({\n    session: Em.inject.service(),\n    store: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    //hideAddSame: true\n    magicKeyInit: Em.observer('model.id', function () {\n        var c;\n        c = this.get('Collector');\n        if (\n            c.testNeedsOne('products.personalliggareandid06') &&\n            this.get('session.currentUser.userlevel') !== 1\n        ) {\n            return this.getMagicKey();\n        }\n    }),\n    getLongUrl: function () {\n        var creator, model, projectid, promise, store;\n        store = this.get('store');\n        creator = this.get('session.currentUser.username');\n        if (!creator) {\n            return;\n        }\n        model = this.get('model');\n        projectid = model.get('id');\n        promise = new Em.RSVP.Promise((resolve, reject) => {\n            var url, userid;\n            url = '#/register/user?project=' + projectid + '&creator=' + creator;\n            userid = this.get('session.currentUser.id');\n            return store\n                .query('user', {\n                    id: userid,\n                    sideload: ['employer.name', 'employer.emp_id', 'employer.country'],\n                })\n                .then(() => {\n                    var employer;\n                    employer = this.get('session.currentUser.employer');\n                    if (employer) {\n                        if (!employer.get('country')) {\n                            reject({\n                                missing: 'employer_country',\n                            });\n                        }\n                        url += '&employer_name=' + encodeURIComponent(employer.get('name'));\n                        url += '&employer_id=' + encodeURIComponent(employer.get('emp_id'));\n                        url += '&employer_country=' + encodeURIComponent(employer.get('country'));\n                        return resolve({\n                            longurl: url,\n                            employer: employer.get('name'),\n                        });\n                    } else {\n                        return store\n                            .query('employer', {\n                                main: 'on',\n                            })\n                            .then((employers) => {\n                                employer = employers.get('firstObject');\n                                if (employer == null) {\n                                    return alert('Main employer is not set. Cannot create help.');\n                                } else {\n                                    url +=\n                                        '&employer_name=' +\n                                        encodeURIComponent(employer.get('name'));\n                                    url +=\n                                        '&employer_id=' +\n                                        encodeURIComponent(employer.get('emp_id'));\n                                    url +=\n                                        '&employer_country=' +\n                                        encodeURIComponent(employer.get('country'));\n                                    return resolve({\n                                        longurl: url,\n                                        employer: employer.get('name'),\n                                    });\n                                }\n                            });\n                    }\n                });\n        });\n        return promise;\n    },\n    getMagicKey: function () {\n        return this.getLongUrl().then((ret) => {\n            var call, longUrl;\n            longUrl = window.location.origin + '/' + ret.longurl;\n            call = this.get('Collector').ttapi({\n                url: 'code/generate',\n                data: {\n                    longUrl: longUrl,\n                },\n                method: 'post',\n            });\n            return call.then((back) => {\n                return this.set('magicKey', back.id.slice(-6));\n            });\n        });\n    },\n    usersObs: Em.observer('model.id', function () {\n        var c, call, groups, model, preselected_users;\n        c = this.get('Collector');\n        this.set('users', null);\n        if (c.formExists('group')) {\n            model = this.get('model');\n            groups = model.get('group');\n            //get users with selected groups\n            preselected_users = Em.A([]);\n            return this.get('store')\n                .query('user', {\n                    group: groups.join(),\n                })\n                .then((groupusers) => {\n                    var call;\n                    groupusers.forEach((groupuser) => {\n                        return preselected_users.push(parseInt(groupuser.id));\n                    });\n                    call = c.ttapi({\n                        url: 'linked_users?forms=project',\n                        method: 'get',\n                    });\n                    return call.then((back) => {\n                        var tmpobj;\n                        if (back.data) {\n                            tmpobj = Em.A([]);\n                            back.data.forEach((user) => {\n                                if (preselected_users && groups.length > 0) {\n                                    if (preselected_users.indexOf(user.id) !== -1) {\n                                        return tmpobj.pushObject(Ember.Object.create(user));\n                                    }\n                                } else {\n                                    return tmpobj.pushObject(Ember.Object.create(user));\n                                }\n                            });\n                            return this.set('users', tmpobj);\n                        }\n                    });\n                });\n        } else {\n            call = c.ttapi({\n                url: 'linked_users?forms=project',\n                method: 'get',\n            });\n            return call.then((back) => {\n                var tmpobj;\n                if (back.data) {\n                    tmpobj = Em.A([]);\n                    back.data.forEach((user) => {\n                        return tmpobj.pushObject(Ember.Object.create(user));\n                    });\n                    return this.set('users', tmpobj);\n                }\n            });\n        }\n    }),\n    selectedUsers: Em.A([]),\n    actions: {\n        forward: function () {\n            var model, projectid;\n            model = this.get('model');\n            projectid = model.get('id');\n            return this.transitionToRoute('invite-users', {\n                queryParams: {\n                    projectid: projectid,\n                },\n            });\n        },\n        gotoProjectTasks: function () {\n            return this.transitionToRoute('projects.edit.tasks', this.get('model.id'));\n        },\n        toggleUser: function (user) {\n            var id;\n            this.set('saving', false);\n            this.set('showLinks', true);\n            id = user.id;\n            if (user.get('selected')) {\n                this.get('selectedUsers').removeObject(id);\n                user.set('selected', false);\n            } else {\n                this.get('selectedUsers').pushObject(id);\n                user.set('selected', true);\n            }\n        },\n        saveLinks: function () {\n            var c, projectids;\n            c = this.get('Collector');\n            projectids = Em.A([]);\n            projectids.push(this.get('model.id'));\n            return this.get('selectedUsers').forEach((userid) => {\n                this.set('saving', true);\n                //get already saved links\n                return c.getLinks(userid, 'user', 'projects').then((links) => {\n                    //and push them to the projectids array if there is any\n                    if (links.projects) {\n                        links.projects.forEach((projectlink) => {\n                            return projectids.push(projectlink.id.toString());\n                        });\n                    }\n                    return c.saveLinks(userid, 'user', 'projects', projectids).then(\n                        (links) => {\n                            this.set('saving', false);\n                            return this.set('showLinks', false);\n                        },\n                        (error) => {\n                            this.set('saving', false);\n                            return this.set('showLinks', false);\n                        },\n                    );\n                });\n            });\n        },\n        cancelLinks: function () {\n            return this.set('users', Em.A([]));\n        },\n    },\n});\n\nexport default ProjectsSavedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/saved/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsSavedRoute;\n\nimport Ember from 'ember';\n\nimport SavedRoute from '../../../routes/saved';\n\nProjectsSavedRoute = SavedRoute.extend({\n    templateName: 'projects.saved',\n});\n\nexport default ProjectsSavedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"tyhr/uXl\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\"],\\\"statements\\\":[[15,\\\"partials/saved\\\",[]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"magicKey\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"projects.magic_key_desc\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"invite_users.magic_key\\\"],null],false],[0,\\\": \\\"],[7,\\\"code\\\",true],[8],[1,[22,\\\"magicKey\\\"],false],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"forward\\\"]],[8],[1,[28,\\\"t\\\",[\\\"projects.forward_to_users_linking\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"task\\\",\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-primary btn-lg btn-block \\\",[28,\\\"if\\\",[[24,[\\\"saving\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"gotoProjectTasks\\\"]],[8],[1,[28,\\\"t\\\",[\\\"submenu.project.tasks\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"users\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"projects.restrict_users\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[1,[28,\\\"t\\\",[\\\"projects.restrict_users_help\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"users\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",[29,[\\\"list-group-item \\\",[28,\\\"if\\\",[[23,1,[\\\"selected\\\"]],\\\"list-group-item-success\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"toggleUser\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                        \\\"],[1,[23,1,[\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"firstname\\\"]],false],[0,\\\" \\\"],[4,\\\"if\\\",[[23,1,[\\\"selected\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok-sign pull-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLinks\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-block btn-m-link \\\",[28,\\\"if\\\",[[24,[\\\"saving\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"saveLinks\\\"]],[8],[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9]],\\\"parameters\\\":[]},null],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/saved/template.hbs\"}});","import GeneralReportController from '../../../controllers/general-report';\nimport { A } from '@ember/array';\nimport EmberObject from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nexport default GeneralReportController.extend({\n    queryParams: ['page', 'q'],\n    form: 'task',\n\n    projecttask: alias('model'),\n\n    filters: A([EmberObject.create({ type: 'searchbox', bindto: 'q' })]),\n    settings: EmberObject.create({\n        rowSettings: EmberObject.create({\n            editRoute: {\n                modal: true,\n            },\n        }),\n    }),\n});\n","import { get } from '@ember/object';\nimport GeneralReportRoute from '../../../routes/general-report';\n\nexport default GeneralReportRoute.extend({\n    queryParams: {\n        q: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n    },\n\n    model(params) {\n        params = this._super(params);\n        return get(this, 'store').query('task', params);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"DwPLqecS\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"task\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"hideRemoveControls\\\",\\\"filters\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",\\\"task\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],true,[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"settings\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/tasks/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"zVTL0mBR\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"row\\\",\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    dummy: alias('model'),\n\n    actions: {\n        coderead(code, action) {\n            this.transitionToRoute(action.route);\n        },\n    },\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"Pq8HTDdv\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"qrcode-reader\\\",null,[[\\\"onSuccess\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"coderead\\\"],null]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/qrcode/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterController;\n\nimport Ember from 'ember';\nimport config from 'tt4/config/environment';\n\nRegisterController = Ember.Controller.extend({\n    RegisterServiceController: Ember.inject.controller('register/service'),\n    RegisterUserController: Ember.inject.controller('register/user'),\n    logoUrl: Ember.computed(function () {\n        return config.APP.CDN_URL + '/images/movenium/movenium_logo_bw_small.png';\n    }),\n    actions: {\n        continue: function () {\n            if (this.get('registerType') === 'user') {\n                return this.get('RegisterUserController').send('continue');\n            } else {\n                return this.get('RegisterServiceController').send('continue');\n            }\n        },\n        cancel: function () {\n            return this.transitionToRoute('index');\n        },\n    },\n});\n\nexport default RegisterController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterIndexRoute;\n\nimport Ember from 'ember';\n\nRegisterIndexRoute = Ember.Route.extend();\n\nexport default RegisterIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"mlkzN7ww\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-md-4 col-sm-offset-3 col-md-offset-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.index.title\\\"],null],false],[9],[0,\\\"\\\\n\\\\n            \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"button\\\",\\\"btn btn-block btn-m-link\\\",\\\"register.service\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"register.new_company\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"button\\\",\\\"btn btn-block btn-m-link\\\",\\\"register.user.code\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"register.new_user\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterRoute;\n\nimport Ember from 'ember';\n\nRegisterRoute = Ember.Route.extend();\n\nexport default RegisterRoute;\n","export default Ember.HTMLBars.template({\"id\":\"/Cw8WhdF\",\"block\":\"{\\\"symbols\\\":[\\\"page\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"register\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"header\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.mainheader\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"img\\\",true],[11,\\\"src\\\",[23,0,[\\\"logoUrl\\\"]]],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"subheader shadow\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[0,\\\"\\\\n             \\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"pages\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"circle \\\",[28,\\\"if\\\",[[23,1,[\\\"active\\\"]],\\\"active\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,1,[\\\"num\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"active\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"name\\\"]],false],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"line\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[0,\\\"\\\\n             \\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"register_content\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"footer\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showBackButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"button-container\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"back\\\"]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"button\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"general.back\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"nextPageText\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"pull-right button-container\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"continue\\\"]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"active button\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[22,\\\"nextPageText\\\"],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"pull-right button-container\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"button\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/code/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserCodeRoute;\n\nimport Ember from 'ember';\n\nimport config from '../../../../config/environment';\n\nRegisterUserCodeRoute = Ember.Route.extend({\n    actions: {\n        goToRegisterUrl: function () {\n            var encoded_url, key;\n            key = this.get('controller.magicKey');\n            if (!config.APP.SELFONBOARDURL) {\n                alert('env config.APP.SELFONBOARDURL not setted!');\n                return;\n            }\n            encoded_url = window.btoa(config.APP.OWN_URL);\n            return (window.location = config.APP.SELFONBOARDURL + key + '&return=' + encoded_url);\n        },\n    },\n});\n\nexport default RegisterUserCodeRoute;\n","export default Ember.HTMLBars.template({\"id\":\"yQr8hhDC\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-md-4 col-sm-offset-3 col-md-offset-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user.give_magic_key\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"class\\\"],[[24,[\\\"magicKey\\\"]],\\\"add-fields form-control input-xxl text-center\\\"]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"magicKey\\\",\\\"length\\\"]],6],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"goToRegisterUrl\\\"]],[8],[1,[28,\\\"t\\\",[\\\"register.user.go\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/user/code/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/company/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserId06CompanyController;\n\nimport Ember from 'ember';\n\nimport validator from '../../../../mixins/base-validation';\n\nRegisterUserId06CompanyController = Ember.Controller.extend(validator, {\n    registerUserController: Ember.inject.controller('register/user'),\n    actions: {\n        gotoNextPage: function (isCompanyChanged) {\n            return this.transitionToRoute('register.user.id06').then(function (newRoute) {\n                newRoute.controller.set('customEmployer', isCompanyChanged);\n                if (isCompanyChanged) {\n                    newRoute.controller.set('model.employer_name', null);\n                    newRoute.controller.set('model.employer_id', null);\n                    return newRoute.controller.set('model.employer_country', null);\n                }\n            });\n        },\n    },\n});\n\nexport default RegisterUserId06CompanyController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/company/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserCompanyRoute;\n\nimport Ember from 'ember';\n\nRegisterUserCompanyRoute = Ember.Route.extend({\n    model: function () {\n        return this.modelFor('register.user');\n    },\n});\n\nexport default RegisterUserCompanyRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Ngq7FGhG\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user_company_page\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.your_employer\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[24,[\\\"model\\\",\\\"employer_name\\\"]],false],[9],[0,\\\" - \\\"],[1,[24,[\\\"model\\\",\\\"employer_id\\\"]],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.is_this_your_employer\\\"],null],false],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"gotoNextPage\\\",false]],[8],[1,[28,\\\"t\\\",[\\\"general.yes\\\"],null],false],[9],[0,\\\" \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"gotoNextPage\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"general.no\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/user/company/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/confirm/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserLinkConfirmController;\n\nimport Ember from 'ember';\n\nUserLinkConfirmController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    registerUser: Em.inject.controller('register.user'),\n});\n\nexport default UserLinkConfirmController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/confirm/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserLinkConfirmRoute;\n\nimport Ember from 'ember';\n\nUserLinkConfirmRoute = Ember.Route.extend({\n    session: Em.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    beforeModel: function (transition) {\n        if (!this.get('session.isAuthenticated')) {\n            return this.replaceWith('register.user.sign-in');\n        }\n    },\n    setPersonInfo: function (model) {\n        model.set('lastname', this.get('session.currentUser.lastname'));\n        model.set('firstname', this.get('session.currentUser.firstname'));\n        model.set('id06card', this.get('session.currentUser.id06kort'));\n        model.set('person_code', this.get('session.currentUser.personid'));\n        model.set('person_country', this.get('session.currentUser.homecountry'));\n        model.set('homecountry', this.get('session.currentUser.homecountry'));\n        model.set('taxnumber', this.get('session.currentUser.taxnumber'));\n        return model.set('birthdate', this.get('session.currentUser.birthdate'));\n    },\n    actions: {\n        toSignIn: function () {\n            var model;\n            model = this.get('controller.registerUser.model').getProperties(\n                'project',\n                'creator',\n                'employer_name',\n                'employer_id',\n                'employer_country',\n                'type',\n            );\n            localStorage.removeItem('ember_simple_auth-session');\n            return this.replaceWith('register.user.sign-in', {\n                queryParams: model,\n            });\n        },\n        toID06: function () {\n            var destination, model, ref;\n            model = this.get('controller.registerUser.model');\n            destination = 'register.user.company';\n            if ((ref = this.get('controller.registerUser.type')) === 'valtti' || ref === 'normal') {\n                destination = 'register.user.info';\n            }\n            if (this.get('session.currentUser.employer')) {\n                this.store\n                    .findRecord('employer', this.get('session.currentUser.employer.id'), {\n                        reload: true,\n                    })\n                    .then((employer) => {\n                        this.setPersonInfo(model);\n                        model.set('employer_id', employer.get('emp_id'));\n                        model.set('employer_name', employer.get('name'));\n                        return model.set('employer_country', employer.get('country'));\n                    });\n                return this.replaceWith(destination);\n            } else {\n                this.setPersonInfo(model);\n                return this.replaceWith(destination);\n            }\n        },\n    },\n});\n\nexport default UserLinkConfirmRoute;\n","export default Ember.HTMLBars.template({\"id\":\"W1xqOZ98\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user_page0\\\"],null],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user_page0_text\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-signin\\\"],[10,\\\"role\\\",\\\"form\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main has-feedback\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.lastname\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"session\\\",\\\"currentUser\\\",\\\"lastname\\\"]],\\\"disabled\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main has-feedback\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.firstname\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"session\\\",\\\"currentUser\\\",\\\"firstname\\\"]],\\\"disabled\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-action btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toSignIn\\\"]],[8],[1,[28,\\\"t\\\",[\\\"register.user.not_me\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toID06\\\"]],[8],[1,[28,\\\"t\\\",[\\\"register.user.it_is_me\\\"],null],false],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/user/confirm/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserController;\n\nimport Ember from 'ember';\n\nimport initmixin from 'tt4/mixins/init-controller';\n\nRegisterUserController = Ember.Controller.extend(initmixin, {\n    intl: Em.inject.service(),\n    registerController: Ember.inject.controller('register'),\n    registerUserId06Controller: Ember.inject.controller('register.user.id06'),\n    registerUserInfoController: Ember.inject.controller('register.user.info'),\n    registerUserId06CompanyController: Ember.inject.controller('register.user.company'),\n    applicationController: Ember.inject.controller('application'),\n    queryParams: ['project', 'creator', 'employer_name', 'employer_id', 'employer_country', 'type'],\n    init_functions: function () {\n        this._super();\n        return Ember.run.next(this, () => {\n            this.get('registerController').set('registerType', 'user');\n            return this.notifyPropertyChange('currentPage');\n        });\n    },\n    nextPageText: Ember.on(\n        'init',\n        Ember.observer('currentPage', function () {\n            var intl, nextPageText;\n            intl = this.get('intl');\n            nextPageText = function () {\n                switch (this.get('currentPage')) {\n                    case 3:\n                        return intl.t('register.button_continue');\n                    case 4:\n                        return intl.t('register.button_continue');\n                    case 5:\n                        return null;\n                }\n            }.call(this);\n            return this.get('registerController').set('nextPageText', nextPageText);\n        }),\n    ),\n    observePages: Ember.observer('currentPage', function () {\n        var currentPage, i, index, len, page, page_list, ret;\n        currentPage = this.get('currentPage');\n        if (currentPage === 0) {\n            this.get('registerController').set('pages', Em.A([]));\n            return;\n        }\n        page_list = this.get('page_list');\n        ret = Em.A([]);\n        for (index = i = 0, len = page_list.length; i < len; index = ++i) {\n            page = page_list[index];\n            ret.pushObject(\n                Em.Object.create({\n                    name: page,\n                    active: currentPage - 1 >= index,\n                    done: currentPage - 1 > index,\n                    num: index + 1,\n                }),\n            );\n        }\n        return this.get('registerController').set('pages', ret);\n    }),\n    page_list: Ember.computed(function () {\n        var intl;\n        intl = this.get('intl');\n        return Em.A([\n            intl.t('register.user_page_sign_in'),\n            intl.t('register.user_page_confirm'),\n            intl.t('register.user_page_company_info'),\n            intl.t('register.user_page1'),\n            intl.t('register.user_page2'),\n        ]);\n    }),\n    currentPage: Ember.computed('applicationController.path.[]', function () {\n        var path;\n        path = this.get('applicationController.path');\n        if (!path) {\n            return 1;\n        }\n        switch (path[2]) {\n            case 'index':\n                return 0;\n            case 'sign-in':\n                return 1;\n            case 'confirm':\n                return 2;\n            case 'company':\n                return 3;\n            case 'id06':\n            case 'info':\n                return 4;\n            case 'done':\n                return 5;\n            default:\n                return 1;\n        }\n    }),\n    actions: {\n        continue: function () {\n            var currentPage,\n                promise,\n                ref,\n                registerUserId06CompanyController,\n                registerUserId06Controller,\n                registerUserInfoController;\n            registerUserId06Controller = this.get('registerUserId06Controller');\n            registerUserInfoController = this.get('registerUserInfoController');\n            registerUserId06CompanyController = this.get('registerUserId06CompanyController');\n            currentPage = this.get('currentPage');\n            switch (currentPage) {\n                case 3:\n                    return this.transitionToRoute('register.user.id06');\n                case 4:\n                    if ((ref = this.get('type')) === 'valtti' || ref === 'normal') {\n                        promise = registerUserInfoController.validate_all();\n                    } else {\n                        promise = registerUserId06Controller.validate_all();\n                    }\n                    return promise.then((allOk) => {\n                        var ref1;\n                        if (allOk === true) {\n                            if ((ref1 = this.get('type')) === 'valtti' || ref1 === 'normal') {\n                                return this.transitionToRoute('register.user.done');\n                            } else {\n                                return registerUserId06Controller.verifyUser().then((ok) => {\n                                    if (ok) {\n                                        return this.transitionToRoute('register.user.done');\n                                    }\n                                });\n                            }\n                        }\n                    });\n                case 5:\n                    return this.get('doneController').loginToService();\n            }\n        },\n    },\n});\n\nexport default RegisterUserController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/done/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserDoneController;\n\nimport Ember from 'ember';\n\nimport initmixin from 'tt4/mixins/init-controller';\n\nRegisterUserDoneController = Ember.Controller.extend(initmixin, {\n    registerUserController: Ember.inject.controller('register/user'),\n    applicationIndexController: Ember.inject.controller('index'),\n    application: Ember.inject.controller(),\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    mySites: Ember.inject.service(),\n    forwardingStraightToService: true,\n    initapp: Ember.inject.service(),\n    init_functions: function () {\n        var c, projectid, promise, registerUserController, userinfo;\n        this._super();\n        registerUserController = this.get('registerUserController');\n        if (!registerUserController.get('model.creator')) {\n            alert('creator not set');\n            return;\n        }\n        c = this.get('Collector');\n        userinfo = registerUserController.get('userinfo');\n        projectid = userinfo.project;\n        promise = c.ttapi({\n            url: 'registerUser',\n            method: 'post',\n            data: {\n                creator: registerUserController.get('model.creator'),\n                userinfo: JSON.parse(JSON.stringify(registerUserController.get('userinfo'))),\n            },\n        });\n        return promise.then((back) => {\n            var ls;\n            this.set('username', back.username);\n            ls = this.get('localStorageWrapper');\n            ls.setSavedUsername(back.username);\n            this.set('password', back.password);\n            this.set('done', true);\n            // if user has logged in, do not show this page, just login\n            if (this.get('session.currentUser')) {\n                return this.loginToService(projectid);\n            } else {\n                return this.set('forwardingStraightToService', false);\n            }\n        });\n    },\n    loginToService: function (projectid) {\n        var passwd, promise, self, username;\n        username = this.get('username');\n        passwd = this.get('password');\n        self = this;\n        if (!passwd) {\n            this.transitionToRoute('index');\n            return;\n        }\n        promise = this.get('session').authenticate(\n            'authenticator:collector-auth',\n            username,\n            passwd,\n        );\n        return promise.then(() => {\n            this.get('mySites').addSiteWithJustId(projectid);\n            this.get('applicationIndexController').set('defaultPageTransitionDone', true);\n            //@get('application').firstPageTransition()\n            this.transitionToRoute('index');\n            return Em.run.later(\n                this,\n                function () {\n                    this.get('initapp').clearInit();\n                    return location.reload();\n                },\n                1000,\n            );\n        });\n    },\n    actions: {\n        login: function () {\n            return this.loginToService();\n        },\n    },\n});\n\nexport default RegisterUserDoneController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/done/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserDoneRoute;\n\nimport Ember from 'ember';\n\nimport initmixin from 'tt4/mixins/init-route';\n\nRegisterUserDoneRoute = Ember.Route.extend(initmixin);\n\nexport default RegisterUserDoneRoute;\n","export default Ember.HTMLBars.template({\"id\":\"35G8V+4d\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"forwardingStraightToService\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.page4_header\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"username\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"bigtext\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.page4_text3\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"bigtext\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.page4_text1\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"highlight\\\"],[8],[1,[22,\\\"username\\\"],false],[9],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"bigtext\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.page4_text2\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"highlight\\\"],[8],[1,[22,\\\"password\\\"],false],[9],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"login\\\"]],[8],[1,[28,\\\"t\\\",[\\\"register.button_login\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/user/done/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/id06/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserId06Controller,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport validator from '../../../../mixins/base-validation';\n\nimport config from '../../../../config/environment';\n\nRegisterUserId06Controller = Ember.Controller.extend(validator, {\n    validationObject: 'model',\n    registerUserController: Ember.inject.controller('register/user'),\n    Collector: Ember.inject.service('collector-service'),\n    countryLists: Ember.inject.service(),\n    customEmployer: false,\n    validations: {\n        lastname: {\n            mandatory: true,\n        },\n        employer_id: {\n            mandatory: true,\n        },\n        employer_name: {\n            mandatory: true,\n        },\n        employer_country: {\n            mandatory: true,\n            employer_country: true,\n        },\n        id06card: {\n            mandatory: true,\n            id06_number: true,\n        },\n        person_code: {\n            mandatory: true,\n        },\n        //PIN: true\n        person_country: {\n            mandatory: true,\n            person_country: true,\n        },\n    },\n    validationstate: Ember.Object.create(),\n    errors: Ember.Object.create(),\n    setUserCountryByLang: Em.on('init', function () {\n        return Ember.run.schedule('afterRender', this, function () {\n            var countryByLang;\n            if (this.get('model') && !this.get('model.person_country')) {\n                countryByLang = moment.locale() === 'fi' ? 'fi' : 'se';\n                return this.set('model.person_country', countryByLang);\n            }\n        });\n    }),\n    setValidationErrors: function () {\n        var field, results, validations;\n        validations = this.get('validations');\n        validations = this.get('validations');\n        results = [];\n        for (field in validations) {\n            results.push(this.setValidationError(field));\n        }\n        return results;\n    },\n    setValidationError: function (field) {\n        var error, k, rule;\n        if (!this.get('validationstate.' + field)) {\n            this.set('validationstate.' + field, Ember.Object.create());\n        }\n        error = this.get('errors.' + field);\n        if (!error) {\n            this.set('validationstate.' + field + '.ok', true);\n            this.set('validationstate.' + field + '.error', false);\n        }\n        for (k in error) {\n            rule = error[k];\n            this.set('validationstate.' + field + '.ok', false);\n            this.set('validationstate.' + field + '.error', rule);\n            return;\n        }\n    },\n    setParams: Em.observer('project', 'creator', function () {\n        var controller;\n        controller = this.get('registerUserController');\n        controller.set('projectid', this.get('project'));\n        controller.set('creator', this.get('creator'));\n        controller.set('employer_name', this.get('employer_name'));\n        controller.set('employer_id', this.get('employer_id'));\n        return controller.set('employer_country', this.get('employer_country'));\n    }),\n    //    setDefaultEmployer: Em.observer 'employer_id','model', ->\n    //        console.log \"empo_id\", @get('model'),@get \"employer_id\"\n    //        return if not @get 'model'\n    //        @set 'model.employer_id', @get 'employer_id'\n    //        @set 'model.employer_country', @get 'employer_country'\n    //        @set 'model.person_country', @get 'employer_country'\n    //        @set 'model.employer_name', @get 'employer_name'\n    verifyFromApi: function (data) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var c, promise;\n            c = this.get('Collector');\n            promise = c.ttapi({\n                url: 'checkCard',\n                method: 'post',\n                dataType: 'text',\n                data: {\n                    card_id: data.get('id06card'),\n                    emp_id: data.get('employer_id'),\n                    creator: data.get('creator'),\n                },\n            });\n            return promise.then((back) => {\n                var emp_nationality, nationality;\n                if (back === 'user_found') {\n                    resolve('user_found');\n                }\n                c = this.get('Collector');\n                nationality = null;\n                if (this.get('model.person_country')) {\n                    nationality = this.get('model.person_country').toUpperCase();\n                }\n                emp_nationality = null;\n                if (this.get('model.employer_country')) {\n                    emp_nationality = this.get('model.employer_country').toUpperCase();\n                }\n                promise = c.ccapi({\n                    url: config.APP.ID06_VERIFY_URL,\n                    data: {\n                        card: this.get('model.id06card'),\n                        personid: this.get('model.person_code'),\n                        emp_id: this.get('model.employer_id'),\n                        nationality: nationality,\n                        emp_nationality: emp_nationality,\n                    },\n                });\n                return promise.then(\n                    function (back) {\n                        return resolve(JSON.parse(back).reason);\n                    },\n                    function () {\n                        return resolve('failed');\n                    },\n                );\n            });\n        });\n    },\n    verifyUser: function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var model, promise;\n            model = this.get('model');\n            this.set('loading', true);\n            promise = this.verifyFromApi(model);\n            return promise.then((result) => {\n                if (result === 'verified') {\n                    this.set('verifyOk', true);\n                    this.set('verifyFailed', false);\n                    this.set('model.status', 'ok');\n                    resolve(true);\n                } else if (result === 'timeout') {\n                    this.set('verifyOk', true);\n                    this.set('verifyFailed', false);\n                    this.set('model.status', 'not_verified');\n                    resolve(true);\n                } else if (result === 'user_found') {\n                    this.set('verifyOk', false);\n                    this.set('userFound', true);\n                    resolve(false);\n                } else {\n                    this.set('verifyOk', false);\n                    this.set('verifyFailed', true);\n                    resolve(false);\n                }\n                this.get('registerUserController').set('userinfo', model);\n                return this.set('loading', false);\n            });\n        });\n    },\n    fetchCard: function (card) {\n        var c, promise;\n        c = this.get('Collector');\n        promise = c.ccapi({\n            url: config.APP.ID06_CARD_URL,\n            data: {\n                id: card,\n            },\n        });\n        return promise.then((data) => {\n            var ref, ref1;\n            data = JSON.parse(data);\n            if (data.status_code === '202') {\n                if (!this.get('validationstate.id06card')) {\n                    this.set('validationstate.id06card', Ember.Object.create());\n                }\n                this.set('validationstate.id06card.ok', false);\n                return this.set(\n                    'validationstate.id06card.error',\n                    'validation.error.id06_not_found',\n                );\n            } else if ((ref = data.status_code) !== '500' && ref !== '504') {\n                if (\n                    ((ref1 = data.card_holder_nationality),\n                    indexOf.call(this.get('countryLists.shortList').mapBy('id'), ref1) < 0)\n                ) {\n                    this.set('hideCountry', true);\n                }\n                this.set('model.person_country', data.card_holder_nationality);\n                return this.set('model.employer_country', data.company_nationality);\n            }\n        });\n    },\n    validate_all: function () {\n        return this.validate().then(() => {\n            var error, errors;\n            this.setValidationErrors();\n            errors = this.get('errors');\n            for (error in errors) {\n                if (errors.hasOwnProperty(error)) {\n                    this.set('loading', false);\n                    return false;\n                } else {\n                    return true;\n                }\n            }\n        });\n    },\n    actions: {\n        valueChangedPersonCountry: function (field) {\n            return this.send('change', 'person_country');\n        },\n        valueChangedCompanyCountry: function (field) {\n            return this.send('change', 'employer_country');\n        },\n        // this is called when ever some field is modified\n        change: function (field, value) {\n            var promise, self;\n            self = this;\n            promise = this.validate([field]);\n            return promise.then(() => {\n                this.setValidationError(field);\n                if (field === 'id06card' && !this.get('errors.' + field)) {\n                    this.set('hideCountry', false);\n                    return this.fetchCard(value);\n                }\n            });\n        },\n        setFilled: function (field) {\n            return this.set(field + '_filled', true);\n        },\n        clearErrors: function (field) {\n            if (this.get('validationstate.' + field)) {\n                return this.set('validationstate.' + field + '.error', false);\n            }\n        },\n        changeEmployer: function () {\n            this.set('customEmployer', true);\n            this.set('model.employer_id', '');\n            this.set('model.employer_country', null);\n            return this.set('model.employer_name', '');\n        },\n        autofill: function () {\n            this.set('model.lastname', 'Registered');\n            this.set('model.firstname', 'User');\n            this.set('model.id06card', 'AA-1202-943291');\n            this.set('model.person_code', '19090510-3610');\n            this.set('model.person_country', 'se');\n            this.set('customEmployer', true);\n            this.set('model.employer_name', 'Auto Company Ltd');\n            this.set('model.employer_id', '644150-5489');\n            return this.set('model.employer_country', 'se');\n        },\n    },\n});\n\nexport default RegisterUserId06Controller;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/id06/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserRoute;\n\nimport Ember from 'ember';\n\nRegisterUserRoute = Ember.Route.extend({\n    model: function () {\n        return this.modelFor('register.user');\n    },\n});\n\nexport default RegisterUserRoute;\n","export default Ember.HTMLBars.template({\"id\":\"AOTOY7lM\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user_page1\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"dev-helper\\\",null,null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"autofill\\\"]],[8],[0,\\\"Autofill (active test card)\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user_page1_text\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"verifyOk\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"p\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.id06_verified\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"verifyFailed\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.id06_verify_failed\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"userFound\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.id06_user_found\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-signin\\\"],[10,\\\"role\\\",\\\"form\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"id06card\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"id06card\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.id06card\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"id06card\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"id06card\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"key-up\\\",\\\"focus-in\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"id06card\\\",[24,[\\\"model\\\",\\\"id06card\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\",\\\"id06card\\\"],null],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"id06card\\\"]]]]],false],[0,\\\"\\\\n\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"id06card\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"id06card\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"lastname\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"lastname\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.lastname\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"lastname\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"lastname\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"key-up\\\",\\\"focus-in\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"lastname\\\",[24,[\\\"model\\\",\\\"lastname\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\",\\\"lastname\\\"],null],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"lastname\\\"]]]]],false],[0,\\\"\\\\n\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"lastname\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"lastname\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main has-feedback\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.firstname\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"firstname\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main  \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_code\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_code\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.person_code\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_code\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"person_code\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"key-up\\\",\\\"focus-in\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"person_code\\\",[24,[\\\"model\\\",\\\"person_code\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\",\\\"person_code\\\"],null],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"person_code\\\"]]]]],false],[0,\\\"\\\\n\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_code\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_code\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hideCountry\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main  \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_country\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_country\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.person_country\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_country\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"person_country\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"prompt\\\",\\\"bubbleChange\\\",\\\"value\\\",\\\"classes\\\"],[[24,[\\\"countryLists\\\",\\\"shortList\\\"]],[28,\\\"t\\\",[\\\"select.country\\\"],null],\\\"valueChangedPersonCountry\\\",[24,[\\\"model\\\",\\\"person_country\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_country\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_country\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"customEmployer\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.your_employer\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[24,[\\\"model\\\",\\\"employer_name\\\"]],false],[9],[0,\\\" - \\\"],[1,[24,[\\\"model\\\",\\\"employer_id\\\"]],false],[0,\\\"\\\\n\\\"],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.your_employer\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_name\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_name\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.employer_name\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n                    \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_name\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"employer_name\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"key-up\\\",\\\"focus-in\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"employer_name\\\",[24,[\\\"model\\\",\\\"employer_name\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\",\\\"employer_name\\\"],null],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"employer_name\\\"]]]]],false],[0,\\\"\\\\n\\\\n                    \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_name\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_name\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_id\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_id\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.employer_id\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"key-up\\\",\\\"focus-in\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"employer_id\\\",[24,[\\\"model\\\",\\\"employer_id\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\",\\\"employer_id\\\"],null],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"employer_id\\\"]]]]],false],[0,\\\"\\\\n\\\\n                    \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_id\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_id\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_country\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_country\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.employer_country\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n                    \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_country\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"employer_country\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"prompt\\\",\\\"bubbleChange\\\",\\\"value\\\",\\\"classes\\\"],[[24,[\\\"countryLists\\\",\\\"shortList\\\"]],[28,\\\"t\\\",[\\\"select.country\\\"],null],\\\"valueChangedCompanyCountry\\\",[24,[\\\"model\\\",\\\"employer_country\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\\n                    \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_country\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_country\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"validationErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.empty_fields_or_input_errors\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/user/id06/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/info/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserInfoController;\n\nimport Ember from 'ember';\n\nimport validator from '../../../../mixins/base-validation';\n\nimport config from '../../../../config/environment';\n\nimport $ from 'jquery';\n\nRegisterUserInfoController = Ember.Controller.extend(validator, {\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    vastuuGroup: Ember.inject.service('vastuu-group'),\n    registerUser: Em.inject.controller('register.user'),\n    showRaksa: Ember.computed('registerUser.type', function () {\n        return this.get('registerUser.type') === 'valtti';\n    }),\n    validationObject: 'model',\n    validations: Ember.computed('showRaksa', function () {\n        var validate;\n        validate = {\n            lastname: {\n                mandatory: true,\n            },\n            firstname: {\n                mandatory: true,\n            },\n        };\n        if (this.get('showRaksa')) {\n            validate.birthdate = {\n                mandatory: true,\n                birthdate: true,\n            };\n            validate.taxnumber = {\n                mandatory: true,\n                length: 12,\n                number: true,\n            };\n            validate.homecountry = {\n                mandatory: true,\n            };\n            validate.employer_name = {\n                mandatory: true,\n            };\n            validate.employer_id = {\n                mandatory: true,\n            };\n        }\n        return validate;\n    }),\n    validationstate: Ember.Object.create(),\n    errors: Ember.Object.create(),\n    setValidationErrors: function () {\n        var field, results, validations;\n        validations = this.get('validations');\n        validations = this.get('validations');\n        results = [];\n        for (field in validations) {\n            results.push(this.setValidationError(field));\n        }\n        return results;\n    },\n    setValidationError: function (field) {\n        var error, k, rule;\n        if (!this.get('validationstate.' + field)) {\n            this.set('validationstate.' + field, Ember.Object.create());\n        }\n        error = this.get('errors.' + field);\n        if (!error) {\n            this.set('validationstate.' + field + '.ok', true);\n            this.set('validationstate.' + field + '.error', false);\n        }\n        for (k in error) {\n            rule = error[k];\n            this.set('validationstate.' + field + '.ok', false);\n            this.set('validationstate.' + field + '.error', rule);\n            return;\n        }\n    },\n    fetchUserWithTaxnumber: function (taxnumber = false, ret = false) {\n        var c;\n        if (!taxnumber) {\n            taxnumber = this.get('model.taxnumber');\n        }\n        this.set('loading', true);\n        return this.vastuuGroup.request('tvpersonapi2',\n                {\n                    country: 'FI',\n                    'id-country': 'FI',\n                    'id-type': 'tax_number',\n                    'id-value': taxnumber,\n                },\n                this.registerUser.creator,\n            ).then((data) => {\n                this.set('loading', false);\n                if (data.length === 1 && !ret) {\n                    this.setPersonInfo(data[0]);\n                } else {\n                    this.set('selectEmployer', data);\n                }\n                return data;\n            });\n    },\n    fetchUserWithBarcode: function () {\n        var c;\n        this.set('loading', true);\n        c = this.get('Collector');\n        return c\n            .ccapi({\n                url: 'tvcard',\n                data: {\n                    card: this.get('model.barcode'),\n                },\n            })\n            .then((data) => {\n                if (data.length === 1) {\n                    return this.fetchUserWithTaxnumber(data[0]['taxnumber']).then((userinfo) => {\n                        return userinfo.forEach((user) => {\n                            if (data[0]['vatin'] === user['vatin']) {\n                                return this.setPersonInfo(user);\n                            }\n                        });\n                    });\n                }\n            });\n    },\n    setPersonInfo: function (data) {\n        this.set('duplicateTaxnumber', false);\n        if (data.taxnumber) {\n            this.set('userNotFoundFromTV', false);\n            this.set('model.taxnumber', data.taxnumber);\n            this.set('model.firstname', data.firstname);\n            this.set('model.lastname', data.lastname);\n            this.set('model.phone', data.phone);\n            this.set('model.email', data.email);\n            this.set('model.birthdate', data.birthdate);\n            this.set('model.homecountry', data.homecountry);\n            this.set('model.employer_id', data.vatin);\n            this.set('model.employer_name', data.employer);\n            this.set('model.status', data.status);\n            this.set('model.emp_address', data.emp_address);\n            this.set('model.emp_city', data.emp_city);\n            this.set('model.emp_country', data.emp_country);\n            this.set('model.emp_homecountry', data.emp_homecountry);\n            this.set('model.emp_email', data.emp_email);\n            this.set('model.emp_firstname', data.emp_firstname);\n            this.set('model.emp_lastname', data.emp_lastname);\n            this.set('model.emp_phone', data.emp_phone);\n            this.set('model.emp_zip', data.emp_zip);\n            this.set('model.contract_type', data.contract_type);\n            this.set('model.workpass', data.workpass);\n        } else {\n            this.set('userNotFoundFromTV', true);\n        }\n        return this.validateDuplicateTaxnumber().then((ret) => {\n            if (!ret) {\n                return this.set('duplicateTaxnumber', true);\n            }\n        });\n    },\n    validateDuplicateTaxnumber: function () {\n        var taxnumber;\n        this.set('duplicateTaxnumber', false);\n        taxnumber = this.get('model.taxnumber');\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            if (!taxnumber) {\n                resolve(true);\n            }\n            return this.get('Collector')\n                .ttapi({\n                    url: 'checkTaxnumber',\n                    method: 'post',\n                    dataType: 'text',\n                    data: {\n                        taxnumber: taxnumber,\n                        creator: this.get('registerUser.creator'),\n                    },\n                })\n                .then(\n                    function (ret) {\n                        if (ret === 'user_found') {\n                            return resolve(false);\n                        } else {\n                            return resolve(true);\n                        }\n                    },\n                    function (e) {\n                        return reject(e);\n                    },\n                );\n        });\n    },\n    validate_all: function () {\n        return this.validate().then(() => {\n            this.setValidationErrors();\n            return this.validateDuplicateTaxnumber().then(\n                (ret) => {\n                    var error, errors;\n                    if (ret) {\n                        errors = this.get('errors');\n                        for (error in errors) {\n                            if (errors.hasOwnProperty(error)) {\n                                this.set('loading', false);\n                                return false;\n                            } else {\n                                this.get('registerUser').set('userinfo', this.get('model'));\n                                return true;\n                            }\n                        }\n                    } else {\n                        this.set('duplicateTaxnumber', true);\n                        return false;\n                    }\n                },\n                function (e) {\n                    return console.log(e);\n                },\n            );\n        });\n    },\n    actions: {\n        // this is called when ever some field is modified\n        change: function (field, value) {\n            var promise;\n            promise = this.validate([field]);\n            return promise.then(() => {\n                this.setValidationError(field);\n                if (field === 'taxnumber' && value.length === 12) {\n                    this.fetchUserWithTaxnumber();\n                }\n                if (field === 'barcode' && value.length === 12) {\n                    return this.fetchUserWithBarcode();\n                }\n            });\n        },\n        clearErrors: function (field) {\n            if (this.get('validationstate.' + field)) {\n                return this.set('validationstate.' + field + '.error', false);\n            }\n        },\n        autofill: function () {\n            this.set('model.taxnumber', '100015809173');\n            return Em.run.later(\n                this,\n                function () {\n                    return $('.form-signin input:text').first().keyup();\n                },\n                20,\n            );\n        },\n        selectEmployer: function (user) {\n            this.set('selectEmployer', void 0);\n            return this.setPersonInfo(user);\n        },\n    },\n});\n\nexport default RegisterUserInfoController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/info/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserInfoRoute;\n\nimport Ember from 'ember';\n\nRegisterUserInfoRoute = Ember.Route.extend({\n    session: Em.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n});\n\nexport default RegisterUserInfoRoute;\n","export default Ember.HTMLBars.template({\"id\":\"1WCJWcrt\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\"],\\\"statements\\\":[[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user.info.title\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"dev-helper\\\",null,null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"autofill\\\"]],[8],[0,\\\"Autofill\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRaksa\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user.info.text\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRaksa\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"register/user/register-field-comp\\\",null,[[\\\"field\\\",\\\"value\\\",\\\"state\\\",\\\"change\\\",\\\"clearErrors\\\",\\\"mandatory\\\"],[\\\"taxnumber\\\",[24,[\\\"model\\\",\\\"taxnumber\\\"]],[24,[\\\"validationstate\\\",\\\"taxnumber\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],[24,[\\\"validations\\\",\\\"taxnumber\\\",\\\"mandatory\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"selectEmployer\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user.multiple_employers\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"selectEmployer\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",false],[12,\\\"class\\\",\\\"link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"selectEmployer\\\",[23,1,[]]]],[8],[1,[23,1,[\\\"employer\\\"]],false],[0,\\\", \\\"],[1,[23,1,[\\\"vatin\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"duplicateTaxnumber\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.taxnumber_user_found\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"userNotFoundFromTV\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.not_found_from_tv\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-signin\\\"],[10,\\\"role\\\",\\\"form\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"register/user/register-field-comp\\\",null,[[\\\"field\\\",\\\"value\\\",\\\"state\\\",\\\"change\\\",\\\"clearErrors\\\",\\\"mandatory\\\"],[\\\"firstname\\\",[24,[\\\"model\\\",\\\"firstname\\\"]],[24,[\\\"validationstate\\\",\\\"firstname\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],[24,[\\\"validations\\\",\\\"firstname\\\",\\\"mandatory\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"register/user/register-field-comp\\\",null,[[\\\"field\\\",\\\"value\\\",\\\"state\\\",\\\"change\\\",\\\"clearErrors\\\",\\\"mandatory\\\"],[\\\"lastname\\\",[24,[\\\"model\\\",\\\"lastname\\\"]],[24,[\\\"validationstate\\\",\\\"lastname\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],[24,[\\\"validations\\\",\\\"lastname\\\",\\\"mandatory\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRaksa\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"register/user/register-field-comp\\\",null,[[\\\"field\\\",\\\"value\\\",\\\"state\\\",\\\"change\\\",\\\"clearErrors\\\",\\\"mandatory\\\"],[\\\"birthdate\\\",[24,[\\\"model\\\",\\\"birthdate\\\"]],[24,[\\\"validationstate\\\",\\\"birthdate\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],[24,[\\\"validations\\\",\\\"birthdate\\\",\\\"mandatory\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"register/user/register-field-comp\\\",null,[[\\\"field\\\",\\\"value\\\",\\\"state\\\",\\\"change\\\",\\\"clearErrors\\\",\\\"mandatory\\\"],[\\\"homecountry\\\",[24,[\\\"model\\\",\\\"homecountry\\\"]],[24,[\\\"validationstate\\\",\\\"homecountry\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],[24,[\\\"validations\\\",\\\"homecountry\\\",\\\"mandatory\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"register/user/register-field-comp\\\",null,[[\\\"field\\\",\\\"value\\\",\\\"state\\\",\\\"change\\\",\\\"clearErrors\\\",\\\"mandatory\\\"],[\\\"email\\\",[24,[\\\"model\\\",\\\"email\\\"]],[24,[\\\"validationstate\\\",\\\"email\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],[24,[\\\"validations\\\",\\\"email\\\",\\\"mandatory\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"register/user/register-field-comp\\\",null,[[\\\"field\\\",\\\"value\\\",\\\"state\\\",\\\"change\\\",\\\"clearErrors\\\",\\\"mandatory\\\"],[\\\"phone\\\",[24,[\\\"model\\\",\\\"phone\\\"]],[24,[\\\"validationstate\\\",\\\"phone\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],[24,[\\\"validations\\\",\\\"phone\\\",\\\"mandatory\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRaksa\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"register/user/register-field-comp\\\",null,[[\\\"field\\\",\\\"value\\\",\\\"state\\\",\\\"change\\\",\\\"clearErrors\\\",\\\"mandatory\\\"],[\\\"employer_name\\\",[24,[\\\"model\\\",\\\"employer_name\\\"]],[24,[\\\"validationstate\\\",\\\"employer_name\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],[24,[\\\"validations\\\",\\\"employer_name\\\",\\\"mandatory\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"register/user/register-field-comp\\\",null,[[\\\"field\\\",\\\"value\\\",\\\"state\\\",\\\"change\\\",\\\"clearErrors\\\",\\\"mandatory\\\"],[\\\"employer_id\\\",[24,[\\\"model\\\",\\\"employer_id\\\"]],[24,[\\\"validationstate\\\",\\\"employer_id\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],[24,[\\\"validations\\\",\\\"employer_id\\\",\\\"mandatory\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"validationErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.empty_fields_or_input_errors\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/user/info/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/register-field-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserInfoComponent;\n\nimport Ember from 'ember';\n\nRegisterUserInfoComponent = Ember.Component.extend({\n    countryLists: Ember.inject.service(),\n    options: Ember.computed.alias('countryLists.fullList'),\n    actions: {\n        change: function () {\n            if (this.get('change')) {\n                return this.change(this.get('field'), this.get('value'));\n            }\n        },\n        clearErrors: function () {\n            if (this.get('clearErrors')) {\n                return this.clearErrors(this.get('field'));\n            }\n        },\n    },\n});\n\nexport default RegisterUserInfoComponent;\n","export default Ember.HTMLBars.template({\"id\":\"iLiPHB2m\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"state\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"state\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"register.field.\\\",[24,[\\\"field\\\"]]],null]],null],false],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n    \\\"],[4,\\\"if\\\",[[24,[\\\"state\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"state\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"field\\\"]],\\\"birthdate\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"value\\\",\\\"name\\\",\\\"disabled\\\",\\\"class\\\"],[[24,[\\\"value\\\"]],\\\"field\\\",[24,[\\\"disabled\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"field\\\"]],\\\"homecountry\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"class\\\",\\\"classes\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\",\\\"disabled\\\"],[[24,[\\\"options\\\"]],\\\"form-control add-fields\\\",\\\"form-control add-fields\\\",[24,[\\\"value\\\"]],\\\"change\\\",[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"key-up\\\",\\\"focus-in\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],\\\"form-control add-fields\\\",[24,[\\\"value\\\"]]]]],false],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[4,\\\"if\\\",[[24,[\\\"state\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[4,\\\"if\\\",[[24,[\\\"state\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/user/register-field-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserRoute;\n\nimport Ember from 'ember';\n\nimport initmixin from 'tt4/mixins/init-route';\n\nRegisterUserRoute = Ember.Route.extend(initmixin, {\n    model: function (params) {\n        if (params.project === void 0) {\n            return this.replaceWith('register.user.code');\n        } else {\n            this.replaceWith('register.user.sign-in');\n            return Ember.Object.create(params);\n        }\n    },\n});\n\n//    resetController: (controller, isExiting, transition) ->\n//        if isExiting\n//            controller.set('applicationController.hide_topbar', false)\n//            controller.set('applicationController.hide_sidebar', false)\nexport default RegisterUserRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/sign-in/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserSigninController;\n\nimport Ember from 'ember';\n\nRegisterUserSigninController = Ember.Controller.extend({\n    base: Ember.inject.controller('register.user'),\n    nextPage: Ember.computed('model', function () {\n        var type;\n        type = this.get('base.type');\n        if ((type && type === 'valtti') || type === 'normal') {\n            return 'register.user.info';\n        }\n        return 'register.user.company';\n    }),\n});\n\nexport default RegisterUserSigninController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/sign-in/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserLinkSignInRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nUserLinkSignInRoute = Ember.Route.extend({\n    session: Em.inject.service(),\n    intl: Em.inject.service(),\n    beforeModel: function (transition) {\n        if (\n            this.get('session.isAuthenticated') &&\n            localStorage.getItem('ember_simple_auth-session')\n        ) {\n            return this.replaceWith('register.user.confirm');\n        }\n    },\n    setupController: function (controller, transition) {\n        this._super(controller, transition);\n        controller.set('hideRegister', true);\n        controller.set('mobile', false);\n        return controller.set('mobile_devices', false);\n    },\n    actions: {\n        authenticate: function () {\n            var controller, data, ls, promise, self;\n            self = this;\n            ls = this.get('localStorageWrapper');\n            controller = this.get('controller');\n            data = controller.getProperties('identification', 'password');\n            if (!data.identification || !data.password) {\n                this.set(\n                    'controller.errorMessage',\n                    this.get('intl').t('login.give_username_and_password'),\n                );\n                return;\n            }\n            this.set('controller.loadingMessage', 'Logging in...');\n            this.set('controller.errorMessage', null);\n            promise = this.get('session').authenticate(\n                'authenticator:collector-auth',\n                data.identification,\n                data.password,\n            );\n            promise.then(() => {\n                self.set('controller.loadingMessage', null);\n                return location.reload();\n            });\n            return promise.catch(function (resp) {\n                var error;\n                self.set('controller.loadingMessage', null);\n                error = resp ? resp.error : 'failed';\n                return self.set('controller.errorMessage', self.get('intl').t('login.' + error));\n            });\n        },\n    },\n});\n\nexport default UserLinkSignInRoute;\n","export default Ember.HTMLBars.template({\"id\":\"OP6Hoaqp\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-offset-1 col-md-offset-3 col-lg-offset-4 col-xs-12 col-sm-8 col-md-6 col-lg-4 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user.new_user\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"button\\\",\\\"btn btn-lg btn-m-default btn-block\\\",[24,[\\\"nextPage\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"register.user.not_a_user\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user.old_user\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container login\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"popup no-top-margin\\\"],[10,\\\"style\\\",\\\"background-color: white;\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"login_header\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/logo.png\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"timecleandevice.type.movenium\\\"],null]],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"form\\\",false],[12,\\\"class\\\",\\\"form-signin\\\"],[12,\\\"role\\\",\\\"form\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"authenticate\\\"],[[\\\"on\\\"],[\\\"submit\\\"]]],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"form-signin-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"login.header\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[1,[22,\\\"errorMessage\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loadingMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[22,\\\"loadingMessage\\\"],false],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress progress-striped active\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[10,\\\"aria-valuenow\\\",\\\"100\\\"],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[10,\\\"style\\\",\\\"width: 100%\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner-addon left-addon\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-user\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"id\\\",\\\"value\\\",\\\"class\\\",\\\"placeholder\\\",\\\"autocapitalize\\\"],[\\\"identification\\\",[24,[\\\"identification\\\"]],\\\"form-control add-fields\\\",[28,\\\"t\\\",[\\\"login.username\\\"],null],\\\"off\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner-addon left-addon\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-lock\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"id\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\",\\\"placeholder\\\",\\\"autocapitalize\\\"],[\\\"password\\\",\\\"form-control add-fields\\\",\\\"password\\\",[24,[\\\"password\\\"]],[28,\\\"t\\\",[\\\"login.password\\\"],null],\\\"off\\\"]]],false],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-lg btn-m-link btn-block\\\"],[10,\\\"type\\\",\\\"submit\\\"],[8],[1,[28,\\\"t\\\",[\\\"login.sign_in\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\" \\\"],[2,\\\" /container \\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/user/sign-in/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"c3XOksUg\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/user/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"3E6B072e\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.resource_planning\\\",\\\"userlevel=5,3,6\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"react\\\",[],[[\\\"@comp\\\"],[\\\"ResourceViewV2\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/resource-planning/gantt/template.hbs\"}});","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class resourcePlanningRoute extends Route {\n    @service('collector-service') Collector;\n    @service router;\n    queryParams = {\n        publishStartDate: {\n            refreshModel: true,\n        },\n    };\n\n    beforeModel(transition) {\n        this.transitionToRightPage(transition);\n    }\n\n    transitionToRightPage(transition) {\n        if (\n            transition.targetName === 'resource-planning.gantt' &&\n            this.Collector.testNeeds(['!userfieldcheck.resourcePlanner'])\n        ) {\n            this.router.transitionTo('resource-planning.week');\n        }\n    }\n\n    @action\n    willTransition(transition) {\n        this.transitionToRightPage(transition);\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"M3DpVwPg\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"react\\\",[],[[\\\"@comp\\\"],[\\\"MobileView\\\"]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/resource-planning/week/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Controller;\n\nimport Ember from 'ember';\n\nimport config from '../../config';\n\nController = Ember.Controller.extend();\n\nexport default Controller;\n","export default Ember.HTMLBars.template({\"id\":\"4zwPlj0A\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"promo-ad\\\",[],[[\\\"@background\\\",\\\"@promoClass\\\",\\\"@product\\\"],[\\\"custom-export\\\",\\\"right-align\\\",\\\"custom_export\\\"]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/custom-export-ad/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default class CustomExportRoute extends Route {}\n","export default Ember.HTMLBars.template({\"id\":\"tu4SPWUi\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"custom-export-comp\\\",[],[[],[]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/custom-export/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/export-abcense/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AbcensesExportAbcenseAddController;\n\nimport Ember from 'ember';\n\nAbcensesExportAbcenseAddController = Ember.Controller.extend({\n    selectableIntegrations: Ember.computed.gt('model.length', 1),\n    selectedIntegration: Ember.computed('_selectedIntegration', function () {\n        return this.get('_selectedIntegration') || this.get('model.firstObject.key');\n    }),\n});\n\nexport default AbcensesExportAbcenseAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/export-abcense/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerExportSalaryAddRoute;\n\nimport Ember from 'ember';\n\nTimetrackerExportSalaryAddRoute = Ember.Route.extend({\n    model: function () {\n        return this.store.query('integration', {\n            type: 'export_absence',\n        });\n    },\n    actions: {\n        fileCreated: function () {\n            return this.transitionTo('salary.export-abcense');\n        },\n        cancel: function () {\n            return this.transitionTo('salary.export-abcense');\n        },\n    },\n});\n\nexport default TimetrackerExportSalaryAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"vAC6wj3Y\",\"block\":\"{\\\"symbols\\\":[\\\"integration\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export.create_new\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selectableIntegrations\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.export_export\\\"],null],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-control add-fields\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control add-fields\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"_selectedIntegration\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,1,[\\\"key\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"key\\\"]],[24,[\\\"_selectedIntegration\\\"]]],null]],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"record-comp-export\\\",null,[[\\\"form\\\",\\\"selectedIntegration\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"export_absence\\\",[24,[\\\"selectedIntegration\\\"]],\\\"fileCreated\\\",\\\"cancel\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/export-abcense/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/export-abcense/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerExportAbcenseIndexController;\n\nimport Ember from 'ember';\n\nimport config from '../../../../config/environment';\n\nTimetrackerExportAbcenseIndexController = Ember.Controller.extend({\n    dialogs: Ember.inject.service(),\n    capi: Ember.inject.service(),\n    intl: Em.inject.service(),\n    rowActions: Ember.computed('settings.row_info_status', function () {\n        var actions;\n        if (this.get('settings.row_info_status')) {\n            actions = [\n                {\n                    action: 'restoreRow',\n                    icon: 'move move-ReuseFilled',\n                },\n            ];\n        } else {\n            actions = [\n                {\n                    action: 'removeRow',\n                    icon: 'move move-Delete',\n                },\n                {\n                    action: 'historyRow',\n                    icon: 'move move-Search',\n                },\n            ];\n        }\n        return actions;\n    }),\n    actions: {\n        historyRow: function (row) {\n            return this.transitionToRoute({\n                queryParams: {\n                    modal: ['exportAbsence', row.id, 'history'],\n                },\n            });\n        },\n        restoreRow: function (row) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_restore'))\n                .then((con) => {\n                    if (con) {\n                        return this.get('capi')\n                            .request('/exportAbsences/' + row.id + '?validation=off', {\n                                dataType: 'json',\n                                type: 'PUT',\n                                data: '{\"exportAbsence\":{\"row_info.status\":\"normal\"}}',\n                            })\n                            .then((data) => {\n                                row = this.get('store').peekRecord('export-absence', row.id);\n                                return row.unloadRecord();\n                            });\n                    }\n                });\n        },\n        toggleRowStatus: function () {\n            if (this.get('settings.row_info_status') === 'removed') {\n                return this.set('settings.row_info_status', false);\n            } else {\n                return this.set('settings.row_info_status', 'removed');\n            }\n        },\n    },\n    settings: Em.Object.create({\n        row_info_status: false,\n        form: 'export_absence',\n    }),\n});\n\nexport default TimetrackerExportAbcenseIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/export-abcense/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerExportSalaryIndexRoute;\n\nimport Ember from 'ember';\n\nTimetrackerExportSalaryIndexRoute = Ember.Route.extend();\n\nexport default TimetrackerExportSalaryIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"3CXK0J79\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"button\\\",\\\"btn btn-primary\\\",\\\"salary.export-abcense.add\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"export.create_file\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleRowStatus\\\"]],[8],[4,\\\"if\\\",[[24,[\\\"settings\\\",\\\"row_info_status\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.actions.show_normal\\\"],null],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.actions.show_removed\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"rowActions\\\",\\\"historyRow\\\",\\\"settings\\\",\\\"restoreRow\\\",\\\"form\\\"],[[24,[\\\"rowActions\\\"]],\\\"historyRow\\\",[24,[\\\"settings\\\"]],\\\"restoreRow\\\",\\\"export_absence\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/export-abcense/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/export-abcense/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerExportSalaryRoute;\n\nimport Ember from 'ember';\n\nTimetrackerExportSalaryRoute = Ember.Route.extend();\n\nexport default TimetrackerExportSalaryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"FH2qaNe2\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/export-abcense/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/export-salary/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerExportSalaryAddController;\n\nimport Ember from 'ember';\n\nimport DS from 'ember-data';\n\nTimetrackerExportSalaryAddController = Ember.Controller.extend({\n    selectableIntegrations: Ember.computed.gt('model.length', 1),\n    selectedIntegration: Ember.computed('_selectedIntegration', function () {\n        return this.get('_selectedIntegration') || this.get('model.firstObject.key');\n    }),\n    checkSettings: function () {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            if (this.get('selectedIntegration') === 'general-fivaldi-salary-soap-v4') {\n                return this.get('store')\n                    .query('integrationsetting', {\n                        integration: 'general-fivaldi-salary-soap',\n                    })\n                    .then((settings) => {\n                        var mapped;\n                        mapped = settings.mapBy('key');\n                        if (!mapped.includes('businessid') || !mapped.includes('schema')) {\n                            this.set('showModal', 'fivaldi');\n                            return resolve();\n                        } else {\n                            return resolve();\n                        }\n                    });\n            } else if (this.get('selectedIntegration') === 'general-netvisor-salary-rest-v4') {\n                return this.get('store')\n                    .query('integrationsetting', {\n                        integration: 'general-netvisor-salary-rest',\n                    })\n                    .then((settings) => {\n                        var mapped;\n                        mapped = settings.mapBy('key');\n                        if (!mapped.includes('cid') || !mapped.includes('customerID')) {\n                            this.set('showModal', 'netvisor');\n                            return resolve();\n                        } else {\n                            return resolve();\n                        }\n                    });\n            } else {\n                return resolve();\n            }\n        });\n    },\n    settings: Ember.computed('selectedIntegration', function () {\n        return DS.PromiseObject.create({\n            promise: this.checkSettings(),\n        });\n    }),\n    actions: {\n        closeModal: function () {\n            return this.set('showModal', false);\n        },\n    },\n});\n\nexport default TimetrackerExportSalaryAddController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\n\nexport default Route.extend({\n    collector: service('collector-service'),\n    intl: service(),\n    store: service(),\n    dialogs: service(),\n    flags: service(),\n\n    async model() {\n        const integrations = await this.store.query('integration', { type: 'export_salary' });\n\n        if (integrations.length === 0) {\n            const integrations = this.getStandardIntegrations();\n            const customs = await this.store.query('custom-export', {});\n\n            customs.forEach((custom) =>\n                integrations.push({ name: custom.name, key: 'custom-' + custom.id }),\n            );\n\n            return integrations;\n        } else {\n            return integrations;\n        }\n    },\n\n    actions: {\n        fileCreated() {\n            this.transitionTo('salary.export-salary');\n        },\n        cancel() {\n            this.transitionTo('salary.export-salary');\n        },\n\n        async close() {\n            const con = await this.dialogs.confirm(\n                this.intl.t('export-salary.settings.confirm_close'),\n            );\n            if (con) set('this', 'controller.showModal', false);\n        },\n    },\n\n    getStandardIntegrations() {\n        let products = {\n            fivaldi_salary_csv:\n                'general-fivaldi-salary-csv-v2?_v=' + this.flags.test('general-fivaldi-salary-csv'),\n            lon600_salary_xml:\n                'general-lon-600-salary-xml-v2?_v=' + this.flags.test('general-lon-600-salary-xml'),\n            nova_salary_csv:\n                'general-nova-salary-csv-v4?_v=' + this.flags.test('general-nova-salary-csv'),\n            fivaldi_salary_soap:\n                'general-fivaldi-salary-soap-v4?_v=' +\n                this.flags.test('general-fivaldi-salary-soap'),\n            netvisor_salary_rest:\n                'general-netvisor-salary-rest-v4?_v=' +\n                this.flags.test('general-netvisor-salary-rest'),\n            payroll_worktime_rest: 'payroll_worktime_rest',\n            payroll_worktime_csv:\n                'general-payroll-worktime-csv?_v=' +\n                this.flags.test('general-payroll-worktime-csv'),\n            payroll_absence_csv:\n                'general-payroll-absence-csv?_v=' + this.flags.test('general-payroll-absence-csv'),\n            vismanet: 'vismanet',\n        };\n\n        if (this.collector.testNeedsOne('products.salarytype_v2')) {\n            products.fivaldi_salary_soap =\n                'general-fivaldi-salary-soap-salarytypesv2?_v=' +\n                this.flags.test('general-fivaldi-salary-soap-salarytypesv2');\n            products.payroll_worktime_csv =\n                'general-payroll-worktime-csv-salarytypesv2?_v=' +\n                this.flags.test('general-payroll-worktime-csv-salarytypesv2');\n            products.nova_salary_csv =\n                'general-nova-salary-csv-salarytypesv2?_v=' +\n                this.flags.test('general-nova-salary-csv-salarytypesv2');\n            products.netvisor_salary_rest =\n                'general-netvisor-salary-rest-salarytypesv2?_v=' +\n                this.flags.test('general-netvisor-salary-rest-salarytypesv2');\n            products.vismanet = 'vismanet-salarytypesv2';\n        }\n\n        const integrations = [];\n        Object.keys(products).forEach((product) => {\n            const key = products[product];\n            if (this.collector.testNeedsOne('products.' + product)) {\n                integrations.pushObject({\n                    name: this.intl.t('integrations.export.' + product),\n                    key: key,\n                });\n            }\n        });\n\n        return integrations;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"S79fM7Jz\",\"block\":\"{\\\"symbols\\\":[\\\"integration\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export.create_new\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selectableIntegrations\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.export_export\\\"],null],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-control add-fields\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control add-fields\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"_selectedIntegration\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,1,[\\\"key\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"key\\\"]],[24,[\\\"_selectedIntegration\\\"]]],null]],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"settings\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"integration-settings\\\",null,[[\\\"showModal\\\",\\\"save\\\",\\\"close\\\"],[[24,[\\\"showModal\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"send\\\"]],\\\"close\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"record-comp-export\\\",null,[[\\\"form\\\",\\\"selectedIntegration\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\",\\\"checkSettings\\\"],[\\\"export_salary\\\",[24,[\\\"selectedIntegration\\\"]],\\\"fileCreated\\\",\\\"cancel\\\",[24,[\\\"checkSettings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/export-salary/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/export-salary/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerExportSalaryIndexController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport config from '../../../../config/environment';\n\nimport collector from '../../../../classes/collector';\n\nTimetrackerExportSalaryIndexController = Ember.Controller.extend({\n    dialogs: Ember.inject.service(),\n    admintool: Ember.inject.service(),\n    session: Em.inject.service(),\n    initapp: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    capi: Em.inject.service(),\n    intl: Em.inject.service(),\n    _refreshNeeded: false,\n    showIntegrationModal: false,\n    rowActions: Ember.computed('settings.row_info_status', function () {\n        var actions;\n        if (this.get('settings.row_info_status')) {\n            actions = [\n                {\n                    action: 'restoreRow',\n                    icon: 'move move-ReuseFilled',\n                },\n            ];\n        } else {\n            actions = [\n                {\n                    action: 'removeRow',\n                    icon: 'move move-Delete',\n                },\n                {\n                    action: 'historyRow',\n                    icon: 'move move-Search',\n                },\n            ];\n        }\n        return actions;\n    }),\n    settings: Em.Object.create({\n        row_info_status: false,\n        form: 'export_salary',\n    }),\n    showAd: Em.computed(function () {\n        return !this.get('Collector').testNeedsOne('export_salary');\n    }),\n    showTheseProducts: [\n        'fivaldi_salary_csv',\n        'fivaldi_salary_soap',\n        'lon600_salary_xml',\n        'netvisor_salary_rest',\n        'nova_salary_csv',\n        'vismanet',\n        'fondion',\n    ],\n    _products: Em.on('init', function () {\n        var c, params;\n        c = this.get('Collector');\n        params = {\n            data: {\n                country: this.get('session.currentUser.company_info.country'),\n                lang: moment.locale(),\n            },\n            headers: {\n                Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n            },\n        };\n        return this.get('admintool')\n            .get('products', params)\n            .then((products) => {\n                var productsArr;\n                productsArr = products.filter((product) => {\n                    var ref;\n                    return (\n                        (ref = product.name), indexOf.call(this.get('showTheseProducts'), ref) >= 0\n                    );\n                });\n                products = productsArr.map((item) => {\n                    item = Ember.Object.create(item);\n                    if (c.testNeeds(['products.' + item.get('name')])) {\n                        item.set('selected', true);\n                    }\n                    return item;\n                });\n                return this.set('products', products);\n            });\n    }),\n    isDirty: Em.computed('products.@each.selected', 'productsSaved', function () {\n        var c, dirty, i, len, product, products;\n        products = this.get('products');\n        if (!products) {\n            return false;\n        }\n        c = this.get('Collector');\n        dirty = false;\n        for (i = 0, len = products.length; i < len; i++) {\n            product = products[i];\n            if (product.get('selected') && !c.testNeeds(['products.' + product.get('name')])) {\n                dirty = true;\n            } else if (\n                !product.get('selected') &&\n                c.testNeeds(['products.' + product.get('name')])\n            ) {\n                dirty = true;\n            }\n        }\n        return dirty;\n    }),\n    actions: {\n        click: function (object) {\n            if (object.get('disabled')) {\n                return false;\n            }\n            if (object.get('selected')) {\n                object.set('selected', false);\n            } else {\n                object.toggleProperty('selected');\n                this.toggleProperty('showIntegrationModal');\n            }\n            return false;\n        },\n        save: function () {\n            var c, i, len, needs, post_add_actions, product, products, promises;\n            products = this.get('products');\n            //@get('settingsController').refreshNeeded()\n            this.set('_refreshNeeded', true);\n            c = this.get('Collector');\n            needs = [];\n            post_add_actions = [];\n            for (i = 0, len = products.length; i < len; i++) {\n                product = products[i];\n                if (product.get('selected')) {\n                    if (\n                        !c.productExists('products.' + product.get('name')) &&\n                        typeof this['adding_' + product.get('name')] === 'function'\n                    ) {\n                        post_add_actions.push(product.get('name'));\n                    }\n                    needs.push('products.' + product.get('name'));\n                } else {\n                    needs.push('!products.' + product.get('name'));\n                }\n            }\n            //@sendInfoToCustomerService(products)\n            promises = c.setProducts(needs);\n            return Em.RSVP.Promise.all(promises).then((data) => {\n                this.set('productsSaved', true);\n                this.get('initapp').clearInit();\n                return this.get('dialogs')\n                    .alert(this.get('intl').t('general.settings_refresh_needed'))\n                    .then(function () {\n                        return location.reload();\n                    });\n            });\n        },\n        ShowSettings: function () {\n            if (this.get('Collector').productExists('products.netvisor_salary_rest')) {\n                return this.set('showModal', 'netvisor');\n            } else if (this.get('Collector').productExists('products.payroll_worktime_rest')) {\n                return this.set('showModal', 'payroll');\n            } else if (this.get('Collector').productExists('products.fivaldi_salary_soap')) {\n                return this.set('showModal', 'fivaldi');\n            } else if (this.get('Collector').productExists('products.vismanet')) {\n                return this.set('showModal', 'vismanet');\n            } else if (this.get('Collector').productExists('products.nova_web_service')) {\n                return this.set('showModal', 'nova_web_service');\n            } else if (this.get('Collector').productExists('products.fondion')) {\n                return this.set('showModal', 'fondion');\n            }\n        },\n        closeModal: function () {\n            return this.set('showModal', false);\n        },\n        infoButton: function (product) {\n            this.set('showIntegrationModal', true);\n            return this.set('integrationName', product);\n        },\n    },\n});\n\nexport default TimetrackerExportSalaryIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/export-salary/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerExportSalaryIndexRoute;\n\nimport Ember from 'ember';\n\nTimetrackerExportSalaryIndexRoute = Ember.Route.extend();\n\nexport default TimetrackerExportSalaryIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"EnWmye1d\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"Act\\\",\\\"ExportMore\\\",\\\"product\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showAd\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.products.integrations_ad.title\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.products.integrations_ad.text\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-6 col-md-4\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isDirty\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"settings.products.save\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"productsSaved\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.products.productsSaved\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row product_card_row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"products\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"product-card\\\",null,[[\\\"product\\\",\\\"products\\\",\\\"click\\\",\\\"infoButton\\\",\\\"showIntegrationModal\\\"],[[23,5,[]],[24,[\\\"products\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"click\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"infoButton\\\"],null],[24,[\\\"showIntegrationModal\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n            \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"button\\\",\\\"btn btn-primary\\\",\\\"salary.export-salary.add\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"export.create_file\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.fivaldi_salary_soap||products.netvisor_salary_rest||products.vismanet||products.nova_web_service||products.payroll_worktime_rest||products.fondion\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"ShowSettings\\\"]],[8],[1,[28,\\\"t\\\",[\\\"export.show_settings\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"integration-settings\\\",null,[[\\\"showModal\\\",\\\"save\\\",\\\"close\\\"],[[24,[\\\"showModal\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showFilters\\\",\\\"@filter\\\"],[\\\"export_salary\\\",\\\" \\\",[28,\\\"hash\\\",null,[[\\\"order\\\"],[\\\"date-\\\"]]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"RemovedStatus\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"history,remove\\\"]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/export-salary/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/export-salary/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerExportSalaryRoute;\n\nimport Ember from 'ember';\n\nTimetrackerExportSalaryRoute = Ember.Route.extend();\n\nexport default TimetrackerExportSalaryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"WHGsLI8X\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/export-salary/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Route;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    Collector: Ember.inject.service('collector-service'),\n    beforeModel: function (transition) {\n        if (transition.targetName === 'salary.index') {\n            this.transitionToRightPage();\n        }\n        return this._super(transition);\n    },\n    transitionToRightPage: function () {\n        if (\n            this.get('Collector').testNeeds([\n                'userlevel=2,3,5',\n                'export_salary',\n                'export_salary@access',\n            ])\n        ) {\n            return this.transitionTo('salary.export-salary');\n        } else {\n            return this.transitionTo('salary.salaryperiods');\n        }\n    },\n    actions: {\n        willTransition: function (transition) {\n            if (transition.targetName === 'salary.index') {\n                return this.transitionToRightPage();\n            }\n        },\n    },\n});\n\nexport default Route;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/salaryperiods/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Controller;\n\nimport Ember from 'ember';\n\nController = Ember.Controller.extend({\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    report: Ember.computed('filters.@each.value', function () {\n        return Ember.Object.create({\n            form: 'wage_period',\n            refreshRows: true,\n            order: 'period_start_date-,period_end_date-',\n            query: this.get('filters').map(function (filter) {\n                if (filter.get('field') === 'period_start_date') {\n                    return {\n                        name: 'period_start_date:period_end_date',\n                        value: filter.get('value'),\n                    };\n                } else {\n                    return {\n                        name: filter.get('field'),\n                        value: filter.get('value'),\n                    };\n                }\n            }),\n        });\n    }),\n    checked_rows: [],\n    filters: Em.A([\n        Em.Object.create({\n            field: 'period_start_date',\n            type: 'date',\n            form: 'wage_period',\n        }),\n    ]),\n    addSingleButton: Ember.computed(function () {\n        return (\n            this.get('intl').t('general.add') +\n            ' ' +\n            this.get('intl').t('salary_period.adder.single').toLowerCase()\n        );\n    }),\n    actions: {\n        showAdd: function (onoff) {\n            this.set('record', null);\n            this.set('showAddPopup', onoff);\n            return false;\n        },\n        editRow: function (row) {\n            this.set('record', this.get('store').peekRecord(this.get('report.form'), row.id));\n            this.set('showAddPopup', true);\n            return false;\n        },\n        periodAdded: function () {\n            this.send('showAdd', false);\n            return this.get('report').notifyPropertyChange('refreshRows');\n        },\n        filterChanged: function (value, field) {\n            if (value == null) {\n                return this.set(field, null);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        removeCheckedRows: function (rows) {\n            if (this.get('checked_rows.length') > 0) {\n                return this.get('dialogs')\n                    .confirm(this.get('intl').t('report.confirm_delete'))\n                    .then((con) => {\n                        if (con) {\n                            return rows.forEach((row) => {\n                                console.log(this.get('form'));\n                                row = this.get('store').peekRecord(this.get('report.form'), row.id);\n                                if (row.get('row_info.privilege_remove') === false) {\n                                    this.get('dialogs').alert(\n                                        this.get('intl').t(\n                                            'general_report.mass_delete.not_allowed',\n                                        ),\n                                    );\n                                    return;\n                                }\n                                return row.destroyRecord();\n                            });\n                        }\n                    });\n            }\n        },\n        checkedRows: function (rows) {\n            this.set('checked_rows', rows);\n        },\n    },\n});\n\nexport default Controller;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/salaryperiods/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Route;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    model: function () {\n        return this.store.findAll('wage_period');\n    },\n});\n\nexport default Route;\n","export default Ember.HTMLBars.template({\"id\":\"9N+JucEV\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"form\\\",\\\"filters\\\",\\\"filterChanged\\\"],[[24,[\\\"form\\\"]],[24,[\\\"filters\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content report-forms\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-right report-button-row\\\"],[8],[0,\\\"\\\\n                \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more pull-left\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,1,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"  \\\"],[1,[28,\\\"t\\\",[\\\"report.more_button\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[6,[23,2,[\\\"item\\\"]],[],[[\\\"@class\\\"],[[22,\\\"moreLinksClass\\\"]]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeCheckedRows\\\",[24,[\\\"checked_rows\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.delete_rows\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"form\\\",\\\"settings\\\",\\\"editRow\\\",\\\"checkable\\\",\\\"checkedRows\\\"],[\\\"wage_period\\\",[24,[\\\"report\\\"]],\\\"editRow\\\",true,\\\"checkedRows\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showAdd\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.wage_periods.add_new\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[2,\\\"button class=\\\\\\\"btn btn-danger\\\\\\\" {{action 'removeCheckedRows' checked_rows}}>{{t \\\\\\\"report.delete_rows\\\\\\\"}}</button\\\"],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddPopup\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"general.add\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showAdd\\\",false],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/form-add/forms/wageperiod\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"close\\\",\\\"rowAdded\\\",\\\"rowEdited\\\"],[\\\"wage_period\\\",[24,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAddPopup\\\"]]],null],null],null],[28,\\\"action\\\",[[23,0,[]],\\\"periodAdded\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"periodAdded\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/salaryperiods/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/salarytypes/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Controller, get, set;\n\nimport Ember from 'ember';\n\n({ get: get, set: set } = Ember);\n\nimport { computed } from '@ember/object';\n\nController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    servicehandler: Ember.inject.service(),\n    tools: Ember.inject.service(),\n    settings: Em.inject.controller(),\n    notifications: Ember.inject.service(),\n    preventUsage: computed('model.salarytypes.length', function () {\n        return this.get('model.salarytypes').filterBy('isNew', false).length === 0;\n    }),\n    rowActions: [\n        {\n            action: 'editRow',\n            icon: 'move move-Pencil',\n        },\n        {\n            action: 'rowHistory',\n            icon: 'move move-Search',\n        },\n        {\n            action: 'removeRow',\n            icon: 'move move-Delete',\n        },\n    ],\n    devText:\n        'If you want to start using new salarytypes v2, go to salarytype list and remove all old salarytypes ',\n    salarytypesText: 'salarytypes',\n    absenceSettings: Ember.Object.create({\n        form: 'abcensetype',\n    }),\n    sortedModel: Ember.computed.sort('model.salarytypes', function (a, b) {\n        var id_a, id_b, index_a, index_b, sortOrder;\n        sortOrder = [\n            '_basichours',\n            '_evening',\n            'hours_evening',\n            '_night',\n            '_extrahours',\n            '_overtimehours',\n            '_50',\n            'hours_50',\n            '_100',\n            'hours_100',\n            '_week50',\n            '_week100',\n            'hours_150',\n            'hours_200',\n            'hours_hourly',\n            'hours_piece',\n            'hours_extra',\n        ];\n        id_a = a.get('shortcut');\n        id_b = b.get('shortcut');\n        if (!id_a) {\n            id_a = a.get('control');\n        }\n        if (!id_b) {\n            id_b = b.get('control');\n        }\n        if (!id_a) {\n            id_a = '';\n        }\n        if (!id_b) {\n            id_b = '';\n        }\n        id_a = id_a.split(';')[0];\n        id_b = id_b.split(';')[0];\n        index_a = sortOrder.indexOf(id_a);\n        index_b = sortOrder.indexOf(id_b);\n        if (index_a === -1) {\n            index_a = sortOrder.length + 1;\n        }\n        if (index_b === -1) {\n            index_b = sortOrder.length + 1;\n        }\n        if (index_a > index_b) {\n            return 1;\n        } else {\n            return -1;\n        }\n    }),\n    dropdowns: Ember.computed.alias('model.dropdowns'),\n    shortcuts: Ember.computed.alias('model.shortcuts'),\n    manipulateService: function () {\n        var fields, selectable_count;\n        fields = {};\n        selectable_count = 0;\n        this.get('model.salarytypes').forEach((row) => {\n            var field, negation, pieces_or_hours, ref, type;\n            negation = get(row, 'inuse') ? '' : '!';\n            if ((ref = get(row, 'type')) === 'field' || ref === 'amount' || ref === 'check') {\n                if (!get(row, 'option')) {\n                    field = this.getFieldName(row);\n                    set(row, 'option', field);\n                    set(row, 'control', '$option');\n                }\n                type = {\n                    field: 'hours',\n                    amount: 'number',\n                    check: 'checkbox',\n                }[get(row, 'type')];\n                fields[negation + 'worktime.' + get(row, 'option')] = {\n                    type: type,\n                    name: row.get('name'),\n                };\n            } else if (\n                Ember.typeOf(row.get('type')) === 'string' &&\n                row.get('type').substring(0, 7) === 'custom_'\n            ) {\n                pieces_or_hours =\n                    row.get('type').substring(7, 17) === 'typeofwork' ? 'hours' : 'pieces';\n                field = pieces_or_hours === 'hours' ? 'work_hours' : '1';\n                row.set('control', field + ';' + row.get('type').substring(7));\n            } else if (this.get('Collector').fieldExists('worktime', row.get('type'))) {\n                row.set('control', row.get('type'));\n                row.set('option', row.get('type'));\n            } else if (!row.get('control')) {\n                row.set('control', 'work_hours;salarytype=$this');\n            }\n            if (!row.get('type') && row.get('inuse')) {\n                return selectable_count++;\n            }\n        });\n        // if there is more than 1 selectable salarytype and selection to worktime field\n        if (\n            selectable_count > 1 &&\n            !this.get('Collector').testNeeds(['products.selectablesalarytype'])\n        ) {\n            this.get('Collector').addProduct('selectablesalarytype');\n        } else if (\n            selectable_count <= 1 &&\n            this.get('Collector').testNeeds(['products.selectablesalarytype'])\n        ) {\n            this.get('Collector').removeProduct('selectablesalarytype');\n        }\n        return this.get('servicehandler').manipulateService(this.removeDuplicateFields(fields));\n    },\n    getFieldName: function (row) {\n        var name, option;\n        name = row.get('name');\n        option = null;\n        this.get('model.salarytypes').forEach((salarytype) => {\n            if (salarytype.get('name') === name && salarytype.get('option')) {\n                return (option = salarytype.get('option'));\n            }\n        });\n        if (option) {\n            return option;\n        } else {\n            return 'addon_' + this.get('tools').computerizeHumanInput(name);\n        }\n    },\n    removeDuplicateFields: function (fields) {\n        var keysByName, ret;\n        keysByName = {};\n        ret = {};\n        Object.keys(fields).forEach((fieldName) => {\n            var field;\n            field = fields[fieldName];\n            if (keysByName[field.name] == null) {\n                keysByName[field.name] = [];\n            }\n            return keysByName[field.name].push({\n                name: fieldName,\n                field: field,\n            });\n        });\n        Object.keys(keysByName).forEach((name) => {\n            var useField, useName;\n            fields = keysByName[name];\n            useField = null;\n            useName = null;\n            fields.forEach((field) => {\n                if (!useField) {\n                    useField = field;\n                }\n                if (useField.name.startsWith('!') && !field.name.startsWith('!')) {\n                    useField.name = useField.name.substring(1);\n                }\n                if (!this.plainFieldName(field.name).indexOf('addon') === -1) {\n                    return (useName = this.plainFieldName(field.name));\n                }\n            });\n            if (useName) {\n                useField.name = (useField.name.startsWith('!') ? '!' : '') + useName;\n            }\n            return (ret[useField.name] = useField.field);\n        });\n        return ret;\n    },\n    plainFieldName: function (name) {\n        if (name.startsWith('!')) {\n            return name.substring(1);\n        } else {\n            return name;\n        }\n    },\n    showSave: Ember.computed(\n        'model.salarytypes.@each.changedWorktimegroup',\n        'model.salarytypes.@each.hasDirtyAttributes',\n        'model.salarytypes.@each.inuse',\n        function () {\n            var show;\n            show = false;\n            this.get('model.salarytypes').forEach((row) => {\n                if (!row.get('inuse') && row.get('isNew')) {\n                    return;\n                }\n                if (row.get('hasDirtyAttributes') || row.get('changedWorktimegroup')) {\n                    return (show = true);\n                }\n            });\n            return show;\n        },\n    ),\n    actions: {\n        changedWorktimegroup: function (row, record, fieldname) {\n            if (!fieldname) {\n                return;\n            }\n            row.set('changedWorktimegroup', true);\n            return row.set(fieldname, record);\n        },\n        save: function () {\n            this.get('notifications').success(this.get('intl').t('general.saved'), {\n                autoClear: true,\n            });\n            this.set('_refreshNeeded', true);\n            this.manipulateService();\n            this.set('changedWorktimegroup', false);\n            return this.get('model.salarytypes').forEach((row) => {\n                if (row.get('hasDirtyAttributes') || row.get('changedWorktimegroup')) {\n                    return row.save();\n                }\n            });\n        },\n        remove: function (row) {\n            return row.destroyRecord();\n        },\n        addRow: function () {\n            return this.store.createRecord('salarytype', {\n                inuse: true,\n            });\n        },\n        editRow: function (row) {\n            return this.store.findRecord('abcensetype', row.id).then((record) => {\n                record.on('didUpdate', () => {\n                    return this.get('absenceSettings').toggleProperty('refreshRows');\n                });\n                return this.transitionToRoute({\n                    queryParams: {\n                        modal: ['abcensetype', row.id],\n                    },\n                });\n            });\n        },\n        removeRow: function (row, report) {\n            Em.assert('removeRow action needs row id', row.id);\n            return this.store.findRecord(report.get('form'), row.id).then(function (record) {\n                return record.destroyRecord();\n            });\n        },\n    },\n});\n\nexport default Controller;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/salarytypes/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Route;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    model: function () {\n        this.store.query('salarytype', {\n            sideload: true,\n        });\n        return Ember.RSVP.hash({\n            salarytypes: this.store.peekAll('salarytype'),\n            shortcuts: null,\n        });\n    },\n    //setupController: (controller, post) ->\n    //    this._super(controller, post)\n    //    controller.updateModel()\n    afterModel: function (model) {\n        return this.get('Collector')\n            .ccapi({\n                url:\n                    'default_salarytypes?products=' + this.get('Collector').getProducts().join(','),\n            })\n            .then((defaults) => {\n                var dropdowns, fields;\n                dropdowns = [];\n                fields = this.get('Collector').fields('worktime');\n                Object.keys(fields).forEach((field) => {\n                    var defaultsFields, ref, ref1;\n                    if (field === 'work_hours') {\n                        return;\n                    }\n                    if ((ref = fields[field].type) === 'hours' || ref === 'number') {\n                        defaultsFields = defaults.filter(function (item) {\n                            var ref1;\n                            return (\n                                (ref1 = Ember.get(item, 'type')) === 'field' ||\n                                ref1 === 'amount' ||\n                                ref1 === 'check'\n                            );\n                        });\n                        if (!defaultsFields.findBy('option', field)) {\n                            return defaults.push({\n                                name: fields[field].name\n                                    ? fields[field].name\n                                    : this.get('intl').t('worktime.' + field),\n                                control: field,\n                                type: 'disabled',\n                                option: field,\n                            });\n                        }\n                    } else if (\n                        (ref1 = fields[field].type) === 'dropdown_values' ||\n                        ref1 === 'dropdown_options'\n                    ) {\n                        return dropdowns.push({\n                            text: fields[field].name\n                                ? fields[field].name\n                                : this.get('intl').t('worktime.' + field),\n                            options: fields[field].options.map((option) => {\n                                return {\n                                    value: 'custom_' + field + '=' + option.id,\n                                    text: this.get('intl').t('worktime.' + field + '.' + option.id),\n                                };\n                            }),\n                        });\n                    } else if (fields[field].type === 'checkbox') {\n                        return dropdowns.push({\n                            text: fields[field].name\n                                ? fields[field].name\n                                : this.get('intl').t('worktime.' + field),\n                            options: [\n                                {\n                                    value: 'custom_' + field + '=true',\n                                    text: this.get('intl').t('general.yes'),\n                                },\n                                {\n                                    value: 'custom_' + field + '=false',\n                                    text: this.get('intl').t('general.no'),\n                                },\n                            ],\n                        });\n                    }\n                });\n                Ember.set(model, 'shortcuts', defaults);\n                Ember.set(model, 'dropdowns', dropdowns);\n                Ember.get(model, 'shortcuts').forEach((shortcut) => {\n                    var filtered, found, inuse;\n                    if (shortcut.shortcut) {\n                        found = Ember.get(model, 'salarytypes').findBy(\n                            'shortcut',\n                            shortcut.shortcut,\n                        );\n                    } else {\n                        filtered = Ember.get(model, 'salarytypes').filter(function (item) {\n                            var ref;\n                            return (\n                                (ref = item.get('type')) === 'field' ||\n                                ref === 'amount' ||\n                                ref === 'check' ||\n                                ref === 'disabled'\n                            );\n                        });\n                        found = filtered.findBy('option', shortcut.option);\n                    }\n                    if (!found) {\n                        inuse = this.get('Collector').testNeeds(['worktime.' + shortcut.option]);\n                        return this.store.createRecord('salarytype', {\n                            name: shortcut.name,\n                            control: shortcut.control,\n                            key: shortcut.key,\n                            type: inuse ? 'disabled' : shortcut.type,\n                            option: shortcut.option,\n                            shortcut: shortcut.shortcut,\n                            inuse: inuse,\n                        });\n                    }\n                });\n                return Ember.set(model, 'salarytypes', this.store.peekAll('salarytype'));\n            });\n    },\n    actions: {\n        willTransition: function (transition) {\n            return transition.then(() => {\n                if (this.controller.get('_refreshNeeded')) {\n                    return this.get('dialogs')\n                        .alert(this.get('intl').t('general.settings_refresh_needed'))\n                        .then(function () {\n                            return location.reload();\n                        });\n                }\n            });\n        },\n    },\n});\n\nexport default Route;\n","export default Ember.HTMLBars.template({\"id\":\"XdwkAtOD\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"shortcut\\\",\\\"dropdown\\\",\\\"opt\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"preventUsage\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning my-4 mx-4\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[28,\\\"t\\\",[\\\"salarytypes.old.warning\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"development\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning my-4 mx-4\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"devText\\\"],false],[0,\\\"\\\\n        \\\"],[5,\\\"link-to\\\",[],[[\\\"@route\\\",\\\"@model\\\"],[\\\"forms.form-report\\\",\\\"salarytype\\\"]],{\\\"statements\\\":[[1,[22,\\\"salarytypesText\\\"],false]],\\\"parameters\\\":[]}],[0,\\\"        \\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.help\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.name\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.type\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.key\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"salarytype.worktimegroup\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.worktimegroup\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.inuse\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sortedModel\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"disabled\\\"],[\\\"text\\\",[23,1,[\\\"name\\\"]],\\\"form-control\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"disabled\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"or\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"disabled\\\"],null],[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"product\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onChange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,1,[\\\"type\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[11,\\\"disabled\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"isNew\\\"]],false],null]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"dropdown\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.type.dropdown\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"field\\\"],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"field\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.type.field\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"amount\\\"],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"amount\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.type.amount\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"check\\\"],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"check\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.type.check\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"dropdowns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"optgroup\\\",true],[11,\\\"label\\\",[23,3,[\\\"text\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,4,[\\\"value\\\"]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],[23,4,[\\\"value\\\"]]],null]],[8],[1,[23,4,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n                        \\\"],[7,\\\"optgroup\\\",true],[11,\\\"label\\\",[28,\\\"t\\\",[\\\"report.salarytype.hours_numbers\\\"],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"shortcuts\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"not-eq\\\",[[23,2,[\\\"option\\\"]],\\\"\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,2,[\\\"option\\\"]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,2,[\\\"option\\\"]],[23,1,[\\\"type\\\"]]],null]],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,1,[\\\"key\\\"]],\\\"form-control\\\"]]],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"salarytype.worktimegroup\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector/field-comp\\\",[\\\"salarytype.worktimegroup\\\"],[[\\\"prompt\\\",\\\"value\\\",\\\"change\\\"],[[28,\\\"t\\\",[\\\"salarytypes.useall\\\"],null],[23,1,[\\\"worktimegroup\\\",\\\"id\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changedWorktimegroup\\\",[23,1,[]]],null]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"checked\\\",\\\"disabled\\\"],[\\\"checkbox\\\",\\\"form-control\\\",[23,1,[\\\"inuse\\\"]],[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"disabled\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[23,1,[\\\"inuse\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,1,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addRow\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSave\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"salary.salarytypes.absence.salary_code\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"settings\\\",\\\"rowActions\\\",\\\"editRow\\\",\\\"removeRow\\\"],[[24,[\\\"absenceSettings\\\"]],[24,[\\\"rowActions\\\"]],\\\"editRow\\\",\\\"removeRow\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/salarytypes/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"kGQ/vzj4\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/workday-calendar/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorkdayCalendarController;\n\nimport Ember from 'ember';\n\nimport { inject as service } from '@ember/service';\n\nimport EmberObject from '@ember/object';\n\nWorkdayCalendarController = Ember.Controller.extend({\n    intl: service(),\n    store: service(),\n    tools: service(),\n    session: service(),\n    customerSettings: service(),\n    ttapi: service(),\n    Collector: service('collector-service'),\n    queryParams: ['worktimegroup', 'date'],\n    worktimegroup: null,\n    date:\n        moment().startOf('year').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('year').format('YYYY-MM-DD'),\n    daily_checked: true,\n    time_based_checked: false,\n    customTimeBased: Em.A([]),\n    fieldsToBeRemoved: [],\n    rowActions: [\n        {\n            action: 'editRow',\n            icon: 'move move-Pencil',\n        },\n    ],\n    showDailyOvertime: Ember.computed('Ember.devModeOn', function () {\n        //return false if !Ember.get(Ember, 'devModeOn')\n        if (this.get('Collector').testNeeds(['products.overtime', 'serviceCountry@se'])) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n    sortedWeekdays: Ember.computed('model.weeks.[]', 'worktimegroup', function () {\n        var days;\n        days = this.get('model.weeks');\n        return Ember.A([\n            days.filterBy('day', 'monday').get('lastObject'),\n            days.filterBy('day', 'tuesday').get('lastObject'),\n            days.filterBy('day', 'wednesday').get('lastObject'),\n            days.filterBy('day', 'thursday').get('lastObject'),\n            days.filterBy('day', 'friday').get('lastObject'),\n            days.filterBy('day', 'saturday').get('lastObject'),\n            days.filterBy('day', 'sunday').get('lastObject'),\n        ]);\n    }),\n    columns: Ember.computed(function () {\n        var cols;\n        cols = ['date', 'minutes', 'desc'];\n        if (this.get('Collector').testNeedsOne('worktimegroup')) {\n            cols.push('worktimegroup');\n        }\n        if (this.get('Collector').testNeedsOne('products.midweek_holiday_pay')) {\n            cols.push('midweek_holiday_pay');\n            cols.push('midweek_holiday_length');\n        }\n        cols.push('type');\n        return cols;\n    }),\n    overtimeColumns: ['name', 'rules'],\n    translated_columns: Ember.computed(function () {\n        var col, i, len, ref, translated;\n        translated = [];\n        ref = this.get('overtimeColumns');\n        for (i = 0, len = ref.length; i < len; i++) {\n            col = ref[i];\n            translated.push('overtimerule.' + col);\n        }\n        return translated;\n    }),\n    ownOvertimeColumns: [],\n    worktimegroupfield: Ember.computed('worktimegroup', function () {\n        var field;\n        field = this.get('Collector').field('user', 'worktimegroup');\n        field.value = this.get('worktimegroup');\n        return field;\n    }),\n    calculateSum: Ember.computed('sortedWeekdays', function () {\n        var max_sum, sum, weekdays;\n        weekdays = this.get('sortedWeekdays');\n        sum = 0;\n        max_sum = 0;\n        weekdays.forEach((day) => {\n            if (day) {\n                sum += day.get('minutes');\n                return (max_sum += day.get('max_minutes'));\n            }\n        });\n        return EmberObject.create({\n            sum: sum,\n            max_sum: max_sum,\n        });\n    }),\n    calculateDayLength: Ember.computed(\n        'editingWeekRule.starttime',\n        'editingWeekRule.endtime',\n        function () {\n            var end, length, minutes, start;\n            if (this.get('editingWeekRule.endtime') && this.get('editingWeekRule.starttime')) {\n                end = moment(this.get('editingWeekRule.endtime'), 'HH:mm');\n                start = moment(this.get('editingWeekRule.starttime'), 'HH:mm');\n                length = moment.duration(end.diff(start));\n                minutes = length.asMinutes();\n                if (\n                    this.get('Collector').testNeedsOne('worktime') &&\n                    this.get('Collector').testNeedsOne('worktime.pause')\n                ) {\n                    return this.getPause().then((pause) => {\n                        if (pause) {\n                            minutes -= pause;\n                        }\n                        if (minutes > 0) {\n                            return this.set('editingWeekRule.minutes', minutes);\n                        } else {\n                            return this.set('editingWeekRule.minutes', 0);\n                        }\n                    });\n                } else {\n                    if (minutes > 0) {\n                        return this.set('editingWeekRule.minutes', minutes);\n                    } else {\n                        return this.set('editingWeekRule.minutes', 0);\n                    }\n                }\n            }\n        },\n    ),\n    getPause: function () {\n        var configs, setting_params, worktimegroup;\n        worktimegroup = this.get('editingWeekRule.worktimegroup.id');\n        setting_params = {\n            name: 'default_value',\n            value: 30,\n        };\n        if (this.get('editingWeekRule.worktimegroup.id')) {\n            setting_params.condition = '$userProfile->worktimegroup==' + worktimegroup;\n        }\n        configs = {\n            form: 'worktime',\n            field: 'pause',\n            setting: setting_params,\n        };\n        return this.get('store')\n            .findAll('form', {\n                reload: true,\n            })\n            .then((forms) => {\n                var field, form, setting;\n                form = forms.filterBy('external_type', configs.form);\n                field = form.get('firstObject.fields').filterBy('external_type', configs.field);\n                if (field.get('length') > 0) {\n                    setting = field\n                        .get('firstObject.settings')\n                        .filterBy('name', configs.setting.name);\n                    setting = setting.filter((item) => {\n                        var arr;\n                        if (worktimegroup) {\n                            if (!item.get('condition')) {\n                                return false;\n                            }\n                            arr = item.get('condition').split('==');\n                            return arr[1] === worktimegroup;\n                        } else {\n                            return item.get('condition') === '';\n                        }\n                    });\n                    if (setting.get('firstObject')) {\n                        return setting.get('firstObject').value;\n                    } else {\n                        configs.setting.field = field.get('firstObject');\n                        return this.get('store').createRecord(\n                            'form-field-setting',\n                            configs.setting,\n                        );\n                    }\n                } else {\n                    return false;\n                }\n            });\n    },\n    isDisabled: function (day) {\n        if (day === 'saturday') {\n            return this.fiveDayVacationWeekIsOn();\n        }\n        if (day === 'sunday') {\n            return true;\n        }\n        return false;\n    },\n    fiveDayVacationWeekIsOn: function (day) {\n        var mainSettingOn, setting, settingsPromise;\n        mainSettingOn = this.customerSettings.checkSetting('vacation_week_length');\n        if (!this.Collector.testNeedsOne('worktimegroup') || !this.worktimegroup || mainSettingOn) {\n            return mainSettingOn;\n        }\n        setting = '';\n        settingsPromise = this.get('ttapi')._get('/settings?worktimegroup=' + this.worktimegroup);\n        return settingsPromise.then((result) => {\n            var vacation_week_length;\n            vacation_week_length = result.findBy('key', 'vacation_week_length');\n            if (!vacation_week_length) {\n                return false;\n            }\n            if (vacation_week_length.value === 'off') {\n                return false;\n            }\n            return true;\n        });\n    },\n    actions: {\n        showDayRule: function (date, day) {\n            const isoWeekday = moment(date).isoWeekday() - 1; // use isoWeekday to get weekdays not affected by locale\n            var defaultDayLength, params;\n            // we create a new record if: \n            // 1. we are adding a new rule for the day OR\n            // 2. selected worktimegroup is different from the record's worktimegroup (this happens when there is already a \"general\" rule for the day and user has selected some worktimegroup)\n            if ((day && !Ember.get(day, 'own')) || (day && day.get('own') && this.get('worktimegroup') && !day.get('worktimegroup.content'))) {\n                params = {\n                    date: Ember.get(day, 'date'),\n                    minutes: Ember.get(day, 'minutes'),\n                    desc: Ember.get(day, 'desc'),\n                    own: true,\n                    midweek_holiday_pay: false,\n                    midweek_holiday_length: null,\n                    absence_minutes: null,\n                };\n                if (this.get('worktimegroup')) {\n                    params.worktimegroup = this.get('store').peekRecord(\n                        'worktimegroup',\n                        this.get('worktimegroup'),\n                    );\n                }\n                day = this.get('store').createRecord('workday-day', params);\n            } else if (day == null) {\n                params = {};\n                if (this.get('worktimegroup')) {\n                    params.worktimegroup = this.get('store').peekRecord(\n                        'worktimegroup',\n                        this.get('worktimegroup'),\n                    );\n                }\n                if (date) {\n                    params.date = date;\n                    defaultDayLength = Ember.get(this.get('sortedWeekdays')[isoWeekday], 'minutes');\n                    params.minutes = defaultDayLength;\n                    params.absence_minutes = Ember.get(\n                        this.get('sortedWeekdays')[isoWeekday],\n                        'absence_minutes',\n                    );\n                    if (this.get('Collector').testNeedsOne('products.midweek_holiday_pay')) {\n                        params.midweek_holiday_length = defaultDayLength;\n                        params.midwdeek_holiday_pay = true;\n                    }\n                }\n                day = this.get('store').createRecord('workday-day', params);\n            }\n            if (day.absence_minutes === null) {\n                day.absence_minutes = day.minutes;\n            }\n            return this.set('dayRule', day);\n        },\n        closeModal: function () {\n            var day;\n            day = this.get('dayRule');\n            day.rollbackAttributes();\n            return this.set('dayRule', false);\n        },\n        closeWeekModal: function () {\n            var day;\n            day = this.get('editingWeekRule');\n            day.rollbackAttributes();\n            return this.set('editingWeekRule', false);\n        },\n        editWeekRule: function (rule) {\n            var c, record, weekend, worktimegroup;\n            c = this.get('Collector');\n            record = false;\n            weekend = ['saturday', 'sunday'];\n            if (\n                !rule.get('own') ||\n                (rule.get('own') && this.get('worktimegroup') && !rule.get('worktimegroup.content'))\n            ) {\n                worktimegroup =\n                    c.testNeedsOne('worktimegroup') && this.get('worktimegroup')\n                        ? this.get('store').peekRecord('worktimegroup', this.get('worktimegroup'))\n                        : void 0;\n                record = this.get('store').createRecord('workday-week', {\n                    day: rule.get('day'),\n                    starttime: rule.get('starttime'),\n                    endtime: rule.get('endtime'),\n                    minutes: rule.get('minutes'),\n                    max_minutes: rule.get('max_minutes') || 0,\n                    absence_minutes:\n                        rule.absence_minutes === null && !weekend.includes(rule.day)\n                            ? rule.minutes\n                            : rule.absence_minutes,\n                    worktimegroup: worktimegroup,\n                    own: true,\n                    overtimerule: null,\n                });\n            }\n            if (rule.absence_minutes === null && !weekend.includes(rule.day)) {\n                rule.absence_minutes = rule.minutes;\n            }\n            this.set('selectedOvertimeRule', rule.get('overtimerule.id'));\n            this.set('editingWeekRule', record || rule);\n            return this.set('vacationIsDisabled', this.isDisabled(rule.day));\n        },\n        filterChanged: function (value, field) {\n            if (field === 'worktimegroup' && value) {\n                value = value.get('id');\n            }\n            return this.set(field, value);\n        },\n        setValue: function (field, value) {\n            this.set(field, value);\n            if (field.includes('starttime') || field.includes('endtime')) {\n                return this.calculateDayLength;\n            }\n        },\n        showOvertimeModal: function () {\n            var row;\n            row = this.get('store').createRecord('workdayOvertimeRule', {\n                text: '',\n                rules: [],\n            });\n            return this.set('editOvertimeRow', row);\n        },\n        closeOvertimeModal: function () {\n            this.set('editingOvertimeRule', false);\n            return this.set('addingOvertimeRule', false);\n        },\n        editRow: function (row) {\n            return this.set('editOvertimeRow', row);\n        },\n        saveOvertimeRule: function (rules) {\n            var row;\n            row = this.get('editOvertimeRow');\n            row.set('rules', JSON.stringify(rules));\n            return row.save().then(() => {\n                this.set('editOvertimeRow', null);\n                return this.send('refreshModel');\n            });\n        },\n        valueChanged: function (val) {\n            var rule, weekRule;\n            weekRule = this.get('editingWeekRule');\n            console.log(this.get('selectedOvertimeRule'));\n            if (this.get('selectedOvertimeRule')) {\n                rule = this.get('store').peekRecord(\n                    'workday-overtimeRule',\n                    this.get('selectedOvertimeRule'),\n                );\n                return weekRule.set('overtimerule', rule);\n            } else {\n                return weekRule.set('overtimerule', null);\n            }\n        },\n        changeYear: function (year) {\n            var newYearParams;\n            newYearParams = year + '-01-01_' + year + '-12-31';\n            return this.set('date', newYearParams);\n        },\n    },\n});\n\nexport default WorkdayCalendarController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/workday-calendar/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorkdayCalendarRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nWorkdayCalendarRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    session: Ember.inject.service(),\n    queryParams: {\n        worktimegroup: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params.country = this.get('session.currentUser.company_info.country');\n        return Ember.RSVP.hash({\n            days: this.get('store').query('workday-day', params),\n            weeks: this.get('store').query('workday-week', params),\n            overtimeRules: this.get('store')\n                .query('workday-overtimeRule', params)\n                .then((rules) => {\n                    return rules.forEach((rule) => {\n                        var rulejson;\n                        if (typeof rule.get('rules') !== 'string' || !rule.get('rules')) {\n                            return;\n                        }\n                        rulejson = JSON.parse(rule.get('rules')).map((rule) => {\n                            if (rule.field && !this.Collector.fieldExists('worktime', rule.field)) {\n                                rule.field = null;\n                            }\n                            return rule;\n                        });\n                        return rule.set('rules', rulejson);\n                    });\n                }),\n        });\n    },\n    actions: {\n        save: function (type) {\n            var record;\n            record = this.get('controller.' + type);\n            if (record.get('isSaving')) {\n                return;\n            }\n            return record.save().then(() => {\n                this.refresh();\n                return this.set('controller.' + type, false);\n            });\n        },\n        removeRow: function (row) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    if (con) {\n                        return row.destroyRecord().then(() => {\n                            return this.refresh();\n                        });\n                    }\n                });\n        },\n        removeWeekRow: function (row) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    if (con) {\n                        return row.destroyRecord().then(() => {\n                            return this.refresh();\n                        });\n                    }\n                });\n        },\n        removeDayRow: function (row) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    if (con) {\n                        return row.destroyRecord().then(() => {\n                            this.set('controller.dayRule', false);\n                            return this.refresh();\n                        });\n                    }\n                });\n        },\n        refreshModel: function () {\n            return this.refresh();\n        },\n    },\n});\n\nexport default WorkdayCalendarRoute;\n","export default Ember.HTMLBars.template({\"id\":\"wOZvlIJD\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"rule\\\",\\\"day\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row workday-calendar-toprow\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"company_info\\\",\\\"country\\\"]],\\\"fi\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.generic_timetracker\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[28,\\\"t\\\",[\\\"click.help_workday_calendar_otta\\\"],null]],[10,\\\"target\\\",\\\"_blank\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"settings.products.integration_info_button\\\"],null]],[10,\\\"class\\\",\\\"info-button-row move move-Info workday-calendar-info-button\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"https://ohjeet.visma.fi/articles/#!visma-movenium/ty-p-iv-kalenteri\\\"],[10,\\\"target\\\",\\\"_blank\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"settings.products.integration_info_button\\\"],null]],[10,\\\"class\\\",\\\"info-button-row move move-Info workday-calendar-info-button\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktimegroup\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-5 col-lg-4\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.worktimegroup\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"worktimegroupfield\\\"]]],[[\\\"change\\\"],[\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"shorthand_explanation\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h3\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-StartAndStop\\\"],[8],[9],[0,\\\" = \\\"],[1,[28,\\\"t\\\",[\\\"workday_calendar.worktime_startEnd_icon_explanation\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"h3\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time\\\"],[8],[9],[0,\\\" = \\\"],[1,[28,\\\"t\\\",[\\\"workday_calendar.worktime_icon_explanation\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.absences\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Vacation\\\"],[8],[9],[0,\\\" = \\\"],[1,[28,\\\"t\\\",[\\\"workday_calendar.vacationtime_icon_explanation\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.midweek_holiday_pay\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"workday_calendar.midweek_holiday_pay_explanation\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"gui\\\",\\\"isBelowMd\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workday-week-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sortedWeekdays\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workday-week-day\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"workday-week-day-title\\\"],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"workday.calendar.week.\\\",[23,3,[\\\"day\\\"]]],null]],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workday-week-day-content\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"workday.worktime_hours\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-StartAndStop\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[23,3,[\\\"starttime\\\"]],[23,3,[\\\"endtime\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\" \\\"],[1,[23,3,[\\\"starttime\\\"]],false],[0,\\\" - \\\"],[1,[23,3,[\\\"endtime\\\"]],false],[0,\\\" \\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"workday.week.startend.notSet\\\"],null],false],[0,\\\" \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"format-minutes\\\",[[23,3,[\\\"minutes\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.overtime\\\",\\\"!salarytypev2\\\",\\\"!flag.new-overtime-settings\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"max_minutes\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time\\\"],[8],[9],[0,\\\" -\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"format-minutes\\\",[[23,3,[\\\"max_minutes\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showDailyOvertime\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h4\\\",true],[8],[1,[23,3,[\\\"overtimerule\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.absences\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"workday.vacation_hours\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"absence_minutes\\\"]],null],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"day\\\"]],\\\"sunday\\\"],null],[28,\\\"is-equal\\\",[[23,3,[\\\"day\\\"]],\\\"saturday\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Vacation\\\"],[8],[9],[0,\\\" -\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"format-minutes\\\",[[23,3,[\\\"minutes\\\"]],\\\"Vacation\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"format-minutes\\\",[[23,3,[\\\"absence_minutes\\\"]],\\\"Vacation\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"week-day-buttons\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h5\\\",true],[8],[4,\\\"if\\\",[[23,3,[\\\"own\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"workday.row_type.own\\\"],null],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"workday.row_type.default\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil pull-right\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"general.edit\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"editWeekRule\\\",[23,3,[]]]],[8],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[23,3,[\\\"own\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Delete\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"workday.rule.reset\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"removeWeekRow\\\",[23,3,[]]]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.overtime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workday-week-day workday-week-day-sum\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workday-week-day-title sum-content\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"workday.calendar.week_sum\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"format-minutes\\\",[[24,[\\\"calculateSum\\\",\\\"sum\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.salarytype_v2\\\",\\\"!flag.new-overtime-settings\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"workday.calendar.week_max_sum\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"format-minutes\\\",[[24,[\\\"calculateSum\\\",\\\"max_sum\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workday-days-container\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showDailyOvertime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h1\\\",true],[10,\\\"class\\\",\\\"inline-block\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday_calendar.overtime_rules\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"standard-icon-popover\\\",null,[[\\\"icon\\\",\\\"text\\\"],[\\\"info\\\",[28,\\\"t\\\",[\\\"workday_calendar.overtime_rules.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showOvertimeModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"workday_calendar.add_rule\\\"],null],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workday-days-report\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive general-report report-forms\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtimerule.name\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"workday.overtime_rule\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"overtimeRules\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"rules\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"if\\\",[[23,2,[\\\"field\\\"]],[28,\\\"collector-field-name\\\",null,[[\\\"form\\\",\\\"field\\\"],[\\\"worktime\\\",[23,2,[\\\"field\\\"]]]]],\\\"- \\\"],null],false],[0,\\\": \\\"],[1,[23,2,[\\\"values\\\",\\\"from\\\"]],false],[0,\\\" -  \\\"],[1,[23,2,[\\\"values\\\",\\\"to\\\"]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-row-icon\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Delete pull-right\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.delete_rows\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"removeRow\\\",[23,1,[]]]],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil pull-right\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"general.edit\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"editRow\\\",[23,1,[]]]],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[5,\\\"workday-days\\\",[],[[\\\"@workdayDays\\\",\\\"@showDayRule\\\",\\\"@date\\\",\\\"@changeYear\\\"],[[23,0,[\\\"model\\\",\\\"days\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"showDayRule\\\"],null],[23,0,[\\\"date\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeYear\\\"],null]]]],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"dayRule\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"workday.add.rule\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.date\\\"],null],false],[9],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[0,\\\"        \\\"],[4,\\\"unless\\\",[[24,[\\\"dayRule\\\",\\\"date\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control add-fields\\\",[24,[\\\"dayRule\\\",\\\"date\\\"]]]]],false],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.minutes\\\"],null],false],[9],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[4,\\\"if\\\",[[28,\\\"is-empty\\\",[[24,[\\\"dayRule\\\",\\\"minutes\\\"]]],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[1,[28,\\\"fields/time-minutes\\\",null,[[\\\"value\\\",\\\"valueChanged\\\"],[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"dayRule\\\",\\\"minutes\\\"]],0],null],\\\"00:00\\\",[24,[\\\"dayRule\\\",\\\"minutes\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"dayRule.minutes\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.absences\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.vacation_minutes\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"fields/time-minutes\\\",null,[[\\\"value\\\",\\\"valueChanged\\\"],[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"dayRule\\\",\\\"absence_minutes\\\"]],0],null],\\\"00:00\\\",[24,[\\\"dayRule\\\",\\\"absence_minutes\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"dayRule.absence_minutes\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.desc\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"value\\\",\\\"class\\\"],[[24,[\\\"dayRule\\\",\\\"desc\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.midweek_holiday_pay\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.midweek_holiday_pay.active_toggle\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/fields/toggle-field\\\",null,[[\\\"toggled\\\"],[[24,[\\\"dayRule\\\",\\\"midweek_holiday_pay\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"dayRule\\\",\\\"midweek_holiday_pay\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.midweek_holiday_pay.minutes\\\"],null],false],[9],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"fields/time-minutes\\\",null,[[\\\"value\\\",\\\"valueChanged\\\"],[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"dayRule\\\",\\\"midweek_holiday_length\\\"]],0],null],\\\"00:00\\\",[24,[\\\"dayRule\\\",\\\"midweek_holiday_length\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"dayRule.midweek_holiday_length\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"dayRule\\\"]],\\\"own\\\"],null],\\\"col-xs-6\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-m-link btn-block btn-group \\\",[28,\\\"if\\\",[[24,[\\\"dayRule\\\",\\\"isSaving\\\"]],\\\"disabled\\\"],null]]]],[12,\\\"disabled\\\",[28,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"is-empty\\\",[[24,[\\\"dayRule\\\",\\\"minutes\\\"]]],null],[28,\\\"not\\\",[[24,[\\\"dayRule\\\",\\\"date\\\"]]],null]],null],true,false],null]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",\\\"dayRule\\\"]],[8],[4,\\\"if\\\",[[24,[\\\"dayRule\\\",\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"dayRule\\\"]],\\\"own\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger btn-block btn-group\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeDayRow\\\",[24,[\\\"dayRule\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.delete\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"editingWeekRule\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"workday.add.week_rule\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeWeekModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.starttime\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/fields/time-field\\\",null,[[\\\"_class\\\",\\\"value\\\",\\\"bubbleChange\\\"],[\\\"form-control add-fields\\\",[24,[\\\"editingWeekRule\\\",\\\"starttime\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"editingWeekRule.starttime\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.endtime\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/fields/time-field\\\",null,[[\\\"_class\\\",\\\"value\\\",\\\"bubbleChange\\\"],[\\\"form-control add-fields\\\",[24,[\\\"editingWeekRule\\\",\\\"endtime\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"editingWeekRule.endtime\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.minutes\\\"],null],false],[9],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"fields/time-minutes\\\",null,[[\\\"value\\\",\\\"valueChanged\\\"],[[24,[\\\"editingWeekRule\\\",\\\"minutes\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"editingWeekRule.minutes\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.overtime\\\",\\\"!salarytypev2\\\",\\\"!flag.new-overtime-settings\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.max_minutes\\\"],null],false],[9],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"fields/time-minutes\\\",null,[[\\\"value\\\",\\\"valueChanged\\\"],[[24,[\\\"editingWeekRule\\\",\\\"max_minutes\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"editingWeekRule.max_minutes\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.absences\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"await\\\",[[24,[\\\"vacationIsDisabled\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.vacation_minutes\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"fields/time-minutes\\\",null,[[\\\"value\\\",\\\"valueChanged\\\"],[[24,[\\\"editingWeekRule\\\",\\\"absence_minutes\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"editingWeekRule.absence_minutes\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"workday.vacationIsDisabled.\\\",[24,[\\\"editingWeekRule\\\",\\\"day\\\"]]],null]],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showDailyOvertime\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.overtime_rule\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"select-comp\\\",null,[[\\\"content\\\",\\\"promptTranslation\\\",\\\"value\\\",\\\"classes\\\",\\\"change\\\"],[[24,[\\\"model\\\",\\\"overtimeRules\\\"]],\\\"general.select_choose\\\",[24,[\\\"selectedOvertimeRule\\\"]],\\\"form-control\\\",[28,\\\"action\\\",[[23,0,[]],\\\"valueChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-m-link btn-block \\\",[28,\\\"if\\\",[[24,[\\\"editingWeekRule\\\",\\\"isSaving\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",\\\"editingWeekRule\\\"]],[8],[4,\\\"if\\\",[[24,[\\\"editingWeekRule\\\",\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"editOvertimeRow\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"overtime.add.rule\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editOvertimeRow\\\"]]],null],null],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtimerule.name\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control add-fields\\\",\\\"text\\\",[24,[\\\"editOvertimeRow\\\",\\\"name\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-setting-comp/overtime-setting\\\",null,[[\\\"save\\\",\\\"mandatoryfieldSelection\\\",\\\"customrules\\\"],[\\\"saveOvertimeRule\\\",true,[24,[\\\"editOvertimeRow\\\",\\\"rules\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/workday-calendar/template.hbs\"}});","import { inject as service } from '@ember/service';\nimport Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst ServicesRoute = Route.extend(AuthenticatedRouteMixin, {\n    Collector: service('collector-service'),\n    tools: service(),\n\n    model() {\n        return this.Collector.ajax({ url: 'me?linkings' });\n    },\n\n    actions: {\n        changeService(user) {\n            return this.tools.change_service(user.username);\n        },\n    },\n});\n\nexport default ServicesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"358z3oFZ\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"service.change_service.title\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"service.change_service.text\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-offset-2 col-md-offset-3 col-lg-offset-4 col-sm-8 col-md-6 col-lg-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group text-center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"linkings\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"list-group-item link  \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"username\\\"]],[23,1,[\\\"username\\\"]]],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"changeService\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[23,1,[\\\"company\\\"]],false],[0,\\\" - \\\"],[7,\\\"small\\\",true],[8],[1,[23,1,[\\\"username\\\"]],false],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/services/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/activitylog/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DevelopmentActivitylogController;\n\nimport Ember from 'ember';\n\nimport { alias } from '@ember/object/computed';\n\nDevelopmentActivitylogController = Ember.Controller.extend({\n    content: alias('model'),\n    queryParams: ['owner', '_creator', 'action'],\n    userField: Ember.computed(function () {\n        var c, field;\n        c = this.get('Collector');\n        if (c.fieldExists('worktime', 'user')) {\n            field = c.field('worktime', 'user');\n        } else if (c.fieldExists('presence', 'user')) {\n            field = c.field('presence', 'user');\n        } else if (c.fieldExists('orientation', 'ori_user')) {\n            field = c.field('orientation', 'ori_user');\n        } else if (c.fieldExists('tr', 'user')) {\n            field = c.field('tr', 'user');\n        } else if (c.fieldExists('mvr', 'user')) {\n            field = c.field('mvr', 'user');\n        } else {\n            return null;\n        }\n        return field;\n    }),\n    translations: {\n        findAll: 'findAll',\n        insertRow: 'insertRow',\n        updateRow: 'updateRow',\n        rows: 'Rows',\n        owners: 'Owners',\n    },\n    ownerField: Ember.computed(function () {\n        return Object.assign({}, this.get('userField'));\n    }),\n    columns: Ember.computed(function () {\n        return ['timestamp', '_creator', 'action', 'form', 'rowids', 'owners'];\n    }),\n    pageCount: Ember.computed('content.meta.count', function () {\n        return Math.ceil(this.get('content.meta.count') / 25);\n    }),\n    historyModal: Ember.computed(function () {\n        return ['worktime', this.get('model.id'), 'history'];\n    }),\n    actions: {\n        changeOwner: function (owner) {\n            this.set('owner', owner != null ? owner.get('id') : '');\n            return false;\n        },\n        changeUser: function (_creator) {\n            this.set('_creator', _creator != null ? _creator.get('id') : '');\n            return false;\n        },\n        changeAction: function (action) {\n            this.set('action', action);\n            return false;\n        },\n    },\n});\n\nexport default DevelopmentActivitylogController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/activitylog/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DevelopmentActivitylogRoute;\n\nimport Ember from 'ember';\n\nDevelopmentActivitylogRoute = Ember.Route.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        owner: {\n            refreshModel: true,\n        },\n        _creator: {\n            refreshModel: true,\n        },\n        action: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var query;\n        query = {\n            limit: 25,\n            offset: params.page != null ? (params.page - 1) * 25 : 0,\n            order: 'timestamp-',\n        };\n        if (params.owner) {\n            query.owners = params.owner;\n        }\n        if (params._creator) {\n            query._creator = params._creator;\n        }\n        if (params.action) {\n            query.action = params.action;\n        }\n        return this.store.query('user_activity_log', query);\n    },\n});\n\nexport default DevelopmentActivitylogRoute;\n","export default Ember.HTMLBars.template({\"id\":\"+jayC4oB\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"tr.title.user\\\"],null],false],[0,\\\":\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"userField\\\"]]],[[\\\"change\\\",\\\"prompt\\\",\\\"value\\\"],[\\\"changeUser\\\",\\\"user\\\",[24,[\\\"user\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"settings.activitylog_action\\\"],null],false],[0,\\\":\\\\n        \\\"],[7,\\\"select\\\",true],[11,\\\"onChange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"changeAction\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[10,\\\"name\\\",\\\"action\\\"],[10,\\\"class\\\",\\\"form-control\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"option\\\",true],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[24,[\\\"action\\\"]],\\\"findAll\\\"],null]],[10,\\\"value\\\",\\\"findAll\\\"],[8],[1,[24,[\\\"translations\\\",\\\"findAll\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"option\\\",true],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[24,[\\\"action\\\"]],\\\"insertRow\\\"],null]],[10,\\\"value\\\",\\\"insertRow\\\"],[8],[1,[24,[\\\"translations\\\",\\\"insertRow\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"option\\\",true],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[24,[\\\"action\\\"]],\\\"updateRow\\\"],null]],[10,\\\"value\\\",\\\"updateRow\\\"],[8],[1,[24,[\\\"translations\\\",\\\"updateRow\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"project.owner\\\"],null],false],[0,\\\":\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"ownerField\\\"]]],[[\\\"change\\\",\\\"prompt\\\",\\\"value\\\"],[\\\"changeOwner\\\",\\\"owner\\\",[24,[\\\"owner\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive table-striped\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"date\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.title.user\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.activitylog_action\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"formeditor.form\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[24,[\\\"translations\\\",\\\"rows\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[24,[\\\"translations\\\",\\\"owners\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"timestamp\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"user\\\",\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"user\\\",\\\"firstname\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"action\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"form\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"rowids\\\",\\\"length\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"owners\\\",\\\"length\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"action\\\"]],\\\"updateRow\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[4,\\\"link-to\\\",null,[[\\\"query\\\"],[[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[28,\\\"query-helper\\\",[[23,1,[\\\"form\\\"]],[23,1,[\\\"rowids\\\",\\\"0\\\"]],\\\"history\\\"],null]]]]]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Search\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[25,[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/activitylog/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/billing/bill-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsBillingBillCompComponent;\n\nimport Ember from 'ember';\n\nimport exportFile from '../../../../mixins/export-file';\n\nSettingsBillingBillCompComponent = Ember.Component.extend(exportFile, {\n    intl: Ember.inject.service(),\n    billrows: Em.A([]),\n    showCurrency: null,\n    month: Ember.computed(function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n    last_month: Em.computed('month', function () {\n        return moment(this.get('month')).subtract(1, 'month').format('YYYY-MM-DD');\n    }),\n    billdate: Ember.computed('month', function () {\n        return moment(this.get('month')).subtract(1, 'month').endOf('month').format('L');\n    }),\n    getBillRows: Em.on('init', function () {\n        var promise;\n        promise = this.get('Collector').ttapi({\n            url: 'billing',\n            data: {\n                month: this.get('last_month'),\n            },\n        });\n        return promise.then((bills) => {\n            return this.set('billrows', bills);\n        });\n    }),\n    fullPrice: Em.computed('billrows', function () {\n        var currency, price;\n        price = 0;\n        currency = null;\n        this.get('billrows').forEach((item) => {\n            price += item.price * item.amount;\n            return (currency = this.currencyByCountry(item.country));\n        });\n        if (currency) {\n            this.set('showCurrency', currency);\n        }\n        return price;\n    }),\n    _billrows: Em.computed('billrows', function () {\n        return this.get('billrows').map((row) => {\n            row.currency = this.currencyByCountry(row.country);\n            row.formatted_snapshot = this.formatSnapshot(row.snapshot);\n            return row;\n        });\n    }),\n    currencyByCountry: function (country) {\n        switch (country) {\n            case 'se':\n                return 'sek';\n            case 'fi':\n                return 'eur';\n            default:\n                return 'eur';\n        }\n    },\n    formatSnapshot: function (snapshot_str) {\n        var days, intl, name, snapshot, str;\n        intl = this.get('intl');\n        snapshot = JSON.parse(snapshot_str);\n        str = '';\n        for (name in snapshot) {\n            days = snapshot[name];\n            if (!Ember.isArray(days)) {\n                continue;\n            }\n            str +=\n                '<b>' +\n                decodeURIComponent(name) +\n                '</b>: <code>' +\n                days.join(',') +\n                '</code>' +\n                intl.t('settings.billing.total') +\n                ': ' +\n                days.length +\n                '<br>';\n        }\n        return Ember.String.htmlSafe(str);\n    },\n    actions: {\n        export: function (rows) {\n            var csv;\n            csv = 'product;description;price;currency;amount';\n            rows.forEach((row) => {\n                csv +=\n                    '\\n' +\n                    this.get('intl').t('billing.products.title.' + row.customerproduct.name) +\n                    ';';\n                csv += row.description + ';';\n                csv += row.price + ';';\n                csv += row.currency + ';';\n                //csv += (row.campaign or \"\") + \";\"\n                return (csv += row.amount);\n            });\n            return this.exportFile(csv, 'bill', 'csv');\n        },\n    },\n});\n\nexport default SettingsBillingBillCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"YhDl+mfP\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"&default\\\"],\\\"statements\\\":[[14,2],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"_billrows\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-primary billing-panel\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing.bill\\\"],null],false],[0,\\\" \\\"],[1,[22,\\\"billdate\\\"],false],[0,\\\" - \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"currency\\\",[[24,[\\\"fullPrice\\\"]],[24,[\\\"showCurrency\\\"]]],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_billrows\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"billing.products.title.\\\",[23,1,[\\\"customerproduct\\\",\\\"name\\\"]]],null]],null],false],[0,\\\" - \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing.unit_price\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"currency\\\",[[23,1,[\\\"price\\\"]],[23,1,[\\\"currency\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"],[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"billing.amount\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"amount\\\"]],false],[9],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[23,1,[\\\"formatted_snapshot\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"export\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export\\\",[24,[\\\"_billrows\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.download\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"billing.no_bills_for\\\"],[[\\\"month\\\"],[[24,[\\\"billdate\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/billing/bill-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/billing/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsBillingController;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nSettingsBillingController = Ember.Controller.extend({\n    cdn: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Em.inject.service(),\n    month: Ember.computed(function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n    oldMonths: Em.computed('month', function () {\n        var i, j, month, months;\n        month = this.get('month');\n        months = [];\n        for (i = j = 1; j < 4; i = ++j) {\n            months.push(moment(month).subtract(i, 'month').format('YYYY-MM-DD'));\n        }\n        return months;\n    }),\n    terms_url: Em.computed(function () {\n        var cdn;\n        cdn = this.get('cdn');\n        switch (moment.locale()) {\n            case 'fi':\n                return config.termsAndConditions.fi;\n            case 'sv':\n            case 'se':\n                return config.termsAndConditions.se;\n            default:\n                return config.termsAndConditions.en;\n        }\n    }),\n    products: Em.computed(function () {\n        var billing_desc, c, products, t;\n        c = this.get('Collector');\n        t = this.get('intl');\n        products = c.get('products');\n        billing_desc = [];\n        products.forEach(function (product) {\n            if (\n                t.exists('billing.products.description.' + product) &&\n                t.exists('billing.products.title.' + product)\n            ) {\n                return billing_desc.push({\n                    desc: t.t('billing.products.description.' + product),\n                    name: t.t('billing.products.title.' + product),\n                });\n            }\n        });\n        return billing_desc;\n    }),\n    actions: {\n        showOldBills: function () {\n            this.set('showOldBills', true);\n            return false;\n        },\n    },\n});\n\nexport default SettingsBillingController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/billing/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsBillingRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSettingsBillingRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default SettingsBillingRoute;\n","export default Ember.HTMLBars.template({\"id\":\"jGfrTKpb\",\"block\":\"{\\\"symbols\\\":[\\\"oldmonth\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"settings/billing/bill-comp\\\",null,[[\\\"month\\\"],[[24,[\\\"month\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"showOldBills\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showOldBills\\\"]],[8],[1,[28,\\\"t\\\",[\\\"billing.show_old_bills\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"oldMonths\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"settings/billing/bill-comp\\\",null,[[\\\"month\\\"],[[23,1,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"billing.terms\\\"],null],false],[0,\\\" \\\"],[7,\\\"a\\\",true],[10,\\\"target\\\",\\\"_blank\\\"],[11,\\\"href\\\",[29,[[22,\\\"terms_url\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"register.terms_link\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/billing/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/company-profile/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CompanyProfileController;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nCompanyProfileController = Ember.Controller.extend({\n    cdn: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    admintool: Ember.inject.service(),\n    store: Ember.inject.service(),\n    application: Em.inject.controller(),\n    settingsController: Em.inject.controller('settings'),\n    notifications: Ember.inject.service(),\n    intl: Em.inject.service(),\n    getData: Em.on(\n        'init',\n        Em.observer('session.currentUser.partnerid', function () {\n            var promise;\n            if (\n                this.get('session.currentUser.partnerid') &&\n                parseInt(this.get('session.currentUser.userlevel')) === 5\n            ) {\n                // get billing-data\n                promise = this.get('admintool').ajax({\n                    url: 'billinginfo',\n                    method: 'get',\n                });\n                promise.then(\n                    (data) => {\n                        this.set('billingData', data);\n                        this.set('billingtype', data['billingtype']);\n                        this.set('editmode', true);\n                        return $('#' + data['billingtype']).addClass('in');\n                    },\n                    (reason) => {\n                        this.set('billingData', {});\n                        this.set('billingtype', 'email');\n                        return $('#email').addClass('in');\n                    },\n                );\n                // get address-data\n                promise = this.get('admintool').ajax({\n                    url: 'customer_info',\n                    method: 'get',\n                });\n                return promise.then((data) => {\n                    return this.set('customerData', data);\n                });\n            }\n        }),\n    ),\n    showAdminMode: Em.computed('application.impersonate', 'Ember.devModeOn', function () {\n        if (Ember.get(Ember, 'devModeOn')) {\n            return true;\n        }\n        if (this.get('application.impersonate')) {\n            return true;\n        }\n        return false;\n    }),\n    actions: {\n        change: function (field, value) {\n            return this.set(field, value);\n        },\n        refreshNeeded: function () {\n            this.get('settingsController').refreshNeeded();\n            return false;\n        },\n        updateLogo: function (img) {\n            //console.log img\n            if (this.get('logo.isDeleted')) {\n                this.set('logo', this.get('store').createRecord('logo'));\n            }\n            this.set('logo.logo', img);\n            this.set('logoImage', false);\n            this.set('saveButtonVisible', true);\n            return false;\n        },\n        //@set 'logoImage', img.get 'thumb'\n        saveLogo: function () {\n            if (this.get('logo.logo') === 'remove') {\n                return this.get('logo')\n                    .destroyRecord()\n                    .then(() => {\n                        //@get('dialogs').success 'logo removed successfully'\n                        return this.set('saveButtonVisible', false);\n                    });\n            } else {\n                return this.get('logo')\n                    .save()\n                    .then(() => {\n                        //@get('dialogs').success 'logo uploaded successfully'\n                        this.set('saveButtonVisible', false);\n                        return this.get('notifications').success(\n                            this.get('intl').t('billing_info.logo_saved'),\n                            {\n                                autoClear: true,\n                            },\n                        );\n                    });\n            }\n        },\n        //@set 'logoImage', data.get 'logo.thumb'\n        removeModal: function () {\n            return this.set('showBillingTypeSelection', false);\n        },\n    },\n});\n\nexport default CompanyProfileController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/company-profile/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CompanyProfileRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nCompanyProfileRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    model: function () {\n        return this.get('store').findAll('company-info');\n    },\n    activate: function () {\n        var c, controller;\n        c = this.get('Collector');\n        controller = this.controllerFor('settings/company-profile');\n        return this.get('store')\n            .findAll('logo')\n            .then((logo) => {\n                var currentLogo;\n                controller.set('logoField', {\n                    form: 'logo',\n                    name: 'logo',\n                    type: 'hdfile',\n                    features: {\n                        is_image: true,\n                    },\n                });\n                if (logo.get('firstObject')) {\n                    currentLogo = logo.get('firstObject');\n                    controller.set('logoImage', currentLogo.get('logo.thumb'));\n                    controller.set('logo', currentLogo);\n                    return (controller.get('logoField')['value'] = currentLogo.get('logo'));\n                } else {\n                    return controller.set('logo', this.get('store').createRecord('logo'));\n                }\n            });\n    },\n});\n\nexport default CompanyProfileRoute;\n","export default Ember.HTMLBars.template({\"id\":\"eCtMYx+f\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"company-profile\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content settings-profile-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.billing_info_header\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"billing-info\\\",null,[[\\\"invoicingAddress\\\",\\\"billingtype\\\",\\\"edit\\\",\\\"customerData\\\"],[[24,[\\\"billingData\\\"]],[24,[\\\"billingtype\\\"]],[24,[\\\"editmode\\\"]],[24,[\\\"customerData\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content settings-profile-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.logo_header\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"company-info-container\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"blockquote\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.logo_text\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"logoImage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"image\\\"],[8],[7,\\\"img\\\",true],[11,\\\"src\\\",[29,[[28,\\\"api-image\\\",[[24,[\\\"logoImage\\\"]]],null]]]],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"logoField\\\"]]],[[\\\"change\\\"],[\\\"updateLogo\\\"]]],false],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saveButtonVisible\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveLogo\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content settings-profile-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.address_info_header\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"address-info\\\",null,[[\\\"data\\\",\\\"billingData\\\",\\\"billingtype\\\"],[[24,[\\\"customerData\\\"]],[24,[\\\"billingData\\\"]],[24,[\\\"billingtype\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content settings-profile-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.company_info\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"company-info\\\",null,[[\\\"model\\\",\\\"refreshNeeded\\\",\\\"showAdminMode\\\"],[[24,[\\\"model\\\",\\\"firstObject\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"refreshNeeded\\\"],null],[24,[\\\"showAdminMode\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/company-profile/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsController;\n\nimport Ember from 'ember';\n\nimport config from '../../config';\n\nSettingsController = Ember.Controller.extend({\n    _refreshNeeded: false,\n    refreshNeeded: function () {\n        console.info('refresh needed');\n        return this.set('_refreshNeeded', true);\n    },\n});\n\nexport default SettingsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/forms/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsFormsController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport exportFile from '../../../mixins/export-file';\n\nimport collector from '../../../classes/collector';\n\nimport $ from 'jquery';\n\nSettingsFormsController = Ember.Controller.extend(exportFile, {\n    queryParams: ['adminMode'],\n    formJson: Ember.inject.service(),\n    session: Ember.inject.service(),\n    tools: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    settingsController: Em.inject.controller('settings'),\n    settingsFormsFormController: Em.inject.controller('settings.forms.form'),\n    application: Em.inject.controller(),\n    dialogs: Ember.inject.service(),\n    ttapi2: Ember.inject.service(),\n    intl: Em.inject.service(),\n    modelCreator: Ember.inject.service(),\n    adminMode: false,\n    tt3Service: Ember.computed(function () {\n        return collector.get('tt3flag');\n    }),\n    dropdown_options: Em.computed('model', 'model.[]', 'adminMode', function () {\n        var acceptedForms, ret;\n        ret = [];\n        acceptedForms = [\n            'user',\n            'project',\n            'employer',\n            'worktime',\n            'task',\n            'abcense',\n            'group',\n            'orientation',\n            'projectfile',\n            'diary',\n            'worktask',\n            'site_safety_observation',\n            'trnotice',\n            'tooltype',\n        ];\n        this.get('model').forEach((form) => {\n            var ref;\n            if (\n                ((ref = form.get('external_type')), indexOf.call(acceptedForms, ref) >= 0) ||\n                this.get('adminMode')\n            ) {\n                return ret.push({\n                    id: form.get('id'),\n                    name:\n                        form.get('translatedName') +\n                        (this.get('adminMode') ? ' (' + form.get('external_type') + ')' : ''),\n                });\n            }\n        });\n        return ret;\n    }),\n    showAdminMode: Em.computed('application.impersonate', 'Ember.devModeOn', function () {\n        if (Ember.get(Ember, 'devModeOn')) {\n            return true;\n        }\n        if (this.get('application.impersonate')) {\n            return true;\n        }\n        return false;\n    }),\n    callImportForm: function (json) {\n        return this.get('formJson')\n            .import(JSON.parse(json))\n            .then((something_was_added) => {\n                if (!something_was_added) {\n                    return;\n                }\n                this.get('modelCreator')\n                    .createEmberModels()\n                    .then(() => {\n                        return this.get('application').notifyPropertyChange('sideMenus');\n                    });\n                return this.get('settingsController').refreshNeeded();\n            });\n    },\n    logs: Ember.computed('adminMode', 'form_id', function () {\n        if (this.get('adminMode')) {\n            return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n                promise: new Ember.RSVP.Promise((resolve) => {\n                    return this.get('ttapi2')\n                        ._get('getFormActivity', {\n                            date:\n                                moment().subtract(1, 'year').format('YYYY-MM-DD') +\n                                '_' +\n                                moment().format('YYYY-MM-DD'),\n                            form: this.get('form_id'),\n                        })\n                        .then((back) => {\n                            return resolve(back);\n                        });\n                }),\n            });\n        }\n    }),\n    actions: {\n        formChanged: function (formid) {\n            if (!formid) {\n                return this.transitionToRoute('settings.forms');\n            } else {\n                return this.transitionToRoute('settings.forms.form', formid);\n            }\n        },\n        exportForm: function () {\n            var form, json_string;\n            form = this.store.peekRecord('form', this.get('form_id'));\n            json_string = this.get('formJson').exportForm(form.get('external_type'));\n            if (json_string) {\n                return this.exportFile(JSON.stringify(json_string), 'export', 'json');\n            }\n        },\n        importForm: function () {\n            return $('#importFormFileInput').click();\n        },\n        createForm: function () {\n            var form, name;\n            name = prompt('Please enter form name');\n            if (name) {\n                form = this.store.createRecord('form', {\n                    name: name,\n                    external_type: this.get('tools').computerizeHumanInput(name),\n                });\n                return form.save().then(() => {\n                    this.set('model', this.store.peekAll('form'));\n                    return this.notifyPropertyChange('dropdown_options');\n                });\n            }\n        },\n        //@transitionToRoute 'settings.forms.form',\n        //    form: id\n        removeForm: function () {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('settings.forms.confirm_remove'))\n                .then((con) => {\n                    var form;\n                    if (con) {\n                        form = this.get('store').peekRecord('form', this.get('form_id'));\n                        return form\n                            .destroyRecord()\n                            .then(() => {\n                                this.get('settingsController').refreshNeeded();\n                                this.get('notifications').success(\n                                    this.get('intl').t('settings.forms.remove_success'),\n                                    {\n                                        autoClear: true,\n                                    },\n                                );\n                                this.set('form_id', null);\n                                return this.transitionToRoute('settings.forms');\n                            })\n                            .catch(e)(() => {\n                            return this.get('notifications').error(\n                                this.get('intl').t('settings.forms.remove_fail'),\n                                {\n                                    autoClear: false,\n                                },\n                            );\n                        });\n                    }\n                });\n        },\n        upload: function (evt) {\n            var input, reader;\n            input = evt.target;\n            if (input.files && input.files[0]) {\n                reader = new FileReader();\n                reader.onload = (e) => {\n                    var data;\n                    data = e.target.result;\n                    this.callImportForm(data);\n                    return this.set('selectedFile', null);\n                };\n                return reader.readAsText(input.files[0]);\n            }\n        },\n    },\n});\n\nexport default SettingsFormsController;\n","import Component from '@ember/component';\nimport { computed, set, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n    tagName: 'table',\n\n    mappedLogs: computed('logs', function () {\n        let logs = get(this, 'logs.content');\n\n        let mapLogs = logs.map((log) => {\n            if (log.body) {\n                Object.values(log.body).map((values) => {\n                    return this.modifiedData(log, values);\n                });\n            }\n            return log;\n        });\n        return mapLogs;\n    }),\n\n    init() {\n        this._super();\n        this.showData = {};\n    },\n\n    actions: {\n        toggle(log) {\n            if (!get(this, 'showData.' + log._id)) {\n                set(this, 'showData.' + log._id, true);\n            } else {\n                set(this, 'showData.' + log._id, false);\n            }\n        },\n    },\n\n    modifiedData(log, values) {\n        if (Object.keys(log.body)[0] === 'formFieldSetting' && values.field) {\n            values.field_info = this.store.peekRecord('form-field', values.field);\n        } else {\n            values.placeholder = values.external_type ? values.external_type : values.name;\n        }\n        return values;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"yAEokiH9\",\"block\":\"{\\\"symbols\\\":[\\\"formLog\\\",\\\"values\\\",\\\"settingName\\\",\\\"ext\\\",\\\"name\\\",\\\"value\\\",\\\"key\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"logs\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loading-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"forms.activitylog.action\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"forms.activitylog.timestamp\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"forms.activitylog.user\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"forms.activitylog.info\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"mappedLogs\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,1,[]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"action\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"timestamp\\\"]],\\\"DD.MM.YYYY HH:mm\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"if\\\",[[23,1,[\\\"impersonate\\\"]],[23,1,[\\\"impersonate\\\",\\\"username\\\"]],[23,1,[\\\"user\\\"]]],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[23,1,[\\\"body\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"showData\\\"]],[23,1,[\\\"_id\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[23,2,[]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,7,[]],\\\"placeholder\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[23,7,[]],false],[9],[0,\\\" : \\\"],[1,[28,\\\"if\\\",[[23,6,[\\\"external_type\\\"]],[23,6,[\\\"external_type\\\"]],[23,6,[]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[6,7]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"with\\\",[[23,2,[\\\"field_info\\\",\\\"external_type\\\"]]],null,{\\\"statements\\\":[[4,\\\"with\\\",[[23,2,[\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"forms.activitylog.setting\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[23,5,[]],false],[0,\\\" / \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"forms.activitylog.field\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[4]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[23,2,[\\\"placeholder\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[2,3]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"showData\\\"]],[23,1,[\\\"_id\\\"]]],null],\\\"move move-SortUp\\\",\\\"move move-SortDown\\\"],null]],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/forms/form-activity-log/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/forms/form/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsFormsFormController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collector from 'tt4/classes/collector';\n\nSettingsFormsFormController = Ember.Controller.extend({\n    session: Em.inject.service(),\n    dialogs: Ember.inject.service(),\n    error: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Em.inject.service(),\n    settingsController: Em.inject.controller('settings'),\n    formFieldController: Ember.inject.controller('settings.forms.form.field'),\n    formsController: Ember.inject.controller('settings.forms'),\n    modelCreator: Ember.inject.service('model-creator'),\n    adminMode: Ember.computed.alias('formsController.adminMode'),\n    selectedField: Ember.computed('formFieldController.field', function () {\n        return this.get('formFieldController.field');\n    }),\n    fieldController: Em.inject.controller('settings.forms.form.field'),\n    hasCCFunction: Ember.computed('filteredFormSettings.[]', function () {\n        return this.get('filteredFormSettings').filterBy('value', 'ccfunctions').get('length') > 0;\n    }),\n    ccfunctionload: Ember.computed('model.form', function () {\n        return this.get('Collector')\n            .ttapi({\n                url: 'ccfunctions/functions',\n                dataType: 'text',\n                data: {\n                    form: this.get('model.form.external_type'),\n                },\n            })\n            .then((data) => {\n                return this.set('ccfunctionvalue', data);\n            });\n    }),\n    filteredFields: Em.computed(\n        'model.fields',\n        'model.fields.@each.nro',\n        'model.fields.[]',\n        'model.form',\n        'adminMode',\n        'model.fields.@each.removed',\n        function () {\n            var fields, hideWithExternal, hideWithSetting, hideWithType;\n            hideWithSetting = ['hide', 'hidden', 'hide_tt4'];\n            hideWithType = ['device', 'rowlink', 'row_linker'];\n            hideWithExternal = [''];\n            if (!this.get('model.fields')) {\n                return [];\n            }\n            fields = this.get('model.fields')\n                .filterBy('form.id', this.get('model.form.id'))\n                .sortBy('nro');\n            if (fields) {\n                return fields.filter((field) => {\n                    var ref, ref1, ret;\n                    if (field.get('removed')) {\n                        return;\n                    }\n                    ret = true;\n                    if (\n                        ((ref = field.get('external_type')),\n                        indexOf.call(hideWithExternal, ref) >= 0)\n                    ) {\n                        ret = false;\n                    }\n                    if (((ref1 = field.get('type')), indexOf.call(hideWithType, ref1) >= 0)) {\n                        ret = false;\n                    }\n                    field.get('settings').forEach(function (setting) {\n                        var ref2;\n                        if (\n                            ((ref2 = setting.get('name')), indexOf.call(hideWithSetting, ref2) >= 0)\n                        ) {\n                            // show this field if hide-setting is object (it is conditionally hidden, so it seems a good idea to show this field)\n                            if (\n                                setting.get('value').indexOf('[') === -1 &&\n                                !setting.condition.includes('worktimegroup') &&\n                                setting.get('name') === 'hide'\n                            ) {\n                                return (ret = false);\n                            }\n                        }\n                    });\n                    if (this.get('adminMode')) {\n                        ret = true;\n                    }\n                    return ret;\n                });\n            }\n        },\n    ),\n    filteredFormSettings: Ember.computed('model.settings', 'model.settings.[]', function () {\n        return this.get('model.settings').filterBy('form.id', this.get('model.form.id'));\n    }),\n    filteredFieldSettings: Ember.computed(\n        'filteredFields',\n        'filteredFields.[]',\n        'model.fieldSettings.[]',\n        function () {\n            var fieldIds;\n            fieldIds = this.get('filteredFields').mapBy('id');\n            return this.get('model.fieldSettings').filter((setting) => {\n                var ref;\n                return (ref = setting.get('field.id')), indexOf.call(fieldIds, ref) >= 0;\n            });\n        },\n    ),\n    unsavedChanges: Em.computed(\n        'filteredFormSettings.@each.hasDirtyAttributes',\n        'filteredFieldSettings.@each.hasDirtyAttributes',\n        'filteredFields.@each.hasDirtyAttributes',\n        'model.form.hasDirtyAttributes',\n        function () {\n            if (this.get('model.form.hasDirtyAttributes')) {\n                return true;\n            }\n            if (!this.get('model.fields')) {\n                return;\n            }\n            if (this.get('filteredFields').filterBy('hasDirtyAttributes').length !== 0) {\n                return true;\n            }\n            if (this.get('filteredFormSettings').filterBy('hasDirtyAttributes').length !== 0) {\n                return true;\n            }\n            if (this.get('filteredFieldSettings').filterBy('hasDirtyAttributes').length !== 0) {\n                return true;\n            }\n        },\n    ),\n    dirtyFields: Em.computed('model.@each.hasDirtyAttributes', function () {\n        return this.get('model.fields').filterBy('hasDirtyAttributes');\n    }),\n    generateExternalType: function (name) {\n        if (!name) {\n            name = Math.random().toString(36).substring(10);\n        }\n        name = name.toString();\n        name = name.underscore();\n        name = name.replace(/[^\\w\\s]/gi, '');\n        name = name.substr(0, 20);\n        name = this.checkDuplicates(name);\n        name = 'addon_' + name;\n        return name;\n    },\n    checkDuplicates: function (name) {\n        var ret_name;\n        ret_name = null;\n        this.get('model.fields').forEach(function (field) {\n            if (field.get('external_type') === 'addon_' + name) {\n                return (ret_name = name + Math.floor(Math.random() * 10 + 1).toString());\n            }\n        });\n        if (ret_name) {\n            return this.checkDuplicates(ret_name);\n        }\n        return name;\n    },\n    saveField: function (field) {\n        var isNew;\n        isNew = false;\n        if (field.get('isNew')) {\n            field.set('external_type', this.generateExternalType(field.get('name')));\n            isNew = true;\n        }\n        return field.save().then(() => {\n            if (isNew) {\n                return this.transitionToRoute('settings.forms.form.field', field.get('id'));\n            }\n        });\n    },\n    saveDirtyForm: function () {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var form;\n            form = this.get('model.form');\n            if (this.get('model.form.hasDirtyAttributes')) {\n                return this.get('model.form').save().then(resolve, reject);\n            } else {\n                return resolve();\n            }\n        });\n    },\n    validateRecord: function (type, record) {\n        var name;\n        if (type === 'filteredFields') {\n            name = record.get('name');\n            if (name === '' || name === void 0) {\n                throw this.get('intl').t('form.editor.no_empty_names');\n            }\n        }\n    },\n    saveDirtyRecords: function (type) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var promises;\n            promises = [];\n            this.get(type).forEach((record) => {\n                this.validateRecord(type, record);\n                if (record.get('hasDirtyAttributes')) {\n                    return promises.push(record.save());\n                }\n            });\n            return Ember.RSVP.Promise.all(promises).then(resolve, reject);\n        });\n    },\n    formSettingOptions: [\n        {\n            name: 'access_denied',\n            value: 'true',\n        },\n        {\n            name: 'hide_addrow',\n            value: 'true',\n        },\n        {\n            name: 'hide_edit',\n            value: 'true',\n        },\n        {\n            name: 'hide_remove',\n            value: 'true',\n        },\n    ],\n    tt3ServiceAndDevMode: Ember.computed('Ember.devModeOn', function () {\n        if (Ember.get(Ember, 'devModeOn') && collector.get('tt3flag')) {\n            return true;\n        }\n    }),\n    actions: {\n        saveFields: function () {\n            this.set('state', 'saving');\n            return this.saveDirtyForm().then(() => {\n                return this.saveDirtyRecords('filteredFields')\n                    .then(() => {\n                        return this.saveDirtyRecords('filteredFormSettings').then(() => {\n                            return this.saveDirtyRecords('filteredFieldSettings').then(() => {\n                                this.get('settingsController').refreshNeeded();\n                                return this.get('modelCreator')\n                                    .createEmberModels()\n                                    .then(() => {\n                                        return this.set('state', 'clean');\n                                    });\n                            });\n                        });\n                    })\n                    .catch((reason) => {\n                        this.set('state', null);\n                        return this.get('error').notify(reason);\n                    });\n            });\n        },\n        addField: function () {\n            var external_type, field, nro;\n            nro = this.get('filteredFields.lastObject.nro');\n            if (!nro) {\n                nro = 1;\n            }\n            external_type = 'addon_' + Math.floor(Math.random() * 10000 + 1);\n            field = this.store.createRecord('form-field', {\n                form: this.get('model.form'),\n                nro: ++nro,\n                type: 'textbox',\n                external_type: external_type,\n            });\n            return this.transitionToRoute('settings.forms.form.field', external_type);\n        },\n        toggleShowFormInfo: function () {\n            this.set('showFormInfo', !this.get('showFormInfo'));\n            return false;\n        },\n        removeField: function (field) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('form.editor.remove_field'))\n                .then((con) => {\n                    if (con) {\n                        return field.destroyRecord().then(() => {\n                            this.get('store').unloadRecord(field);\n                            return this.transitionToRoute(\n                                'settings.forms.form',\n                                this.get('model.form.id'),\n                            );\n                        });\n                    }\n                });\n        },\n        addSetting: function (option) {\n            var values;\n            this.set('clearAddSetting', true);\n            if (option === 'custom') {\n                values = {};\n            } else {\n                values = this.get('formSettingOptions').findBy('name', option);\n            }\n            values.form = this.get('model.form');\n            return this.store.createRecord('form-setting', values);\n        },\n        reorderFields: function (itemModels, draggedModel) {\n            var i;\n            i = 1;\n            return itemModels.forEach(function (item) {\n                if (item.get('nro') > i) {\n                    // don't edit nro's when its not needed\n                    i = item.get('nro');\n                }\n                item.set('nro', i);\n                return i++;\n            });\n        },\n        //@set(\"model.fields\", itemModels.sortBy('nro'))\n        saveCCFunction: function () {\n            this.set('showCCSave', false);\n            return this.get('Collector').ttapi({\n                url: 'ccfunctions/functions',\n                method: 'post',\n                data: {\n                    form: this.get('model.form.external_type'),\n                    function: this.get('ccfunctionvalue'),\n                },\n            });\n        },\n        toggleSave: function () {\n            return this.set('showCCSave', true);\n        },\n        addCCFunctions: function () {\n            return this.get('store')\n                .createRecord('form-setting', {\n                    name: 'assigned_function',\n                    value: 'ccfunctions',\n                    form: this.get('model.form'),\n                })\n                .save();\n        },\n    },\n});\n\nexport default SettingsFormsFormController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/forms/form/field/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsFormsFormFieldController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport { t } from 'ember-intl';\n\nimport { isPresent } from '@ember/utils';\n\nSettingsFormsFormFieldController = Ember.Controller.extend({\n    formController: Em.inject.controller('settings.forms.form'),\n    formsController: Ember.inject.controller('settings.forms'),\n    tools: Ember.inject.service(),\n    intl: Em.inject.service(),\n    adminMode: Ember.computed.alias('formsController.adminMode'),\n    fieldTypes: Em.computed('intl', 'adminMode', function () {\n        var types;\n        types = [\n            {\n                id: 'textbox',\n                name: this.get('intl').t('field.type.textbox'),\n            },\n            {\n                id: 'textarea_varchar',\n                name: this.get('intl').t('field.type.textarea_varchar'),\n            },\n            {\n                id: 'number',\n                name: this.get('intl').t('field.type.number'),\n            },\n            {\n                id: 'date',\n                name: this.get('intl').t('field.type.date'),\n            },\n            {\n                //{id: \"dropdown_options\", name: @get('intl').t(\"field.type.dropdown_options\")}\n                id: 'dropdown_values',\n                name: this.get('intl').t('field.type.dropdown_values'),\n            },\n            {\n                id: 'hours',\n                name: this.get('intl').t('field.type.hours'),\n            },\n            {\n                //{id: \"price\", name: @get('intl').t(\"field.type.price\")}\n                //{id: \"big_price\", name: @get('intl').t(\"field.type.big_price\")}\n                id: 'decimal',\n                name: this.get('intl').t('field.type.decimal'),\n            },\n            {\n                id: 'checkbox',\n                name: this.get('intl').t('field.type.checkbox'),\n            },\n            {\n                id: 'hdfile',\n                name: this.get('intl').t('field.type.hdfile'),\n            },\n            {\n                id: 'signature',\n                name: this.get('intl').t('field.type.signature'),\n            },\n            {\n                id: 'checkboxgroup',\n                name: this.get('intl').t('field.type.checkboxgroup'),\n            },\n            {\n                id: 'weather',\n                name: this.get('intl').t('field.type.weather'),\n            },\n        ];\n        if (this.get('adminMode')) {\n            types.push({\n                id: 'database',\n                name: this.get('intl').t('field.type.database'),\n            });\n            types.push({\n                id: 'timerlink',\n                name: this.get('intl').t('field.type.timerlink'),\n            });\n            types.push({\n                id: 'datetime',\n                name: this.get('intl').t('field.type.datetime'),\n            });\n            types.push({\n                id: 'status',\n                name: this.get('intl').t('field.type.status'),\n            });\n            types.push({\n                id: 'databasearray',\n                name: this.get('intl').t('field.type.databasearray'),\n            });\n            types.push({\n                id: 'multiselect',\n                name: this.get('intl').t('field.type.multiselect'),\n            });\n            types.push({\n                id: 'time_new',\n                name: this.get('intl').t('field.type.time_new'),\n            });\n        }\n        return types;\n    }),\n    fieldSelectorFields: ['database', 'databasearray', 'timerlink', 'multiselect'],\n    field: Ember.computed.alias('model.field'),\n    filteredSettings: Em.computed('model.settings.[]', function () {\n        return this.get('model.settings').filterBy('field.id', this.get('model.field.id'));\n    }),\n    nameDisabled: Ember.computed('model.field', function () {\n        if (this.get('adminMode')) {\n            return false;\n        }\n        return (\n            this.get('model.field.name') &&\n            this.get('model.field.name').substring(0, 5) === '$lang' &&\n            this.get('model.field.name') !== '$lang(10)'\n        );\n    }),\n    showRawOptions: Ember.computed('model.field', function () {\n        var dropdowns, field, ref;\n        field = this.get('field');\n        dropdowns = [\n            'dropdown_values',\n            'dropdown_userlevel',\n            'dropdown_options',\n            'dropdown_language',\n            'checkboxgroup',\n        ];\n        if (!this.get('adminMode')) {\n            return false;\n        }\n        if (((ref = field.get('type')), indexOf.call(dropdowns, ref) >= 0)) {\n            return true;\n        }\n    }),\n    /*\n  typeObserver: Em.observer('field.type', ->\n      type = @get('field.type')\n      if (type == 'dropdown_options' || type == 'checkboxgroup') and !@get('field.options')\n          @set('field.options', \"\")\n      else if type == 'hdfile'\n              @set('field.hdfile', true)\n          else\n              @set('field.hdfile', false)\n  )\n\n  */\n    options: Em.computed('field.options', {\n        set: function (key, value) {\n            return (this._value = value);\n        },\n        get: function () {\n            var EmberOptions,\n                dropdowns,\n                field,\n                fieldString,\n                formatOption,\n                i,\n                len,\n                name,\n                option,\n                options,\n                ref,\n                splitOption;\n            if (this._value) {\n                return this._value;\n            }\n            field = this.get('field');\n            dropdowns = [\n                'dropdown_values',\n                'dropdown_userlevel',\n                'dropdown_options',\n                'dropdown_language',\n                'checkboxgroup',\n            ];\n            if (((ref = field.get('type')), indexOf.call(dropdowns, ref) < 0)) {\n                return;\n            }\n            fieldString = field.get('form.external_type') + '.' + field.get('external_type');\n            if (field.get('options') === void 0) {\n                field.set('options', '');\n            }\n            options = field.get('options').split('\\n');\n            EmberOptions = Em.A([]);\n            for (i = 0, len = options.length; i < len; i++) {\n                option = options[i];\n                if (field.get('type') === 'dropdown_options') {\n                    EmberOptions.pushObject(option);\n                } else {\n                    splitOption = option.split(';');\n                    formatOption = {\n                        id: splitOption[0],\n                    };\n                    if (field.get('own') || isPresent(splitOption[1])) {\n                        formatOption.name = splitOption[1];\n                    } else {\n                        name = this.get('intl').t(fieldString + '.' + splitOption[0]);\n                        formatOption.name = name;\n                    }\n                    EmberOptions.pushObject(formatOption);\n                }\n            }\n            return EmberOptions;\n        },\n    }),\n    settableSettings: Ember.computed(\n        'field.type',\n        'filteredSettings.[]',\n        'filteredSettings.@each.isDeleted',\n        function () {\n            var settableSettings;\n            settableSettings = ['mandatory', 'stashed'];\n            if (['checkbox', 'checkboxgroup'].includes(this.get('field.type'))) {\n                settableSettings.splice(settableSettings.indexOf('mandatory'), 1);\n            }\n            if (this.get('field.type') === 'hdfile') {\n                settableSettings.push('is_image');\n            }\n            return (settableSettings = settableSettings.map((settingName) => {\n                var settingRecord;\n                settingRecord = this.get('filteredSettings').find((record) => {\n                    return (\n                        record.get('name') === settingName &&\n                        record.get('value') === 'true' &&\n                        Ember.isEmpty(record.get('userlevel')) &&\n                        Ember.isEmpty(record.get('conditions'))\n                    );\n                });\n                return {\n                    name: settingName,\n                    on: settingRecord != null && !settingRecord.get('isDeleted'),\n                    record: settingRecord,\n                };\n            }));\n        },\n    ),\n    mandatory: Em.computed.alias('field.mandatory'),\n    stashed: Em.computed.alias('field.stashed'),\n    hdfile: Em.computed.alias('field.hdfile'),\n    disabled: Em.computed.alias('field.isEditable'),\n    dirtySettings: Em.A([]),\n    hasDirtySettings: Em.computed.notEmpty('dirtySettings'),\n    forms: Ember.computed(function () {\n        return this.store.peekAll('form');\n    }),\n    databaseFieldSelections: Em.computed('field.id', 'selectedForm', function () {\n        var allObjects, firstObject, firstOption, formExternal_type, options, typesWhitelist;\n        if (this.get('selectedForm')) {\n            formExternal_type = this.get('selectedForm');\n        } else {\n            if (Ember.isEmpty(this.get('field.options'))) {\n                return [];\n            }\n            options = this.get('field.options').split('\\n');\n            firstOption = options[0];\n            if (!firstOption) {\n                return Em.A([]);\n            }\n            firstObject = this.store.peekRecord('form-field', firstOption);\n            if (!firstObject) {\n                return [];\n            }\n            formExternal_type = firstObject.get('form.external_type');\n        }\n        typesWhitelist = [\n            'textbox',\n            'number',\n            'dropdown_options',\n            'dropdown_values',\n            'hdfile',\n            'datetime',\n            'hours',\n        ];\n        if (this.get('field.type') === 'databasearray') {\n            typesWhitelist.push('database');\n        }\n        allObjects = this.store.peekAll('form-field').filter(function (item) {\n            var ref;\n            return (\n                item.get('form.external_type') === formExternal_type &&\n                !item.get('features.hide') &&\n                ((ref = item.get('type')), indexOf.call(typesWhitelist, ref) >= 0)\n            );\n        });\n        return allObjects.map((item) => {\n            var name;\n            if (item.get('name') === '$lang(10)') {\n                name = this.get('intl').t(formExternal_type + '.' + item.get('external_type'));\n                if (name.string != null) {\n                    name = name.string;\n                }\n            } else {\n                name = item.get('name');\n            }\n            return Ember.Object.create({\n                id: item.get('id'),\n                name: name.substring(0, 30),\n            });\n        });\n    }),\n    databaseFieldSelectionValues: null,\n    observeDatabaseFieldSelectionValues: Em.observer('databaseFieldSelectionValues', function () {\n        var options, ref;\n        if (!this.get('fieldSelectorFields').includes(this.get('field.type'))) {\n            return;\n        }\n        options = this.get('databaseFieldSelectionValues');\n        if (options.length > 0) {\n            return this.set('field.options', options.join('\\n'));\n        }\n    }),\n    initDatabaseFieldSelectionValues: Em.observer('field.id', function () {\n        if (!this.get('field.options')) {\n            return;\n        }\n        return this.set(\n            'databaseFieldSelectionValues',\n            this.get('field.options')\n                .split('\\n')\n                .map(function (item) {\n                    return item.trim();\n                }),\n        );\n    }),\n    formFieldSettingOptions: [\n        {\n            name: 'mandatory',\n            value: 'true',\n        },\n        {\n            name: 'hide_column',\n            value: 'true',\n        },\n        {\n            name: 'hide',\n            value: 'true',\n        },\n        {\n            name: 'validate_check',\n        },\n        {\n            name: 'hide_filter',\n            value: 'true',\n        },\n        {\n            name: 'filter',\n            value: '$userProfile->primary_key',\n        },\n        {\n            name: 'set',\n            value: '$userProfile->primary_key',\n        },\n        {\n            name: 'disabled',\n            value: 'true',\n        },\n        {\n            name: 'default_value',\n        },\n    ],\n    selectedWorktimegroups: Em.computed(\n        'field.type',\n        'filteredSettings.@each.condition',\n        'filteredSettings.@each.isDeleted',\n        function () {\n            var groups;\n            groups = [];\n            this.filteredSettings.forEach((setting) => {\n                if (\n                    setting.name === 'hide' &&\n                    setting.condition &&\n                    setting.condition.includes('worktimegroup') &&\n                    !setting.isDeleted\n                ) {\n                    return groups.push(\n                        this.worktimegroups.findBy('id', setting.condition.split('==')[1]),\n                    );\n                }\n            });\n            return groups;\n        },\n    ),\n    actions: {\n        saveSettings: function () {\n            return this.get('dirtySettings').forEach(function (setting) {\n                if (setting.get('value') === 'false') {\n                    return setting.destroyRecord();\n                } else {\n                    return setting.save();\n                }\n            });\n        },\n        turnOnSetting: function (setting) {\n            var record;\n            record = Ember.get(setting, 'record');\n            if (Ember.isEmpty(record)) {\n                return this.store.createRecord('form-field-setting', {\n                    field: this.get('model.field'),\n                    name: Ember.get(setting, 'name'),\n                    value: 'true',\n                });\n            } else if (record.get('isDeleted')) {\n                return record.rollbackAttributes();\n            }\n        },\n        turnOffSetting: function (setting) {\n            var record;\n            record = Ember.get(setting, 'record');\n            if (!record || record.get('isDeleted')) {\n                return;\n            }\n            return Ember.get(setting, 'record').deleteRecord();\n        },\n        addSetting: function (option) {\n            var values;\n            this.set('clearAddSetting', true);\n            if (option === 'custom') {\n                values = {};\n            } else {\n                values = this.get('formFieldSettingOptions').findBy('name', option);\n            }\n            values.field = this.get('model.field');\n            return this.store.createRecord('form-field-setting', values);\n        },\n        saveMandatorySetting: function (value) {\n            var mandatorySetting, model;\n            mandatorySetting = null;\n            model = this.store\n                .peekAll('form-field-setting')\n                .filterBy('field.id', this.get('field.id'));\n            model.forEach(function (setting) {\n                if (setting.get('name') === 'mandatory') {\n                    return (mandatorySetting = setting);\n                }\n            });\n            if (value === false && mandatorySetting) {\n                mandatorySetting.destroyRecord();\n            }\n            if (!mandatorySetting) {\n                mandatorySetting = this.store.createRecord('form-field-setting', {\n                    field: this.get('field'),\n                    name: 'mandatory',\n                });\n            }\n            if (value === true) {\n                mandatorySetting.set('value', true);\n                mandatorySetting.save();\n            }\n            this.set('mandatory', value);\n            return this.send('refreshModel');\n        },\n        refreshModel: function () {\n            return this.set(\n                'model.settings',\n                this.store.peekAll('form-field-setting').filterBy('field.id', this.get('field.id')),\n            );\n        },\n        saveFieldName: function () {\n            var field;\n            if (this.get('field.name') === (field = this.get('field'))) {\n                return;\n            }\n            if (\n                field.get('name') === this.get('fieldName') ||\n                field.get('translatedName.string') === this.get('fieldName')\n            ) {\n                return;\n            }\n            if (field.get('isNew')) {\n                field.set(\n                    'external_type',\n                    (this.get('adminMode') ? '' : 'addon_') +\n                        this.get('tools').computerizeHumanInput(this.get('fieldName')),\n                );\n            }\n            return field.set('name', this.get('fieldName'));\n        },\n        saveOptions: function (options) {\n            var field, i, len, option, optionsString;\n            optionsString = '';\n            field = this.get('field');\n            for (i = 0, len = options.length; i < len; i++) {\n                option = options[i];\n                if (field.get('type') === 'dropdown_options') {\n                    optionsString += option + '\\n';\n                } else {\n                    if (!option.name || !option.id) {\n                        return;\n                    }\n                    optionsString += option.id + ';' + option.name + '\\n';\n                }\n            }\n            if (optionsString !== '') {\n                optionsString = optionsString.slice(0, -1);\n            }\n            return field.set('options', optionsString);\n        },\n        //get('formController').saveField(field)\n        hideForWorktimegroup: function (groups) {\n            groups.forEach((group) => {\n                var condition;\n                if (!this.selectedWorktimegroups.isAny('id', group.id)) {\n                    condition = '$userProfile->worktimegroup==' + group.id;\n                    this.createSetting('hide', condition, '!5');\n                    this.createSetting('disabled', condition, '!5');\n                    return this.createSetting('hide_column', condition, '!5');\n                }\n            });\n            return this.selectedWorktimegroups.forEach((group) => {\n                var condition, records;\n                if (!groups.isAny('id', group.id)) {\n                    condition = '$userProfile->worktimegroup==' + group.id;\n                    records = this.filteredSettings.map((record) => {\n                        if (record.condition === condition) {\n                            return record;\n                        }\n                    });\n                    return records.forEach((record) => {\n                        if (record && !record.isDeleted) {\n                            return record.deleteRecord();\n                        }\n                    });\n                }\n            });\n        },\n    },\n    createSetting: function (name, condition, userlevel) {\n        return this.store.createRecord('form-field-setting', {\n            field: this.get('model.field'),\n            name: name,\n            condition: condition,\n            userlevel: userlevel,\n            value: 'true',\n        });\n    },\n});\n\nexport default SettingsFormsFormFieldController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/forms/form/field/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsFormsFormFieldRoute;\n\nimport Ember from 'ember';\n\nimport ResetScrollMixin from '../../../../../mixins/reset-scroll';\n\nSettingsFormsFormFieldRoute = Ember.Route.extend(ResetScrollMixin, {\n    model: function (params) {\n        var field, form, worktimegroups;\n        form = this.modelFor('settings.forms.form').form;\n        field = this.store\n            .peekAll('form-field')\n            .filterBy('external_type', params.field)\n            .filterBy('form.id', form.id);\n        if (this.Collector.testNeedsOne('products.worktimegroup')) {\n            worktimegroups = this.store.findAll('worktimegroup');\n        }\n        return new Ember.RSVP.hash({\n            settings: this.store.peekAll('form-field-setting'),\n            field: Ember.get(field, 'firstObject'),\n            worktimegroups: worktimegroups ? worktimegroups : null,\n        });\n    },\n    setupController: function (controller, model) {\n        var firstObject, firstOption, groups, options;\n        this._super(controller, model);\n        if (!Ember.get(model, 'field')) {\n            this.transitionTo('settings.forms');\n        }\n        controller.set('fieldName', Ember.get(model, 'field.translatedName'));\n        if (controller.get('fieldSelectorFields').includes(Ember.get(model, 'field.type'))) {\n            if (Ember.isEmpty(Ember.get(model, 'field.options'))) {\n                controller.set('selectedForm', null);\n            } else {\n                options = Ember.get(model, 'field.options').split('\\n');\n                firstOption = options[0];\n                firstObject = this.store.peekRecord('form-field', firstOption);\n                if (firstObject) {\n                    controller.set('selectedForm', firstObject.get('form.external_type'));\n                }\n            }\n        }\n        if (model.worktimegroups) {\n            groups = [];\n            model.worktimegroups.forEach((group) => {\n                return groups.push({\n                    id: group.id,\n                    text: group.name,\n                });\n            });\n            return controller.set('worktimegroups', groups);\n        }\n    },\n});\n\nexport default SettingsFormsFormFieldRoute;\n","export default Ember.HTMLBars.template({\"id\":\"DlvuedfS\",\"block\":\"{\\\"symbols\\\":[\\\"opt\\\",\\\"worktimegroup\\\",\\\"setting\\\",\\\"form\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Admin info\\\"],[9],[0,\\\"\\\\n        id: \\\"],[1,[24,[\\\"field\\\",\\\"id\\\"]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        nro: \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\"],[[24,[\\\"field\\\",\\\"nro\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        external_type: \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\"],[[24,[\\\"field\\\",\\\"external_type\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        name: \\\"],[1,[24,[\\\"field\\\",\\\"name\\\"]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[4,\\\"if\\\",[[24,[\\\"field\\\",\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"options: \\\"],[1,[24,[\\\"field\\\",\\\"options\\\"]],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.field_name\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"key-up\\\",\\\"disabled\\\"],[\\\"text\\\",[24,[\\\"fieldName\\\"]],\\\"form-control\\\",[28,\\\"action\\\",[[23,0,[]],\\\"saveFieldName\\\"],null],[24,[\\\"nameDisabled\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"field\\\",\\\"type\\\"]],\\\"number\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[1,[28,\\\"t\\\",[\\\"report.materialtype.unit\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\"],[[24,[\\\"field\\\",\\\"options\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.field_type\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"$-or\\\",[[24,[\\\"field\\\",\\\"isNew\\\"]],[24,[\\\"adminMode\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"value\\\",\\\"options\\\",\\\"disabled\\\"],[[24,[\\\"field\\\",\\\"type\\\"]],[24,[\\\"fieldTypes\\\"]],[28,\\\"if\\\",[[24,[\\\"field\\\",\\\"isNew\\\"]],false,true],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label label-default\\\"],[8],[1,[24,[\\\"field\\\",\\\"translatedType\\\"]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"field\\\",\\\"type\\\"]],\\\"dropdown_values\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.field_options\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"object-input\\\",null,[[\\\"objects\\\",\\\"save\\\",\\\"disabled\\\",\\\"addText\\\",\\\"saveText\\\"],[[24,[\\\"options\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveOptions\\\"],null],[28,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"field\\\",\\\"own\\\"]],[24,[\\\"adminMode\\\"]]],null],false,true],null],[28,\\\"t\\\",[\\\"form.editor.add_option\\\"],null],[28,\\\"t\\\",[\\\"form.editor.save_options\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"field\\\",\\\"type\\\"]],\\\"dropdown_options\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.field_options\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"array-input2\\\",null,[[\\\"objects\\\",\\\"disabled\\\",\\\"save\\\",\\\"addText\\\",\\\"saveText\\\"],[[24,[\\\"options\\\"]],[28,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"field\\\",\\\"own\\\"]],[24,[\\\"adminMode\\\"]]],null],false,true],null],[28,\\\"action\\\",[[23,0,[]],\\\"saveOptions\\\"],null],[28,\\\"t\\\",[\\\"form.editor.add_option\\\"],null],[28,\\\"t\\\",[\\\"form.editor.save_options\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRawOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control add-fields\\\",[28,\\\"mut\\\",[[24,[\\\"field\\\",\\\"options\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"field\\\",\\\"type\\\"]],\\\"checkboxgroup\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.field_options\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"object-input\\\",null,[[\\\"objects\\\",\\\"save\\\",\\\"disabled\\\",\\\"addText\\\",\\\"saveText\\\"],[[24,[\\\"options\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveOptions\\\"],null],[28,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"field\\\",\\\"own\\\"]],[24,[\\\"adminMode\\\"]]],null],false,true],null],[28,\\\"t\\\",[\\\"form.editor.add_option\\\"],null],[28,\\\"t\\\",[\\\"form.editor.save_options\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"field\\\",\\\"type\\\"]],\\\"status\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.field_options\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"value\\\"],[[24,[\\\"field\\\",\\\"options\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[[24,[\\\"field\\\",\\\"type\\\"]],[24,[\\\"fieldSelectorFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.show_fields\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"selectedForm\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[8],[0,\\\"...\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"forms\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,4,[\\\"external_type\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[24,[\\\"selectedForm\\\"]],[23,4,[\\\"external_type\\\"]]],null]],[8],[1,[23,4,[\\\"translatedName\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[1,[28,\\\"multi-buttons\\\",null,[[\\\"values\\\",\\\"content\\\",\\\"orderable\\\"],[[24,[\\\"databaseFieldSelectionValues\\\"]],[24,[\\\"databaseFieldSelections\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"$-or\\\",[[24,[\\\"field\\\",\\\"own\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"settableSettings\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"setting.type.\\\",[23,3,[\\\"name\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group btn-group-justified\\\"],[10,\\\"role\\\",\\\"group\\\"],[10,\\\"aria-label\\\",\\\"...\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[10,\\\"role\\\",\\\"group\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[23,3,[\\\"on\\\"]],\\\"btn-m-link\\\",\\\"btn-m-default\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"disabled\\\"]],\\\"disabled\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"turnOnSetting\\\",[23,3,[]]]],[8],[1,[28,\\\"t\\\",[\\\"general.yes\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[10,\\\"role\\\",\\\"group\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[23,3,[\\\"on\\\"]],\\\"btn-m-default\\\",\\\"btn-m-action\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"disabled\\\"]],\\\"disabled\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"turnOffSetting\\\",[23,3,[]]]],[8],[1,[28,\\\"t\\\",[\\\"general.no\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.worktimegroup\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.hide_for_worktimegroups\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@options\\\",\\\"@selected\\\",\\\"@placeholder\\\",\\\"@onChange\\\"],[[22,\\\"worktimegroups\\\"],[22,\\\"selectedWorktimegroups\\\"],[28,\\\"t\\\",[\\\"general.select.worktimegroup\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"hideForWorktimegroup\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[23,2,[\\\"text\\\"]],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"field\\\",\\\"type\\\"]],\\\"date\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"field\\\",\\\"isNew\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"setting.alarm\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"alarm-setter\\\",null,[[\\\"form\\\",\\\"field\\\"],[[24,[\\\"field\\\",\\\"form\\\",\\\"external_type\\\"]],[24,[\\\"field\\\",\\\"external_type\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"All settings\\\"],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"formeditor-rawsettings\\\",null,[[\\\"settings\\\"],[[24,[\\\"filteredSettings\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        Add \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"addSetting\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[11,\\\"selected\\\",[22,\\\"clearAddSetting\\\"]],[8],[0,\\\"...\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"formFieldSettingOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,1,[\\\"name\\\"]]],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"custom\\\"],[8],[0,\\\"Custom\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/forms/form/field/template.hbs\"}});","import Controller from '@ember/controller';\nimport { filterBy, alias } from '@ember/object/computed';\nimport { set, get } from '@ember/object';\nimport { inject as controller } from '@ember/controller';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    formsController: controller('settings.forms'),\n    dialogs: service(),\n    intl: service(),\n    removedField: alias('model'),\n    adminMode: alias('formsController.adminMode'),\n    fields: filterBy('model', 'removed', true),\n    productFields: filterBy('fields', 'editable', true),\n    customerFields: filterBy('fields', 'editable', false),\n    actions: {\n        restoreField(field, markNotEditable = false) {\n            get(this, 'dialogs')\n                .confirm(get(this, 'intl').t('form.editor.removed.confirm'))\n                .then((con) => this._restore(con, field, markNotEditable));\n        },\n    },\n\n    _restore(con, field, markNotEditable) {\n        if (con) {\n            if (markNotEditable) {\n                set(field, 'editable', 0);\n            }\n            set(field, 'removed', 0);\n        }\n    },\n});\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport resetScroll from 'tt4/mixins/reset-scroll';\n\nexport default Route.extend(resetScroll, {\n    store: service(),\n    model() {\n        const form = get(this.modelFor('settings.forms.form'), 'form.external_type');\n        return get(this, 'store').query('form-field', { row_info_removed: true, form: form });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"vaESZMPq\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"field\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.removed.title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customerFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n                  \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"restoreField\\\",[23,2,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-ReuseFilled\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge\\\"],[8],[1,[23,2,[\\\"translatedType\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"name\\\"]],\\\"$lang(10)\\\"],null]],null,{\\\"statements\\\":[[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"removed\\\"],[[23,2,[\\\"external_type\\\"]],[23,2,[\\\"form\\\",\\\"external_type\\\"]],true]]],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[23,2,[\\\"name\\\"]],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[7,\\\"i\\\",true],[8],[0,\\\"(\\\"],[1,[23,2,[\\\"external_type\\\"]],false],[0,\\\")\\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"form.editor.editable_fields_warning\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"productFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n                      \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"restoreField\\\",[23,1,[]],true]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-ReuseFilled\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge\\\"],[8],[1,[23,1,[\\\"translatedType\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"$lang(10)\\\"],null]],null,{\\\"statements\\\":[[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"removed\\\"],[[23,1,[\\\"external_type\\\"]],[23,1,[\\\"form\\\",\\\"external_type\\\"]],true]]],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[23,1,[\\\"name\\\"]],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[7,\\\"i\\\",true],[8],[0,\\\"(\\\"],[1,[23,1,[\\\"external_type\\\"]],false],[0,\\\")\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/forms/form/removed-fields/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/forms/form/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsFormsFormRoute;\n\nimport Ember from 'ember';\n\nSettingsFormsFormRoute = Ember.Route.extend({\n    intl: Ember.inject.service(),\n    model: function (params) {\n        return new Ember.RSVP.hash({\n            form: this.store.peekRecord('form', params.form),\n            settings: this.store.peekAll('form-setting'),\n            fields: this.store.peekAll('form-field'),\n            fieldSettings: this.store.peekAll('form-field-setting'),\n        });\n    },\n    actions: {\n        willTransition: function (transition) {\n            if (transition.targetName.substring(0, 14) === 'settings.forms') {\n                return;\n            }\n            if (this.get('controller.unsavedChanges')) {\n                if (!confirm(this.get('intl').t('settings.forms.move'))) {\n                    transition.abort();\n                }\n            }\n            return true;\n        },\n    },\n});\n\nexport default SettingsFormsFormRoute;\n","export default Ember.HTMLBars.template({\"id\":\"R70cC9f+\",\"block\":\"{\\\"symbols\\\":[\\\"group\\\",\\\"modelItem\\\",\\\"opt\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"link-to\\\",[[12,\\\"class\\\",\\\"btn btn-default\\\"]],[[\\\"@route\\\",\\\"@model\\\"],[\\\"forms.form-report\\\",[24,[\\\"model\\\",\\\"form\\\",\\\"external_type\\\"]]]],{\\\"statements\\\":[[0,\\\"Show report\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[5,\\\"link-to\\\",[[12,\\\"class\\\",\\\"btn btn-default\\\"]],[[\\\"@route\\\",\\\"@model\\\"],[\\\"forms.form-add\\\",[24,[\\\"model\\\",\\\"form\\\",\\\"external_type\\\"]]]],{\\\"statements\\\":[[0,\\\"Add row\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[\\\"text-report-muted \\\",[28,\\\"if\\\",[[24,[\\\"showFormInfo\\\"]],\\\"move move-SortUp\\\",\\\"move move-SortDown\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"toggleShowFormInfo\\\"]],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showFormInfo\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                id: \\\"],[1,[24,[\\\"model\\\",\\\"form\\\",\\\"id\\\"]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                name: \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\"],[[24,[\\\"model\\\",\\\"form\\\",\\\"name\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                external_type: \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\"],[[24,[\\\"model\\\",\\\"form\\\",\\\"external_type\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n                \\\"],[1,[28,\\\"formeditor-rawsettings\\\",null,[[\\\"settings\\\"],[[24,[\\\"filteredFormSettings\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasCCFunction\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"style\\\",\\\"display: inline-block; margin-left: 40px\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"ccfunctionload\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Write your CC function here\\\"],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"value\\\",\\\"cols\\\",\\\"rows\\\",\\\"key-up\\\"],[[24,[\\\"ccfunctionvalue\\\"]],\\\"50\\\",\\\"6\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggleSave\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showCCSave\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"style\\\",\\\"margin-bottom: 25px;\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveCCFunction\\\"]],[8],[0,\\\"Save CC function\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"style\\\",\\\"margin-bottom: 25px;\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addCCFunctions\\\"]],[8],[0,\\\"Enable CC functions for this form\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                Add \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"addSetting\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[11,\\\"selected\\\",[22,\\\"clearAddSetting\\\"]],[8],[0,\\\"...\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"formSettingOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,3,[\\\"name\\\"]]],[8],[1,[23,3,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"custom\\\"],[8],[0,\\\"Custom\\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"webhook-list\\\",null,[[\\\"form\\\"],[[24,[\\\"model\\\",\\\"form\\\",\\\"external_type\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6 form-editor-div\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"sortable-group\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"model\\\",\\\"onChange\\\"],[\\\"ul\\\",\\\"list-group\\\",[24,[\\\"filteredFields\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"reorderFields\\\"],null]]],{\\\"statements\\\":[[4,\\\"each\\\",[[23,1,[\\\"model\\\"]]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"item\\\"]],\\\"expected `group.item` to be a contextual component but found a string. Did you mean `(component group.item)`? ('tt4/pods/settings/forms/form/template.hbs' @ L54:C19) \\\"],null]],[[\\\"model\\\",\\\"tagName\\\",\\\"class\\\"],[[23,2,[]],\\\"li\\\",[28,\\\"concat\\\",[\\\"list-group-item form-editor-field \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[]],[24,[\\\"selectedField\\\"]]],null],\\\"active \\\"],null],[28,\\\"if\\\",[[23,2,[\\\"hasDirtyAttributes\\\"]],\\\"dirty\\\"],null]],null]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n                        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-xs btn-default\\\",\\\"settings.forms.form.field\\\",[23,2,[\\\"external_type\\\"]]]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"$-or\\\",[[23,2,[\\\"own\\\"]],[24,[\\\"adminMode\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeField\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Delete\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge\\\"],[8],[1,[23,2,[\\\"translatedType\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge red\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[1,[23,2,[\\\"translatedName\\\"]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"type\\\"]],\\\"database\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        (\\\"],[1,[28,\\\"databasefield-options\\\",[[23,2,[\\\"options\\\"]]],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\" - \\\"],[7,\\\"i\\\",true],[8],[0,\\\"(\\\"],[1,[23,2,[\\\"external_type\\\"]],false],[0,\\\")\\\"],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"button\\\",\\\"btn btn-warning\\\",\\\"settings.forms.form.removed-fields\\\"]],{\\\"statements\\\":[[0,\\\"Show removed fields\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"$-or\\\",[[28,\\\"needs\\\",[\\\"products\\\"],null],[24,[\\\"tt3ServiceAndDevMode\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addField\\\"]],[8],[1,[28,\\\"t\\\",[\\\"forms.editor.add_field\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"unsavedChanges\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"pull-right btn btn-primary btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveFields\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\" \\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"state\\\"]],\\\"saving\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/forms/form/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/forms/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsFormsRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSettingsFormsRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    Collector: Em.inject.service('collector-service'),\n    session: Em.inject.service(),\n    beforeModel: function (transition) {\n        if (this.get('Collector').testNeedsOne('products.mini_entry')) {\n            transition.abort();\n            return this.transitionTo('dashboard');\n        }\n    },\n    model: function () {\n        return this.store.findAll('form');\n    },\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting) {\n            return controller.set('form_id', void 0);\n        }\n    },\n});\n\nexport default SettingsFormsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"7lLT9miJ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showAdminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-1\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"class\\\"],[\\\"checkbox\\\",[24,[\\\"adminMode\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-11\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Admin mode\\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"prompt\\\",\\\"bubbleChange\\\"],[[24,[\\\"dropdown_options\\\"]],[24,[\\\"form_id\\\"]],[28,\\\"t\\\",[\\\"select.form\\\"],null],\\\"formChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"createForm\\\"]],[8],[0,\\\"Create form\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"form_id\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"tt3Service\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeForm\\\"]],[8],[1,[28,\\\"t\\\",[\\\"settings.forms.remove\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"exportForm\\\"]],[8],[0,\\\"Export form\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"input\\\",true],[10,\\\"class\\\",\\\"hide\\\"],[10,\\\"id\\\",\\\"importFormFileInput\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"upload\\\"],null]],[11,\\\"value\\\",[22,\\\"selectedFile\\\"]],[10,\\\"type\\\",\\\"file\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"importForm\\\"]],[8],[0,\\\"Import form\\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"settings/forms/form-activity-log\\\",null,[[\\\"logs\\\"],[[24,[\\\"logs\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/forms/template.hbs\"}});","/* eslint-disable */\n\nimport Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed } from '@ember/object';\nimport { get, set, getProperties } from '@ember/object';\nimport { action } from '@ember/object';\nimport { event } from 'jquery';\n\nexport default Component.extend({\n  store: service(),\n  session: service(),\n  notifications: service(),\n  intl: service(),\n  Collector: service('collector-service'),\n  loading: false,\n  autoPauseOptions: [\"15\", \"30\", \"45\", \"60\"],\n  pause_start_time: null,\n  pause_length: null,\n  min_workday_length: null,\n  min_workday_length_hours: null,\n  min_workday_length_minutes: null,\n  isChanged: computed('pause_start_time', 'pause_length', 'min_workday_length', {\n    get() {\n      let hasChanged = false;\n      const settings = get(this, 'settings');\n      if (settings) {\n        const {\n          pause_start_time: oldPauseStartTime,\n          pause_length: oldPauseLength,\n          min_workday_length: oldMinWorkdayLength,\n        } = settings;\n\n        const {\n          pause_start_time: newPauseStartTime,\n          pause_length: newPauseLength,\n          min_workday_length: newMinWorkdayLength,\n        } = getProperties(this, 'pause_start_time', 'pause_length', 'min_workday_length');\n\n        hasChanged = oldPauseStartTime !== newPauseStartTime ||\n          oldPauseLength !== newPauseLength ||\n          oldMinWorkdayLength !== newMinWorkdayLength;\n      }\n\n      return hasChanged;\n    },\n    set(key, value) {\n      return value;\n    }\n  }),\n  isValueCustom: computed('pause_length', 'autoPauseOptions', function() {\n  // Ensure pause_length is treated as a string for comparison\n  const pauseLengthAsString = `${this.pause_length}`;\n  return !this.autoPauseOptions.includes(pauseLengthAsString);\n  }),\n\n  init() {\n    this._super(...arguments);\n    this.fetchPauseSettings();\n  },\n\n  async fetchPauseSettings() {\n      set(this, 'loading', true);\n      const partnerId = get(this, 'session.currentUser.partnerid');\n      // If worktime group is not set, or is undefined or null, set it to 0 (laravel validation expects numerical value in request)\n      const worktimegroup = get(this, 'worktimegroup') || 0;\n\n\n      get(this, 'Collector').ttapi({\n        url: `api/getPauseSettings?partnerid=${partnerId}&worktimegroup=${worktimegroup}`,\n      }).then((response) => {\n        let settings = response.length > 0 ? response[response.length - 1] : {};\n\n        // Convert all relevant settings to string for consistent comparison\n        settings.pause_length = settings.pause_length?.toString();\n        settings.min_workday_length = settings.min_workday_length?.toString();\n\n        // Set initial settings for comparison\n        set(this, 'settings', settings);\n\n        // Also update current component properties to reflect fetched settings\n        this.setProperties({\n          pause_start_time: settings.pause_start_time,\n          pause_length: settings.pause_length,\n          min_workday_length: settings.min_workday_length || '0',\n          min_workday_length_hours: this.extractHours(settings.min_workday_length),\n          min_workday_length_minutes: this.extractMinutes(settings.min_workday_length)\n        });\n      }).catch((error) => {\n          console.error('Error fetching pause settings:', error);\n          // Handle the error appropriately here\n      }).finally(() => {\n          set(this, 'loading', false);\n          set(this, 'isChanged', false);\n      });\n    },\n\n  extractHours(value) {\n    if (!value) return '0';\n    const hours = Math.floor(parseFloat(value));\n    return hours < 10 ? '0' + hours : hours.toString();\n  },\n\n  extractMinutes(value) {\n    if (!value) return '00';\n    const minutes = Math.round((parseFloat(value) % 1) * 60);\n    return minutes < 10 ? '0' + minutes : minutes.toString();\n  },\n\n  @action\n  changeHours(property, event) {\n    if (event) {\n      let val = parseInt(event, 10);\n\n      if (isNaN(val) || val < 0) val = 0;\n      const value = val;\n      const minutes = this.get(property + '_minutes') || '00';\n      this.set(property, value + (parseInt(minutes) / 60));\n\n      // Update min_workday_length if the property is min_workday_length_hours\n      if (property === 'min_workday_length_hours') {\n        this.set('min_workday_length', this.get('min_workday_length_hours') + (parseInt(this.get('min_workday_length_minutes')) / 60));\n      }\n    }\n  },\n\n  @action\n  changeMinutes(property, event) {\n    if (event) {\n      let val = parseInt(event, 10);\n\n      if (isNaN(val) || val < 0 || val > 59) val = 0;\n      const value = val / 60;\n      const hours = this.get(property + '_hours') || '00';\n      this.set(property, parseInt(hours) + value);\n\n      // Update min_workday_length if the property is min_workday_length_minutes\n      if (property === 'min_workday_length_minutes') {\n        this.set('min_workday_length', (parseInt(this.get('min_workday_length_hours')) + (val / 60)));\n      }\n    }\n  },\n\n@action\nselectAll(event) {\n    const target = event.target;\n    target.select();\n},\n\n  @action\n      async saveSetting() {\n          set(this, 'loading', true);\n          const worktimegroup = get(this, 'worktimegroup') === undefined ? 0 : get(this, 'worktimegroup');\n          const partnerId = this.get('session.currentUser.partnerid');\n\n          const data = {\n          worktimegroup: worktimegroup,\n          pause_start_time: this.pause_start_time,\n          pause_length: parseInt(this.pause_length, 10),\n          min_workday_length: parseFloat(this.min_workday_length)\n          };\n\n          let savePromise = get(this, 'Collector').ttapi({\n              method: \"post\",\n              url: `api/savePauseSettings?partnerid=${partnerId}`,\n              data: data\n          });\n\n          return Ember.RSVP.Promise.all([savePromise]).then(() => {\n            set(this, 'loading', true);\n              if (get(this, 'settingSaved')) {\n                  return this.settingSaved('products.autopause');\n              }\n          }).catch(error => {\n              get(this, 'notifications').error('Failed to save settings. Please try again.');\n              set(this, 'loading', false);\n          }).finally(() => {\n              // Fetch and update pause settings regardless of the result of savePromise\n              this.fetchPauseSettings();\n              get(this, 'isChanged');\n              set(this, 'loading', false);\n          });\n      },\n\n      @action\n      changeValue(option, isCustom) {\n      if (isCustom) {\n          set(this, 'pause_length', option);\n      }\n      set(this, 'isChanged', true);\n      },\n\n      @action\n      validateInput(property, event) {\n          let value = parseInt(event.target.value, 10);\n\n          if (value < 0) {\n              this.set(property, '0');\n          } else {\n              this.set(property, value.toString());\n          }\n      },\n  }\n);\n","export default Ember.HTMLBars.template({\"id\":\"xU2QzZnI\",\"block\":\"{\\\"symbols\\\":[\\\"option\\\",\\\"@disabled\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.timetracker.autopause_info\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs min-workday-length\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.timetracker.autopause_minworktime\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline-flex-row\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"input\\\",[[3,\\\"on\\\",[\\\"focus\\\",[23,0,[\\\"selectAll\\\"]]]]],[[\\\"@type\\\",\\\"@min\\\",\\\"@name\\\",\\\"@class\\\",\\\"@focus-out\\\",\\\"@value\\\",\\\"@disabled\\\"],[\\\"number\\\",\\\"0\\\",\\\"min_workday_length-hours\\\",\\\"form-control\\\",[28,\\\"fn\\\",[[23,0,[\\\"changeHours\\\"]],\\\"min_workday_length\\\"],null],[23,0,[\\\"min_workday_length_hours\\\"]],[23,2,[]]]]],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"time-separator\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"general.hour_abbr\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[5,\\\"input\\\",[[3,\\\"on\\\",[\\\"focus\\\",[23,0,[\\\"selectAll\\\"]]]]],[[\\\"@type\\\",\\\"@min\\\",\\\"@max\\\",\\\"@name\\\",\\\"@class\\\",\\\"@focus-out\\\",\\\"@value\\\",\\\"@disabled\\\"],[\\\"number\\\",\\\"0\\\",\\\"59\\\",\\\"min_workday_length-minutes\\\",\\\"form-control\\\",[28,\\\"fn\\\",[[23,0,[\\\"changeMinutes\\\"]],\\\"min_workday_length\\\"],null],[23,0,[\\\"min_workday_length_minutes\\\"]],[23,2,[]]]]],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"general.min_abbr\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.timetracker.default_pause_help\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"autoPauseOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-inputs-settings\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\",[23,1,[]]],null]],[10,\\\"name\\\",\\\"pause_length\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,0,[\\\"pause_length\\\"]],[23,1,[]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"class\\\",\\\"radio-svg-fill\\\"],[10,\\\"id\\\",\\\"Ellipse_30\\\"],[10,\\\"data-name\\\",\\\"Ellipse 30\\\"],[10,\\\"cx\\\",\\\"3\\\"],[10,\\\"cy\\\",\\\"3\\\"],[10,\\\"r\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(3 3)\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-text\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"wizard.onboarding.timetracker.pause.\\\",[23,1,[]]],null]],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"radio-inputs-settings\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\",null,true]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isValueCustom\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"class\\\",\\\"radio-svg-fill\\\"],[10,\\\"id\\\",\\\"Ellipse_30\\\"],[10,\\\"data-name\\\",\\\"Ellipse 30\\\"],[10,\\\"cx\\\",\\\"3\\\"],[10,\\\"cy\\\",\\\"3\\\"],[10,\\\"r\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(3 3)\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-text-custom\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isValueCustom\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"name\\\",\\\"class\\\",\\\"focus-out\\\"],[[23,0,[\\\"pause_length\\\"]],\\\"pause_length\\\",\\\"form-control add-fields\\\",[28,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"disabled\\\",\\\"class\\\"],[null,false,\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.custom.text_end\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.timetracker.autopause_starttime\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline-flex-row\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"class\\\",\\\"type\\\",\\\"name\\\"],[[23,0,[\\\"pause_start_time\\\"]],\\\"form-control\\\",\\\"time\\\",\\\"pause_start_time\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"disabled\\\",[28,\\\"not\\\",[[24,[\\\"isChanged\\\"]]],null]],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/auto-pause-setting/template.hbs\"}});","import { getProperties, get, set } from '@ember/object';\nimport { isPresent } from '@ember/utils';\nimport Component from '@ember/component';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    intl: service(),\n    Collector: service('collector-service'),\n    notifications: service(),\n    customerSettings: service(),\n    gps: service(),\n    didReceiveAttrs() {\n        set(this, 'address_error', false);\n        const worktimegroup = get(this, 'worktimegroup');\n        let coordsString = null;\n\n        if (isPresent(worktimegroup)) {\n            coordsString = get(this, 'customerSettings').checkSetting(\n                `autokm_address_${worktimegroup}`,\n            );\n        } else {\n            coordsString = get(this, 'customerSettings').checkSetting(`autokm_address`);\n        }\n        if (coordsString) {\n            set(this, 'active', true);\n            const coords = JSON.parse(coordsString);\n\n            if (coords.no_back_forth) {\n                set(this, 'backForthActive', false);\n            } else {\n                set(this, 'backForthActive', true);\n            }\n            set(this, 'loading', true);\n\n            get(this, 'gps')\n                .GetLocationByLatLng({ lat: coords.latitude, lng: coords.longitude })\n                .then((resp) => this._setAddress(resp));\n        }\n    },\n\n    actions: {\n        saveSetting() {\n            set(this, 'loading', true);\n            const full_address = getProperties(this, 'address', 'postal', 'city');\n            const gps = get(this, 'gps');\n            gps.GetFullObjectByAddress(Object.values(full_address).join(' ')).then(\n                (resp) => this._checkAndSave(resp),\n                (resp) => this._showError(resp),\n            );\n        },\n        checkboxChanged() {\n            this.toggleProperty('active');\n            const checked = get(this, 'active');\n            if (!checked) {\n                let settingstr = 'autokm_address';\n                if (isPresent(get(this, 'worktimegroup'))) {\n                    settingstr += `_${get(this, 'worktimegroup')}`;\n                }\n                get(this, 'customerSettings').setSetting(settingstr, 'off');\n                get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n                    autoClear: true,\n                });\n            }\n        },\n        checkboxChangedBackForth() {\n            this.toggleProperty('backForthActive');\n            const checked = get(this, 'backForthActive');\n            var setting = get(this, 'customerSettings').checkSetting('autokm_address');\n            var settingObj = JSON.parse(setting);\n            let settingstr = 'autokm_address';\n            if (isPresent(get(this, 'worktimegroup'))) {\n                settingstr += `_${get(this, 'worktimegroup')}`;\n            }\n            let promise = null;\n            if (!checked) {\n                settingObj.no_back_forth = true;\n                promise = get(this, 'customerSettings').setSetting(\n                    settingstr,\n                    JSON.stringify(settingObj),\n                );\n            } else {\n                delete settingObj.no_back_forth;\n                promise = get(this, 'customerSettings').setSetting(\n                    settingstr,\n                    JSON.stringify(settingObj),\n                );\n            }\n            promise.then(() => {\n                get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n                    autoClear: true,\n                });\n            });\n        },\n    },\n\n    _setAddress(resp) {\n        const split1 = resp.split(', ');\n        const split2 = split1[1].split(' ');\n        set(this, 'address', split1[0]);\n        set(this, 'postal', split2[0]);\n        set(this, 'city', split2[1]);\n        set(this, 'loading', false);\n    },\n\n    _checkAndSave(resp) {\n        let address = resp.formatted_address.split(', ');\n        if (address.length == 2) {\n            this._showError();\n        } else {\n            set(this, 'address_error', false);\n            this._saveSettings({\n                latitude: resp.geometry.location.lat(),\n                longitude: resp.geometry.location.lng(),\n            });\n        }\n    },\n    _saveSettings(resp) {\n        let settingstr = 'autokm_address';\n        if (isPresent(get(this, 'worktimegroup'))) {\n            settingstr += `_${get(this, 'worktimegroup')}`;\n        }\n        if (!get(this, 'backForthActive')) {\n            resp.no_back_forth = true;\n        }\n        get(this, 'customerSettings')\n            .setSetting(settingstr, JSON.stringify(resp))\n            .then(() => this._success());\n    },\n\n    _success() {\n        set(this, 'loading', false);\n        this.settingSaved();\n    },\n    _showError() {\n        set(this, 'loading', false);\n        set(this, 'address_error', true);\n        get(this, 'notifications').error(get(this, 'intl').t('settings.autokm.address_error'), {\n            autoClear: true,\n        });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"j1089KJY\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"change\\\"],[\\\"checkbox\\\",[24,[\\\"active\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"checkboxChanged\\\"],null]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"settings.autokm.activate_address_only\\\"],null],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"standard-icon-popover\\\",null,[[\\\"icon\\\",\\\"text\\\"],[\\\"info\\\",[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"settings.autokm.activate_address.desc\\\"],null]],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"setting\\\",\\\"active\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overlay\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"disabled\\\",\\\"checked\\\",\\\"change\\\"],[\\\"checkbox\\\",[28,\\\"if\\\",[[24,[\\\"active\\\"]],false,true],null],[24,[\\\"backForthActive\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"checkboxChangedBackForth\\\"],null]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"settings.autokm.activate_back_and_forth\\\"],null],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"standard-icon-popover\\\",null,[[\\\"icon\\\",\\\"text\\\"],[\\\"info\\\",[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"settings.autokm.activate_back_and_forth.desc\\\"],null]],null]]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row address-row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.address.street\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"address\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.address.postal\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"number\\\",[24,[\\\"postal\\\"]],\\\"form-control add-fields long-number\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.address.city\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"city\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"address_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.autokm.address_error_not_valid\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row save-row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"disabled\\\",[28,\\\"not\\\",[[24,[\\\"active\\\"]]],null]],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/autokm-setting/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class AddressCompComponent extends Component {\n    @service admintool;\n    @service() notifications;\n    @service intl;\n\n    @tracked companyData;\n    @tracked validate;\n    @tracked isLoading;\n\n    constructor() {\n        super(...arguments);\n        this.setData();\n    }\n\n    @action\n    async save() {\n        this.isLoading = true;\n        this.validate = false;\n\n        if (this.validationErrorsFound()) {\n            this.validate = true;\n            return (this.isLoading = false);\n        }\n\n        await this.saveData('customer_info', {\n            street: this.companyData.street,\n            zip: this.companyData.zip,\n            town: this.companyData.town,\n            country: this.companyData.country,\n            specifier: this.companyData.specifier,\n        });\n\n        if (this.billingData.use_company_address && this.billingData.billingtype == 'paper') {\n            await this.saveData('billinginfo', {\n                street: this.companyData.street,\n                zip: this.companyData.zip,\n                town: this.companyData.town,\n                country: this.companyData.country,\n                billingtype: 'paper',\n            });\n        }\n\n        this.isLoading = false;\n        this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n    }\n    async setData() {\n        this.companyData = this.args.popup\n            ? this.args.companyData\n            : await this.getdata('customer_info');\n        try {\n            this.billingData = await this.getdata('billinginfo');\n        } catch (error) {\n            if (error.statusText == 'Not Found') this.billingData = [];\n        }\n    }\n\n    async getdata(url) {\n        return await this.admintool.ajax({\n            url: url,\n            method: 'get',\n        });\n    }\n\n    validationErrorsFound() {\n        const mandatoryFields = ['street', 'zip', 'town', 'country'];\n        for (const field in this.companyData) {\n            if (mandatoryFields.includes(field)) {\n                if (!this.companyData[field] || this.companyData[field] == '') return true;\n            }\n        }\n    }\n\n    async saveData(url, data) {\n        return await this.admintool.ajax({\n            url: url,\n            method: 'PUT',\n            data: data,\n        });\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"JZMVyyno\",\"block\":\"{\\\"symbols\\\":[\\\"@popup\\\"],\\\"statements\\\":[[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\"],[[28,\\\"t\\\",[\\\"company_info.street\\\"],null],true,[28,\\\"and\\\",[[28,\\\"not\\\",[[23,0,[\\\"companyData\\\",\\\"street\\\"]]],null],[23,0,[\\\"validate\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"companyData\\\",\\\"street\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\"],[[28,\\\"t\\\",[\\\"company_info.zip\\\"],null],true,[28,\\\"and\\\",[[28,\\\"not\\\",[[23,0,[\\\"companyData\\\",\\\"zip\\\"]]],null],[23,0,[\\\"validate\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"companyData\\\",\\\"zip\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\"],[[28,\\\"t\\\",[\\\"company_info.town\\\"],null],true,[28,\\\"and\\\",[[28,\\\"not\\\",[[23,0,[\\\"companyData\\\",\\\"town\\\"]]],null],[23,0,[\\\"validate\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"companyData\\\",\\\"town\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\"],[[28,\\\"t\\\",[\\\"company_info.country\\\"],null],true,[28,\\\"and\\\",[[28,\\\"not\\\",[[23,0,[\\\"companyData\\\",\\\"country\\\"]]],null],[23,0,[\\\"validate\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"],[12,\\\"disabled\\\",true]],[[\\\"@value\\\"],[[23,0,[\\\"companyData\\\",\\\"country\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"company_info.specifier\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"companyData\\\",\\\"specifier\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\"],[[22,\\\"isLoading\\\"],[28,\\\"fn\\\",[[23,0,[\\\"save\\\"]],[23,0,[\\\"companyData\\\"]]],null],\\\"btn btn-primary btn-lg save\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/company-info/address-comp/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action, set } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class BillingCompComponent extends Component {\n    @service session;\n    @service admintool;\n    @service countryLists;\n    @service() notifications;\n    @service intl;\n\n    @tracked invoicingAddress;\n    @tracked billingType;\n    @tracked loading;\n    @tracked isSaving;\n\n    errors = { street: false, zip: false, town: false, country: false };\n\n    constructor() {\n        super(...arguments);\n        this.loading = true;\n        this.setData();\n    }\n\n    eInvoicingOperators = [\n        { id: 'apix', name: 'Apix Messaging Oy (003723327487)' },\n        { id: 'basware', name: 'BasWare Einvoices Oy (BAWCFI22)' },\n        { id: 'basware_oyj', name: 'BasWare Oyj (003705925424)' },\n        { id: 'cgi', name: 'CGI - Logica (003703575029)' },\n        { id: 'danske_bank', name: 'Danske Bank Oyj (DABAFIHH)' },\n        { id: 'enfo', name: 'Enfo Oy (003718062728)' },\n        { id: 'enfo_oyj', name: 'Enfo Oyj (003714377140)' },\n        { id: 'inex', name: 'InExchange Factorum AB (INEXCHANGE)' },\n        { id: 'liaison', name: 'LIAISON Technologies Oy (003708599126)' },\n        { id: 'maventa', name: 'Maventa Services (003721291126)' },\n        { id: 'nordea', name: 'Nordea (NDEAFIHH)' },\n        { id: 'notebeat', name: 'Notebeat Oy (003717203971)' },\n        { id: 'op', name: 'OP-Pohjola-ryhmä (OKOYFIHH)' },\n        { id: 'opus', name: 'OpusCapita Group Oy - Itella (003710948874)' },\n        { id: 'pagero', name: 'Pagero (003723609900)' },\n        { id: 'pop', name: 'POP Pankit (POPFFI22)' },\n        { id: 's_pankki', name: 'S-Pankki Oy (SBANFIHH)' },\n        { id: 'sampo', name: 'Sampo Pankki Oyj (PSPBFIHH)' },\n        { id: 'handelsbank', name: 'Svenska HAndelsbanken AB (HANDFIHH)' },\n        { id: 'saasto', name: 'Säästöpankit (ITELFIHH)' },\n        { id: 'tapiola', name: 'Tapiola Pankki (TAPIFI22)' },\n        { id: 'teliasonera', name: 'TeliaSonera Finland Oyj (003714756079)' },\n        { id: 'tieto', name: 'Tieto Oyj (003701011385)' },\n        { id: 'aland', name: 'Ålandsbanken Abp (AABAFI22)' },\n        { id: 'opus_solutions', name: 'OpusCapita Solutions Oy (E204503)' },\n    ];\n\n    @action\n    copyFields() {\n        set(\n            this,\n            'invoicingAddress.use_company_address',\n            !this.invoicingAddress.use_company_address,\n        );\n        if (this.invoicingAddress.use_company_address) {\n            set(this, 'invoicingAddress.zip', this.customerData.zip);\n            set(this, 'invoicingAddress.town', this.customerData.town);\n            set(this, 'invoicingAddress.country', this.customerData.country);\n            set(this, 'invoicingAddress.street', this.customerData.street);\n        }\n    }\n\n    @action\n    async save() {\n        this.isSaving = true;\n        if (this.billingType == 'eInvoice') {\n            this.clearFields(['email', 'zip', 'town', 'country', 'street']);\n            if (this.checkMandatoryFields()) return;\n        }\n        if (this.billingType == 'email')\n            this.clearFields([\n                'zip',\n                'town',\n                'country',\n                'street',\n                'e_invoice_operator',\n                'e_invoice_address',\n            ]);\n        if (this.billingType == 'paper')\n            this.clearFields(['e_invoice_operator', 'e_invoice_address', 'email']);\n\n        let data = this.getDataArray();\n        let method = this.invoicingAddress ? 'PUT' : 'POST';\n\n        await this.admintool.ajax({ url: 'billinginfo', method: method, data: data });\n\n        if (this.args.popup) {\n            await this.saveCompanyInfo();\n            this.args.close();\n        }\n\n        if (this.args.close) this.args.close();\n        this.isSaving = false;\n        this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n    }\n\n    async setData() {\n        this.invoicingAddress = {};\n\n        try {\n            this.invoicingAddress = await this.admintool.ajax({\n                url: 'billinginfo',\n                method: 'get',\n            });\n        } catch (error) {\n            if (error.statusText == 'Not Found') this.invoicingAddress = {};\n        } finally {\n            this.customerData = await this.admintool.ajax({ url: 'customer_info', method: 'get' });\n            this.billingType =\n                this.invoicingAddress && this.invoicingAddress.billingtype\n                    ? this.invoicingAddress.billingtype\n                    : 'email';\n            this.loading = false;\n        }\n    }\n\n    clearFields(fields) {\n        fields.map((field) => set(this, `invoicingAddress.${field}`, null));\n        if (this.billingType != 'paper') set(this, 'invoicingAddress.use_company_address', false);\n    }\n\n    getDataArray() {\n        let addressInfo =\n            this.invoicingAddress.use_company_address && this.billingType == 'paper'\n                ? this.customerData\n                : this.invoicingAddress;\n        return {\n            street: addressInfo.street,\n            zip: addressInfo.zip,\n            town: addressInfo.town,\n            country: addressInfo.country,\n            billingtype: this.billingType,\n            email: this.invoicingAddress.email,\n            e_invoice_operator: this.invoicingAddress.e_invoice_operator,\n            e_invoice_address: this.invoicingAddress.e_invoice_address,\n            invoice_ref: this.invoicingAddress.invoice_ref,\n            use_company_address: this.invoicingAddress.use_company_address,\n        };\n    }\n\n    checkMandatoryFields() {\n        const mandatoryFields = ['street', 'zip', 'town', 'country'];\n        let hasErrors = false;\n        for (const field in this.customerData) {\n            if (mandatoryFields.includes(field)) {\n                if (!this.customerData[field] || this.customerData[field] == '') {\n                    set(this, 'errors.' + field, true);\n                    hasErrors = true;\n                } else {\n                    set(this, 'errors.' + field, false);\n                }\n            }\n        }\n        return hasErrors;\n    }\n\n    async saveCompanyInfo() {\n        return await this.admintool.ajax({\n            url: 'customer_info',\n            method: 'PUT',\n            data: {\n                street: this.customerData.street,\n                zip: this.customerData.zip,\n                town: this.customerData.town,\n                country: this.customerData.country,\n                specifier: this.customerData.specifier,\n            },\n        });\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"ouiO4zKk\",\"block\":\"{\\\"symbols\\\":[\\\"error\\\",\\\"field\\\",\\\"acc\\\",\\\"accitem\\\",\\\"country\\\",\\\"accitem\\\",\\\"operator\\\",\\\"accitem\\\",\\\"@popup\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"products.mini_entry\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,9,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.billing_info_header\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[5,\\\"bs-accordion\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"item\\\"]],[[12,\\\"onclick\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"billingType\\\"]]],null],\\\"email\\\"],null]]],[[\\\"@value\\\"],[\\\"email\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,8,[\\\"title\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"billing_info.email\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"text-success icon-big pull-right \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,0,[\\\"billingType\\\"]],\\\"email\\\"],null],\\\"move move-Checkmark\\\"],null]]]],[8],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,8,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"blockquote\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.email_desc\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.email\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"invoicingAddress\\\",\\\"email\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.invoice_ref\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"invoicingAddress\\\",\\\"invoice_ref\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"session\\\",\\\"currentUser\\\",\\\"company_info\\\",\\\"country\\\"]],\\\"fi\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,3,[\\\"item\\\"]],[[12,\\\"onclick\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"billingType\\\"]]],null],\\\"eInvoice\\\"],null]]],[[\\\"@value\\\"],[\\\"e_invoice\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"title\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"billing_info.e_invoice\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"text-success icon-big pull-right \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,0,[\\\"billingType\\\"]],\\\"eInvoice\\\"],null],\\\"move move-Checkmark\\\"],null]]]],[8],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"blockquote\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.e_invoice_desc\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                    \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.e_invoice_desc\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"invoicingAddress\\\",\\\"e_invoice_operator\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"eInvoicingOperators\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,7,[\\\"id\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"invoicingAddress\\\",\\\"e_invoice_operator\\\"]],[23,7,[\\\"id\\\"]]],null]],[8],[1,[23,7,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                    \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.e_invoice_address\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"invoicingAddress\\\",\\\"e_invoice_address\\\"]]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                    \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.invoice_ref\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"invoicingAddress\\\",\\\"invoice_ref\\\"]]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"item\\\"]],[[12,\\\"onclick\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"billingType\\\"]]],null],\\\"paper\\\"],null]]],[[\\\"@value\\\"],[\\\"paper\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"title\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"billing_info.paper\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"text-success icon-big pull-right \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,0,[\\\"billingType\\\"]],\\\"paper\\\"],null],\\\"move move-Checkmark\\\"],null]]]],[8],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"blockquote\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.paper_desc\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.use_company_address\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"input\\\",[[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"copyFields\\\"]]]]],[[\\\"@class\\\",\\\"@type\\\",\\\"@checked\\\"],[\\\"form-control\\\",\\\"checkbox\\\",[24,[\\\"invoicingAddress\\\",\\\"use_company_address\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.street\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"disabled\\\",[28,\\\"if\\\",[[24,[\\\"invoicingAddress\\\",\\\"use_company_address\\\"]],true,false],null]]],[[\\\"@value\\\"],[[23,0,[\\\"invoicingAddress\\\",\\\"street\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.zip\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"disabled\\\",[28,\\\"if\\\",[[24,[\\\"invoicingAddress\\\",\\\"use_company_address\\\"]],true,false],null]]],[[\\\"@value\\\"],[[23,0,[\\\"invoicingAddress\\\",\\\"zip\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.town\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"disabled\\\",[28,\\\"if\\\",[[24,[\\\"invoicingAddress\\\",\\\"use_company_address\\\"]],true,false],null]]],[[\\\"@value\\\"],[[23,0,[\\\"invoicingAddress\\\",\\\"town\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.e_invoice_country\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"invoicingAddress\\\",\\\"country\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[11,\\\"disabled\\\",[28,\\\"if\\\",[[24,[\\\"invoicingAddress\\\",\\\"use_company_address\\\"]],true,false],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"countryLists\\\",\\\"shortList\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,5,[\\\"id\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"invoicingAddress\\\",\\\"country\\\"]],[23,5,[\\\"id\\\"]]],null]],[8],[1,[23,5,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.invoice_ref\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"invoicingAddress\\\",\\\"invoice_ref\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.paper_notice\\\"],null],false],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,9,[]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.address_info_header\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[5,\\\"settings/general-v2/components/company-info/address-comp\\\",[],[[\\\"@companyData\\\",\\\"@popup\\\"],[[23,0,[\\\"customerData\\\"]],[23,9,[]]]]],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[23,0,[\\\"errors\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"settings.companyprofile.\\\",[23,2,[]],\\\"_missing\\\"],null]],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2]},null],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\"],[[22,\\\"isSaving\\\"],[23,0,[\\\"save\\\"]],\\\"btn btn-primary btn-lg save\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"query\\\"],[\\\"btn btn-primary\\\",[28,\\\"hash\\\",null,[[\\\"wizard\\\"],[\\\"billing\\\"]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"billing_info.open_billing_info\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/company-info/billing-comp/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { get, action } from '@ember/object';\nimport Ember from 'ember';\n\nexport default class InfoCompComponent extends Component {\n    @service store;\n    @service() notifications;\n    @service intl;\n    @service session;\n\n    @tracked company;\n    @tracked loading;\n    @tracked validate;\n    @tracked isSaving;\n\n    countries = [\n        { id: 'se', name: 'se' },\n        { id: 'fi', name: 'fi' },\n    ];\n\n    get adminMode() {\n        if (Ember.devModeOn || this.session.session.content.authenticated.scope) return true;\n        return false;\n    }\n\n    constructor() {\n        super(...arguments);\n        this.loading = true;\n        this.setCompanyInfo();\n    }\n\n    @action\n    async saveCompanyInfo() {\n        this.isSaving = true;\n        this.validate = false;\n\n        this.validationErrorsFound() ? (this.validate = true) : await this.company.save();\n        this.isSaving = false;\n        if (!this.validate)\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n    }\n\n    async setCompanyInfo() {\n        this.company = get(await this.store.findAll('company-info'), 'firstObject');\n        this.loading = false;\n    }\n\n    validationErrorsFound() {\n        if (!this.company.company_name || this.company.company_name == '') return true;\n        if (!this.company.company_vatin || this.company.company_vatin == '') return true;\n        return false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"LI8CIsrh\",\"block\":\"{\\\"symbols\\\":[\\\"country\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\"],[[28,\\\"t\\\",[\\\"company_info.company_name\\\"],null],true,[28,\\\"and\\\",[[28,\\\"not\\\",[[23,0,[\\\"company\\\",\\\"company_name\\\"]]],null],[23,0,[\\\"validate\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"company\\\",\\\"company_name\\\"]]]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\"],[[28,\\\"t\\\",[\\\"company_info.company_vatin\\\"],null],true,[28,\\\"and\\\",[[28,\\\"not\\\",[[23,0,[\\\"company\\\",\\\"company_vatin\\\"]]],null],[23,0,[\\\"validate\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"company\\\",\\\"company_vatin\\\"]]]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"company_info.company_contact_person\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"company\\\",\\\"company_contact_person\\\"]]]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"company_info.company_phone\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"company\\\",\\\"company_phone\\\"]]]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"company_info.company_email\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"company\\\",\\\"company_email\\\"]]]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"company_info.country\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"company\\\",\\\"country\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"countries\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,1,[\\\"id\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"company\\\",\\\"country\\\"]],[23,1,[\\\"id\\\"]]],null]],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\"],[[22,\\\"isSaving\\\"],[23,0,[\\\"saveCompanyInfo\\\"]],\\\"btn btn-primary btn-lg save\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/company-info/info-comp/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class LogoCompComponent extends Component {\n    @service store;\n    @service() notifications;\n    @service intl;\n\n    @tracked saveButtonVisible;\n    @tracked logo;\n    @tracked logoImage;\n    @tracked logoField;\n    @tracked isLoading;\n\n    constructor() {\n        super(...arguments);\n        this.activate();\n    }\n\n    @action\n    async updateLogo(img) {\n        if (this.logo.isDeleted) this.logo = await this.store.createRecord('logo');\n        this.logo.logo = img;\n        this.logoImage = false;\n        this.saveButtonVisible = true;\n    }\n    @action\n    async saveLogo() {\n        this.isLoading = true;\n        if (this.logo.logo == 'removed') {\n            await this.logo.destroyRecord();\n        } else {\n            await this.logo.save();\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n        }\n        this.isLoading = false;\n        this.saveButtonVisible = false;\n    }\n\n    async activate() {\n        let logo = await this.store.findAll('logo');\n\n        this.logoField = {\n            form: 'logo',\n            name: 'logo',\n            type: 'hdfile',\n            features: { is_image: true },\n        };\n\n        if (logo.firstObject) {\n            let currentLogo = logo.firstObject;\n            this.logoImage = currentLogo.logo.thumb;\n            this.logo = currentLogo;\n            this.logoField.value = currentLogo.logo;\n        } else {\n            this.logo = this.store.createRecord('logo');\n        }\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"fxlxPUMC\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.logo_header\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"company-info-container\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"blockquote\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.logo_text\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"logoImage\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"image\\\"],[8],[7,\\\"img\\\",true],[11,\\\"src\\\",[29,[[28,\\\"api-image\\\",[[23,0,[\\\"logoImage\\\"]]],null]]]],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[5,\\\"collector/field-comp\\\",[],[[\\\"@field\\\",\\\"@change\\\"],[[23,0,[\\\"logoField\\\"]],[23,0,[\\\"updateLogo\\\"]]]]],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saveButtonVisible\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\"],[[22,\\\"isLoading\\\"],[23,0,[\\\"saveLogo\\\"]],\\\"btn btn-primary btn-lg save\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/company-info/logo-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/general-v2/components/edit-time-setting/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldSettingCompComponent;\n\nimport Ember from 'ember';\n\nCollectorFieldSettingCompComponent = Ember.Component.extend({\n    store: Em.inject.service(),\n    intl: Em.inject.service(),\n    notifications: Ember.inject.service(),\n    date_interval_setting: Ember.computed.equal('configs.setting.name', 'date_interval'),\n    showSaveButton: Ember.computed(\n        'internalsetting.value',\n        'internalsetting.hasDirtyAttributes',\n        'date_interval_future',\n        'date_interval_future_check',\n        'isValueCustom',\n        function () {\n            if (\n                this.get('isValueCustom') &&\n                this.get('internalsetting.value') !== '' &&\n                (this.get('internalsetting.value') >= 0 ||\n                    this.get('internalsetting.value') === 'locked')\n            ) {\n                return true;\n            }\n            if (\n                this.get('date_interval_future_check') &&\n                (this.get('date_interval_future') === '' ||\n                    this.get('date_interval_future') === null)\n            ) {\n                return false;\n            } else if (\n                this.get('internalsetting.value') !== '' &&\n                this.get('internalsetting.value') !== null &&\n                (this.get('internalsetting.value') >= 0 ||\n                    this.get('internalsetting.value') === 'locked') &&\n                (this.get('internalsetting.hasDirtyAttributes') || this.get('date_interval_future'))\n            ) {\n                return true;\n            }\n            return false;\n        },\n    ),\n    options: [\n        {\n            value: 'locked',\n            text: 'wizard.onboarding.timetracker.edit_time.same_day',\n        },\n        {\n            value: '2',\n            text: 'wizard.onboarding.timetracker.edit_time.tomorrow',\n        },\n        {\n            value: '3',\n            text: 'wizard.onboarding.timetracker.edit_time.two_days',\n        },\n    ],\n    didReceiveAttrs: function () {\n        var configs;\n        this._super();\n        configs = this.get('configs');\n        this.set('loading', true);\n        return this.get('store')\n            .findAll('form', {\n                reload: true,\n            })\n            .then((forms) => {\n                var arr, field, firstValue, form, ref, secondValue, setting;\n                form = forms.filterBy('external_type', configs.form);\n                field = form.get('firstObject.fields').filterBy('external_type', configs.field);\n                setting = field.get('firstObject.settings').filterBy('name', configs.setting.name);\n                setting.get('firstObject').rollbackAttributes(); // revert all possible changes\n                if (setting.get('firstObject')) {\n                    this.set('internalsetting', setting.get('firstObject'));\n                } else {\n                    configs.setting.field = field.get('firstObject');\n                    this.set(\n                        'internalsetting',\n                        this.get('store').createRecord('form-field-setting', configs.setting),\n                    );\n                }\n                if (this.get('internalsetting').get('value').split(',').length > 1) {\n                    arr = this.get('internalsetting').get('value').split(',');\n                    firstValue = arr[0];\n                    secondValue = arr[1];\n                } else {\n                    firstValue = this.get('internalsetting').get('value');\n                }\n                if (\n                    firstValue !== 'locked' &&\n                    (ref = parseInt(firstValue)) !== 0 &&\n                    ref !== 2 &&\n                    ref !== 3\n                ) {\n                    firstValue--;\n                    this.set('isValueCustom', true);\n                }\n                this.get('internalsetting').set('value', firstValue);\n                if (secondValue) {\n                    this.set('date_interval_future', secondValue);\n                    this.set('date_interval_future_check', true);\n                }\n                //if @get('internalsetting').get('value') is \"locked\"\n                //    @get('internalsetting').set('value', 1)\n                return this.set('loading', false);\n            });\n    },\n    description: Em.computed('configs', function () {\n        var string;\n        string = `settings.${this.get('configs.form')}.${this.get('configs.field')}.${this.get('configs.setting')}`;\n        if (\n            this.get('intl').exists(\n                `settings.${this.get('configs.form')}.${this.get('configs.field')}.${this.get('configs.setting')}`,\n            )\n        ) {\n            return this.get('intl').t(\n                `settings.${this.get('configs.form')}.${this.get('configs.field')}.${this.get('configs.setting')}`,\n            );\n        }\n    }),\n    actions: {\n        changeValue: function (value, isCustom) {\n            if (isCustom && this.get('isValueCustom')) {\n                return;\n            }\n            this.set('isValueCustom', isCustom);\n            if (!this.get('isValueCustom') && !isCustom) {\n                return this.set('internalsetting.value', value);\n            } else {\n                return this.set('internalsetting.value', null);\n            }\n        },\n        save: function () {\n            var old_value, setting, tmp_value, val;\n            setting = this.get('internalsetting');\n            if (setting.get('value')) {\n                this.set('saving', true);\n                if (this.get('isValueCustom')) {\n                    this.set('placeholderValue', setting.get('value'));\n                    setting.set('value', parseInt(setting.get('value')) + 1);\n                } else {\n                    this.set('placeholderValue', null);\n                }\n                old_value = setting.get('value');\n                tmp_value = setting.get('value');\n                if (this.get('configs').setting.name === 'date_interval') {\n                    if (setting.get('value') === '0' || setting.get('value') === '1') {\n                        tmp_value = 'locked';\n                    }\n                    if (\n                        this.get('date_interval_future') &&\n                        this.get('date_interval_future_check')\n                    ) {\n                        val = Math.abs(this.get('date_interval_future'));\n                        tmp_value += ',' + val;\n                    }\n                }\n                setting.set('value', tmp_value);\n                return setting.save().then(() => {\n                    if (this.get('isValueCustom')) {\n                        old_value--;\n                    }\n                    setting.set('value', old_value);\n                    this.set('saving', false);\n                    if (this.get('settingSaved')) {\n                        return this.settingSaved();\n                    }\n                });\n            }\n        },\n    },\n});\n\nexport default CollectorFieldSettingCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"pCI+xSXE\",\"block\":\"{\\\"symbols\\\":[\\\"option\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"options\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"radio-inputs-settings\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\",[23,1,[\\\"value\\\"]],false]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[24,[\\\"internalsetting\\\",\\\"value\\\"]],[23,1,[\\\"value\\\"]]],null],[28,\\\"not\\\",[[24,[\\\"isValueCustom\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"class\\\",\\\"radio-svg-fill\\\"],[10,\\\"id\\\",\\\"Ellipse_30\\\"],[10,\\\"data-name\\\",\\\"Ellipse 30\\\"],[10,\\\"cx\\\",\\\"3\\\"],[10,\\\"cy\\\",\\\"3\\\"],[10,\\\"r\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(3 3)\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-text\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"radio-inputs-settings\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\",null,true]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isValueCustom\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"class\\\",\\\"radio-svg-fill\\\"],[10,\\\"id\\\",\\\"Ellipse_30\\\"],[10,\\\"data-name\\\",\\\"Ellipse 30\\\"],[10,\\\"cx\\\",\\\"3\\\"],[10,\\\"cy\\\",\\\"3\\\"],[10,\\\"r\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(3 3)\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-text-custom\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.edit_time.custom.text_start\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"disabled\\\",\\\"class\\\"],[[24,[\\\"placeholderValue\\\"]],true,\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"isValueCustom\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"class\\\"],[[24,[\\\"internalsetting\\\",\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"disabled\\\",\\\"class\\\"],[null,true,\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.edit_time.custom.text_end\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-inputs-settings\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-icon\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"form-control small-checkbox\\\",[24,[\\\"date_interval_future_check\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-text-relative\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"unless\\\",[[24,[\\\"date_interval_future_check\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overlay\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"settings.date_interval.can_save_to_future\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"date_interval_future\\\"]],[28,\\\"not\\\",[[24,[\\\"date_interval_future_check\\\"]]],null]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"settings.date_interval.can_save_to_future_desc\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"disabled\\\",[28,\\\"not\\\",[[24,[\\\"showSaveButton\\\"]]],null]],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/edit-time-setting/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class HolidayComponent extends Component {\n    @service ttapi;\n\n    @tracked dirty = true;\n    @tracked initvalue;\n    @tracked startdate;\n    @tracked isLoading = false;\n    @tracked loadingData = true;\n    @tracked isOn = false;\n\n    constructor() {\n        super(...arguments);\n\n        this.load();\n    }\n\n    async load() {\n        const response = await this.ttapi.request('/api/holidays/settings');\n\n        this.startdate = this.initvalue = response.startdate;\n\n        if (response.startdate) this.isOn = true;\n\n        this.loadingData = false;\n    }\n\n    async saveStartdate(startdate) {\n        return await this.ttapi.request('/api/holidays/settings', {\n            method: 'POST',\n            headers: {\n                'Content-Type': 'application/json',\n            },\n            data: JSON.stringify({ startdate: startdate }),\n        });\n    }\n\n    @action\n    toggle() {\n        this.isOn = !this.isOn;\n\n        if (!this.isOn) {\n            this.startdate = this.initvalue = null;\n            this.saveStartdate(null);\n        }\n    }\n\n    @action\n    async saveSetting() {\n        this.isLoading = true;\n        await this.saveStartdate(this.startdate);\n\n        this.initvalue = this.startdate;\n        this.isLoading = false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"lwzqKei6\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loadingData\\\"]]],null,{\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-component\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[23,0,[\\\"isOn\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggle\\\"],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-setting-header\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"settings.holiday_startdate\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n     \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isOn\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-component-container\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"settings.holiday_startdate.date\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"form-control add-fields\\\",[23,0,[\\\"startdate\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"disabled\\\",[28,\\\"eq\\\",[[23,0,[\\\"startdate\\\"]],[23,0,[\\\"initvalue\\\"]]],null]],[12,\\\"class\\\",[29,[\\\"btn btn-primary \\\",[28,\\\"if\\\",[[23,0,[\\\"isLoading\\\"]],\\\"is-loading\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/holiday/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class CustomExportComponent extends Component {\n    @service ttapi;\n    @service('collector-service') Collector;\n\n    /**\n     * When salarytypes_v2 used always call ttapi/api/salary/automaticSalarytypes after changing km setting\n     */\n    @action\n    async saved() {\n        if (!this.Collector.testNeeds(['products.salarytype_v2'])) return;\n\n        await this.ttapi.post('api/salary/automaticSalarytypes');\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"e+t91Q6p\",\"block\":\"{\\\"symbols\\\":[\\\"@setting\\\"],\\\"statements\\\":[[5,\\\"settings/general-v2/radio-setting\\\",[],[[\\\"@options\\\",\\\"@saved\\\"],[[23,1,[\\\"optionsForComponent\\\"]],[23,0,[\\\"saved\\\"]]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/km/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { inject as service } from '@ember/service';\nimport { action, set } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { A } from '@ember/array';\n\nexport default class NotificationCenterComponent extends Component {\n    @service('collector-service') collector;\n    @service intl;\n    @service ttapi;\n    @service customerSettings;\n    @service session;\n\n    @tracked updateThese;\n    @tracked notificationSettings;\n\n    get styleNamespace() {\n        return podNames['settings/general-v2/components/notification-center'];\n    }\n\n    getNotificationChannels(channel) {\n        let channels = A();\n        switch (channel) {\n            case 'notification':\n                channels.pushObject(this.intl.t('widget.anomalities.push'));\n                break;\n            case 'email':\n                channels.pushObject(this.intl.t('widget.anomalities.email'));\n                break;\n            case 'sms':\n                channels.pushObject(this.intl.t('widget.anomalities.sms'));\n                break;\n            case 'tt4':\n                channels.pushObject(this.intl.t('settings.notification-center.in-service-message'));\n                break;\n        }\n        return channels;\n    }\n\n    async getNotificationSettings() {\n        let retArr = A();\n        let splittedChannels = [];\n\n        let settings = await this.ttapi._get('notification/categories');\n\n        let push_time = await this.customerSettings.checkSetting(\n            'push_notification_time_hours_' + this.session.currentUser.company_info.country,\n        );\n\n        let extraSettings = [\n            {\n                type:\n                    'push_notification_time_hours_' + this.session.currentUser.company_info.country,\n                active: push_time ? true : false,\n                translation: 'settings.notifications.use_missing_hours',\n                help:\n                    'notification.' +\n                    'push_notification_time_hours_' +\n                    this.session.currentUser.company_info.country.toLowerCase() +\n                    '.sending-time',\n                channel: 'notification',\n                customTime: push_time ? push_time : '16:00',\n                custom: true,\n            },\n        ];\n\n        settings.pushObjects(extraSettings);\n\n        settings.forEach((setting) => {\n            if (!setting.needs || (setting.needs && this.collector.testNeeds(setting.needs))) {\n                set(\n                    setting,\n                    'help',\n                    'notification.' + setting.type.toLowerCase() + '.sending-time',\n                );\n                splittedChannels = setting.channel.split(',');\n                let channels = [];\n                for (var channel of splittedChannels) {\n                    channels.pushObject(this.getNotificationChannels(channel));\n                }\n                set(setting, 'channel', channels.join(', '));\n                if (setting.customTime) {\n                    set(setting, 'customTime', this.getCustomTime(setting.customTime));\n                    set(setting, 'hasCustomTime', true);\n                }\n                // unapproved_worktimes customer-setting used to be its own customer-setting but now we combine it with this notification-setting\n                if (setting.type == 'unapprovedworktimes') {\n                    set(setting, 'hasCustomTime', true);\n                    let unaprrovedSetting =\n                        this.customerSettings.checkSetting('unapproved_worktimes');\n                    if (!unaprrovedSetting) {\n                        set(setting, 'active', false);\n                        set(setting, 'customTime', '16:00');\n                    } else {\n                        set(setting, 'customTime', this.getCustomTime(unaprrovedSetting));\n                    }\n                }\n                retArr.pushObject(setting);\n            }\n        });\n        return retArr;\n    }\n\n    get isDisabled() {\n        return this.updateThese.length == 0;\n    }\n\n    async setNotificationSettings() {\n        this.notificationSettings = await this.getNotificationSettings();\n    }\n\n    constructor() {\n        super(...arguments);\n        //this.setNotificationSettings();\n        this.notificationSettings = this.getNotificationSettings();\n        this.updateThese = A();\n    }\n\n    @action\n    async save() {\n        for (var setting of this.updateThese) {\n            // we need to update customer-setting also here\n            if (setting.type == 'unapprovedworktimes')\n                await this.customerSettings.setSetting(\n                    'unapproved_worktimes',\n                    setting.active ? this.setCustomTime(setting.customTime) : 'off',\n                );\n            if (setting.custom)\n                await this.customerSettings.setSetting(\n                    setting.type,\n                    setting.active ? this.setCustomTime(setting.customTime) : 'off',\n                );\n            else await this.saveNotification(setting);\n        }\n        this.updateThese = A();\n        this.args.settingSaved();\n    }\n\n    @action\n    setSetting(setting, state) {\n        set(setting, 'active', state);\n        if (!this.updateThese.includes(setting)) {\n            this.updateThese.pushObject(setting);\n        }\n    }\n\n    saveNotification(notification) {\n        let date = moment().format('YYYY-MM-DD');\n        let time = notification.customTime ? notification.customTime : null;\n\n        let customTime = time\n            ? moment(date + ' ' + time + ':00')\n                  .utc()\n                  .format('HH:mm')\n            : null;\n\n        return this.ttapi._post('notification/update', {\n            notification: notification.type,\n            active: notification.active,\n            customTime: customTime,\n        });\n    }\n\n    setCustomTime(customTime) {\n        if (!customTime) return null;\n        const utctime = customTime;\n        const date = moment().format('YYYY-MM-DD');\n        return moment(date + ' ' + utctime + ':00')\n            .utc()\n            .format('HH:mm');\n    }\n\n    getCustomTime(customTime) {\n        if (!customTime) return null;\n        const utctime = customTime;\n        const date = moment().format('YYYY-MM-DD');\n        return moment(date + ' ' + utctime + ':00Z').format('HH:mm');\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"yqORUJh6\",\"block\":\"{\\\"symbols\\\":[\\\"setting\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"notification.notification_name\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"notification.sending_time\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"notification.send_to\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"notification.sending_channels\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"notificationSettings\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"toggle-cell\\\"],[8],[0,\\\"\\\\n                    \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@value\\\",\\\"@onToggle\\\",\\\"@size\\\",\\\"@theme\\\"],[[23,1,[\\\"active\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setSetting\\\",[23,1,[]]],null],\\\"large\\\",\\\"light\\\"]]],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"translation\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[[23,1,[\\\"translation\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"notification.\\\",[23,1,[\\\"type\\\"]],\\\".title\\\"],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[[23,1,[\\\"help\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"hasCustomTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"change\\\",\\\"disabled\\\"],[\\\"time\\\",[23,1,[\\\"customTime\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setSetting\\\",[23,1,[]],true],null],[28,\\\"not\\\",[[23,1,[\\\"active\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"notification.\\\",[23,1,[\\\"type\\\"]],\\\".send_to\\\"],null]],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[23,1,[\\\"channel\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[12,\\\"disabled\\\",[22,\\\"isDisabled\\\"]],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"save\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/notification-center/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/general-v2/components/number-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldSettingCompNumberFieldComponent;\n\nimport Ember from 'ember';\n\nCollectorFieldSettingCompNumberFieldComponent = Ember.Component.extend({\n    customerSettings: Ember.inject.service(),\n    value: Em.computed(function () {\n        return (\n            this.get('customerSettings').checkSetting(this.get('configs.setting')) ||\n            this.get('configs.defaultVal')\n        );\n    }),\n    actions: {\n        save: function () {\n            this.set('loading', true);\n            return this.get('customerSettings')\n                .setSetting(this.get('configs.setting'), this.get('value'))\n                .then(() => {\n                    this.set('loading', false);\n                    if (this.get('settingSaved')) {\n                        return this.settingSaved();\n                    }\n                });\n        },\n        validateInput: function () {\n            if (this.get('configs.value') < this.get('configs.minVal')) {\n                return this.set('configs.value', this.get('configs.minVal'));\n            }\n        },\n    },\n});\n\nexport default CollectorFieldSettingCompNumberFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"VlEby9J8\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-inline\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group setting-component-input-group\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"min\\\",\\\"keyUp\\\"],[\\\"number\\\",[24,[\\\"value\\\"]],\\\"form-control\\\",[24,[\\\"configs\\\",\\\"minVal\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validateInput\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"configs\\\",\\\"unit\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[1,[24,[\\\"configs\\\",\\\"unit\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"value\\\"]]],null]],[10,\\\"type\\\",\\\"button\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/number-field/template.hbs\"}});","/* eslint-disable ember/named-functions-in-promises */\nimport Component from '@ember/component';\nimport { set, get, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\nimport EmberObject from '@ember/object';\nimport { typeOf } from '@ember/utils';\n\nexport default Component.extend({\n    Collector: service('collector-service'),\n    session: service(),\n    store: service(),\n    intl: service(),\n    initapp: service(),\n    servicehandler: service(),\n    tools: service(),\n    notifications: service(),\n    capi: service(),\n    flags: service(),\n    ttapi: service(),\n    validationErrorTexts: null,\n\n    settingType: computed('setting.category', function () {\n        if (this.setting.category == 'salaries.overtime') return 'overtime';\n        else if (this.setting.category == 'salaries.calculations') return 'compensations';\n        return;\n    }),\n    //startdate: Em.computed ->\n    //    moment().format('YYYY-MM-DD')\n\n    customDayBased_saturday: computed('customDayBased.[]', function () {\n        return get(this, 'customDayBased').filter((el) => el.name === '_saturday');\n    }),\n    customDayBased_sunday: computed('customDayBased.[]', function () {\n        return get(this, 'customDayBased').filter((el) => el.name === '_sunday');\n    }),\n\n    customDayBased_normal: computed('customDayBased.[]', function () {\n        return get(this, 'customDayBased').filter(\n            (el) => !(el['name'] === '_saturday' || el['name'] === '_sunday'),\n        );\n    }),\n\n    salarytypes: computed(function () {\n        const fields = [];\n        if (\n            get(this, 'Collector').testNeeds(['products.salarytype||products.selectablesalarytype'])\n        ) {\n            return get(this, 'store')\n                .query('salarytype', { type: '(empty)' })\n                .then((salarytypes) => {\n                    salarytypes.forEach((stype) => {\n                        if (get(stype, 'id')) {\n                            return fields.push({ id: get(stype, 'id'), text: get(stype, 'name') });\n                        }\n                    });\n                    return fields;\n                });\n        } else {\n            return fields;\n        }\n    }),\n\n    fields: computed(function () {\n        return get(this, 'Collector')\n            .fieldArray('worktime')\n            .filterBy('type', 'hours')\n            .rejectBy('name', 'work_hours');\n    }),\n    // filter all the overtime_types with needs\n\n    overtime_types: computed('worktimegroup', function () {\n        const types = get(this, '_overtime_types');\n        const keys = Object.keys(types);\n\n        const ret = {};\n        keys.forEach((key) => {\n            // skip types that has needs but needs return false\n            if (types[key].needs && !get(this, 'Collector').testNeeds(types[key].needs)) {\n                return;\n            }\n            // all the other types goes to ret\n            return (ret[key] = types[key]);\n        });\n        return ret;\n    }),\n    init() {\n        this._super(...arguments);\n        set(this, 'validationErrors', 0);\n        set(this, 'validationErrorTexts', []);\n        const useNewOvertimeSettings = this.Collector.testNeeds([\n            'products.salarytype_v2||flag.new-overtime-settings',\n        ]);\n        const _overtime_types = EmberObject.create({\n            daily_overtime: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.daily_overtime',\n                in_use: false,\n                settings: {\n                    _50start: 8,\n                    _100start: 10,\n                    _50multiplier: 0.5,\n                    _100multiplier: 1,\n                    _50saldotype: false,\n                    _100saldotype: false,\n                },\n                product: 'overtime_daily',\n                product_50saldotype: 'overtime_daily_50_saldo',\n                product_100saldotype: 'overtime_daily_100_saldo',\n                rule_creator(settings) {\n                    return [\n                        {\n                            name: '_50',\n                            values: {\n                                from: settings._50start,\n                                to: settings._100start,\n                                multiplier: settings._50multiplier,\n                                saldotype: settings._50saldotype,\n                            },\n                        },\n                        {\n                            name: '_100',\n                            values: {\n                                from: settings._100start,\n                                multiplier: settings._100multiplier,\n                                saldotype: settings._100saldotype,\n                            },\n                        },\n                    ];\n                },\n                rule_parser() {\n                    return {\n                        _50start: '_50.values.from',\n                        _100start: '_100.values.from',\n                        _50multiplier: '_50.values.multiplier',\n                        _100multiplier: '_100.values.multiplier',\n                        _50saldotype: '_50.values.saldotype',\n                        _100saldotype: '_100.values.saldotype',\n                    };\n                },\n            },\n\n            weekly_overtime: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.weekly_overtime',\n                in_use: false,\n                settings: useNewOvertimeSettings\n                    ? {\n                          _week50start: 40,\n                          _week100start: 48,\n                          dailymax: 8,\n                          _week50multiplier: 0.5,\n                          _week100multiplier: 1,\n                          _week50saldotype: false,\n                          _week100saldotype: false,\n                      }\n                    : {\n                          _week50start: 0,\n                          _week100start: 8,\n                          _week50multiplier: 0.5,\n                          _week100multiplier: 1,\n                          _week50saldotype: false,\n                          _week100saldotype: false,\n                      },\n                product: 'overtime_weekly',\n                product_week50saldotype: 'overtime_weekly_50_saldo',\n                product_week100saldotype: 'overtime_weekly_100_saldo',\n                rule_creator: useNewOvertimeSettings\n                    ? function (settings) {\n                          return [\n                              {\n                                  name: '_week50',\n                                  values: {\n                                      from: settings._week50start,\n                                      to: settings._week100start,\n                                      dailymax: settings.dailymax,\n                                      weeklyOverTimeStartsFrom: settings._week50start,\n                                      multiplier: settings._week50multiplier,\n                                      saldotype: settings._week50saldotype,\n                                  },\n                              },\n                              {\n                                  name: '_week100',\n                                  values: {\n                                      from: settings._week100start,\n                                      dailymax: settings.dailymax,\n                                      weeklyOverTimeStartsFrom: settings._week50start,\n                                      multiplier: settings._week100multiplier,\n                                      saldotype: settings._week100saldotype,\n                                  },\n                              },\n                          ];\n                      }\n                    : function (settings) {\n                          return [\n                              {\n                                  name: '_week50',\n                                  values: {\n                                      from: settings._week50start,\n                                      to: settings._week100start,\n                                      multiplier: settings._week50multiplier,\n                                      saldotype: settings._week50saldotype,\n                                  },\n                              },\n                              {\n                                  name: '_week100',\n                                  values: {\n                                      from: settings._week100start,\n                                      multiplier: settings._week100multiplier,\n                                      saldotype: settings._week100saldotype,\n                                  },\n                              },\n                          ];\n                      },\n                rule_parser() {\n                    return useNewOvertimeSettings\n                        ? {\n                              _week50start: '_week50.values.from',\n                              _week100start: '_week100.values.from',\n                              dailymax: '_week100.values.dailymax',\n                              weeklyOverTimeStartsFrom: '_week50.values.from',\n                              _week50multiplier: '_week50.values.multiplier',\n                              _week100multiplier: '_week100.values.multiplier',\n                              _week50saldotype: '_week50.values.saldotype',\n                              _week100saldotype: '_week100.values.saldotype',\n                          }\n                        : {\n                              _week50start: '_week50.values.from',\n                              _week100start: '_week100.values.from',\n                              _week50multiplier: '_week50.values.multiplier',\n                              _week100multiplier: '_week100.values.multiplier',\n                              _week50saldotype: '_week50.values.saldotype',\n                              _week100saldotype: '_week100.values.saldotype',\n                          };\n                },\n            },\n            extrahours_overtime: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.extrahours',\n                in_use: false,\n\n                settings: useNewOvertimeSettings\n                    ? {\n                          _extrahours_start: 7.5,\n                          _extrahours_end: 8,\n                          _extrahours_week_max: 2.5,\n                          multiplier: 1,\n                          saldotype: false,\n                      }\n                    : {\n                          _extrahours_start: 7.5,\n                          _extrahours_end: 8,\n                          multiplier: 1,\n                          saldotype: false,\n                      },\n\n                product: 'overtime_extrahours',\n                productsaldotype: 'overtime_extrahours_saldo',\n                rule_creator: useNewOvertimeSettings\n                    ? function (settings) {\n                          return [\n                              {\n                                  name: '_extrahours',\n                                  values: {\n                                      from: settings._extrahours_start,\n                                      to: settings._extrahours_end,\n                                      week_max: settings._extrahours_week_max,\n                                      multiplier: settings.multiplier,\n                                      saldotype: settings.saldotype,\n                                  },\n                              },\n                          ];\n                      }\n                    : function (settings) {\n                          return [\n                              {\n                                  name: '_extrahours',\n                                  values: {\n                                      from: settings._extrahours_start,\n                                      to: settings._extrahours_end,\n                                      multiplier: settings.multiplier,\n                                      saldotype: settings.saldotype,\n                                  },\n                              },\n                          ];\n                      },\n                rule_parser() {\n                    return useNewOvertimeSettings\n                        ? {\n                              _extrahours_start: '_extrahours.values.from',\n                              _extrahours_end: '_extrahours.values.to',\n                              _extrahours_week_max: '_extrahours.values.week_max',\n                              multiplier: '_extrahours.values.multiplier',\n                              saldotype: '_extrahours.values.saldotype',\n                          }\n                        : {\n                              _extrahours_start: '_extrahours.values.from',\n                              _extrahours_end: '_extrahours.values.to',\n                              multiplier: '_extrahours.values.multiplier',\n                              saldotype: '_extrahours.values.saldotype',\n                          };\n                },\n            },\n            time_based: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.time_based',\n                in_use: false,\n                settings: {\n                    _evening_start: '18:00',\n                    _evening_end: '22:00',\n                    _night_start: '22:00',\n                    _night_end: '06:00',\n                    _eveningmultiplier: null,\n                    _nightmultiplier: null,\n                    _eveningsaldotype: false,\n                    _nightsaldotype: false,\n                },\n                product: 'overtime_time_based',\n                product_eveningsaldotype: 'overtime_time_based_evening_saldo',\n                product_nightsaldotype: 'overtime_time_based_night_saldo',\n                rule_creator(settings) {\n                    return [\n                        {\n                            name: '_evening',\n                            values: {\n                                from: settings._evening_start,\n                                to: settings._evening_end,\n                                do_not_calculate_if_overtime: settings._evening_checked,\n                                calculate_compensations_always:\n                                    settings._evening_calculate_compensations_always,\n                                multiplier: settings._eveningmultiplier,\n                                saldotype: settings._eveningsaldotype,\n                            },\n                        },\n                        {\n                            name: '_night',\n                            values: {\n                                from: settings._night_start,\n                                to: settings._night_end,\n                                do_not_calculate_if_overtime: settings._night_checked,\n                                calculate_compensations_always:\n                                    settings._night_calculate_compensations_always,\n                                multiplier: settings._nightmultiplier,\n                                saldotype: settings._nightsaldotype,\n                            },\n                        },\n                    ];\n                },\n                rule_parser() {\n                    return {\n                        _evening_start: '_evening.values.from',\n                        _evening_end: '_evening.values.to',\n                        _evening_checked: '_evening.values.do_not_calculate_if_overtime',\n                        _evening_calculate_compensations_always:\n                            '_evening.values.calculate_compensations_always',\n                        _night_start: '_night.values.from',\n                        _night_end: '_night.values.to',\n                        _night_checked: '_night.values.do_not_calculate_if_overtime',\n                        _night_calculate_compensations_always:\n                            '_night.values.calculate_compensations_always',\n                        //_calculate_compensations_always: '_night.values.calculate_compensations_always'\n                        _eveningmultiplier: '_evening.values.multiplier',\n                        _nightmultiplier: '_night.values.multiplier',\n                        _eveningsaldotype: '_evening.values.saldotype',\n                        _nightsaldotype: '_night.values.saldotype',\n                    };\n                },\n            },\n            time_based_se: {\n                needs: ['serviceCountry@se'],\n                name: 'overtime.time_based',\n                in_use: false,\n                settings: {},\n                product: 'overtime_time_based_se',\n                alwaysOn: true,\n                rule_creator() {\n                    return [];\n                },\n                rule_parser() {\n                    return {};\n                },\n            },\n            overtime_period: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.period_overtime',\n                in_use: false,\n                settings: {\n                    _periodstart: '2020-01-01',\n                    _periodlength: 14,\n                    _period50calculate_after_hours: 80,\n                    _period100calculate_after_hours: 120,\n                    _period50multiplier: 0.5,\n                    _period100multiplier: 1,\n                    _period50saldotype: false,\n                    _period100saldotype: false,\n                },\n                product: 'overtime_period',\n                product_period50saldotype: 'overtime_period_50_saldo',\n                product_period100saldotype: 'overtime_period_100_saldo',\n                rule_creator(settings) {\n                    return [\n                        {\n                            name: '_period50',\n                            values: {\n                                from: settings._periodstart,\n                                to: settings._period100calculate_after_hours,\n                                period_length: settings._periodlength,\n                                calculate_after_hours: settings._period50calculate_after_hours,\n                                multiplier: settings._period50multiplier,\n                                saldotype: settings._period50saldotype,\n                            },\n                        },\n                        {\n                            name: '_period100',\n                            values: {\n                                from: settings._periodstart,\n                                period_length: settings._periodlength,\n                                calculate_after_hours: settings._period100calculate_after_hours,\n                                multiplier: settings._period100multiplier,\n                                saldotype: settings._period100saldotype,\n                            },\n                        },\n                    ];\n                },\n                rule_parser() {\n                    return {\n                        _periodstart: '_period50.values.from',\n                        _periodlength: '_period50.values.period_length',\n                        _period50calculate_after_hours: '_period50.values.calculate_after_hours',\n                        _period100calculate_after_hours: '_period100.values.calculate_after_hours',\n                        _period50multiplier: '_period50.values._period50multiplier',\n                        _period100multiplier: '_period100.values._period100multiplier',\n                        _period50saldotype: '_period50.values.saldotype',\n                        _period100saldotype: '_period100.values.saldotype',\n                    };\n                },\n            },\n            overtime_splitted: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.split_overtimehours',\n                in_use: false,\n                settings: {\n                    multiplier: 1,\n                    saldotype: false,\n                },\n                product: 'overtime_splitted',\n                productsaldotype: 'overtime_splitted_saldo',\n                rule_creator(settings) {\n                    return [\n                        {\n                            name: '_overtimehours',\n                            values: {\n                                multiplier: settings.multiplier,\n                                saldotype: settings.saldotype,\n                            },\n                        },\n                        { name: '_basichours', values: {} },\n                    ];\n                },\n                rule_parser() {\n                    return {\n                        multiplier: '_overtimehours.values.multiplier',\n                        saldotype: '_overtimehours.values.saldotype',\n                    };\n                },\n            },\n        });\n        set(this, '_overtime_types', _overtime_types);\n\n        set(this, 'days', [\n            { id: 'mo', name: get(this, 'intl').t('workday.calendar.week.monday') },\n            { id: 'tu', name: get(this, 'intl').t('workday.calendar.week.tuesday') },\n            { id: 'we', name: get(this, 'intl').t('workday.calendar.week.wednesday') },\n            { id: 'th', name: get(this, 'intl').t('workday.calendar.week.thursday') },\n            { id: 'fr', name: get(this, 'intl').t('workday.calendar.week.friday') },\n            { id: 'sa', name: get(this, 'intl').t('workday.calendar.week.saturday') },\n            { id: 'su', name: get(this, 'intl').t('workday.calendar.week.sunday') },\n        ]);\n\n        set(this, 'period_lengths', [\n            { id: '7', name: '1 ' + get(this, 'intl').t('workday.calendar.week') },\n            { id: '14', name: '2 ' + get(this, 'intl').t('workday.calendar.week') },\n            { id: '21', name: '3 ' + get(this, 'intl').t('workday.calendar.week') },\n            { id: '28', name: '4 ' + get(this, 'intl').t('workday.calendar.week') },\n            { id: '35', name: '5 ' + get(this, 'intl').t('workday.calendar.week') },\n            { id: '42', name: '6 ' + get(this, 'intl').t('workday.calendar.week') },\n        ]);\n    },\n\n    async didReceiveAttrs() {\n        set(this, 'fieldsToBeRemoved', []);\n        set(this, 'loadingData', true);\n\n        //if (get(this,'overtime_types.time_based.settings._evening_start'))\n        if (get(this, 'customrules')) {\n            await this.setRules(this.parseIfString(get(this, 'customrules')));\n        } else {\n            await this.getGeneralRules();\n        }\n\n        this.setAllSettings();\n\n        set(this, '_saturdayEnabled', get(this, 'customDayBased_saturday').length > 0);\n        set(this, '_sundayEnabled', get(this, 'customDayBased_sunday').length > 0);\n\n        set(this, 'loadingData', false);\n\n        if (get(this, 'overtime_types.time_based.in_use')) {\n            if (\n                get(this, 'overtime_types.time_based.settings._evening_start') == '' &&\n                get(this, 'overtime_types.time_based.settings._evening_end') == ''\n            ) {\n                set(this, 'eveningEnabled', false);\n            } else {\n                set(this, 'eveningEnabled', true);\n            }\n\n            if (\n                get(this, 'overtime_types.time_based.settings._night_start') == '' &&\n                get(this, 'overtime_types.time_based.settings._night_end') == ''\n            ) {\n                set(this, 'nightEnabled', false);\n            } else {\n                set(this, 'nightEnabled', true);\n            }\n        } else {\n            set(this, 'nightEnabled', false);\n            set(this, 'eveningEnabled', false);\n        }\n    },\n\n    //_100start: get rules.findBy('name', '_100'), 'values.from'\n\n    actions: {\n        toggleWeekend(day, bool) {\n            if (!bool) {\n                set(\n                    this,\n                    'customDayBased',\n                    get(this, 'customDayBased').filter((el) => el.name !== day),\n                );\n            } else {\n                this['add' + day]();\n            }\n\n            set(this, day + 'Enabled', bool);\n            return true;\n        },\n\n        toggleCompCheck(rulename, value) {\n            if (rulename) {\n                if (value) {\n                    set(this, rulename, false);\n                } else {\n                    set(this, rulename, true);\n                }\n            } else {\n                if (value) {\n                    set(value, 'checked', false);\n                } else {\n                    set(value, 'checked', true);\n                }\n            }\n        },\n        toggleCustomCompCheck(row, value) {\n            if (value) {\n                set(row, 'checked', false);\n            } else {\n                set(row, 'checked', true);\n            }\n        },\n        checkValues(value1, value2) {\n            if (value1.toString() === value2.toString()) {\n                set(this, 'disabled', true);\n            } else {\n                set(this, 'disabled', false);\n            }\n        },\n\n        addTimeBased() {\n            get(this, 'customTimeBased').pushObject({});\n        },\n\n        addDayBased() {\n            get(this, 'customDayBased').pushObject({});\n        },\n\n        removeCustomTimeBased(row) {\n            if (get(row, 'name') && this.onlyOneRuleForField(get(row, 'name'), 'customTimeBased')) {\n                get(this, 'fieldsToBeRemoved').push(get(row, 'name'));\n                if (row.saldotype) this.fieldsToBeRemoved.push(row.name + '_saldo');\n            }\n            get(this, 'customTimeBased').removeObject(row);\n            set(this, 'validationErrors', false);\n        },\n\n        removeCustomDayBased(row) {\n            if (get(row, 'name') && this.onlyOneRuleForField(get(row, 'name'), 'customDayBased')) {\n                get(this, 'fieldsToBeRemoved').push(get(row, 'name'));\n                if (row.saldotype) this.fieldsToBeRemoved.push(row.name + '_saldo');\n            }\n            get(this, 'customDayBased').removeObject(row);\n            set(this, 'validationErrors', false);\n        },\n\n        async createAndSaveRules() {\n            set(this, 'validationErrors', 0);\n            set(this, 'validationErrorTexts', []);\n            //console.info \"types\",Object.keys(@get('overtime_types')), @get 'overtime_types'\n\n            let type;\n            const rules = [];\n            const needed_products = [];\n            const unneeded_products = [];\n            const overtime_types = get(this, 'overtime_types');\n\n            const wtypes = [];\n            let wtypesString = '';\n            if (get(this, 'salarytype')) {\n                for (let wt of Array.from(get(this, 'salarytype'))) {\n                    wtypes.push(wt.id);\n                }\n                wtypesString = wtypes.join();\n            }\n\n            for (type of Array.from(Object.keys(overtime_types))) {\n                const overtime_type = overtime_types[type];\n\n                if (overtime_type.in_use) {\n                    rules.pushObjects(overtime_type.rule_creator(overtime_type.settings));\n                    needed_products.pushObject(overtime_type.product);\n                } else {\n                    unneeded_products.pushObject(overtime_type.product);\n                }\n\n                /*\n                 * Validate overtime settings\n                 */\n                if (\n                    this.Collector.testNeeds(['products.salarytype_v2||flag.new-overtime-settings'])\n                ) {\n                    if (type === 'weekly_overtime' && overtime_type.in_use) {\n                        if (\n                            parseFloat(overtime_type.settings._week50start) >\n                            parseFloat(overtime_type.settings._week100start)\n                        ) {\n                            this.incrementProperty('validationErrors');\n                            this.validationErrorTexts.push(\n                                'overtime.weekly_overtime.validation_error',\n                            );\n                        }\n                    }\n\n                    if (type === 'daily_overtime' && overtime_type.in_use) {\n                        if (\n                            parseFloat(overtime_type.settings._50start) >\n                            parseFloat(overtime_type.settings._100start)\n                        ) {\n                            this.incrementProperty('validationErrors');\n                            this.validationErrorTexts.push(\n                                'overtime.daily_overtime.validation_error',\n                            );\n                        }\n                    }\n\n                    if (type === 'extrahours_overtime' && overtime_type.in_use) {\n                        if (\n                            parseFloat(overtime_type.settings._extrahours_start) >\n                            parseFloat(overtime_type.settings._extrahours_end)\n                        ) {\n                            this.incrementProperty('validationErrors');\n                            this.validationErrorTexts.push(\n                                'overtime.extrahours_overtime.validation_error',\n                            );\n                        }\n                    }\n\n                    if (type === 'overtime_period' && overtime_type.in_use) {\n                        if (\n                            parseFloat(overtime_type.settings._period50calculate_after_hours) >\n                            parseFloat(overtime_type.settings._period100calculate_after_hours)\n                        ) {\n                            this.incrementProperty('validationErrors');\n                            this.validationErrorTexts.push(\n                                'overtime.overtime_period.validation_error',\n                            );\n                        }\n                    }\n                }\n                let saldoProductsNeeds = this.checkSaldoProductsNeeds(overtime_type);\n\n                if (saldoProductsNeeds.needed)\n                    saldoProductsNeeds.needed.map((product) => needed_products.pushObject(product));\n                if (saldoProductsNeeds.unneeded)\n                    saldoProductsNeeds.unneeded.map((product) =>\n                        unneeded_products.pushObject(product),\n                    );\n                /*\n                if ((overtime_type.product === \"overtime_time_based\") && overtime_type.in_use) {\n                    rules.forEach(rule => {\n                        if ((rule.values.from === \"\") && (rule.values.to === \"\")) {\n                            rules.removeObject(rule);\n                        }\n                    });\n                }*/\n            }\n\n            for (let rule of Array.from(rules)) {\n                rule['values']['salarytypes'] = wtypesString;\n            }\n\n            const fields = {};\n\n            get(this, 'customTimeBased').forEach((row) => {\n                row = this.validateInputs(row, 'time');\n                if (!get(row, 'name') && get(row, 'text')) {\n                    const sameField = this.searchFieldWithName(fields, get(row, 'text'));\n                    if (sameField) {\n                        set(row, 'name', sameField);\n                    } else {\n                        set(\n                            row,\n                            'name',\n                            '_' +\n                                get(this, 'tools').computerizeHumanInput(get(row, 'text')) +\n                                Math.floor(1000 + Math.random() * 9000),\n                        );\n                    }\n                }\n\n                const field = get(row, 'name');\n\n                fields['worktime.' + field] = { type: 'hours', name: get(row, 'text') };\n                fields['worktime.' + field + '.@hide'] = 'true';\n\n                if (row.saldotype) {\n                    fields['worktime.' + field + '_saldo'] = {\n                        type: 'hours',\n                        name: get(row, 'text') + ' (saldo)',\n                    };\n                    fields['worktime.' + field + '_saldo' + '.@hide'] = 'true';\n                }\n                rules.pushObject({\n                    name: 'hoursbetween',\n                    field,\n                    text: get(row, 'text'),\n                    values: {\n                        from: get(row, 'start'),\n                        to: get(row, 'end'),\n                        mid_week_holiday:\n                            get(row, 'mid_week_holiday') === undefined\n                            ? false\n                            : get(row, 'mid_week_holiday'),\n                        do_not_calculate_if_overtime:\n                            get(row, 'checked') === undefined ? false : get(row, 'checked'),\n                        calculate_compensations_always:\n                            get(row, 'calculate_compensations_always') === undefined\n                                ? false\n                                : get(row, 'calculate_compensations_always'),\n                        saldotype: row.saldotype === undefined ? false : row.saldotype,\n                        multiplier: row.multiplier === undefined ? null : row.multiplier,\n                    },\n                });\n            });\n\n            get(this, 'customDayBased').forEach((row) => {\n                row = this.validateInputs(row, 'day');\n                if (!get(row, 'name') && get(row, 'text')) {\n                    const sameField = this.searchFieldWithName(fields, get(row, 'text'));\n                    if (sameField) {\n                        set(row, 'name', sameField);\n                    } else {\n                        set(\n                            row,\n                            'name',\n                            '_' +\n                                get(this, 'tools').computerizeHumanInput(get(row, 'text')) +\n                                Math.floor(1000 + Math.random() * 9000),\n                        );\n                    }\n                }\n\n                const field = get(row, 'name');\n\n                fields['worktime.' + field] = { type: 'hours', name: get(row, 'text') };\n                fields['worktime.' + field + '.@hide'] = 'true';\n\n                if (row.saldotype) {\n                    fields['worktime.' + field + '_saldo'] = {\n                        type: 'hours',\n                        name: get(row, 'text') + ' (saldo)',\n                    };\n                    fields['worktime.' + field + '_saldo' + '.@hide'] = 'true';\n                }\n                let customRule = {\n                    name: 'custom_dayrule',\n                    field,\n                    text: get(row, 'text'),\n                    values: {\n                        from: get(row, 'start'),\n                        to: get(row, 'end'),\n                        days: get(row, 'start_day') + '-' + get(row, 'end_day'),\n                        mid_week_holiday:\n                            get(row, 'mid_week_holiday') === undefined\n                                ? false\n                                : get(row, 'mid_week_holiday'),\n                        do_not_calculate_if_overtime:\n                            get(row, 'checked') === undefined ? false : get(row, 'checked'),\n                        //calculate_compensations_always: get(this, 'overtime_types.time_based.settings._calculate_compensations_always') === undefined ? 'false' : get(this, 'overtime_types.time_based.settings._calculate_compensations_always')\n                        calculate_compensations_always:\n                            get(row, 'calculate_compensations_always') === undefined\n                                ? false\n                                : get(row, 'calculate_compensations_always'),\n                        saldotype: row.saldotype === undefined ? false : row.saldotype,\n                        multiplier: row.multiplier === undefined ? null : row.multiplier,\n                    },\n                };\n                if (wtypesString) customRule['values']['salarytypes'] = wtypesString;\n\n                rules.pushObject(customRule);\n            });\n            let foundRule = null;\n            if (!get(this, 'eveningEnabled')) {\n                foundRule = rules.findBy('name', '_evening');\n                if (foundRule) {\n                    foundRule.values.from = '';\n                    foundRule.values.to = '';\n                }\n            }\n            if (!get(this, 'nightEnabled')) {\n                foundRule = rules.findBy('name', '_night');\n                if (foundRule) {\n                    foundRule.values.from = '';\n                    foundRule.values.to = '';\n                }\n            }\n\n            get(this, 'fieldsToBeRemoved').forEach((item) => {\n                fields['!worktime.' + item] = true;\n            });\n            set(this, 'fieldsToBeRemoved', []);\n\n            if (get(this, 'validationErrors') > 0) {\n                if (this.validationErrorTexts.length) {\n                    get(this, 'notifications').error(\n                        this.validationErrorTexts.map((el) => get(this, 'intl').t(el)).join(','),\n                        {\n                            autoClear: true,\n                        },\n                    );\n                }\n                return;\n            }\n\n            if (get(this, 'customrules')) {\n                this.save(rules);\n            } else {\n                this.saveGeneralSettings(fields, rules);\n            }\n\n            // add overtime-setting also to needed_products (no worries, we check later if product.overtime is found already from products so this won't save duplicates!)\n            if (needed_products.length > 0 || rules.length > 0) {\n                needed_products.pushObject('overtime');\n            } else {\n                unneeded_products.pushObject('overtime');\n            }\n\n            this.updateNeededProducts(needed_products, unneeded_products);\n        },\n        validateInputsAction(row, type) {\n            this.validateInputs(row, type);\n        },\n        disableComp(type) {\n            this.toggleProperty(type + 'Enabled');\n            if (this.nightEnabled || this.eveningEnabled) {\n                set(this, 'overtime_types.time_based.in_use', true);\n            } else if (!this.nightEnabled && !this.eveningEnabled) {\n                set(this, 'overtime_types.time_based.in_use', false);\n            }\n\n            // remove validation-errors if turned off\n            if (!get(this, type + 'Enabled')) {\n                let settings = get(this, 'overtime_types.time_based.settings');\n\n                if (settings['_' + type + '_start_validation_error']) {\n                    delete settings['_' + type + '_start_validation_error'];\n                    this.decrementProperty('validationErrors');\n                }\n                if (settings['_' + type + '_end_validation_error']) {\n                    delete settings['_' + type + '_end_validation_error'];\n                    this.decrementProperty('validationErrors');\n                }\n            } else {\n                this.validateInputs(get(this, 'overtime_types.time_based.settings'), type);\n            }\n        },\n    },\n\n    async setAllSettings() {\n        this.allSettings = await get(this, 'Collector').ttapi({\n            url: 'overtime/allSettings',\n            method: 'get',\n        });\n    },\n\n    add_saturday() {\n        get(this, 'customDayBased').pushObject({\n            template: true,\n            name: '_saturday',\n            text: this.intl.t('overtime.time_based.saturday'),\n            start: '00:00',\n            end: '00:00',\n            start_day: 'sa',\n            end_day: 'su',\n            checked: false,\n            calculate_compensations_always: 'false',\n            saldotype: false,\n            multiplier: null,\n        });\n    },\n    add_sunday() {\n        get(this, 'customDayBased').pushObject({\n            template: true,\n            name: '_sunday',\n            text: this.intl.t('overtime.time_based.sunday'),\n            start: '00:00',\n            end: '00:00',\n            start_day: 'su',\n            end_day: 'mo',\n            checked: false,\n            mid_week_holiday: 'false',\n            calculate_compensations_always: 'false',\n            saldotype: false,\n            multiplier: null,\n        });\n    },\n\n    validateInputs(row, /*validationErrors,*/ type) {\n        //let currentValidationErrors = false;\n        let fields = [];\n        if (type == 'day') {\n            fields = ['text', 'start_day', 'end_day', 'start', 'end'];\n        } else if (type == 'evening') {\n            fields = ['_evening_start', '_evening_end'];\n        } else if (type == 'night') {\n            fields = ['_night_start', '_night_end'];\n        } else {\n            fields = ['text', 'start', 'end'];\n        }\n        for (var field of fields) {\n            if (!get(row, field)) {\n                if (!get(row, field + '_validation_error')) {\n                    this.incrementProperty('validationErrors');\n                    set(row, field + '_validation_error', true);\n                }\n            } else if (get(row, field)) {\n                if (get(row, field + '_validation_error')) {\n                    this.decrementProperty('validationErrors');\n                    set(row, field + '_validation_error', false);\n                }\n            }\n        }\n        return row;\n    },\n    searchFieldWithName(fields, name) {\n        const fieldKeys = Object.keys(fields);\n\n        let found = null;\n        fieldKeys.forEach((key) => {\n            if (fields[key].name === name) {\n                return (found = key);\n            }\n        });\n\n        if (found) {\n            return found.split('.')[1];\n        } else {\n            return null;\n        }\n    },\n\n    onlyOneRuleForField(field) {\n        if (!this.allSettings.filter((setting) => setting.field === field).length) return true;\n        return this.allSettings.filter((setting) => setting.field === field).length < 2;\n    },\n    async saveGeneralSettings(fields, rules) {\n        set(this, 'isLoading', true);\n\n        await get(this, 'servicehandler').manipulateService(fields);\n\n        const data = { rules: JSON.stringify(rules) };\n\n        if (get(this, 'worktimegroup')) {\n            data.worktimegroup = get(this, 'worktimegroup');\n        }\n\n        await get(this, 'Collector')\n            .ttapi({\n                url: 'overtime/settings',\n                method: 'post',\n                data,\n            })\n            .then(() => {\n                get(this, 'initapp').clearInit();\n                get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n                    autoClear: true,\n                });\n                set(this, 'isLoading', false);\n            });\n        this.refreshNeeded();\n        this.setAllSettings();\n    },\n    turnOn(type) {\n        set(this, 'overtime_types.' + type + '.in_use', true);\n    },\n\n    turnOff(type) {\n        set(this, 'overtime_types.' + type + '.in_use', false);\n    },\n\n    updateNeededProducts(needed_products, unneeded_products) {\n        const c = get(this, 'Collector');\n\n        needed_products.forEach((needed_product) => {\n            const worktimegroup = get(this, 'worktimegroup') ? get(this, 'worktimegroup') : null;\n            c.addProduct(needed_product, worktimegroup);\n            this.refreshNeeded;\n        });\n\n        unneeded_products.forEach((unneeded_product) => {\n            const worktimegroup = get(this, 'worktimegroup') ? get(this, 'worktimegroup') : null;\n            c.removeProduct(unneeded_product, worktimegroup);\n            this.refreshNeeded;\n        });\n    },\n    parseIfString(mixed) {\n        if (typeOf(mixed) === 'string') {\n            return JSON.parse(mixed);\n        }\n        return mixed;\n    },\n\n    async getGeneralRules() {\n        const data = {};\n\n        if (get(this, 'worktimegroup')) {\n            data.worktimegroup = get(this, 'worktimegroup');\n        }\n\n        let rules = await get(this, 'Collector').ttapi({\n            url:\n                'overtime/settings' +\n                (this.flags.test('new-overtime-settings') ? '?migrate=true' : ''),\n            method: 'get',\n            data,\n        });\n        var i, len, rule, search_rule, stypes, types_arr;\n\n        if (\n            get(this, 'Collector').testNeeds(['products.salarytype||products.selectablesalarytype'])\n        ) {\n            search_rule = false;\n            for (i = 0, len = rules.length; i < len; i++) {\n                rule = rules[i];\n                if (rule.values != null && rule.values.salarytypes) {\n                    search_rule = rule;\n                }\n            }\n            if (search_rule) {\n                types_arr = search_rule.values.salarytypes.split(',');\n                stypes = [];\n                get(this, 'store')\n                    .query('salarytype', {\n                        id: search_rule.values.salarytypes,\n                    })\n                    .then(\n                        (function (_this) {\n                            return function (salarytypes) {\n                                return salarytypes.forEach(function (stype) {\n                                    if (types_arr.indexOf(get(stype, 'id')) > -1) {\n                                        stypes.push({\n                                            id: get(stype, 'id'),\n                                            text: get(stype, 'name'),\n                                        });\n                                    }\n                                    return set(_this, 'salarytype', stypes);\n                                });\n                            };\n                        })(this),\n                    );\n            } else {\n                set(this, 'salarytype', null);\n            }\n        }\n        this.setRules(rules);\n    },\n\n    setRules(rules) {\n        set(this, 'customTimeBased', A([]));\n        set(this, 'customDayBased', A([]));\n        let overtime_types = get(this, 'overtime_types');\n        for (var type of Object.keys(overtime_types)) {\n            if (overtime_types[type].alwaysOn === true) {\n                this.turnOn(type);\n            } else {\n                this.setValuesForOvertimeType(type, rules, overtime_types[type].rule_parser(rules));\n            }\n        }\n        this.getCustomFields('hoursbetween', rules);\n        this.getCustomDayFields('custom_dayrule', rules);\n    },\n\n    getCustomFields(type, rules) {\n        return rules.filterBy('name', type).forEach((item) => {\n            get(this, 'customTimeBased').pushObject({\n                name: get(item, 'field'),\n                text: get(item, 'text'),\n                start: get(item, 'values.from'),\n                end: get(item, 'values.to'),\n                checked:\n                    get(item, 'values.do_not_calculate_if_overtime') === undefined ||\n                    get(item, 'values.do_not_calculate_if_overtime') === true\n                        ? true\n                        : false,\n                mid_week_holiday:\n                    get(item, 'values.mid_week_holiday') === undefined\n                        ? false\n                        : get(item, 'values.mid_week_holiday'),\n                calculate_compensations_always: get(item, 'values.calculate_compensations_always'),\n                saldotype: item.values.saldotype === undefined ? false : item.values.saldotype,\n                multiplier: item.values.multiplier === undefined ? 1 : item.values.multiplier,\n            });\n        });\n    },\n\n    getCustomDayFields(type, rules) {\n        return rules.filterBy('name', type).forEach((item) => {\n            const daysArr = get(item, 'values.days').split('-');\n            get(this, 'customDayBased').pushObject({\n                name: get(item, 'field'),\n                text: get(item, 'text'),\n                start: get(item, 'values.from'),\n                end: get(item, 'values.to'),\n                start_day: daysArr[0],\n                end_day: daysArr[1],\n                checked:\n                    get(item, 'values.do_not_calculate_if_overtime') === undefined ||\n                    get(item, 'values.do_not_calculate_if_overtime') === true\n                        ? true\n                        : false,\n                calculate_compensations_always: get(item, 'values.calculate_compensations_always'),\n                mid_week_holiday: get(item, 'values.mid_week_holiday'),\n                saldotype: item.values.saldotype === undefined ? false : item.values.saldotype,\n                multiplier: item.values.multiplier === undefined ? 1 : item.values.multiplier,\n            });\n        });\n    },\n    //checked: if get(item, 'values.do_not_calculate_if_overtime') == undefined || get(item, 'values.do_not_calculate_if_overtime') == true then true else false\n\n    setValuesForOvertimeType(type, rules, paths) {\n        const values = Object.keys(paths);\n\n        const hasSplittedOvertimeRule = rules.find((rule) => rule.name === '_basichours')\n            ? true\n            : false;\n        set(this, 'overtime_types.overtime_splitted.in_use', hasSplittedOvertimeRule);\n\n        //let time_based_on = false;\n        const timeBasedNoRules = [];\n        for (let value_name of Array.from(values)) {\n            const paths_splitted = paths[value_name].split('.');\n\n            const rule = rules.findBy('name', paths_splitted[0]);\n            if (!rule) {\n                this.turnOff(type);\n                if (type === 'time_based') {\n                    timeBasedNoRules.push(value_name);\n                }\n                continue;\n            }\n\n            const path = paths_splitted.slice(1).join('.');\n            const value = get(rule, path);\n\n            if (value || (!value && type == 'time_based')) {\n                this.turnOn(type);\n                set(this, 'overtime_types.' + type + '.settings.' + value_name, value);\n\n                //if (type === 'time_based') {\n                //    time_based_on = true;\n                //}\n            }\n        }\n        // special check for checkboxes (because old customers do not have these checkboxes saved)\n        //if value_name.indexOf(\"_checked\") >= 0 && value == undefined\n        //    @set 'overtime_types.' + type + '.settings.' + value_name, true\n        //else if value_name.indexOf(\"_checked\") >= 0 && value == false\n        //    @set 'overtime_types.' + type + '.settings.' + value_name, false\n        /*\n        if (time_based_on) {\n            console.log(\"set time on\")\n            this.turnOn('time_based');\n            if (timeBasedNoRules.length > 0) {\n                timeBasedNoRules.forEach(item => {\n                    set(this, 'overtime_types.time_based.settings.' + item, null);\n                });\n            }\n        }*/\n    },\n\n    checkSaldoProductsNeeds(overtime_type) {\n        let needed = [];\n        let unneeded = [];\n        for (const [name, value] of Object.entries(overtime_type.settings)) {\n            if (name.includes('saldotype')) {\n                if (!overtime_type.in_use) {\n                    unneeded.push(get(overtime_type, `product${name}`));\n                } else {\n                    value\n                        ? needed.push(get(overtime_type, `product${name}`))\n                        : unneeded.push(get(overtime_type, `product${name}`));\n                }\n            }\n        }\n        return { needed, unneeded };\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"H5E7hBT9\",\"block\":\"{\\\"symbols\\\":[\\\"salarytype\\\",\\\"salarytype\\\",\\\"dayRow\\\",\\\"dayRow\\\",\\\"dayRow\\\",\\\"row\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loadingData\\\"]]],null,{\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"settingType\\\"]],\\\"compensations\\\"],null]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"day-based-comps\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.time_based.title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-title\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"eveningEnabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"disableComp\\\",\\\"evening\\\"],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"overtime.time_based.evening\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"eveningEnabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"key-up\\\",\\\"value\\\"],[[28,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_start_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\"]],\\\"evening\\\"],null],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_start\\\"]]]]],false],[0,\\\"\\\\n                        \\\"],[9],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.starts\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"key-up\\\",\\\"value\\\"],[[28,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_end_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\"]],\\\"evening\\\"],null],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_end\\\"]]]]],false],[0,\\\"\\\\n                        \\\"],[9],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.ends\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[28,\\\"not\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_checked\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCompCheck\\\",\\\"overtime_types.time_based.settings._evening_checked\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_checked\\\"]]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                        \\\"],[9],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.accumulates_overtime\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.salarytype_v2\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_calculate_compensations_always\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_calculate_compensations_always\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.time_based.calculate_always\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input saldotype-input\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"eveningEnabled\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"eveningEnabled\\\"]],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_eveningsaldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_eveningsaldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_eveningsaldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_eveningmultiplier\\\"]]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.time_based.evening_saldo\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-title\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"nightEnabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"disableComp\\\",\\\"night\\\"],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"overtime.time_based.night\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"nightEnabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"key-up\\\",\\\"value\\\"],[[28,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_start_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\"]],\\\"night\\\"],null],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_start\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.starts\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"key-up\\\",\\\"value\\\"],[[28,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_end_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\"]],\\\"night\\\"],null],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_end\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.ends\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[28,\\\"not\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_checked\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCompCheck\\\",\\\"overtime_types.time_based.settings._night_checked\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_checked\\\"]]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.accumulates_overtime\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.salarytype_v2\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_calculate_compensations_always\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_calculate_compensations_always\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.time_based.calculate_always\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input saldotype-input\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"nightEnabled\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"nightEnabled\\\"]],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_nightsaldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_nightsaldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_nightsaldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_nightmultiplier\\\"]]]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.time_based.night_saldo\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customTimeBased\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-title\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[[28,\\\"if\\\",[[23,6,[\\\"text_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],[23,6,[\\\"text\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,6,[]],\\\"time\\\"],null]]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"remove-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeCustomTimeBased\\\",[23,6,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Delete\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,6,[]],\\\"time\\\"],null],[28,\\\"if\\\",[[23,6,[\\\"start_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[23,6,[\\\"start\\\"]]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.starts\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,6,[]],\\\"time\\\"],null],[28,\\\"if\\\",[[23,6,[\\\"end_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[23,6,[\\\"end\\\"]]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.ends\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[28,\\\"not\\\",[[23,6,[\\\"checked\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCustomCompCheck\\\",[23,6,[]],[23,6,[\\\"checked\\\"]]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.accumulates_overtime\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.salarytype_v2\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[23,6,[\\\"calculate_compensations_always\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,6,[\\\"calculate_compensations_always\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.time_based.calculate_always\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input saldotype-input\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[28,\\\"and\\\",[[28,\\\"not\\\",[[24,[\\\"disabled\\\"]]],null],[23,6,[\\\"saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,6,[\\\"saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[23,6,[\\\"saldotype\\\"]],true],null],[23,6,[\\\"multiplier\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.time_based.saldotype\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addTimeBased\\\"]],[8],[1,[28,\\\"t\\\",[\\\"overtime.add_time_based\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"day-based-comps\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.day_based.title\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"day-based-comps1\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-box\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-title\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"size\\\",\\\"theme\\\",\\\"onToggle\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"_saturdayEnabled\\\"]],\\\"large\\\",\\\"light\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggleWeekend\\\",\\\"_saturday\\\"],null]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"overtime.day_based.saturday\\\"],null],false],[0,\\\"  \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customDayBased_saturday\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,5,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,5,[\\\"start_day_validation_error\\\"]],\\\"validation-error\\\"],null],[24,[\\\"days\\\"]],[23,5,[\\\"start_day\\\"]],[28,\\\"t\\\",[\\\"overtime.day_based.choose_start_day\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"key-up\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,5,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,5,[\\\"start_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[23,5,[\\\"start\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.starts\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,5,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,5,[\\\"end_day_validation_error\\\"]],\\\"validation-error\\\"],null],[24,[\\\"days\\\"]],[23,5,[\\\"end_day\\\"]],[28,\\\"t\\\",[\\\"overtime.day_based.choose_end_day\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"key-up\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,5,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,5,[\\\"end_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[23,5,[\\\"end\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.ends\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[28,\\\"not\\\",[[23,5,[\\\"checked\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCustomCompCheck\\\",[23,5,[]],[23,5,[\\\"checked\\\"]]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mini-div\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.accumulates_overtime\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.salarytype_v2\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[23,5,[\\\"calculate_compensations_always\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,5,[\\\"calculate_compensations_always\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mini-div\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.time_based.calculate_always\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"_saturdayEnabled\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"_saturdayEnabled\\\"]],[23,5,[\\\"saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,5,[\\\"saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[23,5,[\\\"saldotype\\\"]],true],null],[23,5,[\\\"multiplier\\\"]]]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mini-div\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.day_based.saturday_saldo\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[5]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-box\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-title\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"   \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"size\\\",\\\"theme\\\",\\\"onToggle\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"_sundayEnabled\\\"]],\\\"large\\\",\\\"light\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggleWeekend\\\",\\\"_sunday\\\"],null]]]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.day_based.sunday\\\"],null],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customDayBased_sunday\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,4,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,4,[\\\"start_day_validation_error\\\"]],\\\"validation-error\\\"],null],[24,[\\\"days\\\"]],[23,4,[\\\"start_day\\\"]],[28,\\\"t\\\",[\\\"overtime.day_based.choose_start_day\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"key-up\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,4,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,4,[\\\"start_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[23,4,[\\\"start\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.starts\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,4,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,4,[\\\"end_day_validation_error\\\"]],\\\"validation-error\\\"],null],[24,[\\\"days\\\"]],[23,4,[\\\"end_day\\\"]],[28,\\\"t\\\",[\\\"overtime.day_based.choose_end_day\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"key-up\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,4,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,4,[\\\"end_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[23,4,[\\\"end\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.ends\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                            \\\"],[2,\\\" mid_week_holiday toggle \\\"],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[23,4,[\\\"mid_week_holiday\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,4,[\\\"mid_week_holiday\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.calculate_mid_week_holiday_as_sunday\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[28,\\\"not\\\",[[23,4,[\\\"checked\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCustomCompCheck\\\",[23,4,[]],[23,4,[\\\"checked\\\"]]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mini-div\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.accumulates_overtime\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.salarytype_v2\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[23,4,[\\\"calculate_compensations_always\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,4,[\\\"calculate_compensations_always\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mini-div\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.time_based.calculate_always\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"_sundayEnabled\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"_sundayEnabled\\\"]],[23,4,[\\\"saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,4,[\\\"saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[23,4,[\\\"saldotype\\\"]],true],null],[23,4,[\\\"multiplier\\\"]]]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mini-div\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.day_based.sunday_saldo\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customDayBased_normal\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-title\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[[28,\\\"if\\\",[[23,3,[\\\"text_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],[23,3,[\\\"text\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,3,[]],\\\"day\\\"],null]]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"remove-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeCustomDayBased\\\",[23,3,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Delete\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,3,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,3,[\\\"start_day_validation_error\\\"]],\\\"validation-error\\\"],null],[24,[\\\"days\\\"]],[23,3,[\\\"start_day\\\"]],[28,\\\"t\\\",[\\\"overtime.day_based.choose_start_day\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,3,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,3,[\\\"start_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[23,3,[\\\"start\\\"]]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.starts\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,3,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,3,[\\\"end_day_validation_error\\\"]],\\\"validation-error\\\"],null],[24,[\\\"days\\\"]],[23,3,[\\\"end_day\\\"]],[28,\\\"t\\\",[\\\"overtime.day_based.choose_end_day\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,3,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,3,[\\\"end_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[23,3,[\\\"end\\\"]]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.ends\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[28,\\\"not\\\",[[23,3,[\\\"checked\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCustomCompCheck\\\",[23,3,[]],[23,3,[\\\"checked\\\"]]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mini-div\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.accumulates_overtime\\\"],null],false],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.salarytype_v2\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[23,3,[\\\"calculate_compensations_always\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,3,[\\\"calculate_compensations_always\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mini-div\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.time_based.calculate_always\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input saldotype\\\"],[8],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[28,\\\"and\\\",[[28,\\\"not\\\",[[24,[\\\"disabled\\\"]]],null],[23,3,[\\\"saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,3,[\\\"saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[23,3,[\\\"saldotype\\\"]],true],null],[23,3,[\\\"multiplier\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mini-div\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.day_based.saldotype\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addDayBased\\\"]],[8],[1,[28,\\\"t\\\",[\\\"overtime.add_day_based\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.salarytype||products.selectablesalarytype\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"overtime.select_salarytypes\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"overtime.salarytypes_help\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"padded-multiselect\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"salarytypes\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@options\\\",\\\"@selected\\\",\\\"@placeholder\\\",\\\"@onChange\\\",\\\"@noMatchesMessage\\\"],[[23,0,[\\\"salarytypes\\\"]],[23,0,[\\\"salarytype\\\"]],[28,\\\"t\\\",[\\\"overtime.select_salarytypes\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"salarytype\\\"]]],null]],null],[28,\\\"t\\\",[\\\"overtime.no_salarytypes_found\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[23,2,[\\\"text\\\"]],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"settingType\\\"]],\\\"overtime\\\"],null]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-settings-container\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"name\\\"]]],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"disabled\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.error\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"input\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"action\\\",[[23,0,[]],\\\"checkValues\\\",[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_start\\\"]],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_end\\\"]]],null],[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_start\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.start\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"disabled\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.error\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"input\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"action\\\",[[23,0,[]],\\\"checkValues\\\",[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_start\\\"]],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_end\\\"]]],null],[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_end\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.end\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.salarytype_v2||flag.new-overtime-settings\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"disabled\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.error\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_week_max\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.max\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"multiplier\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.extrahours_overtime_saldo\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"in_use\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"in_use\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_settings.split_overtimehours\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"settings\\\",\\\"saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"settings\\\",\\\"saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"settings\\\",\\\"saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"settings\\\",\\\"multiplier\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.overtime_splitted_saldo\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"name\\\"]]],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_50start\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.daily_overtime._50starts\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_100start\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.daily_overtime._100starts\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_50saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_50saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_50saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_50multiplier\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.daily_overtime_50_saldo\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input  \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_100saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_100saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_100saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_100multiplier\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.daily_overtime_100_saldo\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"name\\\"]]],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.salarytype_v2||flag.new-overtime-settings\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week50start\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.weekly_overtime._week50starts\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100start\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.weekly_overtime._week100starts_new\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"dailymax\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.weekly_overtime.dailymax\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week50saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week50saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week50saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week50multiplier\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.weekly_overtime_50_saldo\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100multiplier\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.weekly_overtime_100_saldo\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100start\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.weekly_overtime._week100starts\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week50saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week50saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week50saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week50multiplier\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.weekly_overtime_50_saldo\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100multiplier\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.weekly_overtime_100_saldo\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.period_overtime\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"disabled\\\",\\\"class\\\",\\\"value\\\",\\\"name\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],true],null],\\\"form-control input-lg small-date\\\",[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_periodstart\\\"]],\\\"period_start\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.period_overtime.first_day\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"disabled\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],true],null],[24,[\\\"period_lengths\\\"]],[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_periodlength\\\"]],[28,\\\"t\\\",[\\\"overtime.period_overtime.period_lengths\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.period_overtime.period_length\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"disabled\\\",\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"value\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],true],null],\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period50calculate_after_hours\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.period_overtime.50_overtime\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"disabled\\\",\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"value\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],true],null],\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period100calculate_after_hours\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.period_overtime.100_overtime\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period50saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period50saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period50saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period50multiplier\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.overtime_period_50_saldo\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period100saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period100saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period100saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period100multiplier\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.overtime_period_100_saldo\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.salarytype||products.selectablesalarytype\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"overtime.select_salarytypes\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"overtime.salarytypes_help\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"padded-multiselect\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"salarytypes\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@options\\\",\\\"@selected\\\",\\\"@placeholder\\\",\\\"@onChange\\\",\\\"@noMatchesMessage\\\"],[[23,0,[\\\"salarytypes\\\"]],[23,0,[\\\"salarytype\\\"]],[28,\\\"t\\\",[\\\"overtime.select_salarytypes\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"salarytype\\\"]]],null]],null],[28,\\\"t\\\",[\\\"overtime.no_salarytypes_found\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[23,1,[\\\"text\\\"]],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"disabled\\\",[28,\\\"or\\\",[[24,[\\\"disabled\\\"]]],null]],[12,\\\"class\\\",[29,[[28,\\\"if\\\",[[23,0,[\\\"isLoading\\\"]],\\\"btn is-loading btn-primary btn-block\\\",\\\"btn btn-primary btn-block\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"createAndSaveRules\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/overtime-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/general-v2/components/pause-setting/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorSettingCompPauseSettingComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../../classes/collector';\n\nCollectorSettingCompPauseSettingComponent = Ember.Component.extend({\n    store: Em.inject.service(),\n    session: Em.inject.service(),\n    notifications: Ember.inject.service(),\n    intl: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    init: function () {\n        if (this.get('Collector').testNeedsOne('products.rfid_pause')) {\n            this.set('nfcPauseOn', true);\n        }\n        this._super();\n        return this.getSetting();\n    },\n    pauseOptions: ['15', '30', '45', '60'],\n    isValueCustom: Em.computed('internalsetting.value', function () {\n        var ref;\n        if (\n            ((ref = this.get('internalsetting.value')),\n            indexOf.call(this.get('pauseOptions'), ref) >= 0)\n        ) {\n            return false;\n        }\n        return true;\n    }),\n    showSaveButton: Ember.computed(\n        'internalsetting.value',\n        'internalsetting.hasDirtyAttributes',\n        function () {\n            if (\n                this.get('internalsetting.value') >= 0 &&\n                this.get('internalsetting.hasDirtyAttributes') &&\n                this.get('internalsetting.value') !== null\n            ) {\n                return true;\n            }\n            return false;\n        },\n    ),\n    getSetting: function () {\n        var configs, setting_params;\n        this.set('loading', true);\n        setting_params = {\n            name: 'default_value',\n            value: 30,\n        };\n        if (this.get('worktimegroup')) {\n            setting_params.condition = '$userProfile->worktimegroup==' + this.get('worktimegroup');\n        }\n        configs = {\n            form: 'worktime',\n            field: 'pause',\n            setting: setting_params,\n        };\n        return this.get('store')\n            .findAll('form', {\n                reload: true,\n            })\n            .then((forms) => {\n                var field, form, setting;\n                form = forms.filterBy('external_type', configs.form);\n                field = form.get('firstObject.fields').filterBy('external_type', configs.field);\n                if (field.get('length') > 0) {\n                    setting = field\n                        .get('firstObject.settings')\n                        .filterBy('name', configs.setting.name);\n                    setting = setting.filter((item) => {\n                        var arr;\n                        if (this.get('worktimegroup')) {\n                            if (!item.get('condition')) {\n                                return false;\n                            }\n                            arr = item.get('condition').split('==');\n                            return arr[1] === this.get('worktimegroup');\n                        } else {\n                            return item.get('condition') === '';\n                        }\n                    });\n                    if (setting.get('firstObject')) {\n                        this.set('internalsetting', setting.get('firstObject'));\n                    } else {\n                        configs.setting.field = field.get('firstObject');\n                        this.set(\n                            'internalsetting',\n                            this.get('store').createRecord('form-field-setting', configs.setting),\n                        );\n                    }\n                } else {\n                    this.set('internalsetting', false);\n                }\n                return this.set('loading', false);\n            });\n    },\n    actions: {\n        saveSetting: function () {\n            this.set('loading', true);\n            return this.get('internalsetting')\n                .save()\n                .then(() => {\n                    var ret;\n                    if (this.get('nfcPauseOn')) {\n                        ret = this.get('Collector').setProducts(['products.rfid_pause']);\n                    } else {\n                        ret = this.get('Collector').setProducts(['!products.rfid_pause']);\n                    }\n                    return Ember.RSVP.Promise.all(ret).then(() => {\n                        this.set('loading', false);\n                        if (this.get('settingSaved')) {\n                            return this.settingSaved('products.pause');\n                        }\n                    });\n                });\n        },\n        changeValue: function (value, isCustom) {\n            this.set('isValueCustom', isCustom);\n            if (!this.get('internalsetting')) {\n                return this.getSetting().then(() => {\n                    return this.set('internalsetting.value', value);\n                });\n            } else {\n                return this.set('internalsetting.value', value);\n            }\n        },\n    },\n});\n\nexport default CollectorSettingCompPauseSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"WaQp1SZs\",\"block\":\"{\\\"symbols\\\":[\\\"option\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.timetracker.default_pause_help\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"pauseOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"radio-inputs-settings\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\",[23,1,[]],false]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"internalsetting\\\",\\\"value\\\"]],[23,1,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"circle\\\",true],[10,\\\"class\\\",\\\"radio-svg-fill\\\"],[10,\\\"id\\\",\\\"Ellipse_30\\\"],[10,\\\"data-name\\\",\\\"Ellipse 30\\\"],[10,\\\"cx\\\",\\\"3\\\"],[10,\\\"cy\\\",\\\"3\\\"],[10,\\\"r\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(3 3)\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-text\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"wizard.onboarding.timetracker.pause.\\\",[23,1,[]]],null]],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"radio-inputs-settings\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\",null,true]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isValueCustom\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"circle\\\",true],[10,\\\"class\\\",\\\"radio-svg-fill\\\"],[10,\\\"id\\\",\\\"Ellipse_30\\\"],[10,\\\"data-name\\\",\\\"Ellipse 30\\\"],[10,\\\"cx\\\",\\\"3\\\"],[10,\\\"cy\\\",\\\"3\\\"],[10,\\\"r\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(3 3)\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-text-custom\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isValueCustom\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"class\\\"],[[24,[\\\"internalsetting\\\",\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"disabled\\\",\\\"class\\\"],[null,true,\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.custom.text_end\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"disabled\\\",[28,\\\"not\\\",[[24,[\\\"showSaveButton\\\"]]],null]],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/pause-setting/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class CustomExportComponent extends Component {\n    @service ttapi;\n    @service('collector-service') Collector;\n\n    /**\n     * When salarytypes_v2 used always call ttapi/api/salary/automaticSalarytypes after changing perdiem setting\n     */\n    @action\n    async saved() {\n        if (!this.Collector.testNeeds(['products.salarytype_v2'])) return;\n\n        await this.ttapi.post('api/salary/automaticSalarytypes');\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"WqHfaErd\",\"block\":\"{\\\"symbols\\\":[\\\"@setting\\\"],\\\"statements\\\":[[5,\\\"settings/general-v2/radio-setting\\\",[],[[\\\"@options\\\",\\\"@saved\\\"],[[23,1,[\\\"optionsForComponent\\\"]],[23,0,[\\\"saved\\\"]]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/perdiem/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/general-v2/components/postpopulated-worktimes/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldSettingCompSaldoSettingComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../../classes/collector';\n\nCollectorFieldSettingCompSaldoSettingComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    ttapi: Em.inject.service(),\n    customerSettings: Em.inject.service(),\n    store: Em.inject.service(),\n    notifications: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    loading: true,\n    settingKey: Ember.computed('worktimegroup', function () {\n        return (\n            'postpopulated_worktimes_project' +\n            (this.get('worktimegroup') ? '_' + this.get('worktimegroup') : '')\n        );\n    }),\n    didReceiveAttrs: function () {\n        this.set('loading', true);\n        return this.get('ttapi')\n            ._get('/settings?worktimegroup=' + this.get('worktimegroup'))\n            .then((ret) => {\n                var projectSetting;\n                projectSetting = ret.findBy('key', this.get('settingKey'));\n                if (projectSetting && projectSetting.value) {\n                    this.get('store')\n                        .findRecord('project', projectSetting.value)\n                        .then((project) => {\n                            return this.set('selectedProject', project);\n                        });\n                }\n                return this.set('loading', false);\n            });\n    },\n    projectField: Ember.computed('selectedProject', function () {\n        var field;\n        field = this.get('Collector').field('worktime', 'project');\n        field.value = this.get('selectedProject');\n        return field;\n    }),\n    disabled: Em.computed('selectedProject', function () {\n        if (!this.get('selectedProject') || this.get('selectedProject') === null) {\n            return true;\n        }\n        return false;\n    }),\n    actions: {\n        saveSetting: function () {\n            this.set('loading', true);\n            return this.get('customerSettings')\n                .setSetting(\n                    this.get('settingKey'),\n                    this.get('selectedProject.id'),\n                    this.get('worktimegroup'),\n                )\n                .then(() => {\n                    this.set('loading', false);\n                    if (this.get('settingSaved')) {\n                        return this.settingSaved();\n                    }\n                });\n        },\n        changeProject: function (project) {\n            return this.set('selectedProject', project);\n        },\n    },\n});\n\nexport default CollectorFieldSettingCompSaldoSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"OYfT9mzf\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"postpopulated-dropdown-field\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"worktime.project\\\"],[[\\\"change\\\",\\\"value\\\",\\\"class\\\",\\\"usePowerDropdown\\\"],[\\\"changeProject\\\",[24,[\\\"selectedProject\\\"]],\\\"add-fields form-control\\\",true]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"disabled\\\",[22,\\\"disabled\\\"]],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/postpopulated-worktimes/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\nimport { isEmpty, isPresent } from '@ember/utils';\nimport runAutomaticSalarytypes from '../runAutomaticSalarytypes';\n\nexport default class SalarytypesAbsencetypesComponent extends Component {\n    @service evented;\n    @service store;\n    @service intl;\n    @service('collector-service') Collector;\n    @service ttapi;\n\n    @tracked showPassive;\n    @tracked record;\n    @tracked saving;\n    @tracked error;\n    @tracked selectedWorktimegroups;\n    @tracked showReport = true;\n    @tracked showTooltip = {};\n\n    constructor() {\n        super(...arguments);\n        this.filters = this.args.worktimegroup ? { worktimegroup: this.args.worktimegroup } : {};\n        this.showPassive = false;\n        this.init();\n    }\n\n    async init() {\n        this.showReport = false;\n        await runAutomaticSalarytypes(this.ttapi);\n        this.showReport = true;\n    }\n\n    get disabled() {\n        return isPresent(this.args.worktimegroup);\n    }\n\n    @action\n    closeModal() {\n        if (this.record && this.record.isNew) this.record.deleteRecord();\n        else if (this.record) this.record.rollbackAttributes();\n        this.evented.storeEvent('insert', 'abcensetype', null);\n        this.record = null;\n    }\n\n    @action\n    onFieldChange(field, value) {\n        if (field === 'worktimegroup' && this.record.isNew) {\n            this.selectedWorktimegroups = value;\n            this.selectedWorktimegroups = this.selectedWorktimegroups;\n        } else this.record[field] = value;\n    }\n\n    @action\n    async save() {\n        this.saving = true;\n\n        try {\n            await this.record.validate();\n            if (!isEmpty(this.selectedWorktimegroups) && this.record.isNew) {\n                const absenceTypes = await this.store.query('abcensetype', {\n                    name: this.record.name,\n                });\n                for (let wtgroup of this.selectedWorktimegroups) {\n                    const newRecord = this.Collector.copyRecord(this.record);\n                    newRecord['worktimegroup'] = this.store.peekRecord('worktimegroup', wtgroup);\n                    const found = absenceTypes?.filterBy('worktimegroup', wtgroup);\n                    if (found.length) {\n                        return (this.error = this.intl.t('absencetype.error.unique', {\n                            worktimegroup: wtgroup.name,\n                        }));\n                    }\n\n                    await newRecord.save();\n                }\n            } else await this.record.save();\n            this.closeModal();\n        } catch (e) {\n            this.error = e;\n        } finally {\n            this.saving = false;\n        }\n    }\n\n    @action\n    addAbsencetype() {\n        this.error = null;\n        this.selectedWorktimegroups = this.args.worktimegroup\n            ? [this.args.worktimegroup]\n            : [];\n        this.record = this.store.createRecord('abcensetype');\n    }\n\n    @action\n    editAbsencetype(row) {\n        this.error = null;\n        this.selectedWorktimegroups = row['worktimegroup'] ? [row['worktimegroup']] : [];\n        this.record = row;\n    }\n\n    @action\n    toggleRemoved() {\n        this.showPassive = !this.showPassive;\n        this.evented.storeEvent('toggleRemoved', 'abcensetype', null);\n    }\n\n    @action\n    restoreAbsencetype(row) {\n        this.evented.storeEvent('restore', 'abcensetype', row);\n    }\n\n    @action\n    removeAbsencetype(row) {\n        this.evented.storeEvent('remove', 'abcensetype', row);\n    }\n\n    @action\n    togglePopover(id) {\n        if (!isPresent(this.showTooltip[id])) this.showTooltip[id] = true;\n        else this.showTooltip[id] = !this.showTooltip[id];\n        this.showTooltip = this.showTooltip;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"qxgYMslq\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@error\\\",\\\"@record\\\",\\\"@disabled\\\",\\\"@selectedWorktimegroups\\\",\\\"@closeModal\\\",\\\"@onFieldChange\\\",\\\"@saving\\\",\\\"@save\\\"],\\\"statements\\\":[[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[23,10,[]],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.add_abcensetype\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"abcensetype\\\",[23,7,[]],[23,11,[]],[23,10,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"worktimegroup\\\"],null],[23,7,[\\\"isNew\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\"],[[28,\\\"t\\\",[\\\"abcensetype.worktimegroup\\\"],null],[23,5,[\\\"features\\\",\\\"mandatory\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[5,\\\"addon/fields/multiselect\\\",[],[[\\\"@form\\\",\\\"@name\\\",\\\"@options\\\",\\\"@value\\\",\\\"@onChange\\\",\\\"@disabled\\\"],[\\\"abcensetype\\\",[23,5,[\\\"name\\\"]],[28,\\\"hash\\\",null,[[\\\"form\\\",\\\"fields\\\"],[[23,5,[\\\"options\\\",\\\"form\\\"]],[23,5,[\\\"options\\\",\\\"fields\\\"]]]]],[23,9,[]],[28,\\\"fn\\\",[[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null],[23,8,[]]]]],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,4,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[28,\\\"get\\\",[[23,7,[]],[23,5,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,7,[]]],null],[28,\\\"fn\\\",[[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null],[23,5,[\\\"features\\\",\\\"mandatory\\\"]],[28,\\\"and\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"worktimegroup\\\"],null],[23,8,[]]],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[5]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[3,4]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Buttons\\\"]],[],[[\\\"@saving\\\",\\\"@save\\\",\\\"@cancel\\\"],[[23,12,[]],[23,13,[]],[23,10,[]]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,6,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"addon/form-add/error\\\",[],[[\\\"@error\\\"],[[23,6,[]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/salarytypes/absencetypes/modal/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"wmFdUIzP\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"row\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[23,0,[\\\"showReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"class\\\"],[\\\"loading-icon\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"center-alignment\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showPassive\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.show_passive_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showColumns\\\",\\\"@filter\\\",\\\"@hideCreatedColumn\\\",\\\"@showFilters\\\"],[\\\"abcensetype\\\",\\\"key,name,usesholiday,type,worktimegroup,use_holiday_rules\\\",[23,0,[\\\"filters\\\"]],true,\\\" \\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Add\\\"]],[],[[\\\"@onClick\\\"],[[23,0,[\\\"addAbsencetype\\\"]]]]],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@hideSumRow\\\",\\\"@hideRemovedText\\\"],[true,true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"history\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"not-eq\\\",[[23,3,[\\\"row_info\\\",\\\"status\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Delete\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"removeAbsencetype\\\"]],[23,3,[]]],null]]],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"editAbsencetype\\\"]],[23,3,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[\\\"worktimegroup\\\",\\\"row_info\\\",\\\"status\\\"]],\\\"normal\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-ReuseFilled\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"restoreAbsencetype\\\"]],[23,3,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Info salarytypev2-info-button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"togglePopover\\\"]],[23,3,[\\\"id\\\"]]],null]]],[8],[0,\\\"\\\\n                        \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@text\\\",\\\"@tooltipClass\\\",\\\"@popperContainer\\\",\\\"@event\\\",\\\"@isShown\\\",\\\"@hideOn\\\",\\\"@side\\\"],[[28,\\\"t\\\",[\\\"absencetype.removed_infotext.worktimegroup_removed\\\"],[[\\\"htmlSafe\\\"],[true]]],\\\"help-tooltip\\\",\\\"body\\\",\\\"none\\\",[28,\\\"get\\\",[[23,0,[\\\"showTooltip\\\"]],[23,3,[\\\"id\\\"]]],null],\\\"click\\\",\\\"right\\\"]]],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"center-alignment\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs passive-button\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"toggleRemoved\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showPassive\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"general.hide_passive\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"general.show_passive\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"record\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"settings/general-v2/components/salarytypes/absencetypes/modal\\\",[],[[\\\"@record\\\",\\\"@closeModal\\\",\\\"@onFieldChange\\\",\\\"@selectedWorktimegroups\\\",\\\"@saving\\\",\\\"@save\\\",\\\"@disabled\\\",\\\"@error\\\"],[[23,0,[\\\"record\\\"]],[23,0,[\\\"closeModal\\\"]],[23,0,[\\\"onFieldChange\\\"]],[23,0,[\\\"selectedWorktimegroups\\\"]],[23,0,[\\\"saving\\\"]],[23,0,[\\\"save\\\"]],[23,0,[\\\"disabled\\\"]],[23,0,[\\\"error\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/salarytypes/absencetypes/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\n\nexport default class SalarytypesComponent extends Component {\n    @service store;\n    @service('collector-service') Collector;\n\n    @tracked disabled = false;\n    @tracked loading = false;\n    @tracked preventUsage = false;\n\n    constructor(owner, args) {\n        super(owner, args);\n        if (!this.args.setting.active) this.checkOldSalarytypes();\n    }\n\n    async checkOldSalarytypes() {\n        // new salarytypes can always be used if salarytypes_v2 is on\n        if (this.Collector.testNeeds(['flag.salarytypes_v2'])) return;\n\n        // if salarytype form is not in use no need to check rows from it\n        if (!this.Collector.testNeeds(['salarytype'])) return;\n\n        this.loading = true;\n\n        const oldSalaryTypes = await this.store.query('salarytype', {});\n\n        if (oldSalaryTypes.length > 0) this.preventUsage = true;\n\n        this.loading = false;\n    }\n}\n","let allowrun = true;\nlet ttapiPromise;\n\nexport default (ttapi) => {\n    return new Promise((resolve) => {\n        const onRequestEnd = () => {\n            resolve();\n            allowrun = true;\n        };\n\n        if (allowrun) {\n            ttapiPromise = ttapi.post('/api/salary/automaticSalarytypes');\n            allowrun = false;\n        }\n        ttapiPromise.then(onRequestEnd);\n    });\n};\n","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\nimport { isEmpty, isPresent } from '@ember/utils';\nimport podNames from 'ember-component-css/pod-names';\nimport runAutomaticSalarytypes from '../runAutomaticSalarytypes';\n\nexport default class SalarytypesSalariesComponent extends Component {\n    @service evented;\n    @service store;\n    @service intl;\n    @service('collector-service') Collector;\n    @service ttapi;\n    @service notifications;\n    @tracked showPassive;\n    @tracked record;\n    @tracked saving;\n    @tracked showTooltip;\n    @tracked error;\n    @tracked selectedWorktimegroups;\n    @tracked worktimegroupError;\n    @tracked salaryTypeNameError;\n    @tracked salarytypev2;\n    @tracked showReport = true;\n\n    constructor() {\n        super(...arguments);\n        this.filters = this.args.worktimegroup ? { worktimegroup: this.args.worktimegroup } : {};\n        this.showPassive = false;\n        this.showTooltip = {};\n        this.createTypes();\n        this.init();\n    }\n\n    async init() {\n        this.showReport = false;\n        await runAutomaticSalarytypes(this.ttapi);\n        this.showReport = true;\n    }\n\n    get worktimeGroupLocked() {\n        return isPresent(this.args.worktimegroup);\n    }\n\n    get styleNamespace() {\n        return podNames['settings/general-v2/components/salarytypes/salaries'];\n    }\n\n    async createTypes() {\n        const showTypes = ['hours', 'dropdown_values', 'checkbox', 'number'];\n        const fields = this.Collector.fieldArray('worktime');\n        const cond = (item) => item.name === 'work_hours' || item.name === '_basichours';\n\n        let hours = [];\n        let options = [];\n        for (let item of fields) {\n            if (cond(item)) {\n                hours.push(item);\n            } else {\n                options.push(item);\n            }\n        }\n\n        // always hide all fields that we know shouldn't be visible .. but also fields that has fieldtype: auto (this is to hide custom compensations)\n        const autoSalaryTypes = await this.getAutoSalarytypes();\n        const staticBlackList = [\n            'comp',\n            '_50',\n            '_100',\n            '_period50',\n            '_period100',\n            '_evening',\n            '_night',\n            '_week50',\n            '_week100',\n            '_extrahours',\n            '_overtimehours',\n            'km',\n            '_saturday',\n            '_sunday',\n            '_50_saldo',\n            '_100_saldo',\n            '_extrahours_saldo',\n            '_period50_saldo',\n            '_period100_saldo',\n            '_overtimehours_saldo',\n            '_evening_saldo',\n            '_night_saldo',\n            '_week50_saldo',\n            '_week100_saldo',\n            '_saturday_saldo',\n            '_sunday_saldo',\n        ];\n        const blackList = staticBlackList.concat(autoSalaryTypes);\n        options = options\n            .filter((item) => !blackList.includes(item.name))\n            .filter((item) => showTypes.includes(item.type));\n\n        hours = hours.map((el) => {\n            if (el.name === 'work_hours') {\n                el.translated_name = this.intl.t('salarytypev2.fieldtype.hours.own');\n            }\n            return el;\n        });\n\n        let subcategory = [\n            {\n                translated_name: this.intl.t('salarytypev2.fieldtype.allfields'),\n                options,\n            },\n        ];\n\n        this.types = {\n            hours,\n            subcategory,\n        };\n    }\n    async getAutoSalarytypes() {\n        let typesWithSaldo = [];\n        let types = this.store.peekAll('salarytypev2')?.filterBy('fieldtype', 'auto');\n        if (isEmpty(types))\n            types = await this.store.query('salarytypev2', { fieldtype: 'auto', limit: 'all' });\n        const mappedTypes = types.mapBy('type');\n        // We also need to check that custom compensation's saldo fields are not added to type dropdown (eg. _paivalisa_saldo)\n        if (!isEmpty(mappedTypes)) {\n            mappedTypes.forEach((type) => {\n                typesWithSaldo.push(type);\n                if (!['work_hours', '_basichours'].includes(type))\n                    typesWithSaldo.push(type + '_saldo');\n            });\n            return typesWithSaldo;\n        }\n        return mappedTypes;\n    }\n\n    async runAutomaticSalarytypes() {\n        this.showReport = false;\n        await this.ttapi.post('/api/salary/automaticSalarytypes');\n        this.showReport = true;\n    }\n\n    @action getReportValue(field, value, unformatted, row) {\n        if (field === 'fieldtype') {\n            if (!row.type) return null; // if row has no type at all show user as empty fieldtype\n            // if own custom field\n            if (unformatted === 'hours.own' && !['work_hours', '_basichours'].includes(row.type)) {\n                return this.intl.t('salarytypev2.fieldtype.custom_own_field');\n                // if work hours auto-field\n            } else if (row.type === 'work_hours' && unformatted === 'auto') {\n                return this.intl.t('salarytypev2.fieldtype.auto.hours');\n                // if basichours auto-field\n            } else if (row.type === '_basichours' && unformatted === 'auto') {\n                return this.intl.t('salarytypev2.fieldtype.auto.basic_hours');\n            } else {\n                if (!value) return this.intl.t('salarytypev2.fieldtype.manual');\n                else if (row.type === '_basichours') return this.intl.t('worktime._basichours');\n                else return value;\n            }\n        } else return value;\n    }\n\n    @action\n    toggleRemoved() {\n        this.showPassive = !this.showPassive;\n        this.evented.storeEvent('toggleRemoved', 'salarytypev2', null);\n    }\n\n    @action\n    closeModal() {\n        if (this.record && this.record.isNew) this.record.deleteRecord();\n        else if (this.record) this.record.rollbackAttributes();\n        this.evented.storeEvent('insert', 'salarytypev2', null);\n        this.record = null;\n        this.salaryTypeNameError = null;\n    }\n\n    @action\n    onFieldChange(field, value) {\n        if (field === 'worktimegroup' && this.record.isNew) {\n            this.worktimegroupError = null;\n            this.selectedWorktimegroups = value;\n            this.selectedWorktimegroups = this.selectedWorktimegroups;\n        } else this.record[field] = value;\n    }\n\n    @action\n    async save() {\n        this.saving = true;\n        try {\n            if (!(await this.isValidRecord())) return (this.saving = false);\n\n            if (this.record.isNew) {\n                for (let wtgroup of this.selectedWorktimegroups) {\n                    const newRecord = this.Collector.copyRecord(this.record);\n                    newRecord['worktimegroup'] = this.store.peekRecord('worktimegroup', wtgroup);\n                    newRecord['fieldtype'] = 'hours.own';\n                    await newRecord.save();\n                }\n            } else await this.record.save();\n            this.closeModal();\n        } catch (e) {\n            this.error = e;\n        } finally {\n            this.saving = false;\n        }\n    }\n\n    @action\n    addSalarytype() {\n        this.error = null;\n        this.selectedWorktimegroups = this.args.worktimegroup\n            ? [this.args.worktimegroup]\n            : [];\n        this.record = this.store.createRecord('salarytypev2');\n    }\n\n    @action\n    editSalarytype(row) {\n        this.error = null;\n        this.selectedWorktimegroups = row['worktimegroup'] ? [row['worktimegroup']] : [];\n        this.record = row;\n    }\n\n    @action\n    removeSalarytype(row) {\n        if (row.fieldtype === 'auto.hours')\n            return this.notifications.warning(this.intl.t('salarytypes.warning_remove_automatic'), {\n                autoClear: true,\n            });\n        this.evented.storeEvent('remove', 'salarytypev2', row);\n    }\n\n    @action\n    restoreSalarytype(row) {\n        this.evented.storeEvent('restore', 'salarytypev2', row);\n    }\n\n    @action\n    togglePopover(id) {\n        if (!isPresent(this.showTooltip[id])) this.showTooltip[id] = true;\n        else this.showTooltip[id] = !this.showTooltip[id];\n        this.showTooltip = this.showTooltip;\n    }\n\n    async isValidRecord() {\n        this.salaryTypeNameError = '';\n\n        if (this.record.isNew) {\n            const p1 = await this.store.query('salarytypev2', { name: this.record.name });\n\n            if (p1?.length > 0) {\n                let wortimeGroups = this.selectedWorktimegroups.map((item) => Number(item.id));\n\n                for (let item of p1.toArray()) {\n                    if (wortimeGroups.includes(Number(item.worktimegroup.id))) {\n                        const wg = this.store.peekRecord('worktimegroup', item.worktimegroup.id);\n                        this.salaryTypeNameError +=\n                            this.intl.t('salarytypev2.error_exists_for_worktimegoup', {\n                                worktimegroup: wg.name,\n                                salarytype: this.record.name,\n                            }) + ' ';\n                    }\n                }\n                if (this.salaryTypeNameError !== '') return false;\n            }\n\n            await this.record.validate(['name', 'type', 'key']);\n            if (isEmpty(this.selectedWorktimegroups)) {\n                this.worktimegroupError = this.intl.t('field.error.mandatory');\n                return false;\n            }\n        } else await this.record.validate();\n\n        if (!this.record.isValid) return false;\n\n        return true;\n    }\n}\n","import Component from '@glimmer/component';\n\nexport default class SettingsGeneralV2ComponentsSalarytypesSalariesModalComponent extends Component {\n    /**\n     * 1. when editing auto salarytype: disable all fields except key\n     * 2. when worktimeGroupLocked disable worktimegroup (this used when worktimegroup is selected via settings)\n     * 3. never allow editing worktimegroup\n     */\n    get disabledFields() {\n        const ret = {};\n\n        // 1.\n        if (this.args.record.fieldtype === 'auto' && !this.args.record.isNew) {\n            ret.name = true;\n            ret.worktimegroup = true;\n            ret.type = true;\n        }\n\n        // 2.\n        if (this.args.worktimeGroupLocked) ret.worktimegroup = true;\n\n        // 3.\n        if (!this.args.record.isNew) ret.worktimegroup = true;\n\n        return ret;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"WMvf9y/H\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"type\\\",\\\"opt\\\",\\\"sub_opt\\\",\\\"type\\\",\\\"@error\\\",\\\"@record\\\",\\\"@types\\\",\\\"@salaryTypeNameError\\\",\\\"@worktimegroupError\\\",\\\"@selectedWorktimegroups\\\",\\\"@closeModal\\\",\\\"@onFieldChange\\\",\\\"@saving\\\",\\\"@save\\\"],\\\"statements\\\":[[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[23,16,[]],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.add_salarytypev2\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"salarytypev2\\\",[23,11,[]],[23,17,[]],[23,16,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"worktimegroup\\\"],null],[23,11,[\\\"isNew\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\"],[[28,\\\"t\\\",[\\\"salarytypev2.worktimegroup\\\"],null],[23,5,[\\\"features\\\",\\\"mandatory\\\"]],[23,14,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[5,\\\"addon/fields/multiselect\\\",[],[[\\\"@form\\\",\\\"@name\\\",\\\"@options\\\",\\\"@value\\\",\\\"@onChange\\\",\\\"@disabled\\\"],[\\\"salarytypev2\\\",[23,5,[\\\"name\\\"]],[28,\\\"hash\\\",null,[[\\\"form\\\",\\\"fields\\\"],[[23,5,[\\\"options\\\",\\\"form\\\"]],[23,5,[\\\"options\\\",\\\"fields\\\"]]]]],[23,15,[]],[28,\\\"fn\\\",[[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null],[28,\\\"get\\\",[[23,0,[\\\"disabledFields\\\"]],[23,5,[\\\"name\\\"]]],null]]]],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"name\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\"],[[28,\\\"t\\\",[\\\"salarytypev2.name\\\"],null],[23,5,[\\\"features\\\",\\\"mandatory\\\"]],[23,13,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"]],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@disabled\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[28,\\\"get\\\",[[23,11,[]],[23,5,[\\\"name\\\"]]],null],[23,11,[]],[28,\\\"get\\\",[[23,0,[\\\"disabledFields\\\"]],[23,5,[\\\"name\\\"]]],null]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"type\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"salarytypev2.type\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[28,\\\"get\\\",[[23,11,[]],\\\"fieldtype\\\"],null],\\\"auto\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"disabled\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[28,\\\"get\\\",[[23,11,[]],\\\"type\\\"],null],\\\"work_hours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"t\\\",[\\\"salarytypev2.fieldtype.auto.hours\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[28,\\\"get\\\",[[23,11,[]],\\\"type\\\"],null],\\\"_basichours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"t\\\",[\\\"salarytypev2.fieldtype.auto.basic_hours\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"t\\\",[\\\"salarytypev2.fieldtype.auto\\\"],null],false],[0,\\\"\\\\n                                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"disabled\\\",[28,\\\"get\\\",[[23,0,[\\\"disabledFields\\\"]],[23,5,[\\\"name\\\"]]],null]],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"fn\\\",[[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.choose\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"sort\\\",[[23,12,[\\\"hours\\\"]]],[[\\\"sortBy\\\"],[\\\"translated_name\\\"]]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,9,[\\\"name\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[28,\\\"get\\\",[[23,11,[]],[23,5,[\\\"name\\\"]]],null],[23,9,[\\\"name\\\"]]],null]],[8],[1,[23,9,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[9]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"sort\\\",[[23,12,[\\\"subcategory\\\"]]],[[\\\"sortBy\\\"],[\\\"translated_name\\\"]]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-empty\\\",[[23,6,[\\\"options\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"optgroup\\\",true],[11,\\\"label\\\",[23,6,[\\\"translated_name\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,6,[\\\"options\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[\\\"type\\\"]],\\\"dropdown_values\\\"],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,7,[\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                                        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[28,\\\"concat\\\",[[23,7,[\\\"name\\\"]],\\\":\\\",[23,8,[\\\"id\\\"]]],null]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[28,\\\"get\\\",[[23,11,[]],[23,5,[\\\"name\\\"]]],null],[28,\\\"concat\\\",[[23,7,[\\\"name\\\"]],\\\":\\\",[23,8,[\\\"id\\\"]]],null]],null]],[8],[1,[23,7,[\\\"translated_name\\\"]],false],[0,\\\": \\\"],[1,[23,8,[\\\"value\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,7,[\\\"name\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[28,\\\"get\\\",[[23,11,[]],[23,5,[\\\"name\\\"]]],null],[23,7,[\\\"name\\\"]]],null]],[8],[1,[23,7,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[7]},null],[0,\\\"                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[6]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,4,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[28,\\\"get\\\",[[23,11,[]],[23,5,[\\\"name\\\"]]],null],[23,11,[]],[28,\\\"fn\\\",[[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null],[23,5,[\\\"features\\\",\\\"mandatory\\\"]],[28,\\\"get\\\",[[23,0,[\\\"disabledFields\\\"]],[23,5,[\\\"name\\\"]]],null]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[5]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[3,4]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Buttons\\\"]],[],[[\\\"@saving\\\",\\\"@save\\\",\\\"@cancel\\\"],[[23,18,[]],[23,19,[]],[23,16,[]]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,10,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"addon/form-add/error\\\",[],[[\\\"@error\\\"],[[23,10,[]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/salarytypes/salaries/modal/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"5jCEQMNZ\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"field\\\",\\\"value\\\",\\\"unformatted\\\",\\\"row\\\",\\\"row\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"center-alignment\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showPassive\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.show_passive_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filter\\\",\\\"@hideCreatedColumn\\\",\\\"@showFilters\\\"],[\\\"salarytypev2\\\",[23,0,[\\\"filters\\\"]],true,\\\"q\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"Add\\\"]],[],[[\\\"@onClick\\\"],[[23,0,[\\\"addSalarytype\\\"]]]]],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@hideSumRow\\\",\\\"@hideRemovedText\\\",\\\"@formatCells\\\",\\\"@classes\\\"],[true,true,true,\\\"hide-horizontal-scrollbar\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"history\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[\\\"fieldtype\\\"]],\\\"auto\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[\\\"row_info\\\",\\\"status\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Info salarytypev2-info-button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"togglePopover\\\"]],[23,7,[\\\"id\\\"]]],null]]],[8],[0,\\\"\\\\n                                \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@text\\\",\\\"@tooltipClass\\\",\\\"@popperContainer\\\",\\\"@event\\\",\\\"@isShown\\\",\\\"@hideOn\\\",\\\"@side\\\"],[[28,\\\"t\\\",[\\\"salarytypev2.removed_infotext\\\"],[[\\\"htmlSafe\\\"],[true]]],\\\"help-tooltip\\\",\\\"body\\\",\\\"none\\\",[28,\\\"get\\\",[[23,0,[\\\"showTooltip\\\"]],[23,7,[\\\"id\\\"]]],null],\\\"click\\\",\\\"right\\\"]]],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"editSalarytype\\\"]],[23,7,[]]],null]]],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Info salarytypev2-info-button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"togglePopover\\\"]],[23,7,[\\\"id\\\"]]],null]]],[8],[0,\\\"\\\\n                                \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@text\\\",\\\"@tooltipClass\\\",\\\"@popperContainer\\\",\\\"@event\\\",\\\"@isShown\\\",\\\"@hideOn\\\",\\\"@side\\\"],[[28,\\\"t\\\",[\\\"salarytypev2.normal_infotext\\\"],[[\\\"htmlSafe\\\"],[true]]],\\\"help-tooltip\\\",\\\"body\\\",\\\"none\\\",[28,\\\"get\\\",[[23,0,[\\\"showTooltip\\\"]],[23,7,[\\\"id\\\"]]],null],\\\"click\\\",\\\"right\\\"]]],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[\\\"row_info\\\",\\\"status\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[\\\"worktimegroup\\\",\\\"row_info\\\",\\\"status\\\"]],\\\"normal\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-ReuseFilled\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"restoreSalarytype\\\"]],[23,7,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Info salarytypev2-info-button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"togglePopover\\\"]],[23,7,[\\\"id\\\"]]],null]]],[8],[0,\\\"\\\\n                                    \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@text\\\",\\\"@tooltipClass\\\",\\\"@popperContainer\\\",\\\"@event\\\",\\\"@isShown\\\",\\\"@hideOn\\\",\\\"@side\\\"],[[28,\\\"t\\\",[\\\"salarytypev2.removed_infotext.worktimegroup_removed\\\"],[[\\\"htmlSafe\\\"],[true]]],\\\"help-tooltip\\\",\\\"body\\\",\\\"none\\\",[28,\\\"get\\\",[[23,0,[\\\"showTooltip\\\"]],[23,7,[\\\"id\\\"]]],null],\\\"click\\\",\\\"right\\\"]]],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Delete\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"removeSalarytype\\\"]],[23,7,[]]],null]]],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"editSalarytype\\\"]],[23,7,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"Cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[28,\\\"call\\\",[[28,\\\"fn\\\",[[23,0,[\\\"getReportValue\\\"]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]]],null]],null],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[3,4,5,6]}],[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"center-alignment\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs passive-button\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"toggleRemoved\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showPassive\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"general.hide_passive\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"general.show_passive\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"class\\\"],[\\\"loading-icon\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"record\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"settings/general-v2/components/salarytypes/salaries/modal\\\",[],[[\\\"@record\\\",\\\"@closeModal\\\",\\\"@onFieldChange\\\",\\\"@selectedWorktimegroups\\\",\\\"@worktimegroupError\\\",\\\"@salaryTypeNameError\\\",\\\"@saving\\\",\\\"@save\\\",\\\"@worktimeGroupLocked\\\",\\\"@error\\\",\\\"@types\\\"],[[23,0,[\\\"record\\\"]],[23,0,[\\\"closeModal\\\"]],[23,0,[\\\"onFieldChange\\\"]],[23,0,[\\\"selectedWorktimegroups\\\"]],[23,0,[\\\"worktimegroupError\\\"]],[23,0,[\\\"salaryTypeNameError\\\"]],[23,0,[\\\"saving\\\"]],[23,0,[\\\"save\\\"]],[23,0,[\\\"worktimeGroupLocked\\\"]],[23,0,[\\\"error\\\"]],[23,0,[\\\"types\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/salarytypes/salaries/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"AMaMYK9q\",\"block\":\"{\\\"symbols\\\":[\\\"@setting\\\",\\\"@onToggle\\\",\\\"@loading\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-component\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-setting-header\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"settings.salarytypes.salarytypesv2\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[23,3,[]],[23,0,[\\\"loading\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"preventUsage\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning my-4 mx-4\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[28,\\\"t\\\",[\\\"salarytypes.settings.warning\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-component\\\"],[8],[0,\\\"\\\\n    \\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[23,1,[\\\"active\\\"]],[28,\\\"fn\\\",[[23,2,[]],[23,1,[]]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-setting-header\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"settings.salarytypes.salarytypesv2\\\"],null],false],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/salarytypes/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport runAutomaticSalarytypes from '../runAutomaticSalarytypes';\nimport { isPresent } from '@ember/utils';\nexport default class SalarytypesWorktypesComponent extends Component {\n    @service store;\n    @service ttapi;\n    @service evented;\n    @service intl;\n    @service notifications;\n    @service scroller;\n    @service dialogs;\n\n    @tracked record;\n    @tracked saving;\n    @tracked error;\n    @tracked errors;\n    @tracked calculationTypes;\n    @tracked calculations;\n    @tracked showPassive;\n    @tracked loadingCalculationTypes;\n    @tracked showReport = false;\n    @tracked showTooltip = {};\n    @tracked loadingDefault;\n    @tracked recordToBeSavedAlso;\n\n    constructor() {\n        super(...arguments);\n        this.worktimegroup = this.args.worktimegroup ? this.args.worktimegroup : null;\n        this.filters = this.worktimegroup ? { worktimegroup: this.worktimegroup } : {};\n        this.updateSalaryCalculationTypes(this.worktimegroup);\n        this.showPassive = false;\n        this.worktimeGroupLocked = isPresent(this.args.worktimegroup);\n        this.init();\n    }\n\n    async init() {\n        this.showReport = false;\n        await runAutomaticSalarytypes(this.ttapi);\n        this.showReport = true;\n    }\n\n    @action\n    getTranslatedValue(rawValues) {\n        return rawValues.split(',').length + ' ' + this.intl.t('report.items_checked');\n    }\n\n    @action\n    addWorktype() {\n        this.error = null;\n        this.errors = {};\n        this.calculations = [];\n        let defaults = {};\n        if (this.worktimegroup) {\n            defaults.worktimegroup = this.store.peekRecord('worktimegroup', this.worktimegroup);\n        }\n        this.updateSalaryCalculationTypes(this.worktimegroup);\n        this.record = this.store.createRecord('worktypev2', defaults);\n    }\n\n    @action\n    editWorktype(row) {\n        this.error = null;\n        if (!this.args.worktimegroup)\n            this.updateSalaryCalculationTypes(row.worktimegroup ? row.worktimegroup.id : null);\n        this.calculations = row['calculations'] ? row['calculations'].split(',') : [];\n        this.record = row;\n    }\n\n    @action\n    removeWorktype(row) {\n        const filteredWorktypes = this.store\n            .peekAll('worktypev2')\n            .filterBy('worktimegroup', row.worktimegroup);\n        if (filteredWorktypes.length <= 1)\n            return this.notifications.warning(this.intl.t('worktypes.cannot_remove_last'), {\n                autoClear: true,\n            });\n        this.evented.storeEvent('remove', 'worktypev2', row);\n    }\n\n    @action\n    restoreWorktype(row) {\n        this.evented.storeEvent('restore', 'worktypev2', row);\n    }\n\n    @action\n    closeModal() {\n        if (this.record && this.record.isNew) this.record.deleteRecord();\n        else if (this.record) this.record.rollbackAttributes();\n        this.evented.storeEvent('insert', 'worktypev2', null);\n        this.record = null;\n        // if we are closing modal but we have not persisted changes to other record, just discard those changes\n        if (this.recordToBeSavedAlso) {\n            this.recordToBeSavedAlso.rollbackAttributes();\n            this.recordToBeSavedAlso = null;\n        }\n    }\n\n    @action\n    onFieldChange(field, value) {\n        if (field === 'worktimegroup') this.updateSalaryCalculationTypes(value ? value.id : null);\n        this.record[field] = value;\n    }\n\n    @action\n    toggleCalculationValue(value) {\n        if (!this.calculations.includes(value.name)) {\n            if (this.validateSliders(value)) this.calculations.push(value.name);\n        } else {\n            if (!this.validateSliders(value)) return;\n            const index = this.calculations.indexOf(value.name);\n            if (index >= 0) this.calculations.splice(index, 1);\n        }\n        this.calculations = this.calculations;\n    }\n\n    // used for setting worktimetype as default\n    // When setting default to this record, we unset default on previous record that had default-value\n    // When trying to set default off, we can do it on new record but not on any other record because we cannot know which record we should set as default\n    @action\n    async setForSaveDefault() {\n        this.loadingDefault = true;\n        const found = await this.store.query('worktypev2', {\n            default: 'on',\n            worktimegroup: this.record.worktimegroup.id,\n        });\n        this.loadingDefault = false;\n        let foundRecord = found.firstObject;\n\n        // if this is a new record we can turn default on AND off..\n        if (this.record.default) {\n            if (this.record.isNew) {\n                foundRecord.default = true;\n                this.record.default = false;\n            } else {\n                // ..but if we trying to set default off when editing, we show dialog that you cannot do it\n                this.dialogs.alert(this.intl.t('worktypes.cannot_unset_default'));\n            }\n        } else {\n            // if another worktype has default, set it off (but do not save yet)\n            if (found.length > 0) {\n                const con2 = await this.dialogs.confirm(\n                    this.intl.t('worktypes.confirm_substitue_default', {\n                        from_type: '\"' + foundRecord.name + '\"',\n                    }),\n                );\n                if (!con2) return;\n                foundRecord.default = false;\n                this.recordToBeSavedAlso = foundRecord;\n            }\n            this.record.default = true;\n        }\n    }\n\n    @action\n    async save() {\n        this.saving = true;\n        this.errors = {};\n        try {\n            if (this.record.isNew) {\n                const found = await this.store.query('worktypev2', {\n                    name: this.record.name,\n                    worktimegroup: this.record.worktimegroup.id,\n                });\n                if (found.length) {\n                    this.errors = {\n                        name: this.intl.t('field.error.unique', { field: this.record.name }),\n                    };\n                    const modelContentElement = document.querySelector(\n                        '.worktypev2-custom-modal .ember-movenium-modal-content',\n                    );\n                    const { scrollTop } = modelContentElement;\n                    this.scroller.animateElement(modelContentElement, scrollTop, 0);\n                    return false;\n                }\n            }\n            await this.record.validate();\n            this.calculationTypes = await this.calculationTypes;\n            this.calculations = this.calculations.filter((cal) =>\n                this.calculationTypes.mapBy('name').includes(cal),\n            );\n            this.record['calculations'] = this.calculations.join(',');\n            await this.record.save();\n            // save also the other record that we modified when we set default on this record..\n            if (this.recordToBeSavedAlso) await this.recordToBeSavedAlso.save();\n            await runAutomaticSalarytypes(this.ttapi);\n            this.closeModal();\n        } catch (e) {\n            this.error = e;\n        } finally {\n            this.saving = false;\n        }\n    }\n\n    @action\n    toggleRemoved() {\n        this.showPassive = !this.showPassive;\n        this.evented.storeEvent('toggleRemoved', 'worktypev2', null);\n    }\n\n    @action\n    togglePopover(id) {\n        if (!isPresent(this.showTooltip[id])) this.showTooltip[id] = true;\n        else this.showTooltip[id] = !this.showTooltip[id];\n        this.showTooltip = this.showTooltip;\n    }\n\n    async updateSalaryCalculationTypes(worktimegroup) {\n        this.loadingCalculationTypes = true;\n        this.calculationTypes = await this.ttapi.request(\n            'api/salary/calculations/' + worktimegroup,\n        );\n        this.loadingCalculationTypes = false;\n    }\n\n    validateSliders(value) {\n        let errors = [];\n        let message = this.intl.t('worktypes.calculation_errors.titel') + '<br>';\n        let [fieldName, isSaldoField] = value.name.split(/(?=_)/g);\n\n        if (!this.calculations.includes(value.name)) {\n            //show alarm if trying to turn on overtime saldo calculation but saldo calculation is off\n            if (isSaldoField && !this.calculations.includes('saldo'))\n                errors.push(\n                    '<br>' + this.intl.t('worktypes.calculation_errors.saldo_not_on') + '<br>',\n                );\n            //show alarm if trying to turn on some calculation but saldo or normal version of it is on\n            let overlappingCalculation = isSaldoField ? fieldName : fieldName + '_saldo';\n            if (this.calculations.includes(overlappingCalculation))\n                errors.push(\n                    '<br>' +\n                        this.intl.t('worktypes.calculation_errors.calculation_overlap', {\n                            calculation: this.translateOverlapCalc(overlappingCalculation, value),\n                        }) +\n                        '<br>',\n                );\n        } else {\n            //show alarm if trying to remove saldo calculation but some overtime saldo calculation is on\n            if (\n                this.calculations.includes('saldo') &&\n                fieldName == 'saldo' &&\n                this.calculationsIncludesOvertimeSaldos()\n            )\n                errors.push(\n                    '<br>' +\n                        this.intl.t('worktypes.calculation_errors.OvertimeSaldo_calculation_on') +\n                        '<br>',\n                );\n        }\n\n        if (!errors.length) return true;\n\n        errors.map((error) => (message += error));\n        this.dialogs.alert(message);\n        return false;\n    }\n\n    calculationsIncludesOvertimeSaldos() {\n        return this.calculations.find((calc) => calc.includes('_saldo'));\n    }\n\n    translateOverlapCalc(overlappingCalc, calc) {\n        if (calc.text) {\n            let [fieldName, isSaldoField] = calc.text.split(/(?= )/g);\n            return isSaldoField ? fieldName : fieldName + ' (saldo)';\n        }\n        return this.intl.t('worktime.' + overlappingCalc);\n    }\n}\n","import Component from '@glimmer/component';\n\nexport default class SettingsGeneralV2ComponentsSalarytypesWorktypesModalComponent extends Component {\n    /**\n     * never allow editing worktimegroup\n     */\n    get disabledFields() {\n        const ret = {};\n\n        if (!this.args.record.isNew) ret.worktimegroup = true;\n\n        // Disable worktimegroup when adding worktype in worktimegroup settings\n        if (this.args.worktimeGroupLocked) ret.worktimegroup = true;\n\n        return ret;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"VjZamT1o\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"calc\\\",\\\"@error\\\",\\\"@errors\\\",\\\"@record\\\",\\\"@setForSaveDefault\\\",\\\"@loadingDefault\\\",\\\"@calculations\\\",\\\"@toggleCalculationValue\\\",\\\"@calculationTypes\\\",\\\"@loadingCalculationTypes\\\",\\\"@closeModal\\\",\\\"@onFieldChange\\\",\\\"@saving\\\",\\\"@save\\\"],\\\"statements\\\":[[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[23,16,[]],\\\"ember-movenium-form-report-form-add-modal worktypev2-custom-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,9,[\\\"isNew\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"menu.add_worktypev2\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"menu.edit_worktypev2\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"worktypev2\\\",[23,9,[]],[23,17,[]],[23,16,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"calculations\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,9,[\\\"worktimegroup\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"worktypev2.calculations\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,15,[]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[5,\\\"loader-icon\\\",[],[[\\\"@slim\\\",\\\"@class\\\"],[\\\"true\\\",\\\"mb-6\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[23,14,[]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 calculation-row\\\"],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"calculations-name\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[23,6,[]],\\\"text\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                    \\\"],[1,[28,\\\"get\\\",[[23,6,[]],\\\"text\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                                    \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"worktime.\\\",[28,\\\"get\\\",[[23,6,[]],\\\"name\\\"],null]],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-10 calculation-row\\\"],[8],[0,\\\"\\\\n                                            \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@theme\\\",\\\"@value\\\",\\\"@onToggle\\\"],[\\\"light\\\",[28,\\\"includes\\\",[[28,\\\"get\\\",[[23,6,[]],\\\"name\\\"],null],[23,12,[]]],null],[28,\\\"fn\\\",[[23,13,[]],[23,6,[]]],null]]]],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"salarytype\\\"],null],[28,\\\"not\\\",[[28,\\\"get\\\",[[23,9,[]],\\\"worktimegroup\\\"],null]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"worktypev2.salarytype\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worktypes.select_worktimegroup_first\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"default\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,11,[]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"loader-icon\\\",[],[[\\\"@slim\\\",\\\"@class\\\"],[\\\"true\\\",\\\"mb-6\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"not\\\",[[28,\\\"get\\\",[[23,9,[]],\\\"worktimegroup\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"report.worktypev2.default\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worktypes.select_worktimegroup_first\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@error\\\"],[[28,\\\"get\\\",[[23,8,[]],[23,5,[\\\"name\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                                        \\\"],[6,[23,4,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[28,\\\"get\\\",[[23,9,[]],[23,5,[\\\"name\\\"]]],null],[23,9,[]],[28,\\\"fn\\\",[[23,10,[]]],null],[23,5,[\\\"features\\\",\\\"mandatory\\\"]],[28,\\\"or\\\",[[28,\\\"get\\\",[[23,0,[\\\"disabledFields\\\"]],[23,5,[\\\"name\\\"]]],null],[23,11,[]]],null]]]],[0,\\\"\\\\n                                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"  \\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pt-5\\\"],[8],[0,\\\"\\\\n                                    \\\"],[5,\\\"field-info-bubble\\\",[],[[\\\"@side\\\",\\\"@text\\\"],[\\\"right\\\",[28,\\\"t\\\",[\\\"worktypes.default_field_help\\\"],null]]]],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@error\\\"],[[28,\\\"get\\\",[[23,8,[]],[23,5,[\\\"name\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[6,[23,4,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[28,\\\"get\\\",[[23,9,[]],[23,5,[\\\"name\\\"]]],null],[23,9,[]],[28,\\\"fn\\\",[[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null],[23,5,[\\\"features\\\",\\\"mandatory\\\"]],[28,\\\"get\\\",[[23,0,[\\\"disabledFields\\\"]],[23,5,[\\\"name\\\"]]],null]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[5]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[3,4]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Buttons\\\"]],[],[[\\\"@saving\\\",\\\"@save\\\",\\\"@cancel\\\"],[[23,18,[]],[23,19,[]],[23,16,[]]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,7,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"addon/form-add/error\\\",[],[[\\\"@error\\\"],[[23,7,[]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/salarytypes/worktypes/modal/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"xek0hIxd\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"Field\\\",\\\"Value\\\",\\\"row\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"showReport\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"center-alignment\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showPassive\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.show_passive_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showColumns\\\",\\\"@filter\\\",\\\"@hideCreatedColumn\\\",\\\"@showFilters\\\"],[\\\"worktypev2\\\",\\\"name,salarytype,worktimegroup,calculations,default\\\",[23,0,[\\\"filters\\\"]],true,\\\" \\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Add\\\"]],[],[[\\\"@onClick\\\"],[[23,0,[\\\"addWorktype\\\"]]]]],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@hideSumRow\\\",\\\"@hideRemovedText\\\",\\\"@formatCells\\\",\\\"@classes\\\"],[true,true,true,\\\"worktype-report-table\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"history\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"editWorktype\\\"]],[23,5,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"row_info\\\",\\\"status\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"worktimegroup\\\",\\\"row_info\\\",\\\"status\\\"]],\\\"normal\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-ReuseFilled\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"restoreWorktype\\\"]],[23,5,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Info salarytypev2-info-button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"togglePopover\\\"]],[23,5,[\\\"id\\\"]]],null]]],[8],[0,\\\"\\\\n                        \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@text\\\",\\\"@tooltipClass\\\",\\\"@popperContainer\\\",\\\"@event\\\",\\\"@isShown\\\",\\\"@hideOn\\\",\\\"@side\\\"],[[28,\\\"t\\\",[\\\"worktype.removed_infotext.worktimegroup_removed\\\"],[[\\\"htmlSafe\\\"],[true]]],\\\"help-tooltip\\\",\\\"body\\\",\\\"none\\\",[28,\\\"get\\\",[[23,0,[\\\"showTooltip\\\"]],[23,5,[\\\"id\\\"]]],null],\\\"click\\\",\\\"right\\\"]]],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Delete\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"removeWorktype\\\"]],[23,5,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[23,3,[]],\\\"calculations\\\"],null],[23,4,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"call\\\",[[28,\\\"fn\\\",[[23,0,[\\\"getTranslatedValue\\\"]],[23,4,[]]],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[3,4]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"center-alignment\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs passive-button\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"toggleRemoved\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showPassive\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"general.hide_passive\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"general.show_passive\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"class\\\"],[\\\"loading-icon\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[23,0,[\\\"record\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"settings/general-v2/components/salarytypes/worktypes/modal\\\",[],[[\\\"@record\\\",\\\"@worktimeGroupLocked\\\",\\\"@loadingCalculationTypes\\\",\\\"@calculationTypes\\\",\\\"@calculations\\\",\\\"@closeModal\\\",\\\"@onFieldChange\\\",\\\"@toggleCalculationValue\\\",\\\"@saving\\\",\\\"@save\\\",\\\"@error\\\",\\\"@errors\\\",\\\"@setForSaveDefault\\\",\\\"@loadingDefault\\\"],[[23,0,[\\\"record\\\"]],[23,0,[\\\"worktimeGroupLocked\\\"]],[23,0,[\\\"loadingCalculationTypes\\\"]],[23,0,[\\\"calculationTypes\\\"]],[23,0,[\\\"calculations\\\"]],[23,0,[\\\"closeModal\\\"]],[23,0,[\\\"onFieldChange\\\"]],[23,0,[\\\"toggleCalculationValue\\\"]],[23,0,[\\\"saving\\\"]],[23,0,[\\\"save\\\"]],[23,0,[\\\"error\\\"]],[23,0,[\\\"errors\\\"]],[23,0,[\\\"setForSaveDefault\\\"]],[23,0,[\\\"loadingDefault\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/salarytypes/worktypes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/general-v2/components/saldo-setting/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldSettingCompSaldoSettingComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../../classes/collector';\n\nimport config from '../../../../../config/environment';\n\nimport { isArray } from '@ember/array';\n\nCollectorFieldSettingCompSaldoSettingComponent = Ember.Component.extend({\n    Collector: Em.inject.service('collector-service'),\n    session: Em.inject.service(),\n    store: Em.inject.service(),\n    intl: Em.inject.service(),\n    dialogs: Ember.inject.service(),\n    //startdate: Em.computed ->\n    //    moment().format('YYYY-MM-DD')\n    didReceiveAttrs: function () {\n        this.set('loading', true);\n        return this.get('Collector')\n            .ttapi({\n                url: 'saldo/saldoSettings',\n            })\n            .then((back) => {\n                var skip_worktimegroups;\n                // these are the default-values if no saldo-settings are found\n                if (back.length === 0) {\n                    back = {};\n                    back.startdate = moment().format('YYYY-MM-DD');\n                    back.minimum = 20 * 60;\n                    back.maximum = 40 * 60;\n                    back.dailymaximum = 4 * 60;\n                    this.send('saveSetting');\n                }\n                skip_worktimegroups = back.skip_worktimegroups;\n                // sooooo ugly :(\n                this.set('startdate', back.startdate);\n                this.set('minimum_saldo', back.minimum / 60);\n                this.set('maximum_saldo', back.maximum / 60);\n                this.set('dailymaximum_saldo', back.dailymaximum / 60);\n                this.set('old_startdate', back.startdate);\n                this.set('old_minimum_saldo', back.minimum / 60);\n                this.set('old_maximum_saldo', back.maximum / 60);\n                this.set('old_dailymaximum_saldo', back.dailymaximum / 60);\n                this.set('saldo_absence_id', back.saldo_absence_id);\n                this.set('autocut_saldo', back.auto_cut);\n                this.set('old_autocut_saldo', this.get('autocut_saldo'));\n                this.set('skip_worktimegroups', skip_worktimegroups);\n                this.set('old_skip_worktimegroups', skip_worktimegroups);\n                this.set('split_basichours', back.split_basichours);\n                this.set('old_split_basichours', this.get('split_basichours'));\n                return this.set('loading', false);\n            });\n    },\n    isFiService: Ember.computed('session.currentUser', function () {\n        return false;\n        if (this.get('session.currentUser.company_info.country') === 'fi') {\n            return true;\n        }\n    }),\n    dirty: Ember.computed(\n        'startdate',\n        'old_startdate',\n        'minimum_saldo',\n        'old_minimum_saldo',\n        'maximum_saldo',\n        'old_maximum_saldo',\n        'dailymaximum_saldo',\n        'old_dailymaximum_saldo',\n        'autocut_saldo',\n        'old_autocut_saldo',\n        'skip_worktimegroups',\n        'old_skip_worktimegroups',\n        'old_split_basichours',\n        'split_basichours',\n        function () {\n            return (\n                this.get('startdate') !== this.get('old_startdate') ||\n                this.get('minimum_saldo') !== this.get('old_minimum_saldo') ||\n                this.get('maximum_saldo') !== this.get('old_maximum_saldo') ||\n                this.get('dailymaximum_saldo') !== this.get('old_dailymaximum_saldo') ||\n                this.get('autocut_saldo') !== this.get('old_autocut_saldo') ||\n                this.get('skip_worktimegroups') !== this.get('old_skip_worktimegroups') ||\n                this.get('split_basichours') !== this.get('old_split_basichours')\n            );\n        },\n    ),\n    worktimegroupField: Ember.computed('skip_worktimegroups', function () {\n        var field;\n        field = this.get('Collector').field('user', 'worktimegroup');\n        field.type = 'multiselect';\n        return field;\n    }),\n    showAddSaldoAbsenceButton: Ember.computed('saldo_absence_id', function () {\n        if (!this.get('Collector').testNeeds(['abcense'])) {\n            return false;\n        }\n        if (!this.get('startdate')) {\n            return false;\n        }\n        if (this.get('Collector').testNeeds(['products.salarytype_v2'])) {\n            return false;\n        }\n        if (!this.get('saldo_absence_id')) {\n            return true;\n        }\n        if (!this.get('store').peekRecord('abcensetype', this.get('saldo_absence_id'))) {\n            return true;\n        }\n    }),\n    createSaldoAbsence: function () {\n        return new Ember.RSVP.Promise((resolve) => {\n            var record;\n            if (!this.get('Collector').testNeeds(['abcense'])) {\n                resolve(null);\n            }\n            if (this.get('Collector').testNeeds(['products.salarytype_v2'])) {\n                return resolve(null);\n            }\n            if (!this.get('saldo_absence_id')) {\n                // create new absence type\n                record = this.get('store').createRecord('abcensetype', {\n                    name: this.get('intl').t('saldo.saldo_absence'),\n                });\n                return record.save().then(function (saved) {\n                    return resolve(saved.get('id'));\n                });\n            } else if (!this.get('store').peekRecord('abcensetype', this.get('saldo_absence_id'))) {\n                return this.get('store')\n                    .query('abcensetype', {\n                        id: this.get('saldo_absence_id'),\n                    })\n                    .then((rows) => {\n                        if (Ember.isEmpty(rows)) {\n                            // create new absence type\n                            record = this.get('store').createRecord('abcensetype', {\n                                name: this.get('intl').t('saldo.saldo_absence'),\n                            });\n                            return record.save().then(function (saved) {\n                                return resolve(saved.get('id'));\n                            });\n                        } else {\n                            return resolve(this.get('saldo_absence_id'));\n                        }\n                    });\n            } else {\n                return resolve(this.get('saldo_absence_id'));\n            }\n        });\n    },\n    recalculateOldSaldos: function (between) {\n        var startdate;\n        startdate = between.split('_')[0];\n        return this.get('dialogs')\n            .confirm(\n                this.get('intl').t('saldo.calculateHistorySaldo', {\n                    startdate: moment(startdate).format('L'),\n                }),\n            )\n            .then((con) => {\n                if (con) {\n                    return this.get('Collector').ttapi({\n                        method: 'get',\n                        url: 'saldo/calculateSaldos?date=' + between + '&userid=all',\n                    });\n                }\n            });\n    },\n    actions: {\n        moreInfo: function () {\n            return window.open(config.APP.CDN_URL + '/documents/Saldot+ohje.pdf', '_blank');\n        },\n        changeWorktimegroups: function (value) {\n            return this.set('skip_worktimegroups', value);\n        },\n        saveSetting: function () {\n            return this.createSaldoAbsence().then((saldo_absence_id) => {\n                var data, old_startdate, recalculationNeeded;\n                data = {\n                    startdate: this.get('startdate'),\n                    minimum: parseInt(this.get('minimum_saldo'), 10) * 60,\n                    maximum: parseInt(this.get('maximum_saldo'), 10) * 60,\n                    dailymaximum: parseFloat(this.get('dailymaximum_saldo'), 10) * 60,\n                    saldo_absence_id: saldo_absence_id,\n                };\n                if (this.get('skip_worktimegroups')) {\n                    data.skip_worktimegroups = isArray(this.get('skip_worktimegroups'))\n                        ? this.get('skip_worktimegroups').join(',')\n                        : this.get('skip_worktimegroups');\n                } else {\n                    data.skip_worktimegroups = '';\n                }\n                if (this.get('autocut_saldo')) {\n                    data.auto_cut = true;\n                } else {\n                    data.auto_cut = '';\n                }\n                if (this.get('split_basichours')) {\n                    data.split_basichours = true;\n                    this.get('Collector').addProduct('saldo_splitted');\n                } else {\n                    data.split_basichours = '';\n                    this.get('Collector').removeProduct('saldo_splitted');\n                }\n                return this.get('Collector')\n                    .ttapi(\n                        {\n                            method: 'post',\n                            url: 'saldo/saldoSettings',\n                            data: data,\n                        },\n                        (old_startdate =\n                            this.get('old_startdate') || moment().format('YYYY-MM-DD')),\n                        this.get('startdate') < old_startdate\n                            ? (recalculationNeeded =\n                                  this.get('startdate') +\n                                  '_' +\n                                  moment(old_startdate).subtract(1, 'day').format('YYYY-MM-DD'))\n                            : (recalculationNeeded = false),\n                    )\n                    .then((back) => {\n                        this.set('old_startdate', this.get('startdate'));\n                        this.set('old_minimum_saldo', this.get('minimum_saldo'));\n                        this.set('old_maximum_saldo', this.get('maximum_saldo'));\n                        this.set('old_dailymaximum_saldo', this.get('dailymaximum_saldo'));\n                        this.set('old_autocut_saldo', this.get('autocut_saldo'));\n                        this.set('old_skip_worktimegroups', this.get('skip_worktimegroups'));\n                        this.set('old_split_basichours', this.get('split_basichours'));\n                        if (this.get('saldo_absence_id') === saldo_absence_id) {\n                            this.notifyPropertyChange('saldo_absence_id');\n                        } else {\n                            this.set('saldo_absence_id', saldo_absence_id);\n                        }\n                        if (this.get('saveCalled')) {\n                            this.saveCalled();\n                        }\n                        if (recalculationNeeded) {\n                            return this.recalculateOldSaldos(recalculationNeeded);\n                        }\n                    });\n            });\n        },\n        changeSaldotype: function (type) {\n            return this.set('saldotype', type);\n        },\n    },\n});\n\nexport default CollectorFieldSettingCompSaldoSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"eKEBkjZw\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"saldo.start\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"form-control add-fields\\\",[24,[\\\"startdate\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"saldo.minimum\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"minimum_saldo\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"saldo.maximum\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"maximum_saldo\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"saldo.dailymaximum\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"dailymaximum_saldo\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"saldo.autocut\\\"],null],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"autocut_saldo\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"autocut_saldo\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"saldo.split_basichours\\\"],null],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"split_basichours\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"split_basichours\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktimegroup\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"saldo.skip_worktimegroups\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"worktimegroupField\\\"]]],[[\\\"change\\\",\\\"value\\\"],[\\\"changeWorktimegroups\\\",[24,[\\\"skip_worktimegroups\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isFiService\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"moreInfo\\\"]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"info-button-md col-xs-2\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[1,[28,\\\"t\\\",[\\\"saldo.more_info_link\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"disabled\\\",[28,\\\"not\\\",[[24,[\\\"dirty\\\"]]],null]],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddSaldoAbsenceButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"saldo.add_saldo_absence\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/saldo-setting/template.hbs\"}});","import { inject as service } from '@ember/service';\nimport Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\n\nexport default Component.extend({\n    loadTranslations: service(),\n    intl: service(),\n\n    loading: true,\n\n    terms: computed(function () {\n        const terms = get(this, 'intl').t('terms.project');\n        const changesArr = terms.split(/\\n/g);\n        const termList = changesArr[0].split(/,/g);\n\n        return termList.map((item, key) => {\n            return { id: '' + key, text: item };\n        });\n    }),\n\n    didReceiveAttrs() {\n        set(this, 'selectedTerm', get(this, 'loadTranslations').getTermsIndex());\n        set(this, 'loading', false);\n    },\n\n    actions: {\n        termsChanged(index) {\n            get(this, 'loadTranslations').saveTermsIndex(index);\n            get(this, 'loadTranslations').fetch();\n\n            set(this, 'selectedTerm', index);\n\n            get(this, 'loadTranslations').saveTermsIndex(index);\n            this.saveCalled();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"zdbzSLWi\",\"block\":\"{\\\"symbols\\\":[\\\"term\\\"],\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"settings.general.terms_desc\\\"],null],false],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"termsChanged\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"terms\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,1,[\\\"id\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"selectedTerm\\\"]]],null]],[8],[1,[23,1,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/terms-setting/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/general-v2/components/time-setting/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorSettingCompTimeSettingComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../../classes/collector';\n\nCollectorSettingCompTimeSettingComponent = Ember.Component.extend({\n    store: Em.inject.service(),\n    session: Em.inject.service(),\n    intl: Em.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    notifications: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    setting_default: '16:00',\n    time: Em.computed(function () {\n        return (\n            this.get('customerSettings').checkSetting(this.get('configs.name')) ||\n            this.setting_default\n        );\n    }),\n    second_time: Em.computed(function () {\n        return this.get('customerSettings').checkSetting(\n            this.get('configs.secondary_setting_name'),\n        );\n    }),\n    field1Translation: Em.computed(function () {\n        if (\n            this.get('configs.name').indexOf('_fi') > 0 ||\n            this.get('configs.name').indexOf('_se') > 0\n        ) {\n            return this.get('intl').t(\n                'settings.' + this.get('configs.name').slice(0, -3) + '.field',\n            );\n        } else {\n            return this.get('intl').t('settings.' + this.get('configs.name') + '.field');\n        }\n    }),\n    field2Translation: Em.computed(function () {\n        if (\n            this.get('configs.secondary_setting_name').indexOf('_fi') > 0 ||\n            this.get('configs.secondary_setting_name').indexOf('_se') > 0\n        ) {\n            return this.get('intl').t(\n                'settings.' + this.get('configs.secondary_setting_name').slice(0, -3) + '.field',\n            );\n        } else {\n            return this.get('intl').t('settings.' + this.get('configs.name') + '.field');\n        }\n    }),\n    /*\n  is_dirty: Em.computed 'setting', ->\n      if @get('setting')  != @get('setting_default')\n          return true\n      else\n          return false\n  */\n    actions: {\n        saveSetting: function () {\n            return this.get('customerSettings')\n                .setSetting(this.get('configs.name'), this.get('time'))\n                .then(() => {\n                    var promise;\n                    promise = new Em.RSVP.Promise((resolve, reject) => {\n                        if (this.get('configs.secondary_setting_name')) {\n                            return this.get('customerSettings')\n                                .setSetting(\n                                    this.get('configs.secondary_setting_name'),\n                                    this.get('second_time'),\n                                )\n                                .then(() => {\n                                    return resolve();\n                                });\n                        } else {\n                            return resolve();\n                        }\n                    });\n                    return promise.then(() => {\n                        if (this.get('settingSaved')) {\n                            return this.settingSaved();\n                        }\n                    });\n                });\n        },\n    },\n});\n\nexport default CollectorSettingCompTimeSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"nHDBfw2V\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"configs\\\",\\\"secondary_setting_name\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-horizontal\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-6 control-label\\\"],[8],[1,[22,\\\"field1Translation\\\"],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"time\\\",[24,[\\\"time\\\"]],\\\"form-control\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-6 control-label\\\"],[8],[1,[22,\\\"field2Translation\\\"],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"time\\\",[24,[\\\"second_time\\\"]],\\\"form-control\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"time\\\",[24,[\\\"time\\\"]],\\\"form-control\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/time-setting/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class VgLicensesComponent extends Component {\n    @service('vastuu-group') vastuuGroup;\n    @service evented;\n\n    get styleNamespace() {\n        return podNames['settings/general-v2/components/vg-licenses'];\n    }\n\n    @tracked isLoading = true;\n    @tracked licenses = [];\n    @tracked error = null;\n    @tracked hasCustomerId = false;\n\n    constructor() {\n        super(...arguments);\n        this.evented.on('storeEvent', this, this._onStoreEvent);\n        this.load();\n    }\n\n    willDestroy() {\n        super.willDestroy(...arguments);\n        this.evented.off('storeEvent', this, this._onStoreEvent);\n    }\n\n    _onStoreEvent({ type }) {\n        if (type === 'vastuugroupsetting') {\n            this.reload();\n        }\n    }\n\n    async reload() {\n        this.isLoading = true;\n        this.error = null;\n        this.licenses = [];\n        this.hasCustomerId = false;\n        await this.load();\n    }\n\n    async load() {\n        try {\n            const customerId = await this.vastuuGroup.getCustomerId();\n            if (!customerId) {\n                this.isLoading = false;\n                return;\n            }\n            this.hasCustomerId = true;\n            const response = await this.vastuuGroup.getCustomerLicenses(customerId);\n            if (response && response.success) {\n                this.licenses = response.data || [];\n            } else {\n                this.error = 'settings.vg_licenses.error';\n            }\n        } catch (e) {\n            this.error = 'settings.vg_licenses.error';\n        }\n        this.isLoading = false;\n    }\n\n    get licensesWithUsage() {\n        return this.licenses.map((license) => {\n            const hasUsage =\n                license.usage_amount !== null &&\n                license.usage_amount !== undefined &&\n                license.usage_tier_cap !== null &&\n                license.usage_tier_cap !== undefined;\n\n            let percentage = 0;\n\n            if (hasUsage) {\n                percentage = Math.min(\n                    Math.round((license.usage_amount / license.usage_tier_cap) * 100),\n                    100,\n                );\n            }\n\n            return {\n                ...license,\n                hasUsage,\n                percentage,\n            };\n        });\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"RDOpvWbY\",\"block\":\"{\\\"symbols\\\":[\\\"license\\\",\\\"A\\\",\\\"svc\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"hasCustomerId\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[[23,0,[\\\"error\\\"]]],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"not\\\",[[23,0,[\\\"licenses\\\",\\\"length\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"settings.vg_licenses.no_licenses\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-setting-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.vg_licenses\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"licensesWithUsage\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-license-card\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-license-header\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[23,1,[\\\"product_name\\\"]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-license-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"hasUsage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-license-usage-row\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-license-usage-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.vg_licenses.usage\\\"],null],false],[0,\\\" \\\"],[1,[23,1,[\\\"usage_amount\\\"]],false],[0,\\\"/\\\"],[1,[23,1,[\\\"usage_tier_cap\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-license-bar\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[11,\\\"style\\\",[28,\\\"htmlsafe\\\",[[28,\\\"concat\\\",[\\\"width: \\\",[23,1,[\\\"percentage\\\"]],\\\"%\\\"],null]],null]],[11,\\\"aria-valuenow\\\",[29,[[23,1,[\\\"percentage\\\"]]]]],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-license-pct\\\"],[8],[1,[23,1,[\\\"percentage\\\"]],false],[0,\\\"%\\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-license-no-usage\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.vg_licenses.usage_not_available\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[5,\\\"addon/accordion\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,2,[\\\"Item\\\"]],[],[[\\\"@showTitle\\\",\\\"@hideTitle\\\"],[[28,\\\"t\\\",[\\\"settings.vg_licenses.details\\\"],null],[28,\\\"t\\\",[\\\"settings.vg_licenses.details\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-license-details\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"strong\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.vg_licenses.product_family\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n                                \\\"],[1,[23,1,[\\\"product_family_name\\\"]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"strong\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.vg_licenses.validity\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"start_date\\\"]],\\\"L\\\"],null],false],[0,\\\" – \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"end_date\\\"]],\\\"L\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"strong\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.vg_licenses.billing_period\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"billing_period_start_date\\\"]],\\\"L\\\"],null],false],[0,\\\" – \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"billing_period_end_date\\\"]],\\\"L\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"applicable_services\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"strong\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.vg_licenses.applicable_services\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"applicable_services\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"li\\\",true],[8],[1,[23,3,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/vg-licenses/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\nimport { isPresent } from '@ember/utils';\n\nexport default class WorktimeGroupSettingsComponent extends Component {\n    @service evented;\n    @service store;\n    @service analytics;\n    @service capi;\n    @service('collector-service') Collector;\n    @tracked showRemovingModal;\n    @tracked usersStillInGroup;\n    @tracked showPassive;\n    @tracked selectedWorktimegroup;\n\n    @action\n    toggleRemoved() {\n        this.showPassive = !this.showPassive;\n        this.evented.storeEvent('toggleRemoved', 'worktimegroup', null);\n    }\n\n    @action\n    tryToRemoveRow(row) {\n        let users = this.store.query('user', { worktimegroup: row.id, limit: 10 });\n        this.selectedWorktimegroup = row;\n        this.usersStillInGroup = users;\n        this.showRemovingModal = true;\n        this.analytics.trackEvent({ category: 'delete row', action: 'worktimegroup' });\n    }\n\n    @action\n    closeModal() {\n        this.showRemovingModal = false;\n    }\n\n    @action\n    async removeWorktimegroup(row) {\n        await this.removeWorktimegroupProducts(row.id);\n        await row.destroyRecord();\n        await row.unloadRecord();\n        this.showRemovingModal = false;\n        this.evented.storeEvent('update', null, null); // updates ALL form-reports on this page but lucky for us, there is no other reports on this page\n    }\n\n    @action\n    restoreRow(row) {\n        this.evented.storeEvent('restore', 'worktimegroup', row);\n    }\n\n    async removeWorktimegroupProducts(worktimegroup) {\n        const worktimegroupProducts = await this.capi.request(\n            'service/productsByWorktimegroup?only=true&worktimegroups=' + worktimegroup,\n        );\n        const products = worktimegroupProducts?.products;\n        if (!products) return;\n\n        if (isPresent(products[worktimegroup])) {\n            products[worktimegroup].forEach((product) => {\n                this.Collector.removeProduct(product, worktimegroup);\n            });\n        }\n    }\n}\n","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class SettingsGeneralV2ComponentsWorktimeGroupModalComponent extends Component {\n    get moreUsers() {\n        return this.args.users.meta.count - this.args.users.length;\n    }\n    get styleNamespace() {\n        return podNames['settings/general-v2/components/worktimegroups/modal'];\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"Ichn1GrI\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"user\\\",\\\"@row\\\",\\\"@closeModal\\\",\\\"@removeWorktimegroup\\\",\\\"@users\\\"],\\\"statements\\\":[[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[23,4,[]],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[23,6,[]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"settings.worktimegroups.checking_users\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,6,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"menu.cannot_remove_worktimegroup\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.remove_row\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[23,6,[]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,6,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pb-5\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"settings.worktimegroups.cannot_delete_text\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-60\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pb-1\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"settings.worktimegroups.contains_users\\\"],[[\\\"users\\\"],[[23,6,[\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\":\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,6,[]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[4,\\\"link-to\\\",null,[[\\\"route\\\",\\\"model\\\"],[\\\"users.edit\\\",[23,2,[\\\"id\\\"]]]],{\\\"statements\\\":[[1,[23,2,[\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"lastname\\\"]],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"moreUsers\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"settings.worktimegroups.more_users\\\"],[[\\\"users\\\"],[[23,0,[\\\"moreUsers\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-40\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Error\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pt-5 pb-5\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"settings.worktimegroups.link_to_user\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-worktimegroup-text\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"settings.worktimegroups.are_you_sure\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-worktimegroup-name\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"b\\\",true],[8],[1,[23,3,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-worktimegroup-text\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"settings.worktimegroups.can_restore_text\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,4,[]]]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\",\\\"@name\\\"],[[22,\\\"isSaving\\\"],[28,\\\"fn\\\",[[23,5,[]],[23,3,[]]],null],\\\"btn btn-m-delete btn-block btn-lg\\\",\\\"delete-button\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"general.delete\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/worktimegroups/modal/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"cK7ZkHnl\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"row\\\",\\\"@setting\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"not\\\",[[23,4,[\\\"loading\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"center-alignment\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showPassive\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.show_passive_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@showFilters\\\",\\\"@form\\\",\\\"@hideCreatedColumn\\\"],[\\\" \\\",\\\"worktimegroup\\\",true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Add\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@hideSumRow\\\",\\\"@hideRemovedText\\\",\\\"@classes\\\"],[true,true,\\\"hide-horizontal-scrollbar\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"edit\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[\\\"row_info\\\",\\\"status\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-ReuseFilled\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"restoreRow\\\"]],[23,3,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Delete\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"tryToRemoveRow\\\"]],[23,3,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"center-alignment\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs passive-button\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"toggleRemoved\\\"]]],null]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showPassive\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.hide_passive\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.show_passive\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showRemovingModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"settings/general-v2/components/worktimegroups/modal\\\",[],[[\\\"@users\\\",\\\"@closeModal\\\",\\\"@removeWorktimegroup\\\",\\\"@row\\\"],[[23,0,[\\\"usersStillInGroup\\\"]],[23,0,[\\\"closeModal\\\"]],[23,0,[\\\"removeWorktimegroup\\\"]],[23,0,[\\\"selectedWorktimegroup\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/worktimegroups/template.hbs\"}});","/* eslint-disable ember/no-side-effects */\nimport Component from '@ember/component';\nimport { computed, set, get } from '@ember/object';\nimport settingsJSON from './settings';\nimport { inject as service } from '@ember/service';\nimport EmberObject from '@ember/object';\nimport { Promise } from 'rsvp';\nimport { htmlSafe } from '@ember/string';\n\nexport default Component.extend({\n    customerSettings: service(),\n    intl: service(),\n    ttapi: service(),\n    session: service(),\n    store: service(),\n    notifications: service(),\n    router: service(),\n    autopauseChecker: service(),\n    isHelpContainerVisible: false,\n    shouldHideHelp: computed('worktimegroup', 'currentSettingsPage', function () {\n        return ['notifications.sending'].includes(this.currentSettingsPage);\n    }),\n    settingGroups: computed('worktimegroup', function () {\n        let removedSettings = [];\n        let filteredGroups = [];\n        let filteredSettings = [];\n        let currentSettings = [];\n        let mainGroups = [\n            {\n                name: 'general',\n                subsettings: ['settings'],\n                icon: 'Settings',\n                translation: get(this, 'intl').t('settings.general-settings'),\n            },\n            {\n                name: 'integrations',\n                subsettings: ['settings'],\n                icon: 'move move-puzzle',\n                translation: get(this, 'intl').t('settings.general-integrations'),\n            },\n            {\n                name: 'notifications',\n                subsettings: ['settings', 'sending'],\n                icon: 'Comments',\n                translation: get(this, 'intl').t('settings.notifications'),\n            },\n            {\n                name: 'salaries',\n                subsettings: [\n                    'settings',\n                    'calculations',\n                    'salarytypes',\n                    'salaryperiods',\n                    /*\"worktimebanks\",*/ 'overtime',\n                    'saldo_banks',\n                ],\n                icon: 'Money',\n                translation: get(this, 'intl').t('settings.salaries'),\n            },\n            {\n                name: 'absences',\n                subsettings: ['settings'],\n                icon: 'Cup',\n                translation: get(this, 'intl').t('settings.absences'),\n            },\n            {\n                name: 'project-management',\n                subsettings: [\n                    'settings',\n                    'customers',\n                    'projects',\n                    'materials',\n                    'measurements',\n                    'orientations',\n                    'construction_notices',\n                    'groups',\n                    'tasks',\n                    'worktasks',\n                ],\n                icon: 'Route',\n                translation: get(this, 'intl').t('settings.project-management'),\n            },\n            {\n                name: 'worktimes',\n                subsettings: ['settings', 'limitations'],\n                icon: 'Time',\n                translation: get(this, 'intl').t('settings.worktimes'),\n            },\n            {\n                name: 'drivinglog',\n                subsettings: ['settings'],\n                icon: 'Mileage',\n                translation: get(this, 'intl').t('settings.drivinglog'),\n                needs: ['products.drivinglog'],\n            },\n            {\n                name: 'companyProfile',\n                subsettings: ['info'],\n                icon: 'AdministratorFilled',\n                translation: get(this, 'intl').t('settings.company-profile'),\n                needs: ['userlevel=5'],\n            },\n        ];\n        if (this.worktimegroup) {\n            filteredSettings = settingsJSON.settings.filterBy('groupEditable');\n            //console.log(filteredSettings);\n        } else {\n            filteredSettings = settingsJSON.settings;\n        }\n        for (var group of mainGroups) {\n            if (group.needs && !this.Collector.testNeeds(group.needs)) continue;\n            var addGroup = {\n                name: group.name,\n                subsettings: [],\n                icon: group.icon,\n                translation: group.translation,\n                subsettingTranslations: [],\n            };\n            for (var subgroupIndex of group.subsettings) {\n                currentSettings = filteredSettings.filterBy(\n                    'category',\n                    group.name + '.' + subgroupIndex,\n                );\n\n                for (var setting of currentSettings) {\n                    if (setting.needs && !this.Collector.testNeeds(setting.needs)) {\n                        removedSettings.pushObject(setting);\n                    }\n                }\n\n                let difference = currentSettings.filter((x) => !removedSettings.includes(x));\n\n                if (\n                    difference.length > 0 &&\n                    (addGroup.subsettings.indexOf(subgroupIndex) == -1 ||\n                        !addGroup.subsettings.indexOf(subgroupIndex))\n                )\n                    addGroup.subsettings.pushObject(subgroupIndex);\n            }\n\n            if (addGroup.subsettings.length > 0) {\n                filteredGroups.pushObject(addGroup);\n            }\n        }\n\n        for (var maingroup of filteredGroups) {\n            maingroup['subsettingTranslations'] = [];\n            for (var subsetting of maingroup.subsettings) {\n                maingroup['subsettingTranslations'].pushObject({\n                    name: subsetting,\n                    translation: get(this, 'intl').t('settings.' + subsetting),\n                });\n            }\n            maingroup['subsettingTranslations'] =\n                maingroup['subsettingTranslations'].sortBy('translation');\n        }\n        //console.log(filteredGroups);\n        return filteredGroups;\n    }),\n    settingsPageSettings: computed('currentSettingsPage', 'worktimegroup', function () {\n        if (this.currentSettingsPage) {\n            let allSettingsForThisPage = settingsJSON.settings.filterBy(\n                'category',\n                this.currentSettingsPage,\n            );\n            if (this.worktimegroup)\n                allSettingsForThisPage = allSettingsForThisPage.filterBy('groupEditable');\n\n            let settings = allSettingsForThisPage.filter((setting) => {\n                var isActive = this.checkIfSettingIsOn(setting);\n                set(setting, 'active', isActive);\n                if (this.Collector.testNeeds(setting.needs)) {\n                    if (\n                        setting.disable &&\n                        setting.disable.length > 0 &&\n                        !this.isThisSettingAvailable(setting)\n                    )\n                        set(setting, 'disabled', true);\n                    else set(setting, 'disabled', false);\n                    set(setting, 'editingDisabled', this.isEditingDisabled(setting));\n                    return true;\n                }\n            });\n            return settings;\n        }\n        return [];\n    }),\n    translatedSettings: computed(function () {\n        let retArr = [];\n        let cat = [];\n        for (var setting of settingsJSON.settings) {\n            if (\n                setting.category &&\n                setting.category != 'no-category' &&\n                this.Collector.testNeeds(setting.needs)\n            ) {\n                cat = setting.category.split('.');\n                retArr.pushObject({\n                    category: setting.category,\n                    title: setting.title,\n                    translation:\n                        this.intl.t('settings.' + cat[0]) +\n                        ' > ' +\n                        this.intl.t('settings.' + cat[1]) +\n                        ' > ' +\n                        this.intl.t(setting.title),\n                });\n            }\n        }\n        return retArr;\n    }),\n    neededHelpTexts: computed('settingsPageSettings', function () {\n        return this.settingsPageSettings.mapBy('title');\n    }),\n\n    worktimeGroupsOn: computed('settingsPageSettings', function () {\n        return this.Collector.testNeedsOne('worktimegroup');\n    }),\n\n    init() {\n        this._super(...arguments);\n        this.disableOnlyText = {\n            key: '!products.mini_entry',\n            text: htmlSafe(this.intl.t('settings.mini_entry_disable_text')),\n        }; // +\" <a href=''>\"+this.intl.t(\"settings.mini_entry_disable_link\")+\"</a>\"\n        if (this.queryParams) {\n            set(this, 'currentSettingsPage', this.queryParams);\n            this.send('gotoSetting', this.queryParams);\n        } else {\n            this.send(\n                'gotoSetting',\n                this.settingGroups[0]['name'] + '.' + this.settingGroups[0]['subsettings'][0],\n            );\n            set(this, 'openSettings', [this.settingGroups[0]['name']]);\n        }\n    },\n    didUpdateAttrs() {\n        if (this.queryParams) {\n            set(this, 'currentSettingsPage', this.queryParams);\n        }\n    },\n\n    actions: {\n        gotoSetting(setting) {\n            let arr = setting.split('.');\n            set(this, 'openSettings', [arr[0]]);\n            set(this, 'currentSettingsPage', setting);\n        },\n        toggleHelpContainerVisibility(value) {\n            if (value === 'showHelpContainer') {\n                set(this, 'isHelpContainerVisible', true);\n            } else if (value === 'hideHelpContainer') {\n                set(this, 'isHelpContainerVisible', false);\n            }\n        },\n        refreshNeeded() {\n            this.refreshSettings();\n        },\n        saveCalled() {\n            this.showSavedNotice();\n            this.refreshSettings();\n        },\n        async toggleActive(setting) {\n            let active = false;\n\n            set(setting, 'loading', true);\n            var products, value;\n            if (setting.active) {\n                active = false;\n            } else {\n                active = true;\n            }\n            set(setting, 'active', active);\n            if (get(setting, 'productsOn')) {\n                if (get(setting, 'productsOn').includes('products.midweek_holiday_pay'))\n                    this.handleMidweekHolidayPaySalarytype(setting.active);\n                products = active ? get(setting, 'productsOn') : get(setting, 'productsOff');\n                let promises = await this.setSetting(\n                    setting,\n                    EmberObject.create({ products: products }),\n                    true,\n                );\n                await Promise.all(promises);\n            } else {\n                value = active ? 'on' : 'off';\n                if (get(setting, 'secondary_setting') && value === 'off') {\n                    await get(this, 'customerSettings').setSetting(\n                        get(setting, 'secondary_setting'),\n                        value,\n                    );\n                }\n                await get(this, 'customerSettings').setSetting(\n                    get(setting, 'name'),\n                    value,\n                    get(this, 'worktimegroup'),\n                );\n            }\n            // basic support for setting multiple secondary products on/off\n            if (get(setting, 'secondary_setting_on') && active) {\n                await this.Collector.setProducts(get(setting, 'secondary_setting_on'));\n            }\n            await this.refreshSettings();\n\n            // Call automatic salarytypes if saldo setting is toggled to create/remove saldo absences for worktimegroups\n            if (\n                get(setting, 'productsOn')?.includes('products.saldo') ||\n                get(setting, 'productsOff')?.includes('!products.saldo')\n            )\n                this.callAutomaticSalarytypes();\n\n            // When enabling autopause setting for worktimegroup, sets old pause field to 0.\n            get(setting, 'productsOn')?.includes('products.autopause')\n                ? this.autopauseChecker.checkAndSetAutopause()\n                : null;\n\n            this.notifyPropertyChange('settingsPageSettings');\n            this.showSavedNotice();\n            set(setting, 'loading', false);\n        },\n\n        async setSetting(setting, option, donotRefreshAgain) {\n            return this.setSetting(setting, option, donotRefreshAgain);\n        },\n\n        searchSettings(term) {\n            let results = [];\n            if (!term) set(this, 'searchResults', null);\n            else if (typeof term == 'string') {\n                let matches = this.translatedSettings.filter((setting) => {\n                    if (setting.translation.toLowerCase().indexOf(term.toLowerCase()) != -1) {\n                        return true;\n                    }\n                });\n                for (var match of matches) {\n                    results.pushObject({\n                        category: match.category,\n                        translation: match.translation,\n                    });\n                }\n                if (results.length == 0) set(this, 'searchResults', 'noresults');\n                else set(this, 'searchResults', results);\n            }\n        },\n        setOpenSettingsPage(name) {\n            //this.setQParams(name);\n            set(this, 'currentSettingsPage', name);\n        },\n        async worktimegroupChanged(group) {\n            set(this, 'settingsloading', true);\n            if (group && group != 'default') {\n                set(this, 'worktimegroup', group);\n                let worktimegroupsettings = await get(this, 'ttapi')._get(\n                    '/settings?worktimegroup=' + group,\n                );\n                //await this.loadForms(group);\n                set(this, 'worktimegroupCustomerSettings', worktimegroupsettings);\n            } else {\n                set(this, 'worktimegroup', null);\n                set(this, 'worktimegroupforms', null);\n                set(this, 'worktimegroupCustomerSettings', null);\n                await this.refreshSettings();\n                return set(this, 'settingsloading', false);\n            }\n            await this.refreshSettings();\n            this.notifyPropertyChange('settingsPageSettings');\n            set(this, 'settingsloading', false);\n            this.send(\n                'gotoSetting',\n                this.settingGroups[0]['name'] + '.' + this.settingGroups[0]['subsettings'][0],\n            );\n            set(this, 'openSettings', [this.settingGroups[0]['name']]);\n        },\n        setCustomerSetting(setting, value, worktimegroup) {\n            get(this, 'customerSettings').setSetting(setting, value, worktimegroup);\n        },\n    },\n\n    checkIfSettingIsOn(setting) {\n        if (get(setting, 'dummySetting')) return true;\n        if (get(setting, 'name')) {\n            return this.isCustomerSettingOn(setting.name);\n        } else if (setting.productsOn) {\n            return this.testNeeds(setting.productsOn);\n        } else if (setting.options) {\n            let options = [];\n            //Loop through options and mark options that have all needs satisfied as active\n            for (var option of get(setting, 'options')) {\n                option = EmberObject.create(option);\n                set(option, 'active', this.testNeeds(get(option, 'products')));\n                options.push(option);\n            }\n\n            set(setting, 'options', options);\n            return true;\n        } else if (setting.needs) return this.testNeeds(setting.needs);\n    },\n    isThisSettingAvailable(setting) {\n        let available = true;\n        if (setting.disable) {\n            for (var disable of setting.disable) {\n                if (!this.Collector.testNeeds([disable.key])) {\n                    available = false;\n                    break;\n                }\n            }\n        }\n        return available;\n    },\n\n    isCustomerSettingOn(settingName) {\n        if (get(this, 'worktimegroupCustomerSettings')) {\n            let setting = get(this, 'worktimegroupCustomerSettings').findBy('key', settingName);\n            if (!setting) return false;\n            if (!setting.worktimegroups) return false;\n            return true;\n        }\n        let active = false;\n        try {\n            active = JSON.parse(get(this, 'customerSettings').checkSetting(settingName));\n        } catch {\n            active = !!get(this, 'customerSettings').checkSetting(settingName);\n        }\n        return active;\n    },\n    testNeeds(needs) {\n        if (get(this, 'worktimegroupforms')) {\n            return this.customTestNeeds(needs);\n        } else {\n            return get(this, 'Collector').testNeeds(needs);\n        }\n    },\n    async loadForms(worktimegroup) {\n        let forms = await get(this, 'Collector').ajax({\n            url: 'forms?user.worktimegroup=' + worktimegroup,\n        });\n        set(this, 'worktimegroupforms', forms);\n    },\n    showSavedNotice() {\n        get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n            autoClear: true,\n        });\n    },\n    async setSetting(setting, option, donotRefreshAgain) {\n        set(setting, 'loading', true);\n        if (setting.options) {\n            for (var opt of setting.options) {\n                set(opt, 'active', false);\n            }\n            set(option, 'active', true);\n        }\n        let is_addition_type = false;\n        if (setting.addition && get(this, 'worktimegroup')) is_addition_type = true;\n        else is_addition_type = false;\n        let promises = get(this, 'Collector').setProducts(\n            option.products,\n            get(this, 'worktimegroup'),\n            true,\n            is_addition_type,\n        );\n\n        if (!donotRefreshAgain) {\n            await Promise.all(promises);\n            await this.refreshSettings();\n            this.notifyPropertyChange('settingsPageSettings');\n            this.showSavedNotice();\n            set(setting, 'loading', false);\n        } else {\n            return promises;\n        }\n    },\n    customTestNeeds(needs) {\n        let forms = get(this, 'worktimegroupforms');\n        let allok = true;\n        let negation = false;\n        let isok = false;\n        needs.forEach((need) => {\n            negation = false;\n            if (need.startsWith('!')) {\n                need = need.substring(1);\n                negation = true;\n            }\n            isok = true;\n            if (need.startsWith('products.')) {\n                if (forms.updater.products.indexOf(need.substring(9)) == -1) isok = false;\n            } else {\n                if (!get(this, 'Collector').testNeeds([need])) isok = false;\n            }\n            if (negation) isok = !isok;\n            if (isok === false) allok = false;\n        });\n        return allok;\n    },\n    async refreshSettings() {\n        await this.clearMemcache();\n        if (this.worktimegroup) {\n            let worktimegroupsettings = await get(this, 'ttapi')._get(\n                '/settings?worktimegroup=' + this.worktimegroup,\n            );\n            set(this, 'worktimegroupCustomerSettings', worktimegroupsettings);\n            await this.loadForms(this.worktimegroup);\n        }\n        return await this.refreshAll(this.worktimegroup);\n        //this.notifyPropertyChange('settingsPageSettings');\n    },\n    async clearMemcache() {\n        await this.Collector.ajax({\n            url: 'system/clear_memcache?partnerid=' + get(this, 'session.currentUser.partnerid'),\n        });\n    },\n    async handleMidweekHolidayPaySalarytype(active) {\n        let salarytype = await this.store.query('salarytype', { control: '_midweek_holiday_pay' });\n        salarytype = get(salarytype, 'firstObject');\n        if (active && salarytype) return; //we are turning setting on but we also already have the salary type, so do nothing\n        //if we are activating the setting, create the salarytype\n        if (!salarytype && active) {\n            this.store\n                .createRecord('salarytype', {\n                    name: get(this, 'intl').t('worktime.midweek_holiday_pay'),\n                    control: '_midweek_holiday_pay',\n                    type: 'product',\n                    inuse: true,\n                })\n                .save();\n        } else if (salarytype && !active) salarytype.destroyRecord(); //if deactivating destroy it..\n\n        // If salarytypes_v2 in use handle Mid week holiday pay salarytype by calling ttapi/api/salary/automaticSalarytypes\n        if (!this.Collector.testNeeds(['products.salarytype_v2'])) return;\n        this.ttapi.post('api/salary/automaticSalarytypes');\n    },\n\n    callAutomaticSalarytypes() {\n        if (!this.Collector.testNeeds(['products.salarytype_v2'])) return;\n        this.ttapi.post('api/salary/automaticSalarytypes');\n    },\n\n    isEditingDisabled(setting) {\n        let disabled = false;\n        if (setting.editingDisabledRules) {\n            for (var rule of setting.editingDisabledRules) {\n                if (!this.Collector.testNeeds([rule.key])) {\n                    disabled = true;\n                    break;\n                }\n            }\n        }\n        return disabled;\n    },\n});\n","export default {\n    settings: [\n        {\n            name: 'new_messageboard',\n            title: 'settings.general.new_messageboard',\n            needs: ['!customersetting.new_messageboard'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'general.settings',\n        },\n        {\n            title: 'settings.general.terms',\n            needs: ['modules.timetracker'],\n            component: 'settings/general-v2/components/terms-setting',\n            category: 'project-management.projects',\n        },\n        {\n            title: 'settings.general.recipients',\n            productsOn: ['products.recipients'],\n            productsOff: ['!products.recipients'],\n            needs: ['products.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'notifications.settings',\n        },\n        {\n            name: 'orientations_check_all',\n            title: 'settings.general.orientations',\n            needs: ['modules.orientations'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.orientations',\n        },\n        {\n            title: 'settings.general.self_orientation',\n            productsOn: ['products.orientations_self'],\n            productsOff: ['!products.orientations_self'],\n            needs: ['modules.orientations'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.orientations',\n        },\n        {\n            title: 'settings.general.orientations_parent',\n            productsOn: ['products.orientations_parent'],\n            productsOff: ['!products.orientations_parent'],\n            needs: ['modules.orientations'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.orientations',\n        },\n        {\n            title: 'settings.worksitediary.state',\n            productsOn: ['products.worksitediary_state'],\n            productsOff: ['!products.worksitediary_state'],\n            needs: ['products.worksitediary'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'no-category',\n        },\n        {\n            title: 'settings.phasetitle',\n            form: 'phasetitle',\n            productsOn: ['products.worksitediary_phasetitle'],\n            productsOff: ['!products.worksitediary_phasetitle'],\n            needs: ['products.worksitediary'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'no-category',\n        },\n        {\n            title: 'settings.general.superior_for_user',\n            productsOn: ['products.superior_for_user'],\n            productsOff: ['!products.superior_for_user'],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            editingDisabledRules: [\n                { key: '!products.super_superior', text: 'general.super_superior' },\n            ],\n            category: 'general.settings',\n        },\n        {\n            title: 'settings.general.superior_replacement',\n            productsOn: ['products.superior_replacement'],\n            productsOff: ['!products.superior_replacement'],\n            needs: ['modules.timetracker'],\n            disable: [\n                { key: '!products.mini_entry', text: 'general.mini_entry' },\n                { key: 'products.superior_for_user', text: 'settings.general.superior_for_user' },\n            ],\n            category: 'general.settings',\n        },\n        {\n            title: 'settings.general.worktimegroup_changes',\n            productsOn: ['products.worktimegroup_changes'],\n            productsOff: ['!products.worktimegroup_changes'],\n            needs: [\n                'modules.timetracker',\n                'products.worktimegroup',\n                'products.salarytype_v2',\n                'flag.worktimegroup-changes-setting',\n            ],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'general.settings',\n        },\n        {\n            title: 'settings.super_superior',\n            productsOn: ['products.super_superior'],\n            productsOff: ['!products.super_superior'],\n            needs: ['products.groups||products.multigroups', 'products.superior_for_user'],\n            disable: [],\n            category: 'general.settings',\n        },\n        {\n            title: 'settings.general.employer',\n            productsOn: ['products.employer_standalone'],\n            productsOff: ['!products.employer_standalone'],\n            needs: ['products.timetracker', '!products.rakentajanpaketti'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'general.settings',\n        },\n\n        {\n            name: 'push_notification_time',\n            setting: {\n                name: 'push_notification_time',\n            },\n            title: 'settings.general.push_notifications_fixed_time',\n            component: 'collector/field-setting-comp/push-setting',\n            needs: ['modules.timetracker', 'serviceCountry@fi', '!flag.notification-settings-v2'],\n            secondary_setting: 'push_notification_time_hours_fi',\n            category: 'notifications.settings',\n        },\n        {\n            name: 'push_notification_time',\n            setting: {\n                name: 'push_notification_time',\n            },\n            title: 'settings.general.push_notifications_fixed_time',\n            component: 'collector/field-setting-comp/push-setting',\n            needs: ['modules.timetracker', 'serviceCountry@se', '!flag.notification-settings-v2'],\n            secondary_setting: 'push_notification_time_hours_se',\n            category: 'notifications.settings',\n        },\n\n        {\n            name: 'push_notification_time',\n            setting: {\n                name: 'push_notification_time',\n            },\n            title: 'settings.general.push_notifications_fixed_time',\n            component: 'collector/field-setting-comp/push-setting',\n            needs: ['modules.timetracker', 'serviceCountry@fi', 'flag.notification-settings-v2'],\n            category: 'notifications.settings',\n        },\n        {\n            name: 'push_notification_time',\n            setting: {\n                name: 'push_notification_time',\n            },\n            title: 'settings.general.push_notifications_fixed_time',\n            component: 'collector/field-setting-comp/push-setting',\n            needs: ['modules.timetracker', 'serviceCountry@se', 'flag.notification-settings-v2'],\n            category: 'notifications.settings',\n        },\n\n        {\n            name: 'email_approval_for_all',\n            title: 'settings.general.email_approval_for_all',\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'notifications.settings',\n        },\n        {\n            title: 'settings.tasks',\n            options: [\n                {\n                    products: ['!products.tasks', '!products.multitasking', '!products.subtasks'],\n                    title: 'general.off',\n                },\n                {\n                    products: ['products.tasks', '!products.multitasking'],\n                    title: 'settings.tasks.single',\n                },\n                {\n                    products: ['!products.tasks', 'products.multitasking'],\n                    title: 'settings.tasks.multitasking',\n                },\n                {\n                    products: ['products.tasks', 'products.multitasking'],\n                    title: 'settings.tasks.both',\n                },\n            ],\n            form: 'task',\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            groupEditable: true,\n            category: 'project-management.tasks',\n        },\n        {\n            title: 'settings.subtasks',\n            productsOn: ['products.subtasks'],\n            productsOff: ['!products.subtasks'],\n            form: 'subtask',\n            needs: ['modules.timetracker'],\n            disable: [\n                {\n                    key: 'products.tasks||products.multitasking',\n                    text: 'report.projects.tasks_or_multitasks',\n                },\n            ],\n            category: 'project-management.tasks',\n        },\n        {\n            title: 'settings.timetracker.time_adding_type',\n            options: [\n                {\n                    products: [\n                        '!products.timetracker_hybrid',\n                        '!products.timetracker_hours',\n                        '!products.timetracker_clockcard',\n                    ],\n                    title: 'settings.timetracker.startandend',\n                },\n                {\n                    products: [\n                        '!products.timetracker_hybrid',\n                        'products.timetracker_hours',\n                        '!products.timetracker_clockcard',\n                    ],\n                    title: 'settings.timetracker.hours',\n                    notGroupEditable: true,\n                },\n                {\n                    products: [\n                        'products.timetracker_hybrid',\n                        '!products.timetracker_hours',\n                        '!products.timetracker_clockcard',\n                    ],\n                    title: 'settings.timetracker.hybrid',\n                },\n                {\n                    products: [\n                        '!products.timetracker_hybrid',\n                        '!products.timetracker_hours',\n                        'products.timetracker_clockcard',\n                    ],\n                    title: 'settings.timetracker.clockcard',\n                },\n            ],\n            needs: ['modules.timetracker'],\n            groupEditable: true,\n            groupEditableSettings: true,\n            groupEditableIf: {\n                needs: [\n                    '!products.timetracker_hybrid',\n                    '!products.timetracker_hours',\n                    '!products.timetracker_clockcard',\n                ],\n                title: 'settings.timetracker.startandend.worktimegroup_needs',\n            },\n            addition: true,\n            category: 'worktimes.settings',\n        },\n        {\n            title: 'settings.timetracker.edit_time',\n            component: 'settings/general-v2/components/edit-time-setting',\n            setting: {\n                form: 'worktime',\n                field: 'date',\n                setting: { name: 'date_interval', userlevel: '1', value: 'locked' },\n                type: 'number',\n            },\n            needs: ['modules.timetracker'],\n            category: 'worktimes.settings',\n        },\n        {\n            title: 'settings.timetracker.pause',\n            label: 'split',\n            productsOn: ['products.pause'],\n            productsOff: ['!products.pause'],\n            component: 'settings/general-v2/components/pause-setting',\n            setting: {\n                form: 'worktime',\n                field: 'pause',\n                setting: { title: 'default_value', value: 30 },\n            },\n            needs: ['modules.timetracker'],\n            disable: [],\n            groupEditable: true,\n            groupEditableSettings: true,\n            checkWorktimegroupWarnings:  { products: ['pause'] },\n            category: 'worktimes.settings',\n        },\n        {\n            title: \"settings.timetracker.autopause\",\n            label: \"split\",\n            productsOn: [\"products.autopause\"],\n            productsOff: [\"!products.autopause\"],\n            component: \"settings/general-v2/components/auto-pause-setting\",\n            needs: [\"modules.timetracker\", \"flag.autopause\"],\n            disable: [],\n            groupEditable: true,\n            groupEditableSettings: true,\n            category: \"worktimes.settings\",\n        },\n        {\n            title: 'settings.timetracker.multipause',\n            label: 'split',\n            productsOn: ['products.multipause'],\n            productsOff: ['!products.multipause'],\n            needs: ['modules.timetracker', 'flag.new-clockcard'],\n            disable: [],\n            groupEditable: false,\n            groupEditableSettings: false,\n            category: 'worktimes.settings',\n        },\n        {\n            title: 'settings.timetracker.force_clockcard_dialog',\n            productsOn: ['products.force_clockcard_dialog'],\n            productsOff: ['!products.force_clockcard_dialog'],\n            needs: ['modules.timetracker', 'flag.new-clockcard'],\n            disable: [],\n            groupEditable: false,\n            groupEditableSettings: false,\n            category: 'worktimes.settings',\n        },\n        {\n            title: 'settings.timetracker.timeclean',\n            label: 'split',\n            component: 'collector/nfc-comp',\n            productsOn: ['products.rfid'],\n            productsOff: ['!products.rfid'],\n            needs: ['modules.timetracker||products.personalliggareandid06', 'debug'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'worktimes.settings',\n        },\n        {\n            title: 'settings.materials',\n            productsOn: ['products.materiallog'],\n            productsOff: ['!products.materiallog'],\n            form: 'materialtype',\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.materials',\n        },\n        {\n            title: 'settings.materialgroups',\n            productsOn: ['products.materialgroups'],\n            productsOff: ['!products.materialgroups'],\n            needs: ['modules.timetracker'],\n            disable: [{ key: 'products.materiallog', text: 'settings.materials' }],\n            category: 'project-management.materials',\n        },\n        {\n            title: 'settings.absences',\n            productsOn: ['products.absences'],\n            productsOff: ['!products.absences'],\n            form: 'abcensetype',\n            needs: ['modules.timetracker||products.mini_entry', '!products.salarytype_v2'],\n            groupEditable: true,\n            fields: 'key,name,type,usesholiday,worktimegroup',\n            category: 'absences.settings',\n        },\n        {\n            title: 'settings.absences',\n            productsOn: ['products.absences'],\n            productsOff: ['!products.absences'],\n            needs: ['modules.timetracker||products.mini_entry', 'products.salarytype_v2'],\n            groupEditable: true,\n            component: 'settings/general-v2/components/salarytypes/absencetypes',\n            category: 'absences.settings',\n        },\n        {\n            title: 'settings.holiday_startdate',\n            needs: [],\n            disable: [{ key: 'products.absences', text: 'general.absences' }],\n            component: 'settings/general-v2/components/holiday',\n            custom: true,\n            category: 'absences.settings',\n        },\n        {\n            title: 'settings.absencetype',\n            productsOn: ['products.absences_hours'],\n            productsOff: ['!products.absences_startandend', '!products.absences_hours'],\n            needs: ['modules.timetracker||products.mini_entry'],\n            disable: [{ key: 'products.absences', text: 'general.absences' }],\n            category: 'absences.settings',\n        },\n        {\n            title: 'settings.absence_projects',\n            productsOn: ['products.absence_projects'],\n            productsOff: ['!products.absence_projects'],\n            needs: [],\n            disable: [\n                { key: '!products.mini_entry', text: 'general.mini_entry' },\n                { key: 'products.absences', text: 'general.absences' },\n            ],\n            category: 'absences.settings',\n        },\n        {\n            name: 'hide_holidays',\n            setting: {\n                name: 'hide_holidays',\n            },\n            title: 'settings.general.hide_holidays',\n            needs: [],\n            disable: [\n                { key: '!products.mini_entry', text: 'general.mini_entry' },\n                { key: 'products.absences', text: 'general.absences' },\n            ],\n            category: 'absences.settings',\n        },\n        {\n            name: 'vacation_week_length',\n            title: 'settings.vacation_week_length5',\n            needs: ['serviceCountry@fi'],\n            groupEditable: true,\n            groupEditableIf: {\n                needs: ['!customersetting.vacation_week_length'],\n                title: 'settings.general.vacation_week_length.worktimegroup_needs',\n            },\n            disable: [\n                { key: '!products.mini_entry', text: 'general.mini_entry' },\n                { key: 'products.absences', text: 'general.absences' },\n            ],\n            category: 'absences.settings',\n        },\n        {\n            title: 'settings.holiday_pay',\n            productsOn: ['products.holiday_pay'],\n            productsOff: ['!products.holiday_pay'],\n            needs: [],\n            disable: [{ key: 'modules.absences', text: 'general.absences' }],\n            category: 'absences.settings',\n        },\n        {\n            title: 'settings.team_calendar',\n            productsOn: ['products.team_calendar'],\n            productsOff: ['!products.team_calendar'],\n            needs: [],\n            disable: [{ key: 'modules.absences', text: 'general.absences' }],\n            category: 'absences.settings',\n        },\n        {\n            title: 'settings.skip_holiday_check',\n            productsOn: ['products.skip_holiday_check'],\n            productsOff: ['!products.skip_holiday_check'],\n            needs: ['flag.holiday-checker'],\n            disable: [{ key: 'modules.absences', text: 'general.absences' }],\n            category: 'absences.settings',\n        },\n        {\n            title: 'settings.skip_holidaypay_check',\n            productsOn: ['products.skip_holidaypay_check'],\n            productsOff: ['!products.skip_holidaypay_check'],\n            needs: ['flag.holiday-checker'],\n            disable: [{ key: 'products.holiday_pay', text: 'settings.holiday_pay' }],\n            category: 'absences.settings',\n        },\n        {\n            name: 'stampout_worktime_fi',\n            setting: {\n                name: 'stampout_worktime_fi',\n                secondary_setting_name: 'stampout_worktime_time_fi',\n            },\n            title: 'settings.general.stampout_worktime',\n            component: 'settings/general-v2/components/time-setting',\n            needs: ['modules.timetracker', 'serviceCountry@fi'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'worktimes.limitations',\n        },\n        {\n            name: 'stampout_worktime_se',\n            setting: {\n                name: 'stampout_worktime_se',\n                secondary_setting_name: 'stampout_worktime_time_se',\n            },\n            title: 'settings.general.stampout_worktime',\n            component: 'settings/general-v2/components/time-setting',\n            needs: ['modules.timetracker', 'serviceCountry@se'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'worktimes.limitations',\n        },\n        {\n            name: 'stampout_presence_fi',\n            setting: {\n                name: 'stampout_presence_fi',\n                secondary_setting_name: 'stampout_presence_time_fi',\n            },\n            title: 'settings.general.stampout_presence',\n            component: 'settings/general-v2/components/time-setting',\n            needs: ['presence', 'serviceCountry@fi'],\n            category: 'worktimes.limitations',\n        },\n        {\n            title: 'settings.round_times',\n            form: 'rounding_rule',\n            needs: ['modules.timetracker', 'worktime.formFeature.round_times;10'],\n            //disable: [{key: \"worktime.formFeature.round_times;10\", text: \"dummy1\"}],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'worktimes.limitations',\n        },\n        {\n            title: 'settings.round_times',\n            productsOn: ['products.rounding_rule_v2'],\n            productsOff: ['!products.rounding_rule_v2'],\n            form: 'rounding_rule_v2',\n            needs: ['modules.timetracker', '!worktime.formFeature.round_times;10'],\n            //disable: [{key: \"!worktime.formFeature.round_times;10\", text: \"dummy2\"}],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'worktimes.limitations',\n        },\n        {\n            title: 'settings.prevent_multiple_worktimes',\n            productsOn: ['products.timetracker_prevent_multiple'],\n            productsOff: ['!products.timetracker_prevent_multiple'],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'worktimes.limitations',\n        },\n        {\n            title: 'settings.overlapping_worktimes',\n            productsOn: ['products.timetracker_disable_overlapping'],\n            productsOff: [\n                '!products.timetracker_overlap',\n                '!products.timetracker_disable_overlapping',\n            ],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'worktimes.limitations',\n        },\n        {\n            title: 'settings.groups',\n            options: [\n                {\n                    products: ['!products.groups', '!products.multigroups'],\n                    title: 'settings.timetracker.nogroups',\n                },\n                {\n                    products: ['products.groups', '!products.multigroups'],\n                    title: 'settings.timetracker.groups',\n                },\n                {\n                    products: ['!products.groups', 'products.multigroups'],\n                    title: 'settings.timetracker.multigroups',\n                },\n            ],\n            form: 'group',\n            needs: ['products.timetracker||products.generic_timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            editingDisabledRules: [\n                { key: '!products.super_superior', text: 'general.super_superior' },\n            ],\n            category: 'project-management.groups',\n        },\n        {\n            title: 'settings.super_superior',\n            productsOn: ['products.super_superior'],\n            productsOff: ['!products.super_superior'],\n            needs: ['products.groups||products.multigroups', 'products.superior_for_user'],\n            disable: [],\n            category: 'project-management.groups',\n        },\n        {\n            title: 'settings.groups',\n            options: [\n                {\n                    products: ['!products.groups', '!products.multigroups'],\n                    title: 'settings.timetracker.nogroups',\n                },\n                {\n                    products: ['products.groups', '!products.multigroups'],\n                    title: 'settings.timetracker.groups',\n                },\n                {\n                    products: ['!products.groups', 'products.multigroups'],\n                    title: 'settings.timetracker.multigroups',\n                },\n            ],\n            form: 'group',\n            needs: ['!products.timetracker', '!products.generic_timetracker'],\n            disable: [\n                { key: '!products.mini_entry', text: 'general.mini_entry' },\n                { key: 'presence', text: 'header.path.add.presence' },\n            ],\n            category: 'project-management.groups',\n        },\n        {\n            title: 'settings.mainproject',\n            productsOn: ['products.mainproject'],\n            productsOff: ['!products.mainproject'],\n            form: 'mainproject',\n            needs: ['modules.timetracker', '!products.base_basic', '!products.mini_entry'],\n            disable: [\n                {\n                    key: 'products.projects_by_customer',\n                    text: 'settings.timetracker.customer.projects',\n                },\n            ],\n            category: 'project-management.projects',\n        },\n        {\n            title: 'settings.subprojects',\n            options: [\n                {\n                    products: ['!products.subprojects', '!products.subprojectsmulti'],\n                    title: 'general.off',\n                },\n                {\n                    products: ['products.subprojects', '!products.subprojectsmulti'],\n                    title: 'settings.timetracker.subprojects',\n                },\n                {\n                    products: ['!products.subprojects', 'products.subprojectsmulti'],\n                    title: 'settings.timetracker.subprojectsmulti',\n                },\n            ],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.projects',\n        },\n\n        {\n            title: 'settings.customers',\n            productsOn: ['products.customer'],\n            productsOff: ['!products.customer'],\n            form: 'customer',\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.customers',\n        },\n        {\n            title: 'settings.customers',\n            productsOn: ['products.customer'],\n            productsOff: ['!products.customer'],\n            form: 'customer',\n            needs: ['presence', '!products.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.customers',\n        },\n        /*\n        {\n            title: \"settings.customers\",\n            tt3valueOn: \"customers.none\",\n            tt3valueOff: \"customers.on\",\n            productsOn: [\"customer\"],\n            productsOff: [\"!customer\"],\n            form: 'customer',\n            needs: [\"!modules.timetracker\"],\n            disable: [, {key: \"worktime\", text: \"general.worktime\"}],\n            category: \"project-management.customers\"\n        },\n        */\n        {\n            title: 'settings.timetracker.customer.projects',\n            productsOn: ['products.projects_by_customer'],\n            productsOff: ['!products.projects_by_customer'],\n            needs: ['modules.timetracker'],\n            disable: [{ key: 'products.customer', text: 'settings.customers' }],\n            category: 'project-management.customers',\n        },\n        {\n            title: 'settings.timetracker.saldo',\n            productsOn: ['products.saldo'],\n            productsOff: ['!products.saldo'],\n            component: 'settings/general-v2/components/saldo-setting',\n            hideSettingsFromWorktimegroups: true,\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            groupEditable: true,\n            checkWorktimegroupWarnings:  { products: ['saldo'] },\n            category: 'salaries.saldo_banks',\n        },\n        {\n            name: 'saldo_skip_weekends',\n            title: 'settings.saldo.skip_weekends',\n            label: 'split',\n            needs: ['modules.timetracker'],\n            disable: [{ key: 'products.saldo', text: 'settings.timetracker.saldo' }],\n            category: 'salaries.saldo_banks',\n        },\n        {\n            title: 'settings.saldo.pay_saldos',\n            label: 'split',\n            productsOn: ['products.pay_saldos'],\n            productsOff: ['!products.pay_saldos'],\n            needs: ['modules.timetracker', 'flag.pay_saldos'],\n            disable: [{ key: 'products.saldo', text: 'settings.timetracker.saldo' }],\n            category: 'salaries.saldo_banks',\n        },\n        {\n            name: 'saldo_skip_pieceworkdays',\n            title: 'settings.saldo.skip_pieceworkdays',\n            label: 'split',\n            needs: ['modules.timetracker'],\n            disable: [\n                { key: 'products.saldo', text: 'settings.timetracker.saldo' },\n                { key: 'worktime.typeofwork', text: 'field.typeofwork' },\n            ],\n            category: 'salaries.saldo_banks',\n        },\n        {\n            title: 'settings.timetracker.overtime',\n            productsOn: ['products.overtime'],\n            productsOff: ['!products.overtime'],\n            //component: \"collector/field-setting-comp/overtime-setting\",\n            component: 'settings/general-v2/components/overtime-comp',\n            needs: ['modules.timetracker', '!serviceCountry@se'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            groupEditableSettings: true,\n            groupEditable: true,\n            checkWorktimegroupWarnings:  {\n                products: ['overtime', 'overtime_extrahours', 'overtime_daily', 'overtime_weekly', 'overtime_period', 'overtime_splitted']\n            },\n            category: 'salaries.overtime',\n            dummySetting: true,\n            hideHeader: true,\n        },\n        {\n            title: 'settings.project_owner',\n            productsOn: ['products.project_owner'],\n            productsOff: ['!products.project_owner'],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.settings',\n        },\n        {\n            title: 'settings.worktimegroup',\n            needs: ['modules.timetracker'],\n            productsOn: ['products.worktimegroup'],\n            productsOff: ['!products.worktimegroup'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'general.settings',\n            component: 'settings/general-v2/components/worktimegroups',\n            hasReport: true,\n        },\n        {\n            title: 'settings.disable_login',\n            needs: [],\n            productsOn: ['products.user_disable_login'],\n            productsOff: ['!products.user_disable_login'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'general.settings',\n        },\n        {\n            title: 'settings.timetracker_allow_nfc_edit',\n            productsOn: ['products.timetracker_allow_nfc_edit'],\n            productsOff: ['!products.timetracker_allow_nfc_edit'],\n            needs: ['!products.generic_timetracker', '!products.mini_entry'],\n            disable: [{ key: 'products.rfid', text: 'settings.timetracker.timeclean' }],\n            category: 'worktimes.settings',\n        },\n        {\n            name: 'postpopulated_worktimes',\n            title: 'settings.general.postpopulated_worktimes',\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            groupEditable: true,\n            groupEditableSettings: true,\n            groupEditableIf: {\n                needs: ['!customersetting.postpopulated_worktimes'],\n                title: 'settings.general.postpopulated_worktimes.worktimegroup_needs',\n            },\n            component: 'settings/general-v2/components/postpopulated-worktimes',\n            category: 'worktimes.settings',\n        },\n        {\n            title: 'settings.timetracker.worktype',\n            options: [\n                {\n                    products: [\n                        '!products.timetracker_worktype',\n                        '!products.timetracker_worktype_extra',\n                    ],\n                    title: 'settings.timetracker.worktype_none',\n                },\n                {\n                    products: [\n                        'products.timetracker_worktype',\n                        '!products.timetracker_worktype_extra',\n                    ],\n                    title: 'settings.timetracker.worktype_def',\n                },\n                {\n                    products: [\n                        '!products.timetracker_worktype',\n                        'products.timetracker_worktype_extra',\n                    ],\n                    title: 'settings.timetracker.worktype_extra',\n                },\n            ],\n            needs: ['modules.timetracker', '!products.generic_timetracker'],\n            disable: [\n                {\n                    key: 'products.timetracker_worktype||products.timetracker_worktype_extra',\n                    text: 'dummy',\n                },\n            ],\n            category: 'no-category',\n        },\n        {\n            title: 'settings.timetracker.salarytype',\n            productsOn: ['products.salarytype', 'products.selectablesalarytype'],\n            productsOff: ['!products.salarytype', '!products.selectablesalarytype'],\n            needs: ['modules.timetracker', '!products.salarytype_v2'],\n            disable: [\n                { key: '!products.mini_entry', text: 'general.mini_entry' },\n                { key: '!products.timetracker_worktype', text: 'settings.timetracker.worktype' },\n                {\n                    key: '!products.timetracker_worktype_extra',\n                    text: 'settings.timetracker.worktype_extra',\n                },\n            ],\n            category: 'salaries.settings',\n        },\n        {\n            title: 'settings.timetracker.perdiem',\n            optionsForComponent: [\n                {\n                    products: [\n                        '!products.timetracker_perdiem',\n                        '!products.timetracker_perdiem_meal',\n                    ],\n                    title: 'settings.timetracker.perdiem_none',\n                },\n                {\n                    products: [\n                        'products.timetracker_perdiem',\n                        '!products.timetracker_perdiem_meal',\n                    ],\n                    title: 'settings.timetracker.perdiem_def',\n                },\n                {\n                    products: [\n                        '!products.timetracker_perdiem',\n                        'products.timetracker_perdiem_meal',\n                    ],\n                    title: 'settings.timetracker.perdiem_meal',\n                },\n            ],\n            needs: ['modules.timetracker', 'serviceCountry@fi'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            component: 'settings/general-v2/components/perdiem',\n            category: 'salaries.settings',\n        },\n        {\n            title: 'settings.timetracker.km_type',\n            optionsForComponent: [\n                {\n                    products: [\n                        '!products.timetracker_km',\n                        '!products.timetracker_kmsade',\n                        '!products.timetracker_kmandsade',\n                    ],\n                    title: 'settings.timetracker.km_none',\n                },\n                {\n                    products: [\n                        'products.timetracker_km',\n                        '!products.timetracker_kmsade',\n                        '!products.timetracker_kmandsade',\n                    ],\n                    title: 'settings.timetracker.km',\n                },\n                {\n                    products: [\n                        'products.timetracker_kmsade',\n                        '!products.timetracker_km',\n                        '!products.timetracker_kmandsade',\n                    ],\n                    title: 'settings.timetracker.kmsade',\n                },\n                {\n                    products: ['products.timetracker_kmsade', 'products.timetracker_km'],\n                    title: 'settings.timetracker.kmandsade',\n                },\n            ],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            component: 'settings/general-v2/components/km',\n            category: 'salaries.settings',\n        },\n        {\n            title: 'settings.timetracker.km_automatic',\n            label: 'split',\n            productsOn: ['products.timetracker_km_automatic', 'products.timetracker_km'],\n            productsOff: ['!products.timetracker_km_automatic', '!products.timetracker_km'],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            component: 'settings/general-v2/components/autokm-setting',\n            groupEditable: true,\n            groupEditableSettings: true,\n            category: 'salaries.settings',\n        },\n        {\n            title: 'settings.timetracker.traveltime_automatic',\n            productsOn: ['products.timetracker_traveltime'],\n            productsOff: ['!products.timetracker_traveltime'],\n            needs: ['modules.timetracker', 'serviceCountry@fi', '!products.generic_timetracker'],\n            disable: [\n                {\n                    key: 'products.timetracker_km_automatic',\n                    text: 'settings.timetracker.km_automatic',\n                },\n            ],\n            category: 'salaries.settings',\n        },\n        {\n            title: 'settings.general.midweek_holiday_pay',\n            productsOn: ['products.midweek_holiday_pay'],\n            productsOff: ['!products.midweek_holiday_pay'],\n            needs: ['worktime'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'salaries.settings',\n        },\n        {\n            title: 'settings.salarytypes.salarytypesv2onoff',\n            productsOn: ['products.salarytype_v2'],\n            productsOff: ['!products.salarytype_v2'],\n            custom: true,\n            component: 'settings/general-v2/components/salarytypes',\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'salaries.salarytypes',\n            secondary_setting_on: [\n                '!products.selectablesalarytype',\n                '!products.salarytype',\n                'products.worktimegroup',\n            ],\n            groupEditable: false,\n        },\n        {\n            title: 'settings.salarytypes.salarytypesv2',\n            component: 'settings/general-v2/components/salarytypes/salaries',\n            needs: ['modules.timetracker', 'products.salarytype_v2'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'salaries.salarytypes',\n            groupEditable: true,\n        },\n        {\n            title: 'settings.salarytypes.absencetypes',\n            component: 'settings/general-v2/components/salarytypes/absencetypes',\n            needs: ['modules.timetracker', 'products.salarytype_v2'],\n            disable: [\n                { key: '!products.mini_entry', text: 'general.mini_entry' },\n                { key: 'products.absences', text: 'general.absences' },\n            ],\n            category: 'salaries.salarytypes',\n            groupEditable: true,\n        },\n        {\n            title: 'settings.salarytypes.worktypes',\n            component: 'settings/general-v2/components/salarytypes/worktypes',\n            needs: ['modules.timetracker', 'products.salarytype_v2'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'salaries.salarytypes',\n            groupEditable: true,\n        },\n        {\n            title: 'settings.gps',\n            options: [\n                {\n                    products: ['!products.gps', '!products.gps_force'],\n                    title: 'settings.gps_none',\n                },\n                {\n                    products: ['products.gps', '!products.gps_force'],\n                    title: 'settings.gps_def',\n                },\n                {\n                    products: ['!products.gps', 'products.gps_force'],\n                    title: 'settings.gps_force',\n                },\n            ],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.settings',\n        },\n        {\n            title: 'settings.general.gps_distance_value',\n            component: 'settings/general-v2/components/number-field',\n            setting: {\n                setting: 'gps_distance',\n                minVal: 0,\n                defaultVal: 700,\n                unit: 'm',\n            },\n            disable: [{ key: 'products.gps_force', text: 'settings.gps_force' }],\n            needs: [],\n            category: 'project-management.settings',\n        },\n        {\n            title: 'settings.eventtitle',\n            form: 'eventtitle',\n            needs: [],\n            disable: [\n                { key: '!products.mini_entry', text: 'general.mini_entry' },\n                { key: 'eventtitle', text: 'settings.eventtitle' },\n            ],\n            category: 'no-category',\n        },\n        {\n            title: 'settings.wage_period',\n            form: 'wage_period',\n            component: 'salary-period-adder',\n            needs: ['worktime', 'wage_period'],\n            fields: 'period_name,period_start_date,period_end_date,worktimegroup',\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'salaries.salaryperiods',\n            groupEditable: true,\n        },\n        {\n            title: 'settings.export_contact_person',\n            form: 'export_contact_person',\n            needs: ['export_contact_person'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.construction_notices',\n        },\n        {\n            title: 'settings.timetracker.multiple_companies',\n            productsOn: ['products.multiple_companies'],\n            productsOff: ['!products.multiple_companies'],\n            needs: ['project', 'products.rakentajanpaketti'],\n            category: 'project-management.construction_notices',\n        },\n        {\n            title: 'settings.timetracker.founder',\n            productsOn: ['products.taxman_founder'],\n            productsOff: ['!products.taxman_founder'],\n            needs: ['project', 'products.rakentajanpaketti'],\n            category: 'project-management.construction_notices',\n        },\n        {\n            title: 'settings.vg_customer_id',\n            form: 'vastuugroupsetting',\n            needs: ['vastuugroupsetting'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'integrations.settings',\n        },\n        {\n            title: 'settings.vg_reliable_partner',\n            productsOn: ['!products.vg_reliable_partner_disabled'],\n            productsOff: ['products.vg_reliable_partner_disabled'],\n            needs: ['vastuugroupsetting'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'integrations.settings',\n        },\n        {\n            title: 'settings.vg_licenses',\n            component: 'settings/general-v2/components/vg-licenses',\n            custom: true,\n            needs: ['vastuugroupsetting'],\n            category: 'integrations.settings',\n        },\n        {\n            title: 'settings.megaflex_tenant',\n            form: 'megaflex_tenant',\n            needs: ['products.megaflex'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'integrations.settings',\n        },\n        {\n            title: 'settings.timetracker.banks',\n            label: 'split',\n            productsOn: ['products.worktimebank'],\n            productsOff: ['!products.worktimebank'],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'salaries.saldo_banks',\n        },\n\n        {\n            title: 'settings.timetracker.hourprice',\n            label: 'split',\n            options: [\n                {\n                    //tt3value: \"hourly_rates.none\"\n                    products: ['!products.hourprice_user', '!products.hourprice_project'],\n                    title: 'settings.timetracker.hourprice_none',\n                },\n                {\n                    //tt3value: \"hourly_rates.user\"\n                    products: ['products.hourprice_user', '!products.hourprice_project'],\n                    title: 'settings.timetracker.hourprice_user',\n                },\n                {\n                    //tt3value: \"hourly_rates.project\"\n                    products: ['!products.hourprice_user', 'products.hourprice_project'],\n                    title: 'settings.timetracker.hourprice_project',\n                },\n            ],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.settings',\n        },\n        {\n            name: 'unapproved_worktimes',\n            setting: {\n                name: 'unapproved_worktimes',\n            },\n            title: 'settings.general.unapproved_worktimes',\n            component: 'settings/general-v2/components/time-setting',\n            needs: ['worktime', 'serviceCountry@fi', '!flag.notification-settings-v2'],\n            category: 'notifications.settings',\n        },\n        {\n            title: 'settings.taskmanagement.worktask_involved',\n            productsOn: ['products.worktask_involved'],\n            productsOff: ['!products.worktask_involved'],\n            needs: ['products.taskmanagement'],\n            category: 'project-management.worktasks',\n        },\n        {\n            title: 'settings.taskmanagement.worktask_signature',\n            productsOn: ['products.worktask_signature'],\n            productsOff: ['!products.worktask_signature'],\n            needs: ['products.taskmanagement'],\n            category: 'project-management.worktasks',\n        },\n        {\n            title: 'settings.taskmanagement.worktask_enddate',\n            productsOn: ['products.worktask_enddate'],\n            productsOff: ['!products.worktask_enddate'],\n            needs: ['products.taskmanagement'],\n            category: 'project-management.worktasks',\n        },\n        {\n            title: 'settings.taskmanagement.worktask_starttime',\n            productsOn: ['products.worktask_starttime'],\n            productsOff: ['!products.worktask_starttime'],\n            needs: ['products.taskmanagement'],\n            disable: [],\n            category: 'project-management.worktasks',\n        },\n\n        {\n            title: 'settings.general.drivinglog.gauge',\n            productsOn: ['products.drivinglog_gauge'],\n            productsOff: ['!products.drivinglog_gauge'],\n            needs: ['products.drivinglog'],\n            category: 'drivinglog.settings',\n        },\n        {\n            title: 'settings.general.drivinglog.project',\n            productsOn: ['products.drivinglog_project'],\n            productsOff: ['!products.drivinglog_project'],\n            needs: ['products.drivinglog'],\n            category: 'drivinglog.settings',\n        },\n        {\n            title: 'settings.general.drivinglog.date',\n            productsOn: ['products.drivinglog_date'],\n            productsOff: ['!products.drivinglog_date'],\n            needs: ['products.drivinglog'],\n            category: 'drivinglog.settings',\n        },\n        {\n            title: 'settings.general.drivinglog.private',\n            productsOn: ['products.drivinglog_private'],\n            productsOff: ['!products.drivinglog_private'],\n            needs: ['products.drivinglog'],\n            category: 'drivinglog.settings',\n        },\n        {\n            title: 'settings.general.drivinglog.plate',\n            productsOn: ['products.drivinglog_plate'],\n            productsOff: ['!products.drivinglog_plate'],\n            needs: ['products.drivinglog'],\n            category: 'drivinglog.settings',\n        },\n        {\n            title: 'settings.general.drivinglog.desc',\n            productsOn: ['products.drivinglog_desc'],\n            productsOff: ['!products.drivinglog_desc'],\n            needs: ['products.drivinglog'],\n            category: 'drivinglog.settings',\n        },\n\n        {\n            name: 'hide_measurement_index',\n            title: 'settings.general.hide_measurement_index',\n            needs: ['products.measurement_tr||products.measurement_mvr'],\n            category: 'project-management.measurements',\n        },\n        {\n            title: 'settings.general.measurement_mandatory_signatures',\n            productsOn: ['products.measurement_mandatory_signatures'],\n            productsOff: ['!products.measurement_mandatory_signatures'],\n            needs: ['products.measurement_tr||products.measurement_mvr'],\n            category: 'project-management.measurements',\n        },\n        {\n            title: 'settings.general.measurement_status',\n            productsOn: ['products.measurement_status'],\n            productsOff: ['!products.measurement_status'],\n            needs: ['products.measurement_tr||products.measurement_mvr'],\n            category: 'project-management.measurements',\n        },\n\n        {\n            title: 'settings.plgps',\n            options: [\n                {\n                    products: ['!products.plgps_off', '!products.plgps_end'],\n                    title: 'settings.plgps_on',\n                },\n                {\n                    products: ['!products.plgps_off', 'products.plgps_end'],\n                    title: 'settings.plgps_also_end',\n                },\n                {\n                    products: ['products.plgps_off', '!products.plgps_end'],\n                    title: 'settings.plgps_off',\n                },\n            ],\n            needs: ['products.personalliggareandid06||products.personalliggare'],\n            category: 'project-management.settings',\n        },\n        {\n            title: 'settings.export_contact_person',\n            form: 'export_contact_person',\n            needs: ['export_contact_person', '!worktime'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.construction_notices',\n        },\n        {\n            title: 'settings.groups',\n            form: 'group',\n            needs: ['products.admintool', 'group'],\n            disable: [],\n            category: 'project-management.groups',\n        },\n        {\n            title: 'settings.toolgroups',\n            productsOn: ['products.toolgroups'],\n            productsOff: ['!products.toolgroups'],\n            needs: ['products.machine'],\n            form: 'toolgroup',\n            category: 'project-management.settings',\n        },\n        {\n            title: 'settings.compensations',\n            needs: ['modules.timetracker'],\n            /*disable: [{key: \"products.overtime\", text: \"settings.overtime\"}],*/\n            category: 'salaries.calculations',\n            component: 'settings/general-v2/components/overtime-comp',\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            dummySetting: true,\n            hideHeader: true,\n            groupEditable: true,\n            //component: \"collector/field-setting-comp/overtime-setting\",\n        },\n        {\n            title: 'company_profile.billing_info_header',\n            needs: [],\n            component: 'settings/general-v2/components/company-info/billing-comp',\n            category: 'companyProfile.info',\n            groupEditable: true,\n        },\n        {\n            title: 'company_profile.company_info',\n            needs: [],\n            component: 'settings/general-v2/components/company-info/info-comp',\n            category: 'companyProfile.info',\n            groupEditable: true,\n        },\n        {\n            title: 'company_profile.address_info_header',\n            needs: [],\n            component: 'settings/general-v2/components/company-info/address-comp',\n            category: 'companyProfile.info',\n            groupEditable: true,\n        },\n        {\n            title: 'company_profile.logo_header',\n            needs: [],\n            component: 'settings/general-v2/components/company-info/logo-comp',\n            category: 'companyProfile.info',\n            groupEditable: true,\n        },\n        {\n            title: 'settings.notification_center',\n            needs: ['modules.timetracker', 'flag.notification-settings-v2'],\n            /*disable: [{key: \"products.overtime\", text: \"settings.overtime\"}],*/\n            category: 'notifications.sending',\n            component: 'settings/general-v2/components/notification-center',\n            dummySetting: true,\n            hideHeader: true,\n            //component: \"collector/field-setting-comp/overtime-setting\",\n        },\n    ],\n};\n","export default Ember.HTMLBars.template({\"id\":\"jta4WlnK\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"settings-container\\\"],[8],[0,\\\"\\\\n    \\\"],[5,\\\"settings/general-v2/main-settings\\\",[],[[\\\"@openSettings\\\",\\\"@searchvalue\\\",\\\"@gotoSetting\\\",\\\"@translatedSettings\\\",\\\"@searchResults\\\",\\\"@settingsLoading\\\",\\\"@searchSettings\\\",\\\"@setOpenSettingsPage\\\",\\\"@settingsPage\\\",\\\"@settingGroups\\\",\\\"@worktimegroupChanged\\\",\\\"@worktimeGroupsOn\\\",\\\"@toggleHelpContainerVisibility\\\"],[[22,\\\"openSettings\\\"],[22,\\\"searchvalue\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"gotoSetting\\\"],null],[22,\\\"translatedSettings\\\"],[22,\\\"searchResults\\\"],[22,\\\"settingsloading\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"searchSettings\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setOpenSettingsPage\\\"],null],[22,\\\"currentSettingsPage\\\"],[22,\\\"settingGroups\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"worktimegroupChanged\\\"],null],[22,\\\"worktimeGroupsOn\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"toggleHelpContainerVisibility\\\"],null]]]],[0,\\\"\\\\n    \\\"],[5,\\\"settings/general-v2/sub-settings\\\",[],[[\\\"@worktimegroup\\\",\\\"@searchvalue\\\",\\\"@refreshNeeded\\\",\\\"@settingsLoading\\\",\\\"@toggleActive\\\",\\\"@setSetting\\\",\\\"@loadingEditor\\\",\\\"@saveCalled\\\",\\\"@settingsPageSettings\\\",\\\"@settingsPage\\\",\\\"@setCustomerSetting\\\",\\\"@disableOnlyText\\\",\\\"@neededHelpTexts\\\",\\\"@toggleHelpContainerVisibility\\\"],[[22,\\\"worktimegroup\\\"],[22,\\\"searchvalue\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"refreshNeeded\\\"],null],[22,\\\"settingsloading\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"toggleActive\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setSetting\\\"],null],[22,\\\"loadingEditor\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"saveCalled\\\"],null],[22,\\\"settingsPageSettings\\\"],[22,\\\"currentSettingsPage\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"setCustomerSetting\\\"],null],[23,0,[\\\"disableOnlyText\\\"]],[22,\\\"neededHelpTexts\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"toggleHelpContainerVisibility\\\"],null]]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isHelpContainerVisible\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"shouldHideHelp\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"settings/general-v2/helps\\\",[],[[\\\"@settingsLoading\\\",\\\"@settingsPage\\\",\\\"@neededHelpTexts\\\",\\\"@toggleHelpContainerVisibility\\\"],[[22,\\\"settingsloading\\\"],[22,\\\"currentSettingsPage\\\"],[22,\\\"neededHelpTexts\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"toggleHelpContainerVisibility\\\"],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/container/template.hbs\"}});","/* eslint-disable ember/alias-model-in-controller */\nimport Controller from '@ember/controller';\nimport { get, computed } from '@ember/object';\nimport { inject as controller } from '@ember/controller';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    application: controller(),\n    settingsController: controller('settings'),\n    modelCreator: service('model-creator'),\n    queryParams: ['main', 'sub'],\n\n    qParams: computed('main', 'sub', function () {\n        if (get(this, 'main') && get(this, 'sub')) {\n            return get(this, 'main') + '.' + get(this, 'sub');\n        }\n        return false;\n    }),\n\n    actions: {\n        async refreshAll(worktimegroup) {\n            get(this, 'settingsController').refreshNeeded();\n            if (!worktimegroup) await get(this, 'modelCreator').createEmberModels();\n            this.toggleProperty('application.refreshMenus');\n        },\n        setQParams(params) {\n            if (params) {\n                let split = params.split('.');\n                this.transitionToRoute({ queryParams: { main: split[0], sub: split[1] } });\n            }\n        },\n    },\n});\n","import Component from '@ember/component';\nimport { set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { htmlSafe } from '@ember/string';\n\nexport default Component.extend({\n    ajax: service(),\n    loading: false,\n\n    async didReceiveAttrs() {\n        if (this.settingsPage) {\n            set(this, 'loading', true);\n            let data = await this.getFileData();\n            set(this, 'documentData', data);\n            set(this, 'loading', false);\n        }\n    },\n    actions: {\n        toggleHelp() {\n            this.toggleHelpContainerVisibility('hideHelpContainer');\n        },\n    },\n    async getFileData() {\n        let settings = this.neededHelpTexts;\n        let key = '';\n        let fileUrl = '';\n        let helpTexts = [];\n        for (var setting of settings) {\n            //key = setting.replace(\".\", \"-\") + \"-\" + moment.locale()\n            var splittedTextArr = setting.split('.');\n            const lastKeyOfArray = splittedTextArr[splittedTextArr.length - 1];\n            key = 'split-settings-' + lastKeyOfArray.replace(/\\./g, '-') + '-' + moment.locale();\n            // Show custom help text for new overtime settings\n            key =\n                lastKeyOfArray === 'overtime' &&\n                this.Collector.testNeeds(['products.salarytype_v2||flag.new-overtime-settings'])\n                    ? 'split-settings-overtime-new-' + moment.locale()\n                    : key;\n            fileUrl = `https://cloud-writer-prod.s3.amazonaws.com/${key}.html`;\n            try {\n                helpTexts.pushObject({\n                    help: htmlSafe(await this.ajax.request(fileUrl, { dataType: 'text' })),\n                    name: setting?.replace(/\\./g, '-'),\n                    key: key,\n                });\n            } catch (e) {\n                if (this.Collector.testNeeds(['development'])) {\n                    helpTexts.pushObject({\n                        help: htmlSafe('<br><br>'),\n                        name: setting?.replace(/\\./g, '-'),\n                        key: `cannot find help for ${key}`,\n                    });\n                }\n            }\n        }\n        return helpTexts;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"BJHXmLZ/\",\"block\":\"{\\\"symbols\\\":[\\\"helpObj\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"settingsPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"help-container\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross close-help-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleHelp\\\"]],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"documentData\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"needs\\\",[\\\"development\\\"],null],[23,1,[\\\"key\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dev-key\\\"],[8],[0,\\\"(\\\"],[1,[23,1,[\\\"key\\\"]],false],[0,\\\")\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"div\\\",true],[11,\\\"name\\\",[23,1,[\\\"name\\\"]]],[8],[1,[23,1,[\\\"help\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"close-help\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleHelp\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"settings.no-helps-selected\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/helps/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed, get, set } from '@ember/object';\nimport { A } from '@ember/array';\nimport { later } from '@ember/runloop';\n\nexport default Component.extend({\n    capi: service(),\n    intl: service(),\n    evented: service(),\n    activeSetting: 'general',\n    openSettings: A(),\n    worktimegroupfield: computed('worktimegroup', function () {\n        let field = get(this, 'Collector').field('user', 'worktimegroup');\n        field.value = get(this, 'worktimegroup');\n        return field;\n    }),\n    dropdownSettings: computed('settingGroups', function () {\n        let options = [];\n        this.settingGroups.forEach((group) => {\n            let optionGroupOptions = [\n                {\n                    id: `${group.name}.settings`,\n                    name: group.translation,\n                },\n            ];\n\n            group.subsettingTranslations.forEach((subsetting) => {\n                if (subsetting.name !== 'settings' && subsetting.name !== 'info') {\n                    optionGroupOptions.push({\n                        id: `${group.name}.${subsetting.name}`,\n                        name: subsetting.translation,\n                    });\n                }\n            });\n\n            options.push({\n                label: '---',\n                options: optionGroupOptions,\n            });\n        });\n        return options;\n    }),\n\n    worktimegroups: computed(async function () {\n        let wtgroups = [];\n        let groups = await get(this, 'capi').request('user/worktimegroups');\n        wtgroups.pushObject({\n            id: 'default',\n            name: get(this, 'intl').t('settings.no-worktimegroup-selection'),\n        });\n        groups.worktimegroups.forEach((wtgroup) => {\n            wtgroups.pushObject({ id: wtgroup.id, name: wtgroup.text });\n        });\n        return wtgroups;\n    }),\n\n    didInsertElement() {\n        this._super(...arguments);\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n\n        //Open all settings by default\n        let settings = this.settingGroups.mapBy('name');\n        set(this, 'openSettings', A(settings));\n    },\n    willDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n    },\n    actions: {\n        async changeWorktimegroup(group) {\n            await this.worktimegroupChanged(group);\n            if (group && group == 'default') {\n                let settings = this.settingGroups.mapBy('name');\n                set(this, 'openSettings', A(settings));\n            }\n            this.send('changeDropdownSetting', this.settingGroups[0].name);\n        },\n\n        changeDropdownSetting(value) {\n            // Extract main setting and sub-setting from the value\n            let [mainSetting, subSetting] = value.split('.');\n            // Set the active main setting and sub-setting\n            set(this, 'activeSetting', mainSetting);\n\n            this.setOpenSettingsPage(value);\n\n            // If it's the main setting being selected, open the default sub-setting\n            if (!subSetting || subSetting === 'settings') {\n                this.send('openSubSettingsPage', mainSetting, 'settings');\n            } else {\n                // If a specific sub-setting is selected, open it\n                this.send('openSubSettingsPage', mainSetting, subSetting);\n            }\n        },\n        searchChanged(term) {\n            if (term.length >= 3) this.searchSettings(term);\n        },\n        clearSearch() {\n            set(this, 'searchvalue', null);\n            this.searchSettings(null);\n        },\n        gotoSetting(setting) {\n            this.gotoSetting(setting.category);\n            //let arr = setting.category.split(\".\");\n            //set(this,'openSettings', [arr[0]]);\n            this.send('closeSearchResults');\n        },\n        resumeSearch() {\n            if (this.searchvalue) {\n                this.send('searchChanged', this.searchvalue);\n            }\n        },\n        closeSearchResults() {\n            later(\n                this,\n                () => {\n                    this.searchSettings(null);\n                },\n                250,\n            );\n        },\n\n        toggleSetting(settingname) {\n            // Check if the setting is already open\n            if (this.openSettings.indexOf(settingname) > -1) {\n                this.openSettings.removeObject(settingname);\n                // Do nothing\n            } else {\n                // Open the setting by adding it to the array of open settings.\n                this.openSettings.pushObject(settingname);\n            }\n        },\n        openSubSettingsPage(settingsName, subsettingsName) {\n            this.toggleHelpContainerVisibility('hideHelpContainer');\n            if (settingsName == 'companyProfile') {\n                subsettingsName = 'info';\n            }\n            this.setOpenSettingsPage(settingsName + '.' + subsettingsName);\n\n            set(this, 'activeSetting', settingsName);\n            settingsName;\n            if (subsettingsName !== 'settings' && subsettingsName !== 'info') {\n                set(this, 'activeSetting', subsettingsName);\n            }\n        },\n    },\n\n    onStoreEvent(params) {\n        if (params.type == 'worktimegroup') {\n            this.notifyPropertyChange('worktimegroups');\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"CsMClEy2\",\"block\":\"{\\\"symbols\\\":[\\\"result\\\",\\\"settings\\\",\\\"subsetting\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"worktimeGroupsOn\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worktimegroup-container\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.worktimegroup\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[5,\\\"drop-down\\\",[],[[\\\"@options\\\",\\\"@bubbleChange\\\",\\\"@value\\\"],[[28,\\\"await\\\",[[24,[\\\"worktimegroups\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"changeWorktimegroup\\\"],null],\\\"default\\\"]]],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"main-settings-desktop\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"settingGroups\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"main-setting \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,2,[\\\"name\\\"]],[24,[\\\"activeSetting\\\"]]],null],\\\"active\\\"],null]]]],[12,\\\"name\\\",[23,2,[\\\"name\\\"]]],[3,\\\"action\\\",[[23,0,[]],\\\"openSubSettingsPage\\\",[23,2,[\\\"name\\\"]],\\\"settings\\\"]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move move-\\\",[23,2,[\\\"icon\\\"]],\\\" setting-icon setting-icon-\\\",[23,2,[\\\"icon\\\"]]]]],[8],[9],[0,\\\"\\\\n        \\\"],[1,[23,2,[\\\"translation\\\"]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[[23,2,[\\\"name\\\"]],[24,[\\\"openSettings\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,2,[\\\"subsettingTranslations\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"or\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"name\\\"]],\\\"settings\\\"],null],[28,\\\"is-equal\\\",[[23,3,[\\\"name\\\"]],\\\"info\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",false],[12,\\\"name\\\",[28,\\\"concat\\\",[[23,2,[\\\"name\\\"]],\\\"-\\\",[23,3,[\\\"name\\\"]]],null]],[12,\\\"class\\\",[29,[\\\"sub-setting \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"settingsPage\\\"]],[28,\\\"concat\\\",[[23,2,[\\\"name\\\"]],\\\".\\\",[23,3,[\\\"name\\\"]]],null]],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"openSubSettingsPage\\\",[23,2,[\\\"name\\\"]],[23,3,[\\\"name\\\"]]]],[8],[0,\\\"\\\\n        \\\"],[1,[23,3,[\\\"translation\\\"]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"setting-separator\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"main-settings-mobile\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.settings-groups\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[5,\\\"drop-down\\\",[],[[\\\"@optionGroups\\\",\\\"@bubbleChange\\\"],[[22,\\\"dropdownSettings\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"changeDropdownSetting\\\"],null]]]],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"settings-search-box\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeSearchResults\\\"],[[\\\"on\\\"],[\\\"focusOut\\\"]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.search-settings\\\"],null],false],[0,\\\" (\\\"],[1,[28,\\\"t\\\",[\\\"settings.min_search_length\\\"],null],false],[0,\\\")\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"input-group search-box\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"resumeSearch\\\"]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocomplete\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocorrect\\\",\\\"class\\\",\\\"type\\\"],[\\\"off\\\",[24,[\\\"searchvalue\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"searchChanged\\\"],null],\\\"off\\\",\\\"form-control add-field\\\",\\\"text\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"input-group-addon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clearSearch\\\"]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"i\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"searchvalue\\\"]],\\\"move move-Cross\\\",\\\"move move-Search\\\"],null]]]],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"searchResults\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"search-results\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"noresults\\\",[24,[\\\"searchResults\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"no-search-results\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.no-results\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"searchResults\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"gotoSetting\\\",[23,1,[]]]],[8],[1,[28,\\\"highlight-helper\\\",[[23,1,[\\\"translation\\\"]],[24,[\\\"searchvalue\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/main-settings/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class CustomExportComponent extends Component {\n    @service('collector-service') Collector;\n    @service notifications;\n    @service settings;\n    @service intl;\n\n    @tracked selected;\n    @tracked isLoading;\n\n    constructor() {\n        super(...arguments);\n\n        this.args.options.forEach((option) => {\n            if (this.Collector.testNeeds(option.products)) this.selected = option;\n        });\n    }\n\n    @action\n    async save(opt) {\n        this.selected = opt;\n        this.isLoading = true;\n\n        await this.settings.setProducts(opt.products);\n\n        if (this.args.saved) await this.args.saved(opt);\n\n        this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n        this.isLoading = false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"DwDgPgYV\",\"block\":\"{\\\"symbols\\\":[\\\"@selected\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"circle\\\",true],[10,\\\"class\\\",\\\"radio-svg-fill\\\"],[10,\\\"id\\\",\\\"Ellipse_30\\\"],[10,\\\"data-name\\\",\\\"Ellipse 30\\\"],[10,\\\"cx\\\",\\\"3\\\"],[10,\\\"cy\\\",\\\"3\\\"],[10,\\\"r\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(3 3)\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/radio-setting/radio-button/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"IPIdT5XB\",\"block\":\"{\\\"symbols\\\":[\\\"opt\\\",\\\"@options\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"radio-inputs-settings\\\"],[12,\\\"role\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"save\\\"]],[23,1,[]]],null]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-icon\\\"],[8],[0,\\\"\\\\n                \\\"],[5,\\\"settings/general-v2/radio-setting/radio-button\\\",[],[[\\\"@selected\\\"],[[28,\\\"eq\\\",[[23,1,[]],[23,0,[\\\"selected\\\"]]],null]]]],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-text\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[[23,1,[\\\"title\\\"]]],[[\\\"htmlSafe\\\"],[true]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/radio-setting/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    ttapi: service(),\n    analytics: service(),\n\n    attributeBindings: ['name'],\n\n    debug: false,\n    refreshWarnings: false,\n    /*\n    showRowEditor: computed('setting.form', function() {\n        if (this.worktimegroupAndNotEditableSetting || (get(this, 'setting.options') && get(this, 'setting.options.firstObject.active'))) return false;\n        return get(this,'setting.form');\n    }),*/\n\n    name: computed('setting.title', function () {\n        return this.setting.title;\n    }),\n\n    settingIsLoading: computed('setting.loading', function () {\n        if (\n            this.setting.loading &&\n            (this.setting.productsOn || this.setting.name || this.setting.options)\n        )\n            return true;\n        return false;\n    }),\n\n    filterByWorktimegroup: computed('worktimegroup', function () {\n        if (this.worktimegroup) {\n            return { worktimegroup: this.worktimegroup };\n        }\n        return {};\n    }),\n\n    showSettingOptions: computed(\n        'setting.{component,form,options,active,hideSettingsFromWorktimegroups}',\n        'loadingState',\n        'worktimegroup',\n        function () {\n            if (this.setting.hasReport && !this.setting.active) return false;\n            if (this.loadingState) return false;\n            if (this.worktimegroup && this.setting.hideSettingsFromWorktimegroups) return false;\n            else if (this.setting.component || this.setting.options) return true;\n            else if (!this.setting.active) return false;\n            else if (this.setting.form) return true;\n\n            //if (!this.setting.form && !this.setting.options) return true; // show component-type always\n\n            //if (this.setting.component || this.setting.form || this.setting.options) return true;\n            return false;\n        },\n    ),\n    showPlaceholder: computed(\n        'setting.{component,form,options,active}',\n        'loadingState',\n        function () {\n            return false;\n            //if (!this.loadingState && !this.setting.active && this.setting.form) return true;\n            //return false;\n        },\n    ),\n\n    showOverlay: computed('setting.active', function () {\n        if (!this.setting.active && this.showSettingOptions) return true;\n        return false;\n    }),\n\n    showFormReport: computed(\n        'setting.{form,options.@each.active,loading,groupEditableSettings}',\n        'settingIsLoading',\n        'worktimegroup',\n        function () {\n            if (\n                get(this, 'worktimegroup') &&\n                !this.Collector.testNeeds([this.setting.form + '.worktimegroup'])\n            )\n                return false;\n            if (this.settingIsLoading) return false;\n            if (this.setting.options && this.setting.options.firstObject.active) return false;\n            else if (this.setting.form) return true;\n            return false;\n        },\n    ),\n\n    showDisabledNotification: computed('setting.groupEditableIf', 'worktimegroup', function () {\n        if (this.worktimegroup && this.setting.groupEditableIf) {\n            return !this.Collector.testNeeds(this.setting.groupEditableIf.needs);\n        } else {\n            return false;\n        }\n    }),\n\n    shouldShowOnlyDisable: computed('disableOnlyText', function () {\n        if (\n            this.setting.disable.findBy('key', this.disableOnlyText.key) &&\n            !this.Collector.testNeeds([this.disableOnlyText.key])\n        )\n            return true;\n        return false;\n    }),\n\n    showInfo: computed(\n        'setting.editingDisabled',\n        'showPlaceholder',\n        'showSettingOptions',\n        'showDisabledNotification',\n        function () {\n            if (this.setting.editingDisabled) return true;\n            if (this.showPlaceholder || this.showSettingOptions || !this.showDisabledNotification)\n                return false;\n            return true;\n        },\n    ),\n\n    shouldCheckWarnings: computed('setting.checkWorktimegroupWarnings', 'worktimegroup', function () {\n        return this.worktimegroup && this.setting.checkWorktimegroupWarnings;\n    }),\n\n    getWarnings: computed('shouldCheckWarnings', 'refreshWarnings', async function () {\n        if (this.shouldCheckWarnings) return await this.fetchWarnings();\n        return false;\n    }),\n\n    actions: {\n        filterSettingNeeds(negativeNeeds, setting) {\n            if (negativeNeeds)\n                return setting.key.includes('!') && !this.Collector.testNeeds([setting.key]);\n            else return !setting.key.includes('!') && !this.Collector.testNeeds([setting.key]);\n        },\n        refreshNeeded() {\n            set(this, 'refreshWarnings', true);\n            this.refreshNeeded();\n        },\n        async toggleActive(setting) {\n            set(this, 'refreshWarnings', true);\n            this.toggleActive(setting);\n            this.trackAnalyticsEvent(setting);\n\n        },\n        saveCalled() {\n            this.saveCalled();\n        },\n        setSetting(setting, options) {\n            this.setSetting(setting, options);\n        },\n        async save(setting) {\n            //const setting = get(this,'setting');\n            if (get(setting, 'value')) {\n                const old_value = get(setting, 'value');\n                let tmp_value = get(setting, 'value');\n                if (get(this, 'configs').setting.name === 'date_interval') {\n                    if (get(setting, 'value') === '0' || get(setting, 'value') === '1') {\n                        tmp_value = 'locked';\n                    }\n                    if (\n                        get(this, 'date_interval_future') &&\n                        get(this, 'date_interval_future_check')\n                    ) {\n                        const val = Math.abs(get(this, 'date_interval_future'));\n                        tmp_value += ',' + val;\n                    }\n                }\n                set(setting, 'value', tmp_value);\n                await setting.save();\n                set(setting, 'value', old_value);\n                get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n                    autoClear: true,\n                });\n            }\n        },\n    },\n\n    async fetchWarnings() {\n        set(this, 'refreshWarnings', false);\n        return this.ttapi._get('/api/checkSettingWarnings', {\n            worktimegroup: this.worktimegroup,\n            products: this.setting.checkWorktimegroupWarnings.products.join(','),\n        });\n    },\n\n    trackAnalyticsEvent(setting) {\n        // Format example:\n        // category: 'settings',\n        // action: 'enabled_setting',\n        // label: 'timetracker.auto_pause'\n        let originalTitle = setting.title;\n        let partString = originalTitle.split('.', 3);\n        let title = partString.slice(1).join('.');\n        let status = '';\n        setting.active === true ? status = 'enabled' : status = 'disabled';\n\n        this.analytics.trackEvent({\n            category: 'Settings',\n            action: status + '_setting',\n            label: title,\n        });\n    },\n\n});\n","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\n\nexport default class WarningsComponent extends Component {\n    @tracked hideAlertContent = false;\n\n    get styleNamespace() {\n        return podNames['settings/general-v2/setting-comp/components/warnings'];\n    }\n\n    @action\n    toggleAlertContent() {\n        this.hideAlertContent = !this.hideAlertContent;\n    }\n\n}\n","export default Ember.HTMLBars.template({\"id\":\"wD4Qfeo5\",\"block\":\"{\\\"symbols\\\":[\\\"products\\\",\\\"worktimegroup\\\",\\\"product\\\",\\\"@warnings\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[23,4,[]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[10,\\\"data-anchor\\\",\\\"worktimegroup-warning-loader\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"await\\\",[[23,4,[]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"data-anchor\\\",\\\"worktimegroup-product-missing-warning\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"warning-header\\\"],[11,\\\"onClick\\\",[28,\\\"fn\\\",[[23,0,[\\\"toggleAlertContent\\\"]]],null]],[10,\\\"data-anchor\\\",\\\"worktimegroup-warning-header\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"glyphicon \\\",[28,\\\"if\\\",[[23,0,[\\\"hideAlertContent\\\"]],\\\"glyphicon-chevron-down\\\",\\\"glyphicon-chevron-up\\\"],null]]]],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"alert-heading\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"settings.worktimegroup_settings.warnings.header\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[23,0,[\\\"hideAlertContent\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"warning-content\\\"],[10,\\\"data-anchor\\\",\\\"worktimegroup-warning-content\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"settings.worktimegroup_settings.warnings.main_text\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"warnings-list-container\\\"],[10,\\\"data-anchor\\\",\\\"worktimegroup-warning-list-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[28,\\\"await\\\",[[23,4,[]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"p\\\",true],[10,\\\"data-anchor\\\",\\\"worktimegroup-warning-list-header\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[23,2,[]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"li\\\",true],[10,\\\"data-anchor\\\",\\\"worktimegroup-warning-list-item\\\"],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"general.product.\\\",[23,3,[]]],null]],null],false],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/setting-comp/components/warnings/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"+oW3Z/vQ\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"opt\\\",\\\"rule\\\",\\\"negativeNeeds\\\",\\\"need\\\",\\\"positiveNeeds\\\",\\\"need\\\",\\\"@title\\\",\\\"@disableOnlyText\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"shouldCheckWarnings\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"settings/general-v2/setting-comp/components/warnings\\\",[],[[\\\"@warnings\\\"],[[23,0,[\\\"getWarnings\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"setting\\\",\\\"disabled\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-component\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-setting-header disabled-setting\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"searchvalue\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"highlight-helper\\\",[[28,\\\"t\\\",[[24,[\\\"setting\\\",\\\"title\\\"]]],null],[24,[\\\"searchvalue\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[[24,[\\\"setting\\\",\\\"title\\\"]]],null],false],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"debug\\\"]]],null,{\\\"statements\\\":[[0,\\\"(\\\"],[1,[24,[\\\"setting\\\",\\\"title\\\"]],false],[0,\\\")\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"move move-Info disabled-icon\\\"],[8],[0,\\\"\\\\n    \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@delay\\\",\\\"@tooltipClass\\\",\\\"@side\\\"],[\\\"400\\\",\\\"help-tooltip\\\",\\\"right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"shouldShowOnlyDisable\\\"]]],null,{\\\"statements\\\":[[4,\\\"with\\\",[[28,\\\"filter\\\",[[28,\\\"action\\\",[[23,0,[]],\\\"filterSettingNeeds\\\",false],null],[24,[\\\"setting\\\",\\\"disable\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-needs-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.needs_more\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"setting-needs-values\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,7,[]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[[23,8,[\\\"text\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[4,\\\"with\\\",[[28,\\\"filter\\\",[[28,\\\"action\\\",[[23,0,[]],\\\"filterSettingNeeds\\\",true],null],[24,[\\\"setting\\\",\\\"disable\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-needs-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.not_needs_more\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"setting-needs-values\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,5,[]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[[23,6,[\\\"text\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[1,[23,10,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"setting\\\",\\\"custom\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[1,[28,\\\"component\\\",[[24,[\\\"setting\\\",\\\"component\\\"]]],[[\\\"class\\\",\\\"refreshNeeded\\\",\\\"worktimegroup\\\",\\\"setting\\\",\\\"configs\\\",\\\"saveCalled\\\",\\\"settingSaved\\\",\\\"save\\\",\\\"onToggle\\\",\\\"loading\\\",\\\"title\\\"],[\\\"relative-positioned-setting-component\\\",[28,\\\"action\\\",[[23,0,[]],\\\"refreshNeeded\\\"],null],[24,[\\\"worktimegroup\\\"]],[24,[\\\"setting\\\"]],[24,[\\\"setting\\\",\\\"setting\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveCalled\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"saveCalled\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleActive\\\",[24,[\\\"setting\\\"]]],null],[24,[\\\"settingIsLoading\\\"]],[23,9,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"settingIsLoading\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-component \\\",[28,\\\"if\\\",[[24,[\\\"setting\\\",\\\"hideHeader\\\"]],\\\"hide-header\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[4,\\\"if\\\",[[24,[\\\"setting\\\",\\\"editingDisabled\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overlay\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"not\\\",[[24,[\\\"showDisabledNotification\\\"]]],null],[28,\\\"or\\\",[[24,[\\\"setting\\\",\\\"productsOn\\\"]],[24,[\\\"setting\\\",\\\"name\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"setting\\\",\\\"active\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleActive\\\",[24,[\\\"setting\\\"]]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"setting\\\",\\\"hideHeader\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-setting-header\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"searchvalue\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"highlight-helper\\\",[[28,\\\"t\\\",[[24,[\\\"setting\\\",\\\"title\\\"]]],null],[24,[\\\"searchvalue\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[[24,[\\\"setting\\\",\\\"title\\\"]]],null],false],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"debug\\\"]]],null,{\\\"statements\\\":[[0,\\\"(\\\"],[1,[24,[\\\"setting\\\",\\\"title\\\"]],false],[0,\\\")\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showInfo\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"move move-Info disabled-icon\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@delay\\\",\\\"@tooltipClass\\\",\\\"@side\\\"],[\\\"400\\\",\\\"help-tooltip\\\",\\\"right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"setting\\\",\\\"editingDisabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-needs-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.edit_disabled\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"setting-needs-values\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"setting\\\",\\\"editingDisabledRules\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",null,[[\\\"need\\\"],[[23,4,[\\\"key\\\"]]]]]],null,{\\\"statements\\\":[[0,\\\" \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[[23,4,[\\\"text\\\"]]],null],false],[9],[0,\\\" \\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[8],[1,[24,[\\\"setting\\\",\\\"groupEditableIf\\\",\\\"title\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showPlaceholder\\\"]]],null,{\\\"statements\\\":[[5,\\\"skeleton-component\\\",[],[[\\\"@rows\\\"],[6]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSettingOptions\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-component-container \\\",[28,\\\"if\\\",[[24,[\\\"setting\\\",\\\"hideHeader\\\"]],\\\"hide-border\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"showOverlay\\\"]],[28,\\\"not\\\",[[24,[\\\"showDisabledNotification\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overlay\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"setting\\\",\\\"component\\\"]],[28,\\\"not\\\",[[24,[\\\"setting\\\",\\\"form\\\"]]],null]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showDisabledNotification\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"settings.group_setting_disabled\\\"],[[\\\"title\\\"],[[28,\\\"t\\\",[[24,[\\\"setting\\\",\\\"groupEditableIf\\\",\\\"title\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"component\\\",[[24,[\\\"setting\\\",\\\"component\\\"]]],[[\\\"class\\\",\\\"refreshNeeded\\\",\\\"worktimegroup\\\",\\\"setting\\\",\\\"configs\\\",\\\"saveCalled\\\",\\\"settingSaved\\\",\\\"save\\\"],[\\\"relative-positioned-setting-component\\\",[28,\\\"action\\\",[[23,0,[]],\\\"refreshNeeded\\\"],null],[24,[\\\"worktimegroup\\\"]],[24,[\\\"setting\\\"]],[24,[\\\"setting\\\",\\\"setting\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveCalled\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"saveCalled\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"setting\\\",\\\"options\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showDisabledNotification\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"settings.group_setting_disabled\\\"],[[\\\"title\\\"],[[28,\\\"t\\\",[[24,[\\\"setting\\\",\\\"groupEditableIf\\\",\\\"title\\\"]]],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-container\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"if\\\",[[24,[\\\"setting\\\",\\\"editingDisabled\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overlay\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"setting\\\",\\\"options\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"and\\\",[[24,[\\\"worktimegroup\\\"]],[24,[\\\"option\\\",\\\"notGroupEditable\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"radio-inputs-settings\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setSetting\\\",[24,[\\\"setting\\\"]],[23,3,[]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"active\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"circle\\\",true],[10,\\\"class\\\",\\\"radio-svg-fill\\\"],[10,\\\"id\\\",\\\"Ellipse_30\\\"],[10,\\\"data-name\\\",\\\"Ellipse 30\\\"],[10,\\\"cx\\\",\\\"3\\\"],[10,\\\"cy\\\",\\\"3\\\"],[10,\\\"r\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(3 3)\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-text\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[[23,3,[\\\"title\\\"]]],[[\\\"htmlSafe\\\"],[true]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showFormReport\\\"]]],null,{\\\"statements\\\":[[4,\\\"collector/form-report\\\",null,[[\\\"filter\\\",\\\"hideSumRow\\\",\\\"hideCreatedColumn\\\",\\\"showColumns\\\",\\\"form\\\",\\\"defaultSort\\\"],[[24,[\\\"filterByWorktimegroup\\\"]],true,true,[24,[\\\"setting\\\",\\\"fields\\\"]],[24,[\\\"setting\\\",\\\"form\\\"]],[24,[\\\"order\\\"]]]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,1,[\\\"add\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/settings/general-v2/setting-comp/template.hbs' @ L184:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"rowActions\\\"]],\\\"expected `table.rowActions` to be a contextual component but found a string. Did you mean `(component table.rowActions)`? ('tt4/pods/settings/general-v2/setting-comp/template.hbs' @ L185:C22) \\\"],null]],[[\\\"showActions\\\"],[\\\"edit,remove\\\"]]],false],[0,\\\"\\\\n                    \\\"],[1,[23,2,[\\\"no-content\\\"]],false],[0,\\\"\\\\n                    \\\"],[1,[23,2,[\\\"cell\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[2,\\\"FormReport @filter={{filterByWorktimegroup}} @hideCreatedColumn={{true}} @showFilters=' ' @showColumns={{setting.fields}} @form={{setting.form}} as |Report|>\\\\n            <Report.Add />\\\\n            <Report.Table @hideSumRow={{true}} as |Table|>\\\\n                <Table.RowActions @showActions=\\\\\\\"edit,remove\\\\\\\" />\\\\n                <Table.NoContent />\\\\n            </Report.Table>\\\\n        </FormReport\\\"],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/setting-comp/template.hbs\"}});","import Component from '@ember/component';\nimport { computed } from '@ember/object';\n\nexport default Component.extend({\n    hasSplitLabel: computed('settingsPageSettings.@each.label', function () {\n        return this.settingsPageSettings.some((setting) => setting.label === 'split');\n    }),\n\n    hasNonSplitLabel: computed('settingsPageSettings.@each.label', function () {\n        return this.settingsPageSettings.some((setting) => setting.label !== 'split');\n    }),\n\n    settingsTitle: computed('settingsPage', function () {\n        let arr = this.settingsPage.split('.');\n        // Hide \"settings\" title if using top level setting.\n        if (arr[0] === 'general') {\n            return 'settings.general-settings';\n        }\n        if (arr[1] === 'settings') {\n            return 'settings.' + arr[0];\n        } else {\n            return 'settings.' + arr[1];\n        }\n    }),\n\n    actions: {\n        refreshNeeded() {\n            this.refreshNeeded();\n        },\n        toggleHelp() {\n            this.toggleHelpContainerVisibility('showHelpContainer');\n        },\n        toggleActive(setting) {\n            this.toggleActive(setting);\n        },\n        saveCalled(setting, donotreload) {\n            this.saveCalled(setting, donotreload);\n        },\n        setCustomerSetting(setting, value, worktimegroup) {\n            this.setCustomerSetting(setting, value, worktimegroup);\n        },\n        async setSetting(setting, option) {\n            this.setSetting(setting, option);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"u0nyVIAJ\",\"block\":\"{\\\"symbols\\\":[\\\"setting\\\",\\\"setting\\\",\\\"@settingsloading\\\",\\\"@settingsPage\\\",\\\"@neededHelpTexts\\\",\\\"@disableOnlyText\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"settingsLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"settingsPage\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"hasNonSplitLabel\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sub-settings-container\\\"],[8],[0,\\\"\\\\n                 \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sub-settings-header\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[[24,[\\\"settingsTitle\\\"]]],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Info mobile-info\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showHelp\\\"]]],null],true]],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Info desktop-info\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleHelp\\\"]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"settingsPageSettings\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,2,[\\\"label\\\"]],\\\"split\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sub-setting\\\"],[8],[0,\\\"\\\\n                        \\\"],[2,\\\" Settings Component for 'Non-Labeled' settings \\\"],[0,\\\"\\\\n                        \\\"],[5,\\\"settings/general-v2/setting-comp\\\",[],[[\\\"@worktimegroup\\\",\\\"@searchvalue\\\",\\\"@refreshNeeded\\\",\\\"@toggleActive\\\",\\\"@loadingEditor\\\",\\\"@setting\\\",\\\"@saveCalled\\\",\\\"@setSetting\\\",\\\"@setCustomerSetting\\\",\\\"@disableOnlyText\\\"],[[22,\\\"worktimegroup\\\"],[22,\\\"searchvalue\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"refreshNeeded\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleActive\\\"],null],[22,\\\"loadingEditor\\\"],[23,2,[]],[28,\\\"action\\\",[[23,0,[]],\\\"saveCalled\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setSetting\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setCustomerSetting\\\"],null],[23,6,[]]]]],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"hasSplitLabel\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sub-settings-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sub-settings-header\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Info desktop-info\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleHelp\\\"]],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"settingsPageSettings\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[\\\"label\\\"]],\\\"split\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sub-setting\\\"],[8],[0,\\\"\\\\n                        \\\"],[2,\\\" Settings Component for Labelel-'split' settings \\\"],[0,\\\"\\\\n                        \\\"],[5,\\\"settings/general-v2/setting-comp\\\",[],[[\\\"@worktimegroup\\\",\\\"@searchvalue\\\",\\\"@refreshNeeded\\\",\\\"@toggleActive\\\",\\\"@loadingEditor\\\",\\\"@setting\\\",\\\"@saveCalled\\\",\\\"@setSetting\\\",\\\"@setCustomerSetting\\\",\\\"@disableOnlyText\\\"],[[22,\\\"worktimegroup\\\"],[22,\\\"searchvalue\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"refreshNeeded\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleActive\\\"],null],[22,\\\"loadingEditor\\\"],[23,1,[]],[28,\\\"action\\\",[[23,0,[]],\\\"saveCalled\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setSetting\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setCustomerSetting\\\"],null],[23,6,[]]]]],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"or\\\",[[23,0,[\\\"hasSplitLabel\\\"]],[23,0,[\\\"hasNonSplitLabel\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"no-settings-found\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"report-placeholder\\\",null,[[\\\"customHeader\\\",\\\"searchIcon\\\"],[[28,\\\"t\\\",[\\\"settings.no-settings-found\\\"],null],true]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sub-settings-no-content\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"settings.no-content\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showHelp\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@header\\\",\\\"@close\\\"],[[28,\\\"t\\\",[[24,[\\\"settingsTitle\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"showHelp\\\"]]],[[\\\"value\\\"],[null]]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"settings/general-v2/helps\\\",[],[[\\\"@settingsLoading\\\",\\\"@settingsPage\\\",\\\"@neededHelpTexts\\\"],[[23,3,[]],[23,4,[]],[23,5,[]]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/sub-settings/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"pAUlZZRH\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"settings/general-v2/container\\\",[],[[\\\"@refreshAll\\\",\\\"@queryParams\\\",\\\"@setQParams\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"refreshAll\\\"],null],[23,0,[\\\"qParams\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setQParams\\\"],null]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/history/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Controller;\n\nimport Ember from 'ember';\n\nimport productSettings from '../../../config/settings';\n\nController = Ember.Controller.extend({\n    queryParams: 'page',\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    formattedModel: Ember.computed('model', function () {\n        return this.get('model.products').map((row) => {\n            row.product = this.getProductName(row.product);\n            row.type =\n                row.type === 'add'\n                    ? this.get('intl').t('general.on')\n                    : this.get('intl').t('general.off');\n            row.date = moment(row.date + ' UTC').format('LLL');\n            return row;\n        });\n    }),\n    rowCount: Ember.computed.alias('model.count'),\n    pageCount: Ember.computed('rowCount', function () {\n        return Math.ceil(this.get('rowCount') / 25);\n    }),\n    getProductName: function (product) {\n        var formList, list;\n        list = this.getListOfProducts();\n        formList = list.findBy('product', product);\n        if (formList) {\n            return {\n                header: this.get('intl').t(formList.header),\n                subheader: this.get('intl').t(formList.subheader),\n            };\n        } else {\n            return {\n                name: product,\n            };\n        }\n    },\n    getListOfProducts: function () {\n        var k, list, productSetting;\n        if (this.get('listOfProducts')) {\n            return this.get('listOfProducts');\n        }\n        list = [];\n        for (k in productSettings) {\n            productSetting = productSettings[k];\n            productSetting.forEach((item) => {\n                var form, productName, setting_name;\n                setting_name = item.title;\n                form = item.form;\n                if (!item.options) {\n                    productName = Ember.isArray(item.productsOn)\n                        ? item.productsOn[0].substring(0, 9) === 'products.'\n                            ? item.productsOn[0].slice(9)\n                            : item.productsOn[0]\n                        : form;\n                    list.push({\n                        header: setting_name,\n                        subheader: null,\n                        product: productName,\n                    });\n                    return;\n                }\n                return item.options.forEach((option) => {\n                    var option_name;\n                    option_name = option.title;\n                    return option.products.forEach((product) => {\n                        if (product.substring(0, 9) === 'products.') {\n                            return list.push({\n                                header: form ? setting_name : option_name,\n                                subheader: form ? null : setting_name,\n                                product: product.substring(9),\n                            });\n                        }\n                    });\n                });\n            });\n        }\n        this.set('listOfProducts', list);\n        return list;\n    },\n});\n\nexport default Controller;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Route;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n    },\n    Collector: Ember.inject.service('collector-service'),\n    model: function (params) {\n        return this.get('Collector').ajax({\n            url:\n                'service/productHistory' + (params.page ? '?offset=' + (params.page - 1) * 25 : ''),\n        });\n    },\n});\n\nexport default Route;\n","export default Ember.HTMLBars.template({\"id\":\"aK3EzYQd\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table settings-history-table\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"formattedModel\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"product\\\",\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"product\\\",[[23,1,[\\\"product\\\",\\\"name\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"product\\\",\\\"header\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"product\\\",\\\"subheader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"small\\\",true],[8],[1,[23,1,[\\\"product\\\",\\\"subheader\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"type\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"user\\\",[[23,1,[\\\"user\\\"]],\\\"icon\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"currentPage\\\",\\\"pageCount\\\",\\\"rowsPerPage\\\"],[[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]],25]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/history/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsIndexRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSettingsIndexRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default SettingsIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"7GNJdqRl\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"settings.you_dont_have_any_settings\\\"],null],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/integrationcontroller/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar IntegrationcontrollerController;\n\nimport Ember from 'ember';\n\nIntegrationcontrollerController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    worktime_fields: Ember.computed(function () {\n        var fields;\n        fields = this.get('Collector').fieldArray('worktime');\n        return fields.filter(function (field) {\n            var ref;\n            return (ref = field.type) === 'hours' || ref === 'number' || ref === 'currency';\n        });\n    }),\n    control_values: Ember.computed(function () {\n        var dropdowns, fields, values;\n        fields = this.get('Collector').fieldArray('worktime');\n        dropdowns = fields.filter(function (field) {\n            var ref;\n            return (ref = field.type) === 'dropdown_values';\n        });\n        values = [\n            {\n                name: this.get('intl').t('general.choose'),\n                value: '',\n            },\n        ];\n        dropdowns.forEach((field) => {\n            return field.options.forEach((option) => {\n                return values.push({\n                    name:\n                        field.translated_name.string +\n                        ' is ' +\n                        this.get('intl').t('worktime.' + field.name + '.' + option.value),\n                    value: field.name + '=' + option.value,\n                });\n            });\n        });\n        return values;\n    }),\n    actions: {\n        save: function () {\n            return this.get('model').forEach((row) => {\n                if (row.get('hasDirtyAttributes')) {\n                    return row.save();\n                }\n            });\n        },\n        remove: function (row) {\n            return row.destroyRecord();\n        },\n        addrow: function () {\n            return this.store.createRecord('integrationcontroller');\n        },\n        change: function (value) {\n            return console.log('change', value);\n        },\n    },\n});\n\nexport default IntegrationcontrollerController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/integrationcontroller/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar IntegrationcontrollerRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nIntegrationcontrollerRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    model: function () {\n        return this.store.findAll('integrationcontroller');\n    },\n});\n\nexport default IntegrationcontrollerRoute;\n","export default Ember.HTMLBars.template({\"id\":\"4Hm+aJZ7\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"field\\\",\\\"field\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Salarycode\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Field\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Conditions\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,1,[\\\"salarycode\\\"]],\\\"form-control\\\"]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onChange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,1,[\\\"field\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"option\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"worktime_fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,3,[\\\"name\\\"]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"field\\\"]],[23,3,[\\\"name\\\"]]],null]],[8],[1,[23,3,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onChange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,1,[\\\"control\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"control_values\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,2,[\\\"value\\\"]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"field\\\"]],[23,2,[\\\"value\\\"]]],null]],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,1,[]]]],[8],[0,\\\"X\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addrow\\\"]],[8],[0,\\\"Add salarytype\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[0,\\\"Save\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/integrationcontroller/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/integrations/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsIntegrationsController;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nSettingsIntegrationsController = Ember.Controller.extend({\n    collectorService: Ember.inject.service(),\n    sending: false,\n    callIntegration: function (data) {\n        return this.get('collectorService').ccapi({\n            url: 'at2unpaidservices',\n            method: 'post',\n            data: {\n                post: data,\n            },\n        });\n    },\n    actions: {\n        closeModal: function () {\n            return this.set('backFromCC', null);\n        },\n        sendFile: function () {\n            return $('input.sendAdmintoolIntegrationFile').click();\n        },\n        upload: function (evt) {\n            var input, reader;\n            input = evt.target;\n            if (input.files && input.files[0]) {\n                this.set('sending', true);\n                reader = new FileReader();\n                reader.onload = (e) => {\n                    var data;\n                    data = e.target.result;\n                    this.callIntegration(atob(data.split('base64,')[1])).then((back) => {\n                        this.set('backFromCC', 'Response: ' + JSON.stringify(back));\n                        return this.set('sending', false);\n                    });\n                    //console.log atob data.substring(13)\n                    return this.set('selectedFile', null);\n                };\n                return reader.readAsDataURL(input.files[0]);\n            }\n        },\n    },\n});\n\nexport default SettingsIntegrationsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/integrations/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsIntegrationsRoute;\n\nimport Ember from 'ember';\n\nSettingsIntegrationsRoute = Ember.Route.extend();\n\nexport default SettingsIntegrationsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"ZZe1OZky\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"admintool.integrations.unpaid_services_header\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.integrations.unpaid_services_help\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"input\\\",true],[10,\\\"class\\\",\\\"hide sendAdmintoolIntegrationFile\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"upload\\\"],null]],[11,\\\"value\\\",[22,\\\"selectedFile\\\"]],[10,\\\"type\\\",\\\"file\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendFile\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.select_file\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"sending\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"backFromCC\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[\\\"response\\\",[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"backFromCC\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/integrations/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/measurement_custom/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsMeasurementCustomController;\n\nimport Ember from 'ember';\n\nSettingsMeasurementCustomController = Ember.Controller.extend({\n    application: Ember.inject.controller(),\n    settingsController: Em.inject.controller('settings'),\n    actions: {\n        saved: function () {\n            this.get('settingsController').refreshNeeded();\n            this.get('application').notifyPropertyChange('sideMenus');\n            return false;\n        },\n        removedMeasurement: function () {\n            this.get('settingsController').refreshNeeded();\n            this.get('application').notifyPropertyChange('sideMenus');\n            return false;\n        },\n    },\n});\n\nexport default SettingsMeasurementCustomController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/measurement_custom/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsMeasurementCustomRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSettingsMeasurementCustomRoute = Ember.Route.extend(AuthenticatedRouteMixin, {});\n\nexport default SettingsMeasurementCustomRoute;\n","export default Ember.HTMLBars.template({\"id\":\"crf3mIq1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"form-wizard\\\",null,[[\\\"form\\\",\\\"saved\\\",\\\"removedMeasurement\\\"],[\\\"measurement_custom\\\",[28,\\\"action\\\",[[23,0,[]],\\\"saved\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removedMeasurement\\\"],null]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/measurement_custom/template.hbs\"}});","import Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { computed, get } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    collector: service('collector-service'),\n    notificationpanel: alias('model'),\n    // [{title: \"test\", notifications: [{title:\"Card expired\", active: true}, {title: \"Worktime not added\", active: true}]}]\n    notificationGroups: computed('model', function () {\n        const filtered = get(this, 'model').filter((item) => {\n            if (!item.needs) return true;\n            return get(this, 'collector').testNeeds(item.needs);\n        });\n\n        const groups = filtered.mapBy('group').filter(function (x, i, a) {\n            return a.indexOf(x) == i;\n        });\n\n        const ret = [];\n        groups.forEach((group) => {\n            ret.push({\n                title: group,\n                notifications: filtered.filterBy('group', group).map((notification) => {\n                    return {\n                        title: notification.type,\n                        type: notification.type,\n                        active: notification.active,\n                        customTime: notification.customTime,\n                    };\n                }),\n            });\n        });\n        return ret;\n    }),\n});\n","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { get, set, computed } from '@ember/object';\n//import moment from 'moment-timezone';\n\nexport default Component.extend({\n    ttapi: service(),\n    notifications: service(),\n    intl: service(),\n\n    show: false,\n\n    customTime: computed('notification.customTime', function () {\n        if (!get(this, 'notification.customTime')) return null;\n        const utctime = get(this, 'notification.customTime');\n        const date = moment().format('YYYY-MM-DD');\n        return moment(date + ' ' + utctime + ':00Z').format('HH:mm');\n    }),\n\n    actions: {\n        toggleActive(value, onoff) {\n            set(this, 'notification.active', onoff);\n            let date = moment().format('YYYY-MM-DD');\n            let time = get(this, 'notification.customTime')\n                ? get(this, 'notification.customTime')\n                : null;\n\n            let customTime = time\n                ? moment(date + ' ' + time + ':00')\n                      .utc()\n                      .format('HH:mm')\n                : null;\n\n            get(this, 'ttapi')._post('notification/update', {\n                notification: get(this, 'notification.type'),\n                active: onoff,\n                customTime: customTime,\n            });\n        },\n\n        async saveCustomTime(value) {\n            let date = moment().format('YYYY-MM-DD');\n            let customTime = moment(date + ' ' + value + ':00')\n                .utc()\n                .format('HH:mm');\n            await get(this, 'ttapi')._post('notification/update', {\n                notification: get(this, 'notification.type'),\n                active: get(this, 'notification.active'),\n                customTime: customTime,\n            });\n            this.notifications.success(this.intl.t('general.saved'), {\n                autoClear: true,\n            });\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"u/TnhKKt\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-6 setting-panel\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"panel-title general-settings-title\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"theme\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"onLabel\\\",\\\"offLabel\\\"],[\\\"flip\\\",[24,[\\\"notification\\\",\\\"active\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleActive\\\",[24,[\\\"notification\\\"]]],null],\\\"large\\\",[28,\\\"t\\\",[\\\"settings.on\\\"],null],[28,\\\"t\\\",[\\\"settings.off\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"notification.\\\",[24,[\\\"notification\\\",\\\"title\\\"]],\\\".title\\\"],null]],null],false],[0,\\\"\\\\n            \\\"],[1,[28,\\\"standard-icon-popover\\\",null,[[\\\"icon\\\",\\\"text\\\"],[\\\"info\\\",[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"notification.\\\",[24,[\\\"notification\\\",\\\"title\\\"]],\\\".desc\\\"],null]],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"notification\\\",\\\"active\\\"]],[24,[\\\"notification\\\",\\\"customTime\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"time\\\",[23,0,[\\\"customTime\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-sm\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveCustomTime\\\",[23,0,[\\\"customTime\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"img\\\",true],[10,\\\"style\\\",\\\"margin-left: 50%;\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"settings-dropdown-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"input\\\",true],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\" Rivin omistajalle\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"input\\\",true],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\" Rivin omistajan esimiehelle\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"input\\\",true],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\" Kaikille käyttäjäryhmässä: \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"input\\\",true],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\" Seuraaville käyttäjille: \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/notificationpanel/notification-component/template.hbs\"}});","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Route.extend({\n    ttapi: service(),\n\n    model() {\n        return get(this, 'ttapi')._get('notification/categories');\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"CZW4insR\",\"block\":\"{\\\"symbols\\\":[\\\"notificationGroup\\\",\\\"notification\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"notificationGroups\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"settings-container\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"setting-group-header\\\"],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"notifications.groups.\\\",[23,1,[\\\"title\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"notifications\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"settings/notificationpanel/notification-component\\\",null,[[\\\"notification\\\"],[[23,2,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/notificationpanel/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/pl/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsPlController;\n\nimport Ember from 'ember';\n\nimport productSettings from '../../../config/pl_settings';\n\nSettingsPlController = Ember.Controller.extend({\n    Collector: Em.inject.service('collector-service'),\n    session: Em.inject.service(),\n    intl: Em.inject.service(),\n    application: Em.inject.controller(),\n    settingsController: Em.inject.controller('settings'),\n    modelCreator: Ember.inject.service('model-creator'),\n    record: null,\n    // Settings that have somekind of settings form to add records to\n    formSettings: Em.computed('allSettings', function () {\n        var all_settings;\n        all_settings = this.get('allSettings');\n        if (!all_settings) {\n            return;\n        }\n        return this.get('allSettings').filterBy('form');\n    }),\n    // All settings fetched from config/settings and parsed to needed formats\n    allSettings: Em.computed('session.currentUser', 'updateSettings', function () {\n        var c, i, j, len, len1, option, options, pl_settings, ref, service_has_products, setting;\n        c = this.get('Collector');\n        pl_settings = [];\n        service_has_products = c.testNeeds(['products']);\n        if (!this.get('session.currentUser')) {\n            return;\n        }\n        // Loop trough the settings from config/settings\n        for (i = 0, len = productSettings.length; i < len; i++) {\n            setting = productSettings[i];\n            // Need to make them an ember object or updating won't work\n            setting = Em.Object.create(setting);\n            // We save the last opened setting in own variable so\n            // we can set the right setting open when settings are refreshed\n            if (this.get('openSetting') === setting.get('name')) {\n                // If they match, set the setting to open\n                setting.set('show', true);\n            }\n            // We test if the service have everything that is in it's needs array\n            // If not then we won't push it into settings\n            if (c.testNeeds(setting.get('needs'))) {\n                options = [];\n                if (setting.get('name') && this.get('intl').exists(setting.get('name') + '.desc')) {\n                    setting.set('desc', setting.get('name') + '.desc');\n                }\n                // If we don't have options the setting is always on\n                if (!setting.get('options') || !service_has_products) {\n                    setting.set('options', null);\n                    setting.set('active', true);\n                } else {\n                    ref = setting.get('options');\n                    // Loop through options and mark options that have all needs satisfied as active\n                    for (j = 0, len1 = ref.length; j < len1; j++) {\n                        option = ref[j];\n                        option = Em.Object.create(option);\n                        if (c.testNeeds(option.get('products'))) {\n                            option.set('active', true);\n                            // If settings have form and option value is \"on\" we mark the setting as active\n                            if (option.get('value') === 'on' && setting.get('form')) {\n                                setting.set('active', true);\n                            }\n                        }\n                        options.push(option);\n                    }\n                    setting.set('options', options);\n                }\n                pl_settings.push(setting);\n            }\n        }\n        return pl_settings;\n    }),\n    // All settings that don't have somekind of form\n    settings: Em.computed('allSettings', function () {\n        var all_settings;\n        all_settings = this.get('allSettings');\n        if (!all_settings) {\n            return;\n        }\n        return this.get('allSettings').filterBy('form', void 0);\n    }),\n    actions: {\n        addRecord: function (report) {\n            report.set('editorMode', true);\n            return false;\n        },\n        closeEditor: function (report) {\n            report.set('editorMode', false);\n            if (this.get('record')) {\n                this.set('record', null);\n            }\n            return false;\n        },\n        editRow: function (row, report) {\n            Em.assert('editRow action needs row id', row.id);\n            this.set('record', row.id);\n            report.set('editorMode', true);\n            return false;\n        },\n        removeRow: function (row, report) {\n            Em.assert('removeRow action needs row id', row.id);\n            return this.store.findRecord(report.get('form'), row.id).then(function (record) {\n                return record.destroyRecord();\n            });\n        },\n        // Add the options products and update the settings\n        setSetting: function (setting, option) {\n            var c, products, promises;\n            c = this.get('Collector');\n            // If we have a form we inverse the products else we just return the products\n            // The inversing needs to be done because forms only toggle on and off - could maybe fix in template\n            products = setting.get('form') ? c.inverseNeeds(option.products) : option.products;\n            this.get('settingsController').refreshNeeded();\n            // Use collector service to add the products to service\n            promises = c.setProducts(products);\n            return Em.RSVP.Promise.all(promises).then((data) => {\n                return this.send('saveCalled');\n            });\n        },\n        // Toggle setting in accordion to be open or closed\n        toggleSettingShow: function (clicked) {\n            var i, len, ref, results, setting;\n            ref = this.get('settings');\n            results = [];\n            for (i = 0, len = ref.length; i < len; i++) {\n                setting = ref[i];\n                if (setting.get('name') === clicked.get('name')) {\n                    setting.toggleProperty('show');\n                    results.push(this.set('openSetting', setting.get('name')));\n                } else {\n                    results.push(void 0);\n                }\n            }\n            return results;\n        },\n        saveCalled: function () {\n            // Get new /forms and update models\n            return this.get('modelCreator')\n                .createEmberModels()\n                .then(() => {\n                    this.toggleProperty('application.refreshMenus');\n                    // Force settings to update\n                    return this.toggleProperty('updateSettings');\n                });\n        },\n    },\n});\n\nexport default SettingsPlController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/pl/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsPlRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSettingsPlRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\n//    resetController: (controller, isExiting, transition) ->\n//        @_super.apply(this, arguments);\n\n//        if isExiting\n//            @transitionTo transition.targetName\n//            location.reload()\nexport default SettingsPlRoute;\n","export default Ember.HTMLBars.template({\"id\":\"oLHQxtMN\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"opt\\\",\\\"setting\\\",\\\"opt\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"settings\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"panel-heading\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleSettingShow\\\",[23,3,[]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[[23,3,[\\\"name\\\"]]],null],false],[9],[0,\\\" \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"icon-big pull-right text-report-muted \\\",[28,\\\"if\\\",[[23,3,[\\\"show\\\"]],\\\"move move-SortUp\\\",\\\"move move-SortDown\\\"],null]]]],[8],[9],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"show\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"blockquote\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[[23,3,[\\\"name\\\"]],\\\".desc\\\"],null]],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",[29,[\\\"list-group-item \\\",[28,\\\"if\\\",[[23,4,[\\\"active\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"setSetting\\\",[23,3,[]],[23,4,[]]]],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"list-group-item-heading\\\"],[8],[1,[28,\\\"t\\\",[[23,4,[\\\"name\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"option\\\",\\\"desc\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"list-group-item-text\\\"],[8],[1,[28,\\\"t\\\",[[23,4,[\\\"desc\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,3,[\\\"component\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"component\\\",[[23,3,[\\\"component\\\"]]],[[\\\"configs\\\"],[[23,3,[\\\"setting\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"formSettings\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-xs-12\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-8\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[[23,1,[\\\"name\\\"]]],null],false],[9],[0,\\\"\\\\n                                \\\"],[4,\\\"if\\\",[[23,1,[\\\"desc\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"t\\\",[[23,1,[\\\"desc\\\"]]],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2 text-right\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"options\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[\\\"active\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"value\\\"]],\\\"on\\\"],null],\\\"btn-m-action\\\",\\\"btn-m-link\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"setSetting\\\",[23,1,[]],[23,2,[]]]],[8],[1,[28,\\\"t\\\",[[23,2,[\\\"name\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"active\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[23,1,[\\\"editorMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2 text-right\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addRecord\\\",[23,1,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"active\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"editorMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"component\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"component\\\",[[23,1,[\\\"component\\\"]]],[[\\\"settings\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\",\\\"closeEditor\\\"],[[23,1,[]],[24,[\\\"record\\\"]],\\\"closeEditor\\\",\\\"closeEditor\\\",[28,\\\"action\\\",[[23,0,[]],\\\"closeEditor\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"settings\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[23,1,[]],[24,[\\\"record\\\"]],\\\"closeEditor\\\",\\\"closeEditor\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"settings\\\",\\\"editRow\\\",\\\"removeRow\\\"],[[23,1,[]],\\\"editRow\\\",\\\"removeRow\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/pl/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/products/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsProductsController;\n\nimport Ember from 'ember';\n\nimport { t } from 'ember-intl';\n\nimport config from 'tt4/config/environment';\n\nimport tt4config from '../../../config';\n\nimport productPostAddMixin from '../../../mixins/product-post-add';\n\nimport { htmlSafe } from '@ember/string';\n\nSettingsProductsController = Ember.Controller.extend(productPostAddMixin, {\n    intl: Ember.inject.service(),\n    admintool: Ember.inject.service(),\n    cdn: Ember.inject.service(),\n    session: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    application: Em.inject.controller(),\n    settings: Em.inject.controller(),\n    dialogs: Em.inject.service(),\n    modelCreator: Ember.inject.service('model-creator'),\n    notifications: Ember.inject.service(),\n    errors: Em.Object.create({\n        number_of_boxes: false,\n        delivery_street: false,\n        delivery_city: false,\n        delivery_zip: false,\n        name: false,\n        phone: false,\n        email: false,\n    }),\n    orderButtonArray: ['rfid', 'famoco'],\n    integrations: [\n        'fivaldi_salary_soap',\n        'lon600_salary_xml',\n        'netvisor_salary_rest',\n        'nova_salary_csv',\n        'nova_web_service',\n        'custom_export',\n    ],\n    buyrent_options_rfid: Ember.computed(function () {\n        return [\n            {\n                id: 'buy',\n                name: this.get('intl').t('settings.products.order_modal.buy'),\n            },\n            {\n                id: 'rent',\n                name: this.get('intl').t('settings.products.order_modal.rent'),\n            },\n        ];\n    }),\n    buyrent_options_famoco: Ember.computed(function () {\n        return [\n            {\n                id: 'famocobuy',\n                name: this.get('intl').t('settings.products.order_modal.famocobuy'),\n            },\n            {\n                id: 'famocorent',\n                name: this.get('intl').t('settings.products.order_modal.famocorent'),\n            },\n        ];\n    }),\n    levels: Ember.computed('intl', function () {\n        var country, intl;\n        intl = this.get('intl');\n        country = this.get('store').peekAll('companyInfo').get('firstObject.country');\n        return Em.A([\n            {\n                name: 'base_basic',\n                header: intl.t('products.header.basic'),\n                text: intl.t('products.text.basic'),\n                image: config.APP.CDN_URL + '/images/produts/basic.png',\n                price: intl.t('products.price.basic_' + country),\n                currency: intl.t('products.currency.basic_' + country),\n                pricetype_text: intl.t('products.pricetype.basic_' + country),\n                needs: 'products.base_basic',\n            },\n            {\n                name: 'base_pro',\n                header: intl.t('products.header.pro'),\n                text: intl.t('products.text.pro'),\n                image: config.APP.CDN_URL + '/images/produts/pro.png',\n                price: intl.t('products.price.pro_' + country),\n                currency: intl.t('products.currency.pro_' + country),\n                pricetype_text: intl.t('products.pricetype.pro_' + country),\n                needs: 'products.base_basic||products.base_pro',\n            },\n        ]);\n    }),\n    //{\n    //        name: \"base_enterprise\"\n    //        header: intl.t(\"products.header.enterprise\")\n    //        text: intl.t(\"products.text.enterprise\")\n    //        image: config.APP.CDN_URL+\"/images/produts/enterprise.png\"\n    //        price: intl.t(\"products.price.enterprise_\"+country)\n    //        currency: intl.t(\"products.currency.enterprise_\"+country)\n    //        pricetype_text: intl.t(\"products.pricetype.enterprise_\"+country)\n    //        needs: \"products.base_basic||products.base_pro||products.base_enterprise\"\n    //}\n    activeLevel: Ember.computed(function () {\n        var i, len, product, ref, version;\n        ref = this.get('Collector.products');\n        for (i = 0, len = ref.length; i < len; i++) {\n            product = ref[i];\n            if (\n                product === 'base_basic' ||\n                product === 'base_pro' ||\n                product === 'base_enterprise'\n            ) {\n                version = product;\n                break;\n            }\n        }\n        return this.get('levels').filterBy('name', version).get('firstObject');\n    }),\n    isSweService: Ember.computed('session.currentUser.company_info.country', function () {\n        if (this.get('session.currentUser.company_info.country') === 'se') {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n    _products: Ember.on(\n        'init',\n        Ember.observer('session.currentUser.company_info.country', function () {\n            var c, cdn, intl, params, servicetype;\n            if (!this.get('session.currentUser.company_info.country')) {\n                return;\n            }\n            intl = this.get('intl');\n            cdn = this.get('cdn');\n            c = this.get('Collector');\n            if (c.testNeedsOne('products.mini_entry')) {\n                servicetype = 'mini_entry';\n            } else if (c.testNeedsOne('products.generic_timetracker')) {\n                servicetype = 'entry';\n            } else {\n                servicetype = 'movenium';\n            }\n            params = {\n                data: {\n                    country: this.get('session.currentUser.company_info.country'),\n                    lang: moment.locale(),\n                    servicetype: servicetype,\n                },\n                headers: {\n                    Authorization:\n                        'Bearer ' + this.get('session.session.authenticated.access_token'),\n                },\n            };\n            return this.get('admintool')\n                .get('products', params)\n                .then((products) => {\n                    products = products.map((item) => {\n                        item.pricetype_text = (function () {\n                            switch (item.pricetype) {\n                                case 'peruser':\n                                    return intl.t('register.price_type_peruser');\n                                case 'perproject':\n                                    return intl.t('register.price_type_perproject');\n                                case 'permonth':\n                                    return intl.t('register.price_type_permonth');\n                                case 'monthlyperproject':\n                                    return intl.t('register.price_type_monthlyperproject');\n                            }\n                        })();\n                        item.image = item.image ? cdn.url('images/products/' + item.image) : void 0;\n                        item = Ember.Object.create(item);\n                        // if client has old xml-version of this product\n                        // select it but disable it also so user cannot unselect it\n                        if (this.get('productNeedsArr')[item.name]) {\n                            if (c.testNeeds(this.get('productNeedsArr')[item.name])) {\n                                item.set('disabled_and_selected', true);\n                            }\n                        }\n\n                        // if product has disabled needs set disabled\n                        const productCanBeTurnedOnNeeds = this.get(\n                            'productCanBeTurnedOn.' + item.name,\n                        );\n                        const allProductNeedsAreMet =\n                            !productCanBeTurnedOnNeeds ||\n                            c.testNeeds(productCanBeTurnedOnNeeds.map((a) => a.key));\n\n                        item.set(\n                            'disabled',\n                            allProductNeedsAreMet ? false : productCanBeTurnedOnNeeds,\n                        );\n\n                        //@set 'old_products_found', true\n                        //item.set('selected', true)\n                        if (c.testNeeds(['products.' + item.get('name')])) {\n                            item.set('selected', true);\n                        }\n                        return item;\n                    });\n                    return this.set('products', products);\n                });\n        }),\n    ),\n    // list here all products that cannot be turned on/off when customer has old xml-packet for that product\n    productNeedsArr: {\n        timetracker: ['worktime', '!products.timetracker', 'task'],\n        orientations: ['orientation', '!modules.orientations'],\n        rakentajanpaketti: [\n            'urakkaraportointi',\n            '!products.rakentajanpaketti',\n            '!products.timetracker',\n        ],\n        rfid: ['project.rfid_device_id', '!products.rfid'],\n    },\n\n    productCanBeTurnedOn: {\n        fondion: [\n            {\n                key: 'products.salarytype_v2',\n                text: 'settings.salarytypes.salarytypesv2',\n            },\n            {\n                key: '!products.timetracker_hours',\n                text: 'settings.timetracker.startandend',\n            },\n        ],\n    },\n\n    // i didn't add these because if client has site-safety xml it also has tr and mvr json-products so there is nothing to compare\n    // measurement_tr: ['tr']\n    // measurement_mvr: ['mvr']\n    isDirty: Em.computed('products.@each.selected', 'productsSaved', function () {\n        var c, dirty, i, len, product, products;\n        products = this.get('products');\n        if (!products) {\n            return false;\n        }\n        c = this.get('Collector');\n        dirty = false;\n        for (i = 0, len = products.length; i < len; i++) {\n            product = products[i];\n            if (product.get('selected') && !c.testNeeds(['products.' + product.get('name')])) {\n                dirty = true;\n            } else if (\n                !product.get('selected') &&\n                c.testNeeds(['products.' + product.get('name')])\n            ) {\n                dirty = true;\n            }\n        }\n        return dirty;\n    }),\n    rfid_modal_title: Em.computed(function () {\n        return htmlSafe(this.get('intl').t('register.products.rfid_order_title'));\n    }),\n    showRfidModal: false,\n    showIntegrationModal: false,\n    sendInfoToCustomerService: function (needs) {\n        var c, content, products;\n        if (this.get('session.currentUser.company_info.country') !== 'se') {\n            return;\n        }\n        c = this.get('Collector');\n        products = needs.filter(function (item) {\n            return item.get('selected') && !c.productExists('products.' + item.get('name'));\n        });\n        if (Ember.get(products, 'length') > 0) {\n            content =\n                'Customer ' +\n                this.get('session.currentUser.company_info.company_name') +\n                ' ' +\n                this.get('session.currentUser.partnerid') +\n                ' has added products to their service<br>';\n            content += 'Products: <br>' + products.mapBy('header').join('<br>');\n            return this.Collector.ttapi({\n                url: 'sendEmail',\n                data: {\n                    email: 'customerservice_se',\n                    title:\n                        'Customer ' +\n                        this.get('session.currentUser.company_info.company_name') +\n                        ' ' +\n                        this.get('session.currentUser.partnerid') +\n                        ' added products',\n                    content: content,\n                },\n                method: 'post',\n            });\n        }\n    },\n    updateExternal: function (needs) {\n        var c, data, i, len, product, products, results, url;\n        if (\n            !config.APP.PRODUCT_UPDATES_URL ||\n            this.get('session.session.content.authenticated.scope')\n        ) {\n            return;\n        }\n        c = this.get('Collector');\n        products = needs.filter(function (item) {\n            return item.get('selected') && !c.productExists('products.' + item.get('name'));\n        });\n        url = config.APP.PRODUCT_UPDATES_URL;\n        results = [];\n        for (i = 0, len = products.length; i < len; i++) {\n            product = products[i];\n            data = {\n                date: moment().format('YYYY-MM-DD'),\n                product: product['name'],\n                name:\n                    this.get('session.currentUser.firstname') +\n                    ' ' +\n                    this.get('session.currentUser.lastname'),\n                email: this.get('session.currentUser.email'),\n                phone: this.get('session.currentUser.phone'),\n                company: this.get('session.currentUser.company_info.company_name'),\n                businessid: this.get('session.currentUser.company_info.company_vatin'),\n                serviceid: this.get('session.currentUser.partnerid'),\n                userid: this.get('session.currentUser.id'),\n                lang: this.get('intl.primaryLocale'),\n                country: this.get('session.currentUser.company_info.country'),\n            };\n            results.push(\n                $.ajax({\n                    url: url,\n                    data: JSON.stringify({\n                        data: data,\n                    }),\n                    method: 'POST',\n                }),\n            );\n        }\n        return results;\n    },\n    actions: {\n        change: function (field, value) {\n            if (this.get('rfid_info.' + field)) {\n                this.set('rfid_info.' + field, value);\n            }\n            return this.set('errors.' + field, false);\n        },\n        click: function (object) {\n            var self;\n            self = this;\n            if (object.get('disabled')) {\n                return false;\n            }\n            if (object.get('selected')) {\n                this.get('dialogs')\n                    .confirm(this.get('intl').t('settings.confirm.remove_product'))\n                    .then(function (ret) {\n                        if (ret) {\n                            object.set('selected', false);\n                            return self.send('save');\n                        }\n                    });\n            } else {\n                object.toggleProperty('selected');\n                if (this.get('integrations').includes(object.name)) {\n                    this.set('showIntegrationModal', true);\n                    this.set('integrationName', object.name);\n                }\n                this.send('save');\n            }\n            return false;\n        },\n        moreInfo: function (link) {\n            return window.open(link, '_blank');\n        },\n        orderButton: function (product) {\n            return this.get('admintool')\n                .ajax({\n                    url: 'customer_info',\n                })\n                .then((c_info) => {\n                    this.set('rfid_info', {\n                        company_name: this.get('session.currentUser.company_info.company_name'),\n                        name:\n                            this.get('session.currentUser.firstname') +\n                            ' ' +\n                            this.get('session.currentUser.lastname'),\n                        phone: this.get('session.currentUser.phone'),\n                        email: this.get('session.currentUser.email'),\n                        delivery_street: c_info['street'],\n                        delivery_city: c_info['town'],\n                        delivery_zip: c_info['zip'],\n                        number_of_boxes: 1,\n                        vatin: c_info['vatin'],\n                        partnerid: c_info['partnerid'],\n                        country: c_info['country'],\n                        rental: product === 'famoco' ? 'famocobuy' : 'buy',\n                    });\n                    this.set('showRfidModal', product);\n                    return false;\n                });\n        },\n        closeModal: function () {\n            return this.set('showRfidModal', false);\n        },\n        saveRfidData: function () {\n            var address,\n                basicContent,\n                contentRow,\n                customer_address,\n                emailContent,\n                emailContentForCustomer,\n                field,\n                hasError,\n                i,\n                j,\n                len,\n                len1,\n                ref,\n                self,\n                type;\n            hasError = false;\n            ref = [\n                'number_of_boxes',\n                'delivery_street',\n                'delivery_city',\n                'delivery_zip',\n                'name',\n                'phone',\n                'email',\n            ];\n            for (i = 0, len = ref.length; i < len; i++) {\n                field = ref[i];\n                if (!this.get('rfid_info.' + field) || this.get('rfid_info.' + field) === '') {\n                    this.set('errors.' + field, true);\n                    hasError = true;\n                } else {\n                    this.set('errors.' + field, false);\n                }\n            }\n            if (!hasError) {\n                type = this.get('showRfidModal');\n                this.set('showRfidModal', false);\n                self = this;\n                emailContent = [];\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_company_name'),\n                    this.get('session.currentUser.partnerid') +\n                        ' ' +\n                        this.get('rfid_info.company_name'),\n                ]);\n                emailContent.push(['Product type:', type]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_number_of_boxes'),\n                    this.get('rfid_info.number_of_boxes'),\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_rental'),\n                    this.get('intl').t(\n                        'settings.products.order_modal.' + this.get('rfid_info.rental'),\n                    ),\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_number_of_tags'),\n                    this.get('rfid_info.number_of_tags') > 0\n                        ? this.get('rfid_info.number_of_tags')\n                        : 0,\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_delivery_street'),\n                    this.get('rfid_info.delivery_street'),\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_delivery_city'),\n                    this.get('rfid_info.delivery_city'),\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_delivery_zip'),\n                    this.get('rfid_info.delivery_zip'),\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_name'),\n                    this.get('rfid_info.name'),\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_phone'),\n                    this.get('rfid_info.phone'),\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_email'),\n                    this.get('rfid_info.email'),\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_vatin'),\n                    this.get('rfid_info.vatin'),\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_partnerid'),\n                    this.get('rfid_info.partnerid'),\n                ]);\n                if (this.get('rfid_info.order_ref')) {\n                    emailContent.push([\n                        this.get('intl').t('settings.products.rfid_order_ref'),\n                        this.get('rfid_info.order_ref'),\n                    ]);\n                }\n                //emailContent = \"<hr><br/><center>\"+\"<table>\"\n                //emailContent += \"<tr><td>\"+@get('intl').t('settings.products.rfid_company_name')+\":</td><td> \"+@get('session.currentUser.partnerid')+\" \"+@get('rfid_info.company_name')+\"</td></tr>\"\n                //emailContent += \"<tr><td>\"+\"Product type:</td><td> \"+type+\"</td></tr>\"\n                //emailContent += \"<tr><td>\"+@get('intl').t('settings.products.rfid_number_of_boxes')+\":</td><td> \"+@get('rfid_info.number_of_boxes')+\"</td></tr>\"\n                //emailContent += \"<tr><td>\"++\"</td></tr>\"\n                //emailContent += \"<tr><td>\"+</td></tr>\"\n                //emailContent += \"<tr><td>\"+@get('intl').t('settings.products.rfid_delivery_street')+\":</td><td> \"+@get('rfid_info.delivery_street')+\"</td></tr>\"\n                //emailContent += \"<tr><td>\"++\"</td></tr>\"\n                //emailContent += \"<tr><td>\"++\"</td></tr>\"\n                //emailContent += \"<tr><td>\"++\"</td></tr>\"\n                //emailContent += \"<tr><td>\"++\"</td></tr>\"\n                //emailContent += \"<tr><td>\"++\"</td></tr>\"\n                //emailContent += \"<tr><td>\"++\"</td></tr>\"\n                //emailContent += \"<tr><td>\"++\"</td></tr>\"\n                // why was this here and below also? Should this be only inside if?\n                // emailContent += @get('intl').t('settings.products.order_ref')+\": \"+@get('rfid_info.order_ref')+\"<br>\"\n                //emailContent += \"<tr><td>\"++\"</td></tr>\"\n                //if @get('rfid_info.order_ref')\n                //    emailContent += \"<tr><td>\"++\"</td></tr>\"\n\n                //emailContent += \"</table></center>\"\n                address = 'customerservice_fi';\n                if (this.get('rfid_info.country') === 'se') {\n                    address = 'customerservice_se';\n                }\n                // send this information also to customer (in html-format)\n                if (\n                    this.get('rfid_info.email') !==\n                        this.get('session.currentUser.company_info.company_email') &&\n                    this.get('session.currentUser.company_info.company_email')\n                ) {\n                    customer_address = [];\n                    customer_address.push(this.get('rfid_info.email'));\n                    customer_address.push(\n                        this.get('session.currentUser.company_info.company_email'),\n                    );\n                } else {\n                    customer_address = this.get('rfid_info.email');\n                }\n                basicContent = '\\r\\n';\n                for (j = 0, len1 = emailContent.length; j < len1; j++) {\n                    contentRow = emailContent[j];\n                    //console.log contentRow\n                    basicContent += contentRow[0] + ': ' + contentRow[1] + '\\r\\n';\n                }\n                emailContentForCustomer =\n                    this.get('intl').t('settings.products.rfid_order_received') +\n                    '\\r\\n' +\n                    basicContent;\n                this.Collector.ttapi({\n                    url: 'sendEmail',\n                    data: {\n                        email: address,\n                        title:\n                            self.get('session.currentUser.company') +\n                            ' - ' +\n                            self.get('intl').t('register.products.rfid_info'),\n                        content: basicContent,\n                    },\n                    method: 'post',\n                });\n                return this.Collector.ttapi({\n                    url: 'sendEmail',\n                    data: {\n                        email: customer_address,\n                        title: this.get('intl')\n                            .t('settings.products.rfid_order_received_header')\n                            .toString(),\n                        content: emailContentForCustomer,\n                    },\n                    method: 'post',\n                });\n            }\n        },\n        selectLevel: function (level) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('settings.products.confirm.upgrade'))\n                .then((con) => {\n                    var needs, promises;\n                    if (con) {\n                        needs = [];\n                        this.get('levels').forEach(function (item) {\n                            if (item.name === level.name) {\n                                return needs.push('products.' + level.name);\n                            } else {\n                                return needs.push('!products.' + item.name);\n                            }\n                        });\n                        promises = this.get('Collector').setProducts(needs);\n                        return Em.RSVP.Promise.all(promises).then(() => {\n                            return location.reload();\n                        });\n                    }\n                });\n        },\n        save: function () {\n            var c,\n                i,\n                len,\n                needs,\n                post_add_actions,\n                product,\n                products,\n                promises,\n                selectedProducts,\n                self,\n                some_old_xml_products,\n                type;\n            self = this;\n            products = this.get('products');\n            some_old_xml_products = false;\n            selectedProducts = products.filterBy('selected');\n            // check if user has some old xml-products\n            // if has, then it is ok to remove all products added from tt4\n            if (\n                selectedProducts.get('length') === 0 &&\n                this.get('Collector').testNeedsOne('products.generic_timetracker') === false\n            ) {\n                this.get('dialogs').alert(\n                    this.get('intl').t('settings.products.no_products_selected'),\n                );\n                return;\n            }\n            this.get('settings').refreshNeeded();\n            c = this.get('Collector');\n            needs = [];\n            post_add_actions = [];\n            for (i = 0, len = products.length; i < len; i++) {\n                product = products[i];\n                if (product.get('selected')) {\n                    if (\n                        !c.productExists('products.' + product.get('name')) &&\n                        typeof this['adding_' + product.get('name')] === 'function'\n                    ) {\n                        post_add_actions.push(product.get('name'));\n                    }\n                    if (\n                        !c.productExists('products.' + product.get('name')) &&\n                        (product.get('name') === 'rfid' || product.get('name') === 'famoco')\n                    ) {\n                        type = product.get('name');\n                        this.get('admintool')\n                            .ajax({\n                                url: 'customer_info',\n                            })\n                            .then((c_info) => {\n                                this.set('rfid_info', {\n                                    company_name: this.get(\n                                        'session.currentUser.company_info.company_name',\n                                    ),\n                                    name:\n                                        this.get('session.currentUser.firstname') +\n                                        ' ' +\n                                        this.get('session.currentUser.lastname'),\n                                    phone: this.get('session.currentUser.phone'),\n                                    email: this.get('session.currentUser.email'),\n                                    delivery_street: c_info['street'],\n                                    delivery_city: c_info['town'],\n                                    delivery_zip: c_info['zip'],\n                                    number_of_boxes: 1,\n                                    vatin: c_info['vatin'],\n                                    partnerid: c_info['partnerid'],\n                                    country: c_info['country'],\n                                });\n                                return self.set('showRfidModal', type);\n                            });\n                    }\n                    needs.push('products.' + product.get('name'));\n                } else {\n                    needs.push('!products.' + product.get('name'));\n                }\n            }\n            this.sendInfoToCustomerService(products);\n            this.updateExternal(products);\n            promises = c.setProducts(needs);\n            return Em.RSVP.Promise.all(promises).then((data) => {\n                this.get('notifications').success(\n                    this.get('intl').t('settings.products.productsSaved'),\n                    {\n                        autoClear: true,\n                    },\n                );\n                // Get new /forms and update models\n                return this.get('modelCreator')\n                    .createEmberModels()\n                    .then(() => {\n                        // check if we need to do some post-adding stuff\n                        post_add_actions.forEach((action) => {\n                            if (c.productExists('products.' + action)) {\n                                return this['adding_' + action]();\n                            }\n                        });\n                        this.toggleProperty('application.refreshMenus');\n                        return this.get('application').notifyPropertyChange('subMenus');\n                    });\n            });\n        },\n        infoButton: function (product) {\n            this.set('showIntegrationModal', true);\n            return this.set('integrationName', product);\n        },\n    },\n});\n\nexport default SettingsProductsController;\n","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { inject as service } from '@ember/service';\n\nexport default class DisabledComponent extends Component {\n    @service('collector-service') collector;\n\n    constructor() {\n        super(...arguments);\n        this.errors = [];\n        for (let need of this.args.needs) {\n            if (!this.collector.testNeeds([need.key])) {\n                this.errors.push(need.text);\n            }\n        }\n    }\n    get styleNamespace() {\n        return podNames['settings/products/disabled'];\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"bSwBs5n0\",\"block\":\"{\\\"symbols\\\":[\\\"error\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"move move-Info disabled-icon\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@delay\\\",\\\"@tooltipClass\\\",\\\"@side\\\"],[\\\"400\\\",\\\"help-tooltip\\\",\\\"right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-needs-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"products.needs_more\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"setting-needs-values\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[[23,1,[]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/products/disabled/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/products/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsProductsRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSettingsProductsRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    beforeModel: function (transition) {\n        if (this.get('Collector').testNeedsOne('products.mini_entry')) {\n            transition.abort();\n            return this.transitionTo('dashboard');\n        }\n    },\n});\n\nexport default SettingsProductsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"koMHVxbD\",\"block\":\"{\\\"symbols\\\":[\\\"product\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.products.title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"promo-component\\\",null,[[\\\"start\\\",\\\"end\\\"],[\\\"2016-11-23\\\",\\\"2016-11-27\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"promomessage.current_header\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"promomessage.current_text\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row product_card_row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"products\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"class\\\"],[\\\"loading-icon\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"products\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"col-xs-12 col-sm-6 col-md-4 \\\",[28,\\\"if\\\",[[23,1,[\\\"disabled_and_selected\\\"]],\\\"product_card_holder_disabled\\\",\\\"product_card_holder\\\"],null],\\\" \\\"]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"product_card \\\",[28,\\\"if\\\",[[23,1,[\\\"selected\\\"]],\\\"selected\\\"],null],\\\" \\\",[28,\\\"if\\\",[[23,1,[\\\"disabled_and_selected\\\"]],\\\"selected\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-1\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"icon\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move \\\",[23,1,[\\\"icon\\\"]],\\\" right-menu menu-icon\\\"]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"h3\\\",true],[8],[1,[23,1,[\\\"header\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-7 col-md-6\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"texts\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"purify-dom\\\",[[23,1,[\\\"text\\\"]]],null],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-sm-5 col-md-6 product_image\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"image\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"img\\\",true],[11,\\\"src\\\",[29,[[23,1,[\\\"image\\\"]]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"serviceCountry@fi\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"price\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"price_text\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"price_container\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"p\\\",true],[8],[1,[23,1,[\\\"price_text\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"not-eq\\\",[[23,1,[\\\"price\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"currency\\\",[[23,1,[\\\"price\\\"]],[23,1,[\\\"currency\\\"]]],null],false],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"price_type\\\"],[8],[1,[23,1,[\\\"pricetype_text\\\"]],false],[9],[0,\\\"\\\\n                                \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,1,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"select_container\\\"],[8],[0,\\\"\\\\n                            \\\"],[5,\\\"settings/products/disabled\\\",[],[[\\\"@needs\\\"],[[23,1,[\\\"disabled\\\"]]]]],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"disabled_and_selected\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"select_container\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"checkbox \\\",[28,\\\"if\\\",[[23,1,[\\\"selected\\\"]],\\\"checked\\\"],null]]]],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"selected\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.product_selected\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"select_container\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"click\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"checkbox \\\",[28,\\\"if\\\",[[23,1,[\\\"selected\\\"]],\\\"checked\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"selected\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"selected\\\"],[8],[1,[28,\\\"if\\\",[[23,1,[\\\"selected\\\"]],[28,\\\"t\\\",[\\\"register.product_selected\\\"],null],[28,\\\"t\\\",[\\\"register.select_product\\\"],null]],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"isSweService\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"in-array\\\",[[23,1,[\\\"name\\\"]],[24,[\\\"orderButtonArray\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"selected\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"select-container order-button pull-right\\\"],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"orderButton\\\",[23,1,[\\\"name\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"settings.products.order\\\"],null],false],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"and\\\",[[23,1,[\\\"selected\\\"]],[28,\\\"in-array\\\",[[23,1,[\\\"name\\\"]],[24,[\\\"integrations\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"select-container order-button pull-right\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"infoButton\\\",[23,1,[\\\"name\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"settings.products.integration_info_button\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"integration-info-popup\\\",null,[[\\\"product\\\",\\\"triggerShowModal\\\"],[[24,[\\\"integrationName\\\"]],[24,[\\\"showIntegrationModal\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,1,[\\\"link\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"info-button\\\"],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Info\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moreInfo\\\",[23,1,[\\\"link\\\"]]]],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRfidModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"rfid_modal_title\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_company_name\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\",\\\"autocapitalize\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"rfid_info\\\",\\\"company_name\\\"]],[24,[\\\"disabled\\\"]],\\\"off\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_number_of_boxes\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"number_of_boxes\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocapitalize\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"rfid_info\\\",\\\"number_of_boxes\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"number_of_boxes\\\",[24,[\\\"rfid_info\\\",\\\"number_of_boxes\\\"]]],null],\\\"off\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showRfidModal\\\"]],\\\"famoco\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_number_of_tags\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocapitalize\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"rfid_info\\\",\\\"number_of_tags\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"number_of_tags\\\",[24,[\\\"rfid_info\\\",\\\"number_of_tags\\\"]]],null],\\\"off\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showRfidModal\\\"]],\\\"rfid\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_rental\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showRfidModal\\\"]],\\\"famoco\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"settings.products.famoco_rental\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showRfidModal\\\"]],\\\"rfid\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\"],[\\\"form-control add-fields\\\",[24,[\\\"buyrent_options_rfid\\\"]],[24,[\\\"rfid_info\\\",\\\"rental\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\"],[\\\"form-control add-fields\\\",[24,[\\\"buyrent_options_famoco\\\"]],[24,[\\\"rfid_info\\\",\\\"rental\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[2,\\\" address-info \\\"],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_delivery_street\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"delivery_street\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocapitalize\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"rfid_info\\\",\\\"delivery_street\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"delivery_street\\\",[24,[\\\"rfid_info\\\",\\\"delivery_street\\\"]]],null],\\\"off\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_delivery_city\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"delivery_city\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocapitalize\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"rfid_info\\\",\\\"delivery_city\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"delivery_city\\\",[24,[\\\"rfid_info\\\",\\\"delivery_city\\\"]]],null],\\\"off\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_delivery_zip\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"delivery_zip\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocapitalize\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"rfid_info\\\",\\\"delivery_zip\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"delivery_zip\\\",[24,[\\\"rfid_info\\\",\\\"delivery_zip\\\"]]],null],\\\"off\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[2,\\\" /address-info \\\"],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_name\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocapitalize\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"rfid_info\\\",\\\"name\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"name\\\",[24,[\\\"rfid_info\\\",\\\"name\\\"]]],null],\\\"off\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_phone\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"phone\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocapitalize\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"rfid_info\\\",\\\"phone\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"phone\\\",[24,[\\\"rfid_info\\\",\\\"phone\\\"]]],null],\\\"off\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_email\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"email\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocapitalize\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"rfid_info\\\",\\\"email\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"email\\\",[24,[\\\"rfid_info\\\",\\\"email\\\"]]],null],\\\"off\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveRfidData\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/products/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsRoute,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSettingsRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    Collector: Em.inject.service('collector-service'),\n    settings: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    intl: Em.inject.service(),\n    initapp: Em.inject.service(),\n    flags: Ember.inject.service(),\n    transitionToRightPage: function () {\n        return this.transitionTo('settings.general-v2');\n    },\n    beforeModel: function (transition) {\n        var target_arr;\n        target_arr = transition.targetName.split('.');\n        if (target_arr[0] === 'settings' && !this.get('Collector').testNeedsOne('userlevel=5')) {\n            transition.abort();\n            return this.transitionTo('my-sites.index');\n        } else if (target_arr[0] === 'settings' && target_arr[1] && target_arr[1] !== 'index') {\n        } else {\n            return this.transitionToRightPage();\n        }\n    },\n    actions: {\n        willTransition: function (transition) {\n            var force_refresh, ref;\n            force_refresh = ['salary.salarytypes'];\n            if (\n                transition.targetName.substring(0, 8) !== 'settings' ||\n                ((ref = transition.targetName), indexOf.call(force_refresh, ref) >= 0)\n            ) {\n                return transition.finally(() => {\n                    if (\n                        this.controller.get('_refreshNeeded') ||\n                        this.get('settings').refreshNeeded()\n                    ) {\n                        this.get('initapp').clearInit();\n                        return this.get('dialogs')\n                            .alert(this.get('intl').t('general.settings_refresh_needed'))\n                            .then(function () {\n                                return location.reload();\n                            });\n                    }\n                });\n            } else if (transition.targetName === 'settings.index') {\n                return this.transitionToRightPage();\n            }\n        },\n    },\n});\n\nexport default SettingsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Z+qVvSHK\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"u84qli3r\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.shift_planning\\\",\\\"userlevel=5,3,6\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"react\\\",[],[[\\\"@comp\\\"],[\\\"ShiftPlanningViewV2\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/shift-planning/gantt/template.hbs\"}});","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class resourcePlanningRoute extends Route {\n    @service('collector-service') Collector;\n    @service router;\n\n    beforeModel(transition) {\n        this.transitionToRightPage(transition);\n    }\n\n    transitionToRightPage(transition) {\n        if (\n            transition.targetName === 'shift-planning.gantt' &&\n            this.Collector.testNeeds(['!userfieldcheck.resourcePlanner'])\n        ) {\n            this.router.transitionTo('shift-planning.week');\n        }\n    }\n\n    @action\n    willTransition(transition) {\n        this.transitionToRightPage(transition);\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"Snec2m5U\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"react\\\",[],[[\\\"@comp\\\"],[\\\"MobileView\\\"]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/shift-planning/week/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/addnotice/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyAddNoticeIndexController;\n\nimport Ember from 'ember';\n\nSiteSafetyAddNoticeIndexController = Ember.Controller.extend();\n\nexport default SiteSafetyAddNoticeIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/addnotice/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyAddNoticeIndexRoute;\n\nimport Ember from 'ember';\n\nSiteSafetyAddNoticeIndexRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    beforeModel: function () {\n        var c;\n        c = this.get('Collector');\n        if (c.testNeedsOne('tr@add') && !c.testNeedsOne('mvr@add')) {\n            this.transitionTo('site_safety.addnotice.tr');\n        }\n        if (c.testNeedsOne('mvr@add') && !c.testNeedsOne('tr@add')) {\n            this.transitionTo('site_safety.addnotice.mvr');\n        }\n        if (!c.testNeedsOne('tr') && c.testNeedsOne('mvr')) {\n            this.transitionTo('site_safety.addnotice.mvr');\n        }\n        if (!c.testNeedsOne('mvr') && c.testNeedsOne('tr')) {\n            return this.transitionTo('site_safety.addnotice.tr');\n        }\n    },\n});\n\nexport default SiteSafetyAddNoticeIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"YB4kluSQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"site_safety.addnotice.tr\\\"]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Length\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.add_notice.tr\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"site_safety.addnotice.mvr\\\"]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Humidity\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.add_notice.mvr\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/addnotice/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/addnotice/mvr/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyAddnoticeMvrController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nSiteSafetyAddnoticeMvrController = GeneralAddController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    intl: Em.inject.service(),\n    customization: {\n        type: {\n            hide: true,\n            features: {\n                default_value: 'tr',\n            },\n        },\n        date: {\n            translation: 'site_safety.notice.fixdate',\n            features: {\n                default_value: moment().add(3, 'days').format('YYYY-MM-DD'),\n            },\n        },\n        user: {\n            translation: 'site_safety.notice.person',\n        },\n        email: {\n            translation: 'site_safety.notice.send_email',\n        },\n    },\n    actions: {\n        save: function () {\n            var record;\n            record = this.get('model');\n            return record.validate().then(() => {\n                var email, projectString, userString;\n                if (!record.get('isValid')) {\n                    this.set('submitted', true);\n                    this.set('spinIsLoading', false);\n                    return;\n                }\n                if (record.get('email')) {\n                    userString = '';\n                    if (this.get('session.currentUser.firstname')) {\n                        userString += this.get('session.currentUser.firstname') + ' ';\n                    }\n                    if (this.get('session.currentUser.lastname')) {\n                        userString += this.get('session.currentUser.lastname') + '\\n';\n                    }\n                    if (this.get('session.currentUser.email')) {\n                        userString += this.get('session.currentUser.email') + '\\n';\n                    }\n                    if (this.get('session.currentUser.phone')) {\n                        userString += this.get('session.currentUser.phone') + '\\n';\n                    }\n                    projectString = '';\n                    if (record.get('project.number')) {\n                        projectString += record.get('project.number') + ' ';\n                    }\n                    projectString += record.get('project.name');\n                    email = {\n                        email: record.get('email'),\n                        title:\n                            this.get('session.currentUser.company') +\n                            ' - ' +\n                            this.get('intl').t('site_safety.notice.email_content.title'),\n                        lang: this.get('intl.primaryLocale'),\n                        content:\n                            this.get('intl').t('site_safety.notice.email_content.content') +\n                            '\\n' +\n                            this.get('intl').t('site_safety.notice.project') +\n                            ': ' +\n                            projectString +\n                            '\\n' +\n                            this.get('intl').t('site_safety.notice.desc') +\n                            ': ' +\n                            record.get('desc') +\n                            '\\n' +\n                            this.get('intl').t('site_safety.notice.noticedesc') +\n                            ': ' +\n                            record.get('noticedesc') +\n                            '\\n' +\n                            this.get('intl').t('site_safety.notice.person') +\n                            ': ' +\n                            record.get('user.firstname') +\n                            ' ' +\n                            record.get('user.lastname') +\n                            '\\n' +\n                            this.get('intl').t('site_safety.notice.fixdate') +\n                            ': ' +\n                            moment(record.get('date')).format('L') +\n                            '\\n\\n' +\n                            userString,\n                    };\n                    if (record.get('pic')) {\n                        email.pic = {\n                            name: record.get('pic').name,\n                            data: record.get('pic').data,\n                        };\n                    }\n                    record.set('email_content', email);\n                }\n                record.set('creator', this.get('session.currentUser'));\n                record.set('type', 'mvr');\n                return record\n                    .save()\n                    .then(() => {\n                        return this.transitionToRoute('site_safety.report.mvr.notices');\n                    })\n                    .catch((back) => {\n                        this.set('submitted', true);\n                        this.set('spinIsLoading', false);\n                        return this.set('validationMessageData', back.errors);\n                    });\n            });\n        },\n    },\n});\n\nexport default SiteSafetyAddnoticeMvrController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/addnotice/mvr/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyAddnoticeTrRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nSiteSafetyAddnoticeTrRoute = GeneralAddRoute.extend({\n    modelName: 'trnotice',\n    controllerName: 'site_safety.addnotice.mvr',\n    savedRoute: 'site_safety.report.mvr.notices',\n});\n\nexport default SiteSafetyAddnoticeTrRoute;\n","export default Ember.HTMLBars.template({\"id\":\"mqs4xVed\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/addnotice/mvr/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"s1DzPTj7\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/addnotice/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/addnotice/tr/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyAddnoticeTrController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nSiteSafetyAddnoticeTrController = GeneralAddController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    intl: Em.inject.service(),\n    customization: {\n        type: {\n            hide: true,\n            features: {\n                default_value: 'tr',\n            },\n        },\n        date: {\n            translation: 'site_safety.notice.fixdate',\n            features: {\n                default_value: moment().add(3, 'days').format('YYYY-MM-DD'),\n            },\n        },\n        email: {\n            translation: 'site_safety.notice.send_email',\n        },\n    },\n    actions: {\n        save: function () {\n            var record;\n            record = this.get('model');\n            return record.validate().then(() => {\n                var email, projectString, userString;\n                if (!record.get('isValid')) {\n                    this.set('submitted', true);\n                    this.set('spinIsLoading', false);\n                    return;\n                }\n                //if record.get('email')\n                userString = '';\n                if (this.get('session.currentUser.firstname')) {\n                    userString += this.get('session.currentUser.firstname') + ' ';\n                }\n                if (this.get('session.currentUser.lastname')) {\n                    userString += this.get('session.currentUser.lastname') + '\\n';\n                }\n                if (this.get('session.currentUser.email')) {\n                    userString += this.get('session.currentUser.email') + '\\n';\n                }\n                if (this.get('session.currentUser.phone')) {\n                    userString += this.get('session.currentUser.phone') + '\\n';\n                }\n                projectString = '';\n                if (record.get('project.number')) {\n                    projectString += record.get('project.number') + ' ';\n                }\n                projectString += record.get('project.name');\n                email = {\n                    email: record.get('email'),\n                    title:\n                        this.get('session.currentUser.company') +\n                        ' - ' +\n                        this.get('intl').t('site_safety.notice.email_content.title'),\n                    lang: this.get('intl.primaryLocale'),\n                    content:\n                        this.get('intl').t('site_safety.notice.email_content.content') +\n                        '\\n' +\n                        this.get('intl').t('site_safety.notice.project') +\n                        ': ' +\n                        projectString +\n                        '\\n' +\n                        this.get('intl').t('site_safety.notice.desc') +\n                        ': ' +\n                        record.get('desc') +\n                        '\\n' +\n                        this.get('intl').t('site_safety.notice.noticedesc') +\n                        ': ' +\n                        record.get('noticedesc') +\n                        '\\n' +\n                        this.get('intl').t('site_safety.notice.person') +\n                        ': ' +\n                        record.get('user.firstname') +\n                        ' ' +\n                        record.get('user.lastname') +\n                        '\\n' +\n                        this.get('intl').t('site_safety.notice.fixdate') +\n                        ': ' +\n                        moment(record.get('date')).format('L') +\n                        '\\n\\n' +\n                        userString,\n                };\n                if (record.get('pic')) {\n                    email.pic = {\n                        name: record.get('pic').name,\n                        data: record.get('pic').data,\n                    };\n                }\n                record.set('email_content', email);\n                record.set('creator', this.get('session.currentUser'));\n                return record\n                    .save()\n                    .then(() => {\n                        return this.transitionToRoute('site_safety.report.tr.notices');\n                    })\n                    .catch((back) => {\n                        this.set('submitted', true);\n                        this.set('spinIsLoading', false);\n                        return this.set('validationMessageData', back.errors);\n                    });\n            });\n        },\n    },\n});\n\nexport default SiteSafetyAddnoticeTrController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/addnotice/tr/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyAddnoticeTrRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nSiteSafetyAddnoticeTrRoute = GeneralAddRoute.extend({\n    modelName: 'trnotice',\n    controllerName: 'site_safety.addnotice.tr',\n    savedRoute: 'site_safety.report.tr.notices',\n});\n\nexport default SiteSafetyAddnoticeTrRoute;\n","export default Ember.HTMLBars.template({\"id\":\"RkW9aWfO\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/addnotice/tr/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyController;\n\nimport Ember from 'ember';\n\nSiteSafetyController = Ember.Controller.extend();\n\nexport default SiteSafetyController;\n","export default Ember.HTMLBars.template({\"id\":\"XahcgWn7\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/loading/template.hbs\"}});","import Controller from '@ember/controller';\nimport { computed, set, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { Promise as EmberPromise } from 'rsvp';\nimport PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\nimport ObjectProxy from '@ember/object/proxy';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    store: service(),\n    collector: service('collector-service'),\n    addMeasurement: alias('model'),\n    project_obj: computed('model', function () {\n        if (get(this, 'collector').fieldExists(get(this, 'model'), 'project')) {\n            return get(this, 'model') + '.project';\n        }\n        return 'measurement_' + get(this, 'model') + '.project';\n    }),\n    oldMeasurement: computed('project', function () {\n        let measurementName = get(this, 'model');\n        if (!get(this, 'collector').fieldExists(get(this, 'model'), 'project')) {\n            measurementName = 'measurement_' + get(this, 'model');\n        }\n        return ObjectProxy.extend(PromiseProxyMixin).create({\n            //eslint-disable-line\n            promise: new EmberPromise((resolve) => {\n                get(this, 'store')\n                    .query(measurementName, {\n                        date: moment().format('YYYY-MM-DD'),\n                        project: get(this, 'project.id'),\n                    })\n                    .then((measurements) => this._resolveMeasurement(measurements, resolve));\n            }),\n        });\n    }),\n    actions: {\n        projectChanged(project) {\n            set(this, 'project', project);\n        },\n    },\n\n    _resolveMeasurement(measurements, resolve) {\n        if (get(measurements, 'firstObject')) {\n            resolve({ id: get(measurements, 'firstObject').id });\n        } else {\n            resolve();\n        }\n    },\n});\n","import Route from '@ember/routing/route';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Route.extend({\n    session: service(),\n    model() {\n        return this.modelFor('site-safety.measurement.add');\n    },\n    setupController(controller) {\n        this._super(...arguments);\n        if (get(this, 'session.currentUser.currentMySite')) {\n            set(controller, 'project', get(this, 'session.currentUser.currentMySite'));\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"KoXIG/dQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6 col-lg-4 col-lg-offset-4 col-md-offset-3 col-sm-offset-2\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.site\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"project_obj\\\"]]],[[\\\"_class\\\",\\\"change\\\",\\\"value\\\"],[\\\"form-control input-lg\\\",\\\"projectChanged\\\",[24,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"oldMeasurement\\\",\\\"isFulfilled\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"oldMeasurement\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\\\"],[8],[0,\\\"\\\\n                    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"models\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"site_safety.measurement.add.measurement\\\",[28,\\\"array\\\",[[24,[\\\"oldMeasurement\\\",\\\"id\\\"]],[24,[\\\"model\\\"]],[24,[\\\"project\\\",\\\"id\\\"]]],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"tr.site.goto_oldmeasurement\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\\\"],[8],[0,\\\"\\\\n                \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"models\\\"],[[28,\\\"concat\\\",[\\\"btn btn-block btn-lg\\\",\\\" \\\",[28,\\\"if\\\",[[24,[\\\"oldMeasurement\\\"]],\\\"btn-default\\\",\\\"btn-primary\\\"],null],\\\" \\\"],null],\\\"site_safety.measurement.add.measurement\\\",[28,\\\"array\\\",[[24,[\\\"model\\\"]],[24,[\\\"project\\\",\\\"id\\\"]]],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"tr.site.goto_measurement\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/add/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/add/measurement/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrAddMeasurementController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../../classes/collector';\n\nimport RSVP from 'rsvp';\n\nSiteSafetyTrAddMeasurementController = Ember.Controller.extend({\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    applicationController: Ember.inject.controller('application'),\n    saved: Ember.inject.controller('site-safety/saved'),\n    measurementController: Ember.inject.controller('site-safety/measurement'),\n    session: Em.inject.service(),\n    dialogs: Ember.inject.service(),\n    intl: Em.inject.service(),\n    plus: 0,\n    minus: 0,\n    savedNotices: [],\n    disableAutosave: false,\n    saveText: Ember.computed(function () {\n        return (\n            '<span class=\"glyphicon glyphicon-floppy-disk\"></span> ' +\n            this.get('intl').t('measurement.save')\n        );\n    }),\n    //    measurementController: Ember.computed.alias 'controllers.site-safety/measurement'\n    init: function () {\n        this._super(...arguments);\n        return document.addEventListener(\n            'deviceready',\n            () => {\n                document.addEventListener(\n                    'pause',\n                    () => {\n                        return this.eventListener('pause');\n                    },\n                    false,\n                );\n                return document.addEventListener(\n                    'resume',\n                    () => {\n                        return this.eventListener('resume');\n                    },\n                    false,\n                );\n            },\n            false,\n        );\n    },\n    eventListener: function (event) {\n        if (event === 'pause') {\n            return this.set('disableAutosave', true);\n        } else if (event === 'resume') {\n            this.set('disableAutosave', false);\n            return this.autosave();\n        }\n    },\n    fields: Em.computed('model.form', function () {\n        var fields, form, mc, self;\n        self = this;\n        mc = this.get('measurementController');\n        form = this.get('model.form');\n        fields = mc.parseFields(form);\n        fields.forEach(function (item) {\n            item.notices = Em.A([]);\n            self.addObserver('model.record.' + item.ext + '_plus', self, 'recalculateTotal');\n            return self.addObserver(\n                'model.record.' + item.ext + '_minus',\n                self,\n                'recalculateTotal',\n            );\n        });\n        Ember.run.later(() => {\n            return self.recalculateTotal();\n        }, 1);\n        return fields;\n    }),\n    signatureFields: Ember.computed('model.form', function () {\n        return this.get('Collector')\n            .fieldArray(this.get('model.form'))\n            .filter((field) => {\n                return field.type === 'signature' || field.name.slice(-4) === 'sign';\n            });\n    }),\n    extrafields: Em.computed(function () {\n        var field, fieldname, fields, form, return_fields, skip_these;\n        form = this.get('model.form');\n        fields = this.Collector.fields(form);\n        return_fields = [];\n        skip_these = ['date', 'project', 'user', 'tr_rating', 'mvr_rating'].concat(\n            this.get('signatureFields').mapBy('name'),\n        );\n        for (fieldname in fields) {\n            field = fields[fieldname];\n            if (\n                !(indexOf.call(skip_these, fieldname) >= 0) &&\n                fieldname.indexOf('_plus') < 0 &&\n                fieldname.indexOf('_notice') < 0 &&\n                fieldname.indexOf('_minus') < 0\n            ) {\n                if (!Ember.get(field, 'features.hide')) {\n                    return_fields.push(fieldname);\n                }\n            }\n        }\n        return return_fields;\n    }),\n    textClass: Em.computed('model.record.mvr_rating', 'model.record.tr_rating', function () {\n        if (this.get('model.record.' + this.get('model.form') + '_rating') >= 95) {\n            return 'alert-success';\n        } else if (this.get('model.record.' + this.get('model.form') + '_rating') >= 90) {\n            return 'alert-warning';\n        } else {\n            return 'alert-danger';\n        }\n    }),\n    /*\n  ratingClass: (->\n      if @get('model.record.tr_rating') >= 95\n          @set('textClass', \"alert-success\")\n      else if @get('model.record.tr_rating') >= 90\n          @set('textClass', \"alert-warning\")\n      else\n          @set('textClass', \"alert-danger\")\n  ).observes('model.record.tr_rating')\n\n  */\n    // observers are added in 'fields' property\n    recalculateTotal: function () {\n        var arr, i, item, len, m, mval, p, pval, rating, self;\n        self = this;\n        arr = this.get('fields');\n        pval = 0;\n        mval = 0;\n        rating = 0;\n        for (i = 0, len = arr.length; i < len; i++) {\n            item = arr[i];\n            p = self.get('model.record.' + item.ext + '_plus');\n            m = self.get('model.record.' + item.ext + '_minus');\n            if (p !== null && !isNaN(p) && p !== '') {\n                pval += parseInt(p, 10);\n            }\n            if (m !== null && !isNaN(m) && m !== '') {\n                mval += parseInt(m, 10);\n            }\n        }\n        if (pval !== 0 || mval !== 0) {\n            rating = ((pval / (pval + mval)) * 100).toFixed(2);\n        }\n        if (this.get('model.form') === 'mvr') {\n            this.set('model.record.mvr_rating', rating);\n        } else {\n            this.set('model.record.tr_rating', rating);\n        }\n        this.set('plus', pval);\n        return this.set('minus', mval);\n    },\n    saveNotice: function (notice) {\n        var email, projectString, promise, record, self, userString;\n        record = notice;\n        //if !@get('error')\n        self = this;\n        userString = '';\n        if (this.get('session.currentUser.firstname')) {\n            userString += this.get('session.currentUser.firstname') + ' ';\n        }\n        if (this.get('session.currentUser.lastname')) {\n            userString += this.get('session.currentUser.lastname') + '\\n';\n        }\n        if (this.get('session.currentUser.email')) {\n            userString += this.get('session.currentUser.email') + '\\n';\n        }\n        if (this.get('session.currentUser.phone')) {\n            userString += this.get('session.currentUser.phone') + '\\n';\n        }\n        projectString = '';\n        if (record.get('project.number')) {\n            projectString += record.get('project.number') + ' ';\n        }\n        projectString += record.get('project.name');\n        email = {\n            title:\n                this.get('session.currentUser.company') +\n                ' - ' +\n                this.get('intl').t('site_safety.notice.email_content.title'),\n            content:\n                this.get('intl').t('site_safety.notice.email_content.content') +\n                '\\n' +\n                this.get('intl').t('site_safety.notice.project') +\n                ': ' +\n                projectString +\n                '\\n' +\n                this.get('intl').t('site_safety.notice.place') +\n                ': ' +\n                record.get('place') +\n                '\\n' +\n                this.get('intl').t('site_safety.notice.desc') +\n                ': ' +\n                record.get('desc') +\n                '\\n' +\n                this.get('intl').t('site_safety.notice.noticedesc') +\n                ': ' +\n                record.get('noticedesc') +\n                '\\n' +\n                this.get('intl').t('site_safety.notice.person') +\n                ': ' +\n                record.get('user.firstname') +\n                ' ' +\n                record.get('user.lastname') +\n                '\\n' +\n                this.get('intl').t('site_safety.notice.fixdate') +\n                ': ' +\n                moment(record.get('date')).format('L') +\n                '\\n\\n' +\n                userString,\n        };\n        if (record.get('pic') && record.get('pic').length > 0) {\n            email.pic = {\n                name: record.get('pic')[0].name,\n                data: record.get('pic')[0].data,\n            };\n        }\n        record.set('email_content', email);\n        record.set('project', this.get('model.record.project'));\n        record.set('type', this.get('model.record.constructor.modelName'));\n        record.set('creator', this.get('session.currentUser'));\n        promise = record.save();\n        promise.then(function () {\n            if (self.get('model.record.' + notice.get('name') + '_notices')) {\n                return self\n                    .get('model.record.' + notice.get('name') + '_notices')\n                    .pushObject(record.get('id'));\n            } else {\n                return self.set(\n                    'model.record.' + notice.get('name') + '_notices',\n                    Em.A([record.get('id')]),\n                );\n            }\n        });\n        return promise;\n    },\n    errors: Em.A([]),\n    handleRequestError: function (e) {\n        var d;\n        d = this.get('dialogs');\n        return d.alert(\n            this.get('intl').t('site-safety.request.error') + '<hr>' + JSON.stringify(e.errors),\n        );\n    },\n    autosave: function () {\n        var timer;\n        if (!Ember.testing) {\n            timer = Ember.run.later(\n                this,\n                () => {\n                    if (!this.get('disableAutosave')) {\n                        this.send('add', true);\n                        return this.autosave();\n                    }\n                },\n                this.get('Collector').testNeedsOne('development') ? 10000 : 300000,\n            );\n            return this.set('timer', timer);\n        }\n    },\n    actions: {\n        add: function (autosave = false) {\n            var c, errors, field, i, len, promises, req_fields, row, valid;\n            row = this.get('model.record');\n            row.set('project', this.store.peekRecord('project', this.get('model.projectid')));\n            c = this.get('Collector');\n            req_fields = [c.field(this.get('model.form'), 'project')].concat(\n                c.fieldArray(this.get('model.form')).filterBy('features.mandatory', true),\n            );\n            valid = true;\n            errors = Em.A([]);\n            for (i = 0, len = req_fields.length; i < len; i++) {\n                field = req_fields[i];\n                if (!row.get(field.name)) {\n                    errors.pushObject(field.translated_name);\n                    valid = false;\n                }\n            }\n            promises = [];\n            if (!valid && autosave) {\n                return;\n            }\n            if (autosave) {\n                this.get('savedNotices').forEach((notice) => {\n                    if (notice.get('hasDirtyAttributes')) {\n                        return promises.push(this.saveNotice(notice));\n                    }\n                });\n            } else {\n                this.get('fields').forEach((field) => {\n                    return field.notices.forEach((notice) => {\n                        if (notice.get('hasDirtyAttributes')) {\n                            return promises.push(this.saveNotice(notice));\n                        }\n                    });\n                });\n            }\n            return Promise.all(promises)\n                .then(() => {\n                    var autoSavePromise;\n                    this.set('errors', errors);\n                    if (valid) {\n                        row.set('date', moment().format('YYYY-MM-DD'));\n                        if (autosave) {\n                            autoSavePromise = row.save();\n                            this.set('autosaved', moment());\n                            this.set('autoSavePromise', autoSavePromise);\n                            return autoSavePromise\n                                .then(() => {\n                                    return this.set('autosaved', moment());\n                                })\n                                .catch((e) => {\n                                    console.log(e);\n                                    return this.handleRequestError(e);\n                                })\n                                .finally(() => {\n                                    return this.set('spinIsLoading', false);\n                                });\n                        } else {\n                            autoSavePromise = this.get('autoSavePromise');\n                            if (!autoSavePromise) {\n                                autoSavePromise = RSVP.Promise.resolve();\n                            }\n                            return autoSavePromise.then(() => {\n                                return row\n                                    .save()\n                                    .then(() => {\n                                        return this.transitionToRoute(\n                                            'site_safety.saved',\n                                            row.get('constructor.modelName'),\n                                            row.get('id'),\n                                        );\n                                    })\n                                    .catch((e) => {\n                                        console.log(e);\n                                        return this.handleRequestError(e);\n                                    })\n                                    .finally(() => {\n                                        return this.set('spinIsLoading', false);\n                                    });\n                            });\n                        }\n                    } else {\n                        return this.set('spinIsLoading', false);\n                    }\n                })\n                .catch((e) => {\n                    console.log(e);\n                    this.handleRequestError(e);\n                    this.set('spinIsLoading', false);\n                    return this.set('approvedSpinIsLoading', false);\n                });\n        },\n\n        empty: function (field) {\n            return this.set('model.record.' + field, null);\n        },\n        setSignature: function (value, field) {\n            return this.get('model.record').set(field, value);\n        },\n        markAsApproved: function () {\n            this.set('model.record.status', 'approved');\n            return this.send('save');\n        },\n        addToSavedNotices: function (notice) {\n            return this.get('savedNotices').push(notice);\n        },\n        //console.log notice\n        cancelExtrainfoModal: function () {\n            return this.set('showExtrainfoModal', false);\n        },\n        saveExtrainfoModal: function () {\n            this.set('showExtrainfoModal', false);\n            return this.send('add');\n        },\n        save: function () {\n            if (this.get('extrafields.length') === 0) {\n                return this.send('add');\n            } else {\n                return this.set('showExtrainfoModal', true);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyTrAddMeasurementController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { hash } from 'rsvp';\nimport { set, get } from '@ember/object';\nimport { cancel } from '@ember/runloop';\n\nexport default Route.extend({\n    dialogs: service(),\n    collector: service('collector-service'),\n    store: service(),\n    intl: service(),\n    model(params) {\n        let form = ('measurement_' + this.modelFor('site-safety.measurement.add')).camelize();\n\n        if (get(this, 'collector').formExists(this.modelFor('site-safety.measurement.add'))) {\n            form = this.modelFor('site-safety.measurement.add');\n        }\n        const addParams = this.paramsFor('site-safety.measurement.add');\n\n        let record = null;\n        if (addParams.id != 'add') {\n            record = get(this, 'store').findRecord(form, addParams.id);\n        } else {\n            record = get(this, 'store').createRecord(form);\n            let project = get(this, 'store').peekRecord('project', params.project);\n            if (!project) {\n                project = get(this, 'store').findRecord('project', params.project);\n            }\n            set(record, 'project', project);\n        }\n\n        return hash({\n            record: record,\n            form: form,\n            projectid: params.project,\n        });\n    },\n    setupController(controller) {\n        this._super(...arguments);\n        controller.autosave();\n    },\n\n    resetController(controller, isExiting) {\n        if (isExiting && get(controller, 'timer')) {\n            cancel(get(controller, 'timer'));\n        }\n    },\n\n    actions: {\n        willTransition(transition) {\n            if (get(this, 'controller.model.record.isNew') && !get(this, 'allowTransition')) {\n                transition.abort();\n            } else {\n                return true;\n            }\n            if (document.querySelector('.dialog') === null) {\n                get(this, 'dialogs')\n                    .confirm(get(this, 'intl').t('site_safety.measurement.confirm_leave'))\n                    .then((con) => this._setTransition(con, transition));\n            }\n        },\n    },\n\n    _setTransition(con, transition) {\n        if (con) {\n            set(this, 'allowTransition', true);\n            transition.retry();\n        }\n        set(this, 'allowTransition', false);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"PDwnIB6w\",\"block\":\"{\\\"symbols\\\":[\\\"extrafield\\\",\\\"error\\\",\\\"signatureField\\\",\\\"field\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"site-safety/measurement/row-component\\\",null,[[\\\"name\\\",\\\"title\\\",\\\"noticesArr\\\",\\\"notices_on\\\",\\\"model\\\",\\\"options\\\",\\\"addToSavedNotices\\\"],[[23,4,[\\\"ext\\\"]],[23,4,[\\\"title\\\"]],[23,4,[\\\"notices\\\"]],true,[24,[\\\"model\\\",\\\"record\\\"]],[23,4,[\\\"options\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addToSavedNotices\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.plus\\\"],null],false],[0,\\\": \\\"],[1,[22,\\\"plus\\\"],false],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.minus\\\"],null],false],[0,\\\": \\\"],[1,[22,\\\"minus\\\"],false],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"customersetting.hide_measurement_index\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"alert \\\",[22,\\\"textClass\\\"]]]],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"measurement.rating\\\"],null],false],[0,\\\": \\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"model\\\",\\\"form\\\"]],\\\"mvr\\\"],null]],null,{\\\"statements\\\":[[1,[24,[\\\"model\\\",\\\"record\\\",\\\"mvr_rating\\\"]],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[24,[\\\"model\\\",\\\"record\\\",\\\"tr_rating\\\"]],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"signatureFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"signatureFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6 col-lg-4\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[8],[1,[23,3,[\\\"translated_name\\\"]],false],[0,\\\":\\\"],[9],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"glyphicon glyphicon-remove-circle pull-right tr-icon l-gray\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"empty\\\",[23,3,[\\\"name\\\"]]]],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"features\\\",\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"sup\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"collector/fields/signature-field\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"model\\\",\\\"bubbleChange\\\"],[[23,3,[]],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"record\\\"]],\\\"setSignature\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.missing_fields\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"p\\\",true],[8],[1,[23,2,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"autosaved\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"i\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site-safety.autosaved\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"moment-from\\\",[[24,[\\\"autosaved\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\"],[[23,0,[\\\"spinIsLoading\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-block btn-warning btn-lg\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-floppy-disk\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"measurement.save\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.measurement_status\\\",[28,\\\"concat\\\",[[24,[\\\"model\\\",\\\"form\\\"]],\\\".status\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"saveButtonText\\\"],[[24,[\\\"approvedSpinIsLoading\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"markAsApproved\\\"],null],\\\"btn btn-block btn-warning btn-lg\\\",[24,[\\\"markAsApprovedText\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showExtrainfoModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"measurement.extra_info\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"cancelExtrainfoModal\\\"],null]]],{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"extrafields\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[8],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"site_safety.measurement.description\\\"],null],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[23,1,[]],[24,[\\\"model\\\",\\\"form\\\"]]]]],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[[28,\\\"concat\\\",[[24,[\\\"model\\\",\\\"form\\\"]],\\\".\\\",[23,1,[]]],null]],[[\\\"_class\\\",\\\"model\\\"],[\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"record\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg\\\"],[12,\\\"name\\\",\\\"saveExtraInfo\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveExtrainfoModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/add/measurement/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrAddRoute;\n\nimport Ember from 'ember';\n\nSiteSafetyTrAddRoute = Ember.Route.extend({\n    store: Ember.inject.service(),\n    model: function (params) {\n        if (params.id !== 'add') {\n            this.transitionTo('site_safety.measurement.add.measurement');\n        }\n        return params.measurement;\n    },\n});\n\nexport default SiteSafetyTrAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"bhsBdDnZ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/add/template.hbs\"}});","import Controller from '@ember/controller';\nimport moment from 'moment';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\nimport { A } from '@ember/array';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    collector: service('collector-service'),\n    intl: service(),\n    project: null,\n    init() {\n        this._super(...arguments);\n        const intl = get(this, 'intl');\n        set(this, 'options', {\n            tr: {\n                working: {\n                    options: [\n                        intl.t('tr.notice.desc.helmet'),\n                        intl.t('tr.notice.desc.glasses'),\n                        intl.t('tr.notice.desc.vest'),\n                        intl.t('tr.notice.desc.shoes'),\n                        intl.t('tr.notice.desc.harness'),\n                        intl.t('tr.notice.desc.idcard'),\n                        intl.t('tr.notice.desc.extinguish'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                scaffolding: {\n                    options: [\n                        intl.t('tr.notice.desc.ladder'),\n                        intl.t('tr.notice.desc.stool'),\n                        intl.t('tr.notice.desc.ramp'),\n                        intl.t('tr.notice.desc.rail'),\n                        intl.t('tr.notice.desc.guide'),\n                        intl.t('tr.notice.desc.footboard'),\n                        intl.t('tr.notice.desc.scaffoldingcard'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                tools: {\n                    options: [\n                        intl.t('tr.notice.desc.circular_saw_cover'),\n                        intl.t('tr.notice.desc.circular_saw_stick'),\n                        intl.t('tr.notice.desc.moonwalker'),\n                        intl.t('tr.notice.desc.personlifter'),\n                        intl.t('tr.notice.desc.scissor_lifter'),\n                        intl.t('tr.notice.desc.gasbottles'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                fall: {\n                    options: [\n                        intl.t('tr.notice.desc.gapcover_missing'),\n                        intl.t('tr.notice.desc.gapcover_unmarked'),\n                        intl.t('tr.notice.desc.rail_missing'),\n                        intl.t('tr.notice.desc.handguide_missing'),\n                        intl.t('tr.notice.desc.guide_missing'),\n                        intl.t('tr.notice.desc.footboard'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                electricity: {\n                    options: [\n                        intl.t('tr.notice.desc.electricitybox'),\n                        intl.t('tr.notice.desc.general_lighting'),\n                        intl.t('tr.notice.desc.cabels'),\n                        intl.t('tr.notice.desc.cabels_broken'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                garbage: {\n                    options: [\n                        intl.t('tr.notice.desc.area_orderliness'),\n                        intl.t('tr.notice.desc.garbage_bin_full'),\n                        intl.t('tr.notice.desc.garbage_contains_wood'),\n                        intl.t('tr.notice.desc.wood_garbage'),\n                        intl.t('tr.notice.desc.material_moving'),\n                        intl.t('tr.notice.desc.chisel_garbage'),\n                        intl.t('tr.notice.desc.masonry_garbage'),\n                        intl.t('tr.notice.desc.drywall_garbage'),\n                        intl.t('tr.notice.desc.plumber_garbage'),\n                        intl.t('tr.notice.desc.electrician_garbage'),\n                        intl.t('tr.notice.desc.IV_garbage'),\n                        intl.t('tr.notice.desc.vacuuming'),\n                        intl.t('tr.notice.desc.chisel_job'),\n                        intl.t('tr.notice.desc.clearing_job'),\n                        intl.t('tr.notice.desc.moving_job'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                dust: {\n                    options: [\n                        intl.t('tr.notice.desc.sanddust'),\n                        intl.t('tr.notice.desc.sawdust'),\n                        intl.t('tr.notice.desc.drywalldust'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n            },\n            mvr: {\n                working: {\n                    options: [\n                        intl.t('mvr.notice.desc.helmet'),\n                        intl.t('mvr.notice.desc.glasses'),\n                        intl.t('mvr.notice.desc.vest'),\n                        intl.t('mvr.notice.desc.shoes'),\n                        intl.t('mvr.notice.desc.harness'),\n                        intl.t('mvr.notice.desc.idcard'),\n                        intl.t('mvr.notice.desc.extinguish'),\n                        intl.t('mvr.notice.desc.risk'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n\n                equipment: {\n                    options: [\n                        intl.t('mvr.notice.desc.machines'),\n                        intl.t('mvr.notice.desc.tools'),\n                        intl.t('mvr.notice.desc.electricity'),\n                        intl.t('mvr.notice.desc.lighting'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                protection: {\n                    options: [\n                        intl.t('mvr.notice.desc.fall'),\n                        intl.t('mvr.notice.desc.collapse'),\n                        intl.t('mvr.notice.desc.safety_zone'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                road: {\n                    options: [\n                        intl.t('mvr.notice.desc.trafic'),\n                        intl.t('mvr.notice.desc.walking'),\n                        intl.t('mvr.notice.desc.worksite_road'),\n                        intl.t('mvr.notice.desc.passage'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                order: {\n                    options: [\n                        intl.t('mvr.notice.desc.general_order'),\n                        intl.t('mvr.notice.desc.garbage_bins'),\n                        intl.t('mvr.notice.desc.dangerous_materials'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n            },\n        });\n    },\n    form: alias('model'),\n    parseFields(form) {\n        const fields = get(this, 'collector').fieldArray(form);\n        let temp = A([]);\n        let counter = 1;\n        const options = get(this, 'options');\n        // make helper array for fields with notices\n        let helper_notices = {};\n        fields.forEach((item) => {\n            const key_arr = get(item, 'name').split('_');\n            if (key_arr[1] === 'notices') {\n                helper_notices[key_arr[0]] = true;\n            }\n        });\n\n        fields.forEach((item) => {\n            const key_arr = get(item, 'name').split('_');\n            if (key_arr[1] === 'plus') {\n                const ext = key_arr[0];\n                counter++;\n                const title = get(this, 'intl').exists(form + '.title.' + ext)\n                    ? get(this, 'intl').t(form + '.title.' + ext)\n                    : counter + '. ' + item.translated_name;\n                temp.push({\n                    ext: ext,\n                    title: title,\n                    notices: helper_notices[ext] == true,\n                    options: options[form] ? options[form][ext].options : false,\n                });\n            }\n        });\n        return temp;\n    },\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/data/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMeasurementDataController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nimport formattedMixin from 'tt4/mixins/sitesafety-formatted-export';\n\nimport { computed } from '@ember/object';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyMeasurementDataController = GeneralReportController.extend(formattedMixin, {\n    //    needs: 'site-safety/measurement'\n    flags: service(),\n    measurementController: Ember.inject.controller('site-safety/measurement'),\n    queryParams: ['project', 'date', 'page', 'groupBy'],\n    project: null,\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    form: Ember.computed.alias('measurementController.form'),\n    init: function () {\n        this._super();\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            return this.addRowActions();\n        }\n    },\n    filters: computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n        ]);\n    }),\n    // Em.Object.create({field: \"groupBy\", type: \"groupByFilter\"})\n    formatter: function (column, value) {\n        if (column === 'tr_rating') {\n            if (value > 95) {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-approved\">' + value + ' %</span>',\n                );\n            } else if (value > 90) {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-warning\">' + value + ' %</span>',\n                );\n            } else {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-open\">' + value + ' %</span>',\n                );\n            }\n        }\n        return false;\n    },\n    showColumns: Ember.computed(function () {\n        var columns, fields, key;\n        fields = this.Collector.fields(this.get('form'));\n        columns = [];\n        for (key in fields) {\n            if (key.substring(key.length - 6) !== '_minus') {\n                columns.push(key);\n            }\n        }\n        return columns;\n    }),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideEdit: true,\n            hideHistory: true,\n        }),\n        sortByColumn: 'date-',\n    }),\n    addRowActions: function () {\n        if (this.Collector == null) {\n            return;\n        }\n        return this.set('settings.rowActions', [\n            {\n                text: 'site_safety.formatted_pdf_export',\n                action: (self, items) => {\n                    var fields;\n                    fields = this.Collector.fields(this.get('form'));\n                    return this.createMeasurementPdf(fields, items);\n                },\n            },\n        ]);\n    },\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        createSpecialPdf: function (selected) {\n            var fields;\n            fields = this.Collector.fields(this.get('form'));\n            return this.createMeasurementPdf(fields, selected);\n        },\n    },\n});\n\nexport default SiteSafetyMeasurementDataController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/data/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrDataRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyTrDataRoute = GeneralReportRoute.extend({\n    capi: service(),\n    flags: service(),\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var form;\n        form = this.modelFor('site-safety.measurement');\n        this.set('form', form);\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            params.sideload = true;\n            if (Ember.isPresent(params.groupBy)) {\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll(form, params);\n            } else {\n                return this.store.query(form, params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.measurement.data').set('qParams', params);\n        }\n    },\n});\n\n//    setupController: (controller, model) ->\n//#        controller.set 'form', @get 'form'\n//        @_super controller, model\nexport default SiteSafetyTrDataRoute;\n","export default Ember.HTMLBars.template({\"id\":\"4C4iEpOj\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[[23,0,[\\\"form\\\"]],[22,\\\"qParams\\\"],\\\"user.employer,user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"date\\\",\\\"order\\\"],[[23,0,[\\\"date\\\"]],\\\"date\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"createSpecialPdf\\\",[23,2,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.formatted_pdf_export\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[[28,\\\"concat\\\",[\\\"/site_safety/report/tr/data?modal=\\\",[23,0,[\\\"form\\\"]],\\\"%2C\\\"],null]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"remove,overview,edit,history\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"formatter\\\",\\\"settings\\\",\\\"summableFieldTypes\\\",\\\"count\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"showColumns\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"formatter\\\"]],[24,[\\\"settings\\\"]],false,[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/data/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/graphs/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMeasurementGraphsController;\n\nimport Ember from 'ember';\n\nimport formattedMixin from '../../../../mixins/sitesafety-formatted-export';\n\nSiteSafetyMeasurementGraphsController = Ember.Controller.extend(formattedMixin, {\n    //    needs: 'site-safety/measurement'\n    measurementController: Ember.inject.controller('site-safety/measurement'),\n    queryParams: ['project', 'date'],\n    project_filter: Em.computed('project', 'form', function () {\n        return {\n            form: this.get('form'),\n            name: 'project',\n            type: 'database',\n            value: this.get('project'),\n        };\n    }),\n    measurementController: Ember.inject.controller('site-safety/measurement'),\n    project: Ember.computed.alias('measurementController.project'),\n    date: Ember.computed.alias('measurementController.date'),\n    form: Ember.computed.alias('measurementController.form'),\n    dialogs: Ember.inject.service(),\n    intl: Em.inject.service(),\n    arrangedContent: Ember.computed('content', function () {\n        return this.get('content').sortBy('date');\n    }),\n    dataSetter: function () {\n        var data, data_rating, fields, form, headers, mc, measurements, self;\n        self = this;\n        mc = this.get('measurementController');\n        form = mc.get('model');\n        fields = mc.parseFields(form);\n        headers = [this.get('intl').t('date')];\n        fields.forEach(function (item) {\n            return headers.push(item.title);\n        });\n        data = Em.A([headers]);\n        data_rating = Em.A([[this.get('intl').t('date'), this.get('intl').t('tr.rating')]]);\n        measurements = this.get('arrangedContent');\n        measurements.forEach(function (measurement) {\n            var date, field, field_object, i, len, minus, plus, row;\n            if (moment(measurement.get('date')).isAfter(moment().subtract(1, 'years'))) {\n                row = [moment(measurement.get('date')).format('L')];\n                for (i = 0, len = fields.length; i < len; i++) {\n                    field_object = fields[i];\n                    field = field_object.ext;\n                    plus = measurement.get(field + '_plus');\n                    minus = measurement.get(field + '_minus');\n                    if (plus && minus) {\n                        row.push(parseInt(plus, 10) - parseInt(minus, 10));\n                    } else if (plus) {\n                        row.push(parseInt(plus, 10));\n                    } else if (minus) {\n                        row.push(parseInt(minus, 10) * -1);\n                    } else {\n                        row.push(0);\n                    }\n                }\n                data.push(row);\n                date = moment(measurement.get('date')).format('L');\n                if (!isNaN(measurement.get('tr_rating')) && measurement.get('tr_rating') !== null) {\n                    return data_rating.push([date, parseFloat(measurement.get('tr_rating'))]);\n                } else {\n                    return data_rating.push([date, 0]);\n                }\n            }\n        });\n        self.set('data', data);\n        return self.set('data_rating', data_rating);\n    }.observes('arrangedContent.[]', 'content.[]'),\n    actions: {\n        exportNewestPdf: function (project) {\n            var customMeasurement, fields, newest;\n            customMeasurement = this.get('form');\n            newest = this.store\n                .peekAll(customMeasurement)\n                .filter((record) => {\n                    return record.get('project.id') === project;\n                })\n                .sortBy('date')\n                .reverse()\n                .get('firstObject');\n            if (!newest) {\n                this.get('dialogs').alert(\n                    this.get('intl').t('tr.chart.export_newest_pdf_not_found'),\n                );\n            }\n            // export as measurement pdf\n            fields = this.get('Collector').fields(customMeasurement);\n            return this.createMeasurementPdf(fields, [newest]);\n        },\n        filterChanged: function (value, fieldName) {\n            if (fieldName === 'project') {\n                if (value == null) {\n                    return this.set('project', '');\n                } else {\n                    return this.set('project', value.id);\n                }\n            }\n        },\n    },\n});\n\nexport default SiteSafetyMeasurementGraphsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/graphs/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMeasurementGraphsRoute;\n\nimport Ember from 'ember';\n\nSiteSafetyMeasurementGraphsRoute = Ember.Route.extend({\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var parentParams;\n        //        form = @modelFor 'site-safety.measurement'\n        parentParams = this.paramsFor('site-safety.measurement');\n        if (params.project === 'undefined') {\n            delete params.project;\n        }\n        params.sideload = true;\n        return this.store.query('measurement_' + parentParams.measurement, params);\n    },\n});\n\nexport default SiteSafetyMeasurementGraphsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"NyjY9gkn\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"project_filter\\\"]]],[[\\\"change\\\",\\\"useAsFilter\\\",\\\"_class\\\"],[\\\"filterChanged\\\",true,\\\"form-control\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"range-picker\\\",null,[[\\\"autoApply\\\",\\\"ranges\\\",\\\"opens\\\",\\\"value\\\"],[true,false,\\\"right\\\",[24,[\\\"date\\\"]]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"content\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row col-xs-12 export-pdf-button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary btn-large\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"exportNewestPdf\\\",[24,[\\\"project\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.export_newest_pdf\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary btn-large\\\"],[10,\\\"disabled\\\",\\\"\\\"],[11,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"tr.chart.select_project\\\"],null]]]],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.export_newest_pdf\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data_rating\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"measurement.chart.rating\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"export\\\",\\\"Xmax\\\",\\\"Xmin\\\"],[[24,[\\\"data_rating\\\"]],true,100,0]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"measurement.chart.individual_ratings\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"export\\\"],[[24,[\\\"data\\\"]],true]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/graphs/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"z/Q6p8x9\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/notice-component/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyNoticeComponent;\n\nimport Ember from 'ember';\n\nSiteSafetyNoticeComponent = Ember.Component.extend({\n    store: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    intl: Em.inject.service(),\n    isSaved: false,\n    didReceiveAttrs: function () {\n        var found, i, len, option, ref;\n        if (this.get('model.desc') && this.get('options')) {\n            found = false;\n            ref = this.get('options');\n            for (i = 0, len = ref.length; i < len; i++) {\n                option = ref[i];\n                if (option.string === this.get('model.desc')) {\n                    found = true;\n                    break;\n                }\n            }\n            if (!found) {\n                return this.set(\n                    'selectedDesc',\n                    this.get('intl').t('site_safety.notice.desc.other'),\n                );\n            } else {\n                return this.set('selectedDesc', this.get('model.desc'));\n            }\n        }\n    },\n    showDropdown: Ember.computed.gt('options.length', 0),\n    showDesc: Em.computed('selectedDesc', 'showDropdown', function () {\n        if (!this.get('showDropdown')) {\n            return true;\n        }\n        if (this.get('selectedDesc') === this.get('intl').t('site_safety.notice.desc.other')) {\n            return true;\n        }\n    }),\n    /*\n  descObserver: Em.observer 'selectedDesc', ->\n      desc = @get 'selectedDesc'\n      if desc != @get('intl').t(\"site_safety.notice.desc.other\")\n          @set 'model.desc', @get 'selectedDesc'\n      else\n          @set 'model.desc', \"\"\n\n  descObserver: Em.on('init', Em.observer('selectedDesc','showDropdown', ->\n      desc =  @get 'selectedDesc'\n      if @get('showDropdown')\n          if desc == @get('intl').t(\"site_safety.notice.desc.other\").string\n              @set 'showDesc', true\n              @set 'model.desc', \"\"\n          else\n              @set 'showDesc',false\n              @set 'model.desc', desc\n  ))\n  */\n    fields: Em.computed(function () {\n        var fields, fieldsObject, key, value;\n        fieldsObject = this.Collector.fields('trnotice');\n        fields = [];\n        for (key in fieldsObject) {\n            value = fieldsObject[key];\n            if ((!value.features.hide && key !== 'project') || key === 'noticedesc') {\n                Em.set(value, 'ext', key);\n                //Em.set value, 'label', value.name || @get('intl').t('trnotice.' + value.ext)\n                switch (key) {\n                    case 'desc':\n                        Em.set(value, 'sortOrder', 0);\n                        break;\n                    case 'employer':\n                        Em.set(value, 'sortOrder', 1);\n                        break;\n                    case 'user':\n                        Em.set(value, 'sortOrder', 2);\n                        break;\n                    case 'date':\n                        Em.set(value, 'sortOrder', 3);\n                        break;\n                    case 'place':\n                        Em.set(value, 'sortOrder', 4);\n                        break;\n                    case 'noticedesc':\n                        Em.set(value, 'sortOrder', 5);\n                        break;\n                    case 'email':\n                        Em.set(value, 'sortOrder', 6);\n                        break;\n                    case 'pic':\n                        Em.set(value, 'sortOrder', 7);\n                        break;\n                    default:\n                        Em.set(value, 'sortOrder', 8);\n                }\n                fields.push(value);\n            }\n        }\n        return fields.sortBy('sortOrder');\n    }),\n    setProject: Em.on(\n        'init',\n        Em.observer('measurement.project', function () {\n            return this.set('model.project', this.get('measurement.project'));\n        }),\n    ),\n    start: Ember.computed('model', function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n    saveText: Ember.computed(function () {\n        return this.get('intl').t('site_safety.notice.save');\n    }),\n    fieldRoute: Em.computed('model.pic', function () {\n        return {\n            form: this.get('model.constructor.modelName'),\n            type: 'hdfile',\n            value: this.get('model.pic'),\n            features: this.get('Collector').field(this.get('model.constructor.modelName'), 'pic')\n                .features,\n            name: 'pic',\n        };\n    }),\n    actions: {\n        customChangeValue: function (value, fieldName) {\n            return this.set('model.pic', value);\n        },\n        changeValue: function (value, field, set = true) {\n            if (field === 'email') {\n                this.send('validateEmail');\n            } else if (field === 'user' && this.get('model').get('user.id')) {\n                this.get('store')\n                    .query('user', {\n                        id: this.get('model').get('user.id'),\n                    })\n                    .then((user) => {\n                        return this.get('model').set('email', user.get('firstObject.email'));\n                    });\n            }\n            if (set && !this.get('model.isDeleted')) {\n                return this.get('model').set(field, value);\n            }\n        },\n        validateDesc: function () {\n            if (this.get('model.desc')) {\n                this.set('error', false);\n                return this.set('disabled', false);\n            } else {\n                this.set('error', this.get('intl').t('site_safety.notice.desc_missing'));\n                return this.set('disabled', true);\n            }\n        },\n        validateEmail: function () {\n            var re, valid;\n            this.set('error', false);\n            if (this.get('model.email')) {\n                re =\n                    /^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$/i;\n                valid = re.test(this.get('model.email'));\n                if (!valid) {\n                    this.set('error', this.get('intl').t('site_safety.notice.email.not_valid'));\n                }\n                return this.set('saveText', this.get('intl').t('site_safety.notice.save_and_send'));\n            } else {\n                return this.set('saveText', this.get('intl').t('site_safety.notice.save'));\n            }\n        },\n        saveNotice: function () {\n            if (!this.get('showDesc')) {\n                this.set('model.desc', this.get('selectedDesc'));\n            }\n            this.send('validateDesc');\n            if (this.get('error')) {\n                return;\n            }\n            this.set('isSaved', true);\n            this.set('show_add_notice', true);\n            this.set('notice', false);\n            if (this.get('addToSavedNotices')) {\n                return this.addToSavedNotices(this.get('model'));\n            }\n        },\n        removeNotice: function () {\n            var record, self;\n            record = this.get('model');\n            self = this;\n            this.get('noticesArr').removeObject(record);\n            record.rollbackAttributes();\n            if (this.get('noticesArr.length') === 0) {\n                self.set('notice', false);\n                return self.set('edit', false);\n            } else {\n                return self.set('show_add_notice', true);\n            }\n        },\n        setUser: function (user) {\n            this.set('model.user', user);\n            if (user.get('email')) {\n                return this.set('model.email', user.get('email'));\n            } else {\n                return this.set('model.email', void 0);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyNoticeComponent;\n","export default Ember.HTMLBars.template({\"id\":\"FwFhE/M7\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"isSaved\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"header.path.addnotice\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeNotice\\\"],null]]],{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"ext\\\"]],\\\"desc\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-margin-top\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showDropdown\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"fast-select\\\",null,[[\\\"value\\\",\\\"content\\\",\\\"class\\\",\\\"name\\\"],[[24,[\\\"selectedDesc\\\"]],[24,[\\\"options\\\"]],\\\"form-control add-fields\\\",\\\"description\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showDesc\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"key-up\\\",\\\"placeholder\\\",\\\"name\\\"],[\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"desc\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validateDesc\\\"],null],[28,\\\"t\\\",[\\\"site_safety.notice.desc.placeholder\\\"],null],\\\"OtherDesc\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"ext\\\"]],\\\"pic\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-margin-top\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"remove\\\",\\\"change\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"fieldRoute\\\"]],\\\"removeFile\\\",\\\"customChangeValue\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"ext\\\"]],\\\"location\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-margin-top\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"gps-location\\\",null,[[\\\"value\\\",\\\"model\\\"],[[24,[\\\"model\\\",\\\"location\\\"]],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-margin-top\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/field-container\\\",null,[[\\\"field\\\",\\\"change\\\",\\\"_class\\\",\\\"model\\\"],[[28,\\\"concat\\\",[\\\"trnotice.\\\",[23,1,[\\\"ext\\\"]]],null],\\\"changeValue\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-margin-top\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[23,0,[\\\"error\\\"]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg\\\"],[12,\\\"disabled\\\",[22,\\\"disabled\\\"]],[12,\\\"name\\\",\\\"saveNotice\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveNotice\\\"]],[8],[1,[22,\\\"saveText\\\"],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/notice-component/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/notices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMeasurementNoticesController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nimport { computed } from '@ember/object';\n\nSiteSafetyMeasurementNoticesController = GeneralReportController.extend({\n    //    needs: 'site-safety/measurement'\n    measurementController: Ember.inject.controller('site-safety/measurement'),\n    project: Ember.computed.alias('measurementController.project'),\n    date: Ember.computed.alias('measurementController.date'),\n    queryParams: ['status', 'project', 'date', 'page', 'employer', 'groupBy'],\n    filters: computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    arrangedContent: Ember.computed('model.[]', function () {\n        return this.get('content').sortBy('date');\n    }),\n    statusSelector: Ember.computed.alias('measurementController.statusSelector'),\n    search: false,\n    status: Ember.computed.alias('measurementController.status'),\n    form: 'trnotice',\n    showColumns: ['date', 'status', 'desc', 'user', 'project', 'pic'],\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyMeasurementNoticesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/notices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrNoticesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyTrNoticesRoute = GeneralReportRoute.extend({\n    capi: service(),\n    flags: service(),\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var form;\n        form = this.modelFor('site-safety.measurement');\n        params = this._super(params);\n        params.type = form.replace('_', '-');\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            if (params.date) {\n                params.created = params.date;\n                delete params.date;\n            }\n            params.sideload = true;\n            if (params.status === 'all') {\n                delete params.status;\n            }\n            if (Ember.isPresent(params.groupBy)) {\n                params.sideload = true;\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll('trnotice', params);\n            } else {\n                return this.store.query('trnotice', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.measurement.notices').set('qParams', params);\n        }\n    },\n    actions: {\n        didTransition: function () {\n            return this.set('controller.statusSelector', true);\n        },\n    },\n});\n\nexport default SiteSafetyTrNoticesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"s7o3aj5j\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"trnotice\\\",[23,0,[\\\"qParams\\\"]],\\\"user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"created\\\",\\\"type\\\"],[[23,0,[\\\"date\\\"]],[23,0,[\\\"qParams\\\",\\\"type\\\"]]]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],\\\"trnotice\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"status\\\",\\\"count\\\"],[\\\"bubbleTransition\\\",\\\"trnotice\\\",[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/notices/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/person-in-charge/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMeasurementPersonInChargeComponent;\n\nimport Ember from 'ember';\n\nimport DatabaseField from '../../../collector/fields/database-field/component';\n\nSiteSafetyMeasurementPersonInChargeComponent = DatabaseField.extend({\n    layout: 'collector/fields/database-field',\n    _class: 'form-control',\n    ObservePrompt: '',\n    field: Em.computed(function () {\n        var arr;\n        return (arr = {\n            form: 'tr',\n            name: 'user',\n            placeholder: 'site_safety.notice.person.placeholder',\n        });\n    }),\n    actions: {\n        focusIn: function () {\n            return this.set('showOptions', true);\n        },\n        focusOut: function () {\n            return this.set('showOptions', false);\n        },\n        select: function (option) {\n            if (!option) {\n                option = {};\n            }\n            return this._super(option);\n        },\n    },\n});\n\nexport default SiteSafetyMeasurementPersonInChargeComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMeasurementRoute;\n\nimport Ember from 'ember';\n\nSiteSafetyMeasurementRoute = Ember.Route.extend({\n    dialogs: Ember.inject.service(),\n    model: function (params) {\n        return 'measurement_' + params.measurement;\n    },\n    actions: {\n        delete: function (row) {\n            return this.get('dialogs')\n                .confirm('Haluatko varmasti poistaa rivin')\n                .then((con) => {\n                    if (con) {\n                        return row.destroyRecord();\n                    }\n                });\n        },\n        edit: function (row) {\n            row.set('editClass', 'TrEditText');\n            return row.set('edit', true);\n        },\n        save: function (row) {\n            var self;\n            self = this;\n            //            row.set('user', @get('controller.controllers.application.current_user'))\n            //            row.set('date', moment().format('YYYY-MM-DD'))\n            return row.save().then(function () {\n                row.set('edit', false);\n                return row.set('editClass', '');\n            });\n        },\n        //                self.get('controller').dataSetter()\n        cancel: function (row) {\n            row.rollbackAttributes();\n            row.set('edit', false);\n            return row.set('editClass', '');\n        },\n        didTransition: function () {\n            return this.set('controller.statusSelector', false);\n        },\n    },\n});\n\nexport default SiteSafetyMeasurementRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/row-component/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyRowComponent;\n\nimport Ember from 'ember';\n\nSiteSafetyRowComponent = Ember.Component.extend({\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    store: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    didReceiveAttrs: function () {\n        if (this.get('model.' + this.get('name') + '_plus')) {\n            this.set('plus', this.get('model.' + this.get('name') + '_plus'));\n        }\n        if (this.get('model.' + this.get('name') + '_minus')) {\n            return this.set('minus', this.get('model.' + this.get('name') + '_minus'));\n        }\n    },\n    hasInfo: Em.computed('name', function () {\n        return this.get('intl').exists('measurement.info.' + this.get('name'));\n    }),\n    plus: 0,\n    minus: 0,\n    minusObserver: function () {\n        var value;\n        this.set('model.' + this.get('name') + '_minus', this.get('minus'));\n        // HTML input type=\"number\" component is poorly implemented so: Limit value to max 9999 && do not accept decimal values && clean number..\n        if (this.get('minus').length > 4) {\n            this.set('minus', this.get('minus').substring(0, 4));\n        }\n        if (this.get('minus') > 9999) {\n            this.set('minus', 9999);\n        }\n        value = this.get('minus').toString();\n        if (value.indexOf('.') > -1) {\n            this.set('minus', 0);\n        }\n        value = parseInt(this.get('minus'), 10);\n        if (isNaN(value)) {\n            return this.set('minus', 0);\n        } else {\n            return this.set('minus', value);\n        }\n    }.observes('minus'),\n    plusObserver: function () {\n        var value;\n        this.set('model.' + this.get('name') + '_plus', this.get('plus'));\n        // HTML input type=\"number\" component is poorly implemented so: Limit value to max 9999 && do not accept decimal values && clean number..\n        if (this.get('plus').length > 4) {\n            this.set('plus', this.get('plus').substring(0, 4));\n        }\n        if (this.get('plus') > 9999) {\n            this.set('plus', 9999);\n        }\n        value = this.get('plus').toString();\n        if (value.indexOf('.') > -1) {\n            this.set('plus', 0);\n        }\n        value = parseInt(this.get('plus'), 10);\n        if (isNaN(value)) {\n            return this.set('plus', 0);\n        } else {\n            return this.set('plus', value);\n        }\n    }.observes('plus'),\n    actions: {\n        toggleNotice: function () {\n            if (this.get('edit') || this.get('notice')) {\n                this.set('edit', false);\n                return this.set('notice', false);\n            } else {\n                this.set('notice', true);\n                this.set('edit', true);\n                return this.set('show_add_notice', true);\n            }\n        },\n        plus: function () {\n            return this.set('plus', 1 + this.get('plus'));\n        },\n        minus: function () {\n            if (!this.get('notice')) {\n                this.set('unsavedNotices', true);\n                this.set('minus', 1 + this.get('minus'));\n                this.set('model.' + this.get('name') + '_minus', this.get('minus'));\n                if (this.get('notices_on')) {\n                    this.send('addNotice');\n                    return this.set('notice', true);\n                }\n            } else {\n                return this.get('notifications').warning(\n                    this.get('intl').t('site_safety.notice.unsaved_notification'),\n                    {\n                        autoClear: true,\n                    },\n                );\n            }\n        },\n        addNotice: function () {\n            var add, row, tmpRows;\n            add = true;\n            this.get('noticesArr').forEach(function (ntc) {\n                if (ntc.get('isDirty')) {\n                    return (add = false);\n                }\n            });\n            if (add) {\n                this.set('show_add_notice', false);\n                row = this.get('store').createRecord('trnotice', {\n                    date: moment().add(3, 'days').format('YYYY-MM-DD'),\n                    name: this.get('name'),\n                });\n                // noticesArr is query-result from server, so we cannot add directly to it..\n                // this is a bit ugly piece of code, but it works\n                if (this.get('noticesArr')) {\n                    tmpRows = [];\n                    tmpRows.push(row);\n                    this.get('noticesArr').forEach((notice) => {\n                        return tmpRows.push(notice);\n                    });\n                    return this.set('noticesArr', tmpRows);\n                } else {\n                    //@get('noticesArr').pushObject(row)\n                    return this.get('noticesArr').pushObject(row);\n                }\n            }\n        },\n        openInfo: function (row) {\n            return this.get('dialogs').alert(this.get('intl').t('measurement.info.' + row));\n        },\n    },\n});\n\nexport default SiteSafetyRowComponent;\n","export default Ember.HTMLBars.template({\"id\":\"OzuUo5Q/\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\",\\\"item\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading clearfix\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"hasInfo\\\"]]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs btn-default pull-left\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openInfo\\\",[24,[\\\"name\\\"]]]],[8],[1,[28,\\\"standard-icon\\\",[\\\"info\\\"],null],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[22,\\\"title\\\"],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"notices_on\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs btn-success pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleNotice\\\",[24,[\\\"name\\\"]]]],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs btn-warning pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleNotice\\\",[24,[\\\"name\\\"]]]],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"standard-icon\\\",[\\\"edit\\\"],null],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"hidden-xs hidden-sm\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.edit\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group btn-group-justified\\\"],[10,\\\"role\\\",\\\"group\\\"],[10,\\\"aria-label\\\",\\\"...\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[10,\\\"role\\\",\\\"group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success btn-sm\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"plus\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-thumbs-up\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.plus\\\"],null],false],[0,\\\"\\\\n                    : \\\"],[1,[22,\\\"plus\\\"],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[10,\\\"role\\\",\\\"group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger btn-sm\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"minus\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-thumbs-down\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.minus\\\"],null],false],[0,\\\"\\\\n                    : \\\"],[1,[22,\\\"minus\\\"],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[10,\\\"role\\\",\\\"group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row-success\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"min\\\",\\\"max\\\",\\\"step\\\",\\\"size\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"0\\\",\\\"10000\\\",\\\"1\\\",\\\"5\\\",\\\"noinherit-color form-control\\\",[24,[\\\"plus\\\"]]]]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[10,\\\"role\\\",\\\"group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row-danger\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"min\\\",\\\"max\\\",\\\"step\\\",\\\"size\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"0\\\",\\\"10000\\\",\\\"1\\\",\\\"5\\\",\\\"noinherit-color form-control\\\",[24,[\\\"minus\\\"]]]]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"noticesArr\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-notice\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"outer\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive-sm table-striped \\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.notice.desc\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.notice.person\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.notice.fixdate\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"noticesArr\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"desc\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"user\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"user\\\",\\\"trnotice\\\",[23,2,[\\\"user\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                    \\\"],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"noticesArr\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"site-safety/measurement/notice-component\\\",null,[[\\\"model\\\",\\\"measurement\\\",\\\"name\\\",\\\"options\\\",\\\"notice\\\",\\\"show_add_notice\\\",\\\"noticesArr\\\",\\\"edit\\\",\\\"addToSavedNotices\\\"],[[23,1,[]],[24,[\\\"model\\\"]],[24,[\\\"name\\\"]],[24,[\\\"options\\\"]],[24,[\\\"notice\\\"]],[24,[\\\"show_add_notice\\\"]],[24,[\\\"noticesArr\\\"]],[24,[\\\"edit\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"addToSavedNotices\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"show_add_notice\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-block btn-warning\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addNotice\\\"]],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.notice.add\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/row-component/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"/+Klt1a6\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/observation/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyObservationAddController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nSiteSafetyObservationAddController = GeneralAddController.extend();\n\nexport default SiteSafetyObservationAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/observation/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyObservationAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nSiteSafetyObservationAddRoute = GeneralAddRoute.extend({\n    modelName: 'site_safety_observation',\n    controllerName: 'site_safety.observation.add',\n    afterSave: 'site_safety.report.observation',\n});\n\nexport default SiteSafetyObservationAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"PwTuiN43\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/observation/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/observation/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyObservationEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nSiteSafetyObservationEditController = GeneralAddController.extend({\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n});\n\nexport default SiteSafetyObservationEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/observation/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyObservationEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nSiteSafetyObservationEditRoute = GeneralAddRoute.extend({\n    modelName: 'site_safety_observation',\n    controllerName: 'site_safety.observation.edit',\n    //savedRoute: 'site_safety.observation.index'\n    afterSave: 'site_safety.report.observation',\n    edit: true,\n});\n\nexport default SiteSafetyObservationEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"4hb+5H0H\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/observation/edit/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"eMRpE9Ao\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/observation/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/event/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyEventController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nSiteSafetyEventController = GeneralReportController.extend({\n    form: 'site_safety_event',\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    queryParams: ['status', 'page', 'employer', 'creator', 'groupBy', 'project'],\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'employer',\n            }),\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'creator',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    //        Em.Object.create({field: \"user-group\"})\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            //            hideEdit: true\n            //            hideHistory: true\n            editRoute: {\n                modal: true,\n            },\n        }),\n        massedit: true,\n        rowActions: [],\n        sortByColumn: 'created-',\n    }),\n    search: false,\n    status: 'all',\n    limit: 25,\n    groupBy: null,\n    project: null,\n    user: null,\n    q: null,\n    showColumns: ['created', 'creator', 'status', 'desc', 'project', 'pic'],\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyEventController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/event/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyEventRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyEventRoute = GeneralReportRoute.extend({\n    form: 'site_safety_event',\n    capi: service(),\n    flags: service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        creator: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            params.sideload = true;\n            if (params.status === 'all') {\n                delete params.status;\n            }\n            if (Ember.isPresent(params.groupBy)) {\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll('site_safety_event', params);\n            } else {\n                return this.store.query('site_safety_event', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.report.event').set('qParams', params);\n        }\n    },\n});\n\nexport default SiteSafetyEventRoute;\n","export default Ember.HTMLBars.template({\"id\":\"sUcspYLN\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"site_safety_event\\\",[22,\\\"qParams\\\"],[28,\\\"hash\\\",null,[[\\\"order\\\"],[\\\"created\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/site_safety/report/event?modal=site-safety-event%2C\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"status\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"site_safety_event\\\",[24,[\\\"status\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"limit\\\",\\\"offset\\\",\\\"count\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",\\\"site_safety_event\\\",[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/event/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyReportController;\n\nimport Ember from 'ember';\n\nSiteSafetyReportController = Ember.Controller.extend({\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    project: null,\n    group: null,\n});\n\nexport default SiteSafetyReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/data/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMvrDataController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from 'tt4/controllers/general-report';\n\nimport formattedMixin from 'tt4/mixins/sitesafety-formatted-export';\n\nimport { computed } from '@ember/object';\n\nSiteSafetyMvrDataController = GeneralReportController.extend(formattedMixin, {\n    intl: Em.inject.service(),\n    flags: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    queryParams: ['project', 'date', 'page', 'groupBy'],\n    arrangedContent: Ember.computed('model.[]', function () {\n        return this.get('content').sortBy('date');\n    }),\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    form: 'mvr',\n    filters: computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    init: function () {\n        this._super();\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            return this.addRowActions();\n        }\n    },\n    formatter: function (column, value) {\n        if (column === 'mvr_rating') {\n            if (value > 95) {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-approved\">' + value + ' %</span>',\n                );\n            } else if (value > 90) {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-warning\">' + value + ' %</span>',\n                );\n            } else {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-open\">' + value + ' %</span>',\n                );\n            }\n        }\n        return false;\n    },\n    showColumns: [\n        'status',\n        'project',\n        'user',\n        'date',\n        'mvr_rating',\n        'equipment_plus',\n        'order_plus',\n        'protection_plus',\n        'road_plus',\n        'working_plus',\n        'foreman_sign',\n        'worker_sign',\n    ],\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: {\n                dynamic: true,\n                route: 'site_safety.measurement.add.measurement',\n                fields: ['id', 'constructor.modelName', 'project.id'],\n            },\n            historyRoute: 'site_safety.mvr.history',\n            //hideEdit: true\n            hideHistory: true,\n            disableStatus: 'approved',\n        }),\n        sortByColumn: 'date-',\n    }),\n    addRowActions: function () {\n        var fields, intl;\n        intl = this.get('intl');\n        if (this.Collector == null) {\n            return;\n        }\n        fields = this.Collector.fields('mvr');\n        return this.set('settings.rowActions', [\n            {\n                text: 'site_safety.formatted_pdf_export',\n                action: (self, items) => {\n                    return this.createMeasurementPdf(fields, items);\n                },\n            },\n        ]);\n    },\n    actions: {\n        transitionToEditRoute: function (row) {\n            return this.transitionToRoute(\n                'site_safety.measurement.add.measurement',\n                row.id,\n                'mvr',\n                row.project.id,\n            );\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        createSpecialPdf: function (selected) {\n            // if selected is not defined, use dialogs-service to show the user that they need to select something\n            if (selected == null || selected.length === 0) {\n                return this.get('dialogs').alert(\n                    this.intl.t('site_safety.formatted_pdf_export_select'),\n                );\n            } else {\n                let fields;\n                fields = this.Collector.fields('mvr');\n                return this.createMeasurementPdf(fields, selected);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyMvrDataController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/data/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMvrDataRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from 'tt4/routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyMvrDataRoute = GeneralReportRoute.extend({\n    Collector: Ember.inject.service('collector-service'),\n    capi: service(),\n    flags: service(),\n    beforeModel: function (transition) {\n        var c;\n        this._super(transition);\n        c = this.get('Collector');\n        if (transition.targetName !== 'site_safety.mvr.notices' && !c.testNeedsOne('mvr@add')) {\n            transition.abort();\n            return this.transitionTo('site_safety.mvr.notices');\n        }\n    },\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            params.sideload = true;\n            //        params.order = \"date-\"\n            if (Ember.isPresent(params.groupBy)) {\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll('mvr', params);\n            } else {\n                return this.store.query('mvr', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.report.mvr.data').set('qParams', params);\n        }\n    },\n});\n\nexport default SiteSafetyMvrDataRoute;\n","export default Ember.HTMLBars.template({\"id\":\"sukCFb+x\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"mvr\\\",[22,\\\"qParams\\\"],\\\"date,user,project,group,q\\\",\\\"user.employer,user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"date\\\",\\\"order\\\"],[[23,0,[\\\"date\\\"]],\\\"date-\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"createSpecialPdf\\\",[23,2,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.formatted_pdf_export\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/site_safety/report/tr/data?modal=mvr%2C\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[\\\"@exportPdf\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"createSpecialPdf\\\",[23,2,[\\\"selected\\\"]]],null]]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[\\\"@customPdfExport\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"createSpecialPdf\\\",[23,2,[\\\"selected\\\"]]],null]]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\",\\\"@hideEditStatus\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"transitionToEditRoute\\\"],null],\\\"remove,overview,edit\\\",\\\"approved\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"formatter\\\",\\\"settings\\\",\\\"summableFieldTypes\\\",\\\"showPdfExport\\\",\\\"count\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"showColumns\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"formatter\\\"]],[24,[\\\"settings\\\"]],false,false,[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/mvr/data/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/graphs/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMvrGraphsController;\n\nimport Ember from 'ember';\n\nimport formattedMixin from 'tt4/mixins/sitesafety-formatted-export';\n\nimport chartComp from 'tt4/components/chart-comp';\n\nSiteSafetyMvrGraphsController = Ember.Controller.extend(formattedMixin, {\n    mvrController: Ember.inject.controller('site_safety/report/mvr'),\n    queryParams: ['project', 'date', 'group'],\n    project: Ember.computed.alias('mvrController.project'),\n    date: Ember.computed.alias('mvrController.date'),\n    group: Ember.computed.alias('mvrController.group'),\n    intl: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n                form: 'mvr',\n                type: 'database',\n                value: this.get('project'),\n                singleselect: true,\n            }),\n            Em.Object.create({\n                field: 'date',\n                form: 'mvr',\n                type: 'date',\n                value: this.get('date'),\n            }),\n            Em.Object.create({\n                field: 'group',\n                form: 'mvr',\n                type: 'database',\n                value: this.get('group'),\n                singleselect: true,\n            }),\n        ]);\n    }),\n    pie_options: {\n        pieHole: 0.9,\n        chartArea: {\n            width: '90%',\n            height: '95%',\n        },\n        height: 200,\n        width: 350,\n        pieSliceTextStyle: {\n            color: 'black',\n            fontSize: 20,\n        },\n    },\n    //        slices: {\n    //            1: {offset: 0.02}\n    //            2: {offset: 0.02}\n    //            3: {offset: 0.02}\n    //        }\n    dataSetter: function () {\n        var data,\n            data_rating,\n            data_rating_pie,\n            pie_over90under95,\n            pie_over95,\n            pie_under90,\n            self,\n            trs;\n        self = this;\n        data = Em.A([\n            [\n                this.get('intl').t('date'),\n                this.get('intl').t('mvr.title.working'),\n                this.get('intl').t('mvr.title.equipment'),\n                this.get('intl').t('mvr.title.protection'),\n                this.get('intl').t('mvr.title.road'),\n                this.get('intl').t('mvr.title.order'),\n            ],\n        ]);\n        data_rating = Em.A([[this.get('intl').t('date'), this.get('intl').t('mvr.rating')]]);\n        data_rating_pie = Em.A([\n            [this.get('intl').t('mvr.rating'), this.get('intl').t('mvr.rating')],\n        ]);\n        pie_under90 = 0;\n        pie_over90under95 = 0;\n        pie_over95 = 0;\n        trs = this.get('model.mvr');\n        if (!trs) {\n            return;\n        }\n        trs.forEach(function (tr, idx) {\n            var field, fields, i, len, minus, plus, row, tr_minus, tr_plus;\n            row = [moment(tr.get('date')).format('L')];\n            tr_plus = tr.getProperties(\n                'working_plus',\n                'equipment_plus',\n                'protection_plus',\n                'road_plus',\n                'order_plus',\n            );\n            tr_minus = tr.getProperties(\n                'working_minus',\n                'equipment_minus',\n                'protection_minus',\n                'road_minus',\n                'order_minus',\n            );\n            fields = ['working', 'equipment', 'protection', 'road', 'order'];\n            for (i = 0, len = fields.length; i < len; i++) {\n                field = fields[i];\n                plus = 0;\n                minus = 0;\n                if (tr_plus[field + '_plus']) {\n                    plus = parseInt(tr_plus[field + '_plus'], 10);\n                }\n                if (tr_minus[field + '_minus']) {\n                    minus = parseInt(tr_minus[field + '_minus'], 10);\n                }\n                row.push(parseFloat(((plus / (plus + minus)) * 100).toFixed(2)));\n            }\n            if (Ember.isEmpty(self.get('selectedIndex')) || self.get('selectedIndex') === idx) {\n                data.push(row);\n            }\n            if (!isNaN(tr.get('mvr_rating')) && tr.get('mvr_rating') !== null) {\n                data_rating.push([\n                    moment(tr.get('date')).format('L'),\n                    parseFloat(tr.get('mvr_rating')),\n                ]);\n                if (tr.get('mvr_rating') < 90) {\n                    pie_under90++;\n                }\n                if (tr.get('mvr_rating') >= 90 && tr.get('mvr_rating') < 95) {\n                    pie_over90under95++;\n                }\n                if (tr.get('mvr_rating') >= 95) {\n                    return pie_over95++;\n                }\n            } else {\n                return data_rating.push([moment(tr.get('date')).format('L'), 0]);\n            }\n        });\n        data_rating_pie.push([this.get('intl').t('mvr_rating_pie_under90'), pie_under90]);\n        data_rating_pie.push([\n            this.get('intl').t('mvr_rating_pie_over90under95'),\n            pie_over90under95,\n        ]);\n        data_rating_pie.push([this.get('intl').t('mvr_rating_pie_over95'), pie_over95]);\n        self.set('data', data);\n        self.set('data_rating', data_rating);\n        return self.set('data_rating_pie', data_rating_pie);\n    }.observes('model.mvr.[]', 'intl.primaryLocale', 'selectedIndex'),\n    actions: {\n        handleSelection: function (sel) {\n            if (this.get('selectedIndex') === sel[0].row) {\n                return this.set('selectedIndex', null);\n            } else {\n                return this.set('selectedIndex', sel[0].row);\n            }\n        },\n        filterChanged: function (value, field) {\n            if (value == null) {\n                return this.set(field, '');\n            } else if (field === 'date') {\n                return this.set(field, value);\n            } else {\n                return this.set(field, value.id);\n            }\n        },\n        exportNewestPdf: function (project) {\n            var charts, fields, newest;\n            // get newest mvr record\n            newest = this.store\n                .peekAll('mvr')\n                .filter((record) => {\n                    return record.get('project.id') === project;\n                })\n                .sortBy('date')\n                .reverse()\n                .get('firstObject');\n            if (!newest) {\n                this.get('dialogs').alert(\n                    this.get('intl').t('tr.chart.export_newest_pdf_not_found'),\n                );\n            }\n            // export as measurement pdf\n            fields = this.get('Collector').fields('mvr');\n            charts = [\n                {\n                    url: this.get('piechart').getImageURI(),\n                    width: 300,\n                    title: this.get('intl').t('mvr.chart.mvr_rating_pie'),\n                },\n                {\n                    url: this.get('datachart').getImageURI(),\n                    title: this.get('intl').t('mvr.chart.measurement_ratings'),\n                },\n                {\n                    url: this.get('dataratingchart').getImageURI(),\n                    title: this.get('intl').t('mvr.chart.mvr_rating'),\n                },\n            ];\n            return this.createMeasurementPdf(fields, [newest], 'download', charts);\n        },\n    },\n});\n\nexport default SiteSafetyMvrGraphsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/graphs/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMvrGraphsRoute;\n\nimport Ember from 'ember';\n\nSiteSafetyMvrGraphsRoute = Ember.Route.extend({\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    beforeModel: function (transition) {\n        var c;\n        this._super(transition);\n        c = this.get('Collector');\n        if (transition.targetName !== 'site_safety.mvr.notices' && !c.testNeedsOne('mvr@add')) {\n            transition.abort();\n            return this.transitionTo('site_safety.report.mvr.notices');\n        }\n    },\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var date, monthAgo, store;\n        if (params.project === 'undefined') {\n            delete params.project;\n        }\n        if (!params.group) {\n            delete params.group;\n        }\n        params.sideload = true;\n        params.order = 'date';\n        store = this.get('store');\n        monthAgo = moment().subtract(1, 'month').format('YYYY-MM-DD_');\n        date = moment().format('YYYY-MM-DD');\n        return Ember.RSVP.hash({\n            mvr: store.query('mvr', params),\n            noticesSelected: store.query('trnotice', {\n                type: 'mvr',\n                limit: 100,\n                created: monthAgo.concat(date),\n                sideload: params.sideload,\n                project: params.project,\n                group: params.group,\n            }),\n            notices: store.query('trnotice', {\n                type: 'mvr',\n                limit: 1,\n                created: params.date,\n                project: params.project,\n                group: params.group,\n            }),\n            not_solved: store.query('trnotice', {\n                type: 'mvr',\n                limit: 1,\n                created: params.date,\n                status: 'open',\n                project: params.project,\n                group: params.group,\n            }),\n            overdue: store.query('trnotice', {\n                type: 'mvr',\n                created: params.date,\n                date: params.date,\n                status: 'open',\n                limit: 1,\n                project: params.project,\n                group: params.group,\n            }),\n        });\n    },\n});\n\nexport default SiteSafetyMvrGraphsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"U/7x4N/G\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\",\\\"hideClearFilters\\\"],[[24,[\\\"filters\\\"]],\\\"mvr\\\",\\\"filterChanged\\\",true]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row col-xs-12 export-pdf-button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary btn-large\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"exportNewestPdf\\\",[24,[\\\"project\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.export_newest_pdf\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary btn-large\\\"],[10,\\\"disabled\\\",\\\"\\\"],[11,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"tr.chart.select_project\\\"],null]]]],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.export_newest_pdf\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row site-safety-measurement-row-container\\\"],[8],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-container col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"site_safety.report.mvr.notices\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"notices-graph\\\",null,[[\\\"all\\\",\\\"overdue\\\",\\\"not_solved\\\"],[[24,[\\\"model\\\",\\\"notices\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"model\\\",\\\"overdue\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"model\\\",\\\"not_solved\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"site_safety.report.mvr.data\\\"]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"chart-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"mvr.chart.mvr_rating_pie\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"mvr\\\",\\\"meta\\\",\\\"count\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notices-graph-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"notices-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\",\\\"chart\\\"],[[24,[\\\"data_rating_pie\\\"]],\\\"pie\\\",\\\"#D9534F,#FFC56C,#5CB85C\\\",[24,[\\\"pie_options\\\"]],[24,[\\\"piechart\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"mvr\\\",\\\"meta\\\",\\\"count\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"mvr.chart.measurement_ratings\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"type\\\",\\\"data\\\",\\\"export\\\",\\\"chart\\\"],[\\\"column\\\",[24,[\\\"data\\\"]],true,[24,[\\\"datachart\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data_rating\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"mvr.chart.mvr_rating\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"selectionHandler\\\",\\\"export\\\",\\\"Xmax\\\",\\\"Xmin\\\",\\\"chart\\\"],[[24,[\\\"data_rating\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"handleSelection\\\"],null],true,100,0,[24,[\\\"dataratingchart\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/mvr/graphs/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/notices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMvrNoticesController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from 'tt4/controllers/general-report';\n\nimport { computed } from '@ember/object';\n\nSiteSafetyMvrNoticesController = GeneralReportController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    intl: Em.inject.service(),\n    flags: Em.inject.service(),\n    mvrController: Ember.inject.controller('site_safety/report/mvr'),\n    queryParams: ['status', 'page', 'employer', 'user', 'groupBy', 'project'],\n    filters: computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                field: 'employer',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    arrangedContent: Ember.computed('model.[]', function () {\n        return this.get('content').sortBy('date');\n    }),\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({}),\n        //            editRoute: 'site_safety.mvr.edit'\n        //            historyRoute: 'site_safety.mvr.history'\n        //            hideEdit: true\n        //            hideHistory: true\n        massedit: true,\n        rowActions: [],\n    }),\n    statusSelector: Ember.computed.alias('mvrController.statusSelector'),\n    search: false,\n    status: 'all',\n    form: 'trnotice',\n    showColumns: ['date', 'status', 'desc', 'user', 'project', 'pic'],\n    emailValid: Em.A([]),\n    emailNotValid: Em.A([]),\n    sentToEmails: Em.A([]),\n    extraData: {\n        type: 'mvr',\n    },\n    init_functions: function () {\n        this._super();\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            return this.addRowActions();\n        }\n    },\n    addRowActions: function () {\n        var c, fields, intl, self2;\n        self2 = this;\n        intl = this.get('intl');\n        if (this.Collector == null) {\n            return;\n        }\n        c = this.get('Collector');\n        fields = c.fields('trnotice');\n        return this.get('settings.rowActions').push({\n            text: this.get('intl').t('site_safety.action.send_notice_email'),\n            action: function (self, notifications) {\n                return self2.emailAction(self, self2, notifications);\n            },\n        });\n    },\n    emailAction: function (self, self2, notifications) {\n        var c, emailNotValid, emailsArr, fields, intl;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        fields = c.fields('trnotice');\n        emailNotValid = self2.get('emailNotValid');\n        notifications.forEach(function (notification) {\n            var user, username;\n            if (!notification.get('email')) {\n                user = notification.get('user');\n                username = user.get('lastname') + ' ' + user.get('firstname');\n                if (emailNotValid.indexOf(username) < 0) {\n                    return emailNotValid.push(username);\n                }\n            } else {\n                //if emailNotValid.indexOf(notification.get('email')) < 0\n                //    emailNotValid.push(notification.get('user'))\n                return self2.get('emailValid').push(notification);\n            }\n        });\n        self2.set('emailModalTitle', intl.t('site_safety.action.email.modal_title'));\n        //if nothing selected\n        if (self2.get('emailNotValid.length') === 0 && self2.get('emailValid.length') === 0) {\n            self2.set('emailModalText', intl.t('site_safety.action.email.nothing_found'));\n            self2.set('showEmailModal', true);\n            return;\n        }\n        //if only not valid emails\n        if (self2.get('emailValid.length') === 0) {\n            self2.set('emailModalSent', true);\n            self2.set('showEmailModal', true);\n            return;\n        }\n        //send credentials to valid email\n        emailsArr = self2.get('sentToEmails');\n        self2.get('emailValid').forEach(function (notification) {\n            var email,\n                emailContent,\n                field,\n                file,\n                i,\n                len,\n                linebreak,\n                obj,\n                pics,\n                ref,\n                tmp_file,\n                user,\n                userString,\n                username,\n                value;\n            user = notification.get('user');\n            username =\n                user.get('lastname') +\n                ' ' +\n                user.get('firstname') +\n                ' (' +\n                notification.get('email') +\n                ')';\n            if (emailsArr.indexOf(username) < 0) {\n                emailsArr.push(username);\n            }\n            emailContent = [];\n            emailContent.push(self2.get('intl').t('site_safety.notice.email_content.content'));\n            pics = [];\n            linebreak = '<br>';\n            for (field in fields) {\n                obj = fields[field];\n                if (\n                    obj['features'] != null &&\n                    (obj['features']['hide'] || obj['features']['hide_column'])\n                ) {\n                    continue;\n                }\n                if (obj['type'] === 'hdfile' && notification.get(field)[0]['name']) {\n                    ref = notification.get(field);\n                    for (i = 0, len = ref.length; i < len; i++) {\n                        file = ref[i];\n                        tmp_file = {};\n                        tmp_file['name'] = file['name'];\n                        //tmp_file['url'] = notification.get(field)[0]['url']\n                        tmp_file['s3url'] = file['s3url'];\n                        tmp_file['type'] = file['type'];\n                        pics.push(tmp_file);\n                    }\n                } else {\n                    value = c.format(notification.get(field), obj, null, null, true);\n                    emailContent.push(\n                        self2.get('intl').t('report.trnotice.' + field) + ': ' + value,\n                    );\n                }\n            }\n            if (pics.length > 0) {\n                linebreak = '\\r\\n';\n            }\n            userString = '';\n            if (self2.get('session.currentUser.firstname')) {\n                userString += self2.get('session.currentUser.firstname') + ' ';\n            }\n            if (self2.get('session.currentUser.lastname')) {\n                userString += self2.get('session.currentUser.lastname') + '\\n';\n            }\n            if (self2.get('session.currentUser.email')) {\n                userString += self2.get('session.currentUser.email') + '\\n';\n            }\n            if (self2.get('session.currentUser.phone')) {\n                userString += self2.get('session.currentUser.phone') + '\\n';\n            }\n            if (userString !== '') {\n                userString = '\\r\\n' + userString;\n                emailContent.push(userString);\n            }\n            email = emailContent.join(linebreak);\n            return self2.Collector.ttapi({\n                url: 'sendEmailWithImages',\n                data: {\n                    email: notification.get('email'),\n                    title:\n                        self2.get('session.currentUser.company') +\n                        ' - ' +\n                        self2.get('intl').t('site_safety.notice.email_content.title'),\n                    content: email,\n                    attachments: JSON.stringify(pics),\n                    rowid: notification.get('id'),\n                    add_link: true,\n                },\n                method: 'post',\n            });\n        });\n        self2.set('emailModalSent', true);\n        return self2.set('showEmailModal', true);\n    },\n    actions: {\n        removeEmailModal: function () {\n            this.set('emailModalText', null);\n            this.set('showEmailModal', false);\n            this.set('emailModalSent', false);\n            this.set('emailValid', Em.A([]));\n            this.set('emailNotValid', Em.A([]));\n            return this.set('sentToEmails', Em.A([]));\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        sendEmailAction: function (selected) {\n            return this.emailAction(this, this, selected);\n        },\n    },\n});\n\nexport default SiteSafetyMvrNoticesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/notices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMvrNoticesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from 'tt4/routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyMvrNoticesRoute = GeneralReportRoute.extend({\n    capi: service(),\n    flags: service(),\n    form: 'trnotice',\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            params.type = 'mvr';\n            if (params.date) {\n                params.created = params.date;\n                delete params.date;\n            }\n            params.sideload = true;\n            if (params.status === 'all') {\n                delete params.status;\n            }\n            if (Ember.isPresent(params.groupBy)) {\n                params.sideload = true;\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll(this.get('form'), params);\n            } else {\n                return this.store.query('trnotice', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.report.mvr.notices').set('qParams', params);\n        }\n    },\n    actions: {\n        didTransition: function () {\n            return this.set('controller.statusSelector', true);\n        },\n    },\n});\n\nexport default SiteSafetyMvrNoticesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Rx2JcgGi\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\",\\\"user\\\",\\\"user\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"trnotice\\\",[22,\\\"qParams\\\"],\\\"user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"created\\\",\\\"type\\\"],[[23,0,[\\\"date\\\"]],\\\"mvr\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,4,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"sendEmailAction\\\",[23,5,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.action.send_notice_email\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/notices/edit/\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],\\\"trnotice\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"status\\\",\\\"settings\\\",\\\"count\\\",\\\"extraData\\\"],[\\\"bubbleTransition\\\",\\\"trnotice\\\",[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"extraData\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHidden\\\"],[[23,0,[\\\"showEmailModal\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showEmailModal\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"modal-title\\\"],[8],[1,[23,0,[\\\"emailModalTitle\\\"]],false],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[22,\\\"emailModalText\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailModalSent\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailNotValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.action.sendemail.these_were_not_sent\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"emailNotValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item list-group-item-warning\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[23,3,[]],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ban-circle pull-right\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.action.sendemail.these_were_sent\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sentToEmails\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item list-group-item-success\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[23,2,[]],false],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok-circle pull-right\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/mvr/notices/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/observation/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyObservationController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nSiteSafetyObservationController = GeneralReportController.extend({\n    form: 'site_safety_observation',\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    queryParams: ['status', 'page', 'employer', 'creator', 'groupBy', 'project'],\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'employer',\n            }),\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'creator',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    //        Em.Object.create({field: \"user-group\"})\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            //            hideEdit: true\n            //            hideHistory: true\n            editRoute: 'site_safety.observation.edit',\n        }),\n        massedit: true,\n        showGpsButton: true,\n        rowActions: [],\n    }),\n    search: false,\n    status: 'all',\n    limit: 25,\n    groupBy: null,\n    project: null,\n    user: null,\n    q: null,\n    showColumns: ['created', 'creator', 'status', 'desc', 'project', 'pic'],\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyObservationController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/observation/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyObservationRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyObservationRoute = GeneralReportRoute.extend({\n    form: 'site_safety_observation',\n    capi: service(),\n    flags: service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        creator: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            if (params.status === 'all') {\n                delete params.status;\n            }\n            if (Ember.isPresent(params.groupBy)) {\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll('site_safety_observation', params);\n            } else {\n                return this.store.query('site_safety_observation', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.report.observation').set('qParams', params);\n        }\n    },\n});\n\nexport default SiteSafetyObservationRoute;\n","export default Ember.HTMLBars.template({\"id\":\"nRiXoX6O\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@filterChangeAction\\\"],[\\\"site_safety_observation\\\",[22,\\\"qParams\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/site_safety/observation/edit/\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"status\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"site_safety_observation\\\",[24,[\\\"status\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"limit\\\",\\\"offset\\\",\\\"count\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",\\\"site_safety_observation\\\",[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/observation/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyReportController;\n\nimport Ember from 'ember';\n\nSiteSafetyReportController = Ember.Controller.extend({\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    project: null,\n    group: null,\n});\n\nexport default SiteSafetyReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/data/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrDataController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from 'tt4/controllers/general-report';\n\nimport formattedMixin from 'tt4/mixins/sitesafety-formatted-export';\n\nimport { computed } from '@ember/object';\n\nSiteSafetyTrDataController = GeneralReportController.extend(formattedMixin, {\n    intl: Em.inject.service(),\n    flags: Em.inject.service(),\n    queryParams: ['project', 'date', 'page', 'groupBy'],\n    Collector: Ember.inject.service('collector-service'),\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    project: null,\n    form: 'tr',\n    filters: computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    init: function () {\n        this._super();\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            return this.addRowActions();\n        }\n    },\n    formatter: function (column, value) {\n        if (column === 'tr_rating') {\n            if (value > 95) {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-approved\">' + value + ' %</span>',\n                );\n            } else if (value > 90) {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-warning\">' + value + ' %</span>',\n                );\n            } else {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-open\">' + value + ' %</span>',\n                );\n            }\n        }\n        return false;\n    },\n    showColumns: [\n        'status',\n        'project',\n        'user',\n        'date',\n        'tr_rating',\n        'working_plus',\n        'dust_plus',\n        'electricity_plus',\n        'fall_plus',\n        'garbage_plus',\n        'scaffolding_plus',\n        'tools_plus',\n        'foreman_sign',\n        'worker_sign',\n    ],\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: {\n                dynamic: true,\n                route: 'site_safety.measurement.add.measurement',\n                fields: ['id', 'constructor.modelName', 'project.id'],\n            },\n            historyRoute: 'site_safety.tr.history',\n            //hideEdit: true\n            hideHistory: true,\n            disableStatus: 'approved',\n        }),\n        sortByColumn: 'date-',\n    }),\n    addRowActions: function () {\n        var fields, intl;\n        intl = this.get('intl');\n        if (this.Collector == null) {\n            return;\n        }\n        fields = this.Collector.fields('tr');\n        return this.set('settings.rowActions', [\n            {\n                text: 'site_safety.formatted_pdf_export',\n                action: (self, items) => {\n                    return this.createMeasurementPdf(fields, items);\n                },\n            },\n        ]);\n    },\n    actions: {\n        transitionToEditRoute: function (row) {\n            return this.transitionToRoute(\n                'site_safety.measurement.add.measurement',\n                row.id,\n                'tr',\n                row.project.id,\n            );\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        createSpecialPdf: function (selected) {\n            var fields;\n            fields = this.Collector.fields('tr');\n            return this.createMeasurementPdf(fields, selected);\n        },\n    },\n});\n\nexport default SiteSafetyTrDataController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/data/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrDataRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from 'tt4/routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyTrDataRoute = GeneralReportRoute.extend({\n    form: 'tr',\n    Collector: Ember.inject.service('collector-service'),\n    capi: service(),\n    flags: service(),\n    beforeModel: function (transition) {\n        var c;\n        this._super(transition);\n        c = this.get('Collector');\n        if (transition.targetName !== 'site_safety.tr.notices' && !c.testNeedsOne('tr@add')) {\n            transition.abort();\n            return this.transitionTo('site_safety.tr.notices');\n        }\n    },\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            params.sideload = true;\n            if (Ember.isPresent(params.groupBy)) {\n                params.sideload = true;\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll('tr', params);\n            } else {\n                //        params.order = \"date-\"\n                return this.store.query('tr', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.report.tr.data').set('qParams', params);\n        }\n    },\n});\n\nexport default SiteSafetyTrDataRoute;\n","export default Ember.HTMLBars.template({\"id\":\"C9gOj8Ls\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"tr\\\",[22,\\\"qParams\\\"],\\\"date,user,project,group,q\\\",\\\"user.employer,user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"date\\\",\\\"order\\\"],[[23,0,[\\\"date\\\"]],\\\"date-\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"createSpecialPdf\\\",[23,2,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.formatted_pdf_export\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/site_safety/report/tr/data?modal=tr%2C\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\",\\\"@hideEditStatus\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"transitionToEditRoute\\\"],null],\\\"remove,overview,edit\\\",\\\"approved\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"formatter\\\",\\\"settings\\\",\\\"summableFieldTypes\\\",\\\"showPdfExport\\\",\\\"ownExports\\\",\\\"ownExportAction\\\",\\\"status\\\",\\\"count\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"showColumns\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"formatter\\\"]],[24,[\\\"settings\\\"]],false,false,[24,[\\\"ownExports\\\"]],\\\"ownExportAction\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/tr/data/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/graphs/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrGraphsController;\n\nimport Ember from 'ember';\n\nimport formattedMixin from 'tt4/mixins/sitesafety-formatted-export';\n\nSiteSafetyTrGraphsController = Ember.Controller.extend(formattedMixin, {\n    trController: Ember.inject.controller('site_safety/report/tr'),\n    queryParams: ['project', 'date'],\n    project: Ember.computed.alias('trController.project'),\n    date: Ember.computed.alias('trController.date'),\n    group: Ember.computed.alias('trController.group'),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n                form: 'tr',\n                type: 'database',\n                value: this.get('project'),\n                singleselect: true,\n            }),\n            Em.Object.create({\n                field: 'date',\n                form: 'tr',\n                type: 'date',\n                value: this.get('date'),\n            }),\n            Em.Object.create({\n                field: 'group',\n                form: 'tr',\n                type: 'database',\n                value: this.get('group'),\n                singleselect: true,\n            }),\n        ]);\n    }),\n    pie_options: {\n        pieHole: 0.9,\n        chartArea: {\n            width: '90%',\n            height: '95%',\n        },\n        height: 200,\n        width: 350,\n        pieSliceTextStyle: {\n            color: 'black',\n            fontSize: 20,\n        },\n    },\n    //        slices: {\n    //            1: {offset: 0.02}\n    //            2: {offset: 0.02}\n    //            3: {offset: 0.02}\n    //        }\n    dataSetter: function () {\n        var amount,\n            average_rating,\n            data,\n            data_rating,\n            data_rating_pie,\n            field_rating,\n            fields,\n            pie_over90under95,\n            pie_over95,\n            pie_under90,\n            self,\n            total,\n            totrating,\n            trs;\n        self = this;\n        data = Em.A([\n            [\n                '',\n                this.get('intl').t('tr.title.working'),\n                this.get('intl').t('tr.title.scaffolding'),\n                this.get('intl').t('tr.title.tools'),\n                this.get('intl').t('tr.title.fall'),\n                this.get('intl').t('tr.title.electricity'),\n                this.get('intl').t('tr.title.garbage'),\n                this.get('intl').t('tr.title.dust'),\n            ],\n        ]);\n        data_rating = Em.A([[this.get('intl').t('date'), this.get('intl').t('tr.rating')]]);\n        data_rating_pie = Em.A([\n            [this.get('intl').t('tr.rating'), this.get('intl').t('tr.rating')],\n        ]);\n        pie_under90 = 0;\n        pie_over90under95 = 0;\n        pie_over95 = 0;\n        average_rating = 0;\n        amount = 0;\n        total = 0;\n        trs = this.get('model.tr');\n        if (!trs) {\n            return;\n        }\n        field_rating = [0, 0, 0, 0, 0, 0, 0];\n        fields = ['working', 'scaffolding', 'tools', 'fall', 'electricity', 'garbage', 'dust'];\n        trs.forEach(function (tr, idx) {\n            var field, i, index, len, minus, plus, row, tr_minus, tr_plus;\n            row = [moment(tr.get('date')).format('L')];\n            tr_plus = tr.getProperties(\n                'working_plus',\n                'scaffolding_plus',\n                'tools_plus',\n                'fall_plus',\n                'electricity_plus',\n                'garbage_plus',\n                'dust_plus',\n            );\n            tr_minus = tr.getProperties(\n                'working_minus',\n                'scaffolding_minus',\n                'tools_minus',\n                'fall_minus',\n                'electricity_minus',\n                'garbage_minus',\n                'dust_minus',\n            );\n            for (index = i = 0, len = fields.length; i < len; index = ++i) {\n                field = fields[index];\n                plus = 0;\n                minus = 0;\n                if (tr_plus[field + '_plus']) {\n                    plus = parseInt(tr_plus[field + '_plus'], 10);\n                }\n                if (tr_minus[field + '_minus']) {\n                    minus = parseInt(tr_minus[field + '_minus'], 10);\n                }\n                if (!isNaN((plus / (plus + minus)) * 100)) {\n                    field_rating[index] += parseFloat((plus / (plus + minus)) * 100);\n                }\n                row.push(parseFloat(((plus / (plus + minus)) * 100).toFixed(2)));\n            }\n            if (!isNaN(tr.get('tr_rating')) && tr.get('tr_rating') !== null) {\n                data_rating.push([\n                    moment(tr.get('date')).format('L'),\n                    parseFloat(tr.get('tr_rating')),\n                ]);\n                total += parseFloat(tr.get('tr_rating'));\n                amount++;\n                if (tr.get('tr_rating') < 90) {\n                    pie_under90++;\n                }\n                if (tr.get('tr_rating') >= 90 && tr.get('tr_rating') < 95) {\n                    pie_over90under95++;\n                }\n                if (tr.get('tr_rating') >= 95) {\n                    return pie_over95++;\n                }\n            } else {\n                return data_rating.push([moment(tr.get('date')).format('L'), 0]);\n            }\n        });\n        totrating = [''];\n        field_rating.forEach((rating) => {\n            return totrating.push(Math.round(rating / trs.get('length'), 2));\n        });\n        data.push(totrating);\n        average_rating = Math.round(total / amount) + '%';\n        data_rating_pie.push([this.get('intl').t('tr_rating_pie_under90'), pie_under90]);\n        data_rating_pie.push([\n            this.get('intl').t('tr_rating_pie_over90under95'),\n            pie_over90under95,\n        ]);\n        data_rating_pie.push([this.get('intl').t('tr_rating_pie_over95'), pie_over95]);\n        self.set('data', data);\n        self.set('data_rating', data_rating);\n        self.set('data_rating_pie', data_rating_pie);\n        return self.set('average_rating', average_rating);\n    }.observes('model.tr.[]', 'intl.primaryLocale', 'selectedIndex'),\n    actions: {\n        handleSelection: function (sel) {\n            if (sel.length > 0 && sel[0].row !== null) {\n                if (this.get('selectedIndex') === sel[0].row) {\n                    return this.set('selectedIndex', null);\n                } else {\n                    return this.set('selectedIndex', sel[0].row);\n                }\n            }\n        },\n        exportNewestPdf: function (project) {\n            var charts, fields, newest;\n            // get newest tr record\n            newest = this.store\n                .peekAll('tr')\n                .filter((record) => {\n                    return record.get('project.id') === project;\n                })\n                .sortBy('date')\n                .reverse()\n                .get('firstObject');\n            if (!newest) {\n                this.get('dialogs').alert(\n                    this.get('intl').t('tr.chart.export_newest_pdf_not_found'),\n                );\n            }\n            // export as measurement pdf\n            fields = this.get('Collector').fields('tr');\n            charts = [\n                {\n                    url: this.get('piechart').getImageURI(),\n                    width: 300,\n                    title: this.get('intl').t('tr.chart.tr_rating_pie'),\n                },\n                {\n                    url: this.get('datachart').getImageURI(),\n                    title: this.get('intl').t('tr.chart.measurement_ratings'),\n                },\n                {\n                    url: this.get('dataratingchart').getImageURI(),\n                    title: this.get('intl').t('tr.chart.tr_rating'),\n                },\n            ];\n            return this.createMeasurementPdf(fields, [newest], 'download', charts);\n        },\n        filterChanged: function (value, field) {\n            if (value == null) {\n                return this.set(field, '');\n            } else if (field === 'date') {\n                return this.set(field, value);\n            } else {\n                return this.set(field, value.id);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyTrGraphsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/graphs/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrGraphsRoute;\n\nimport Ember from 'ember';\n\nSiteSafetyTrGraphsRoute = Ember.Route.extend({\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    beforeModel: function (transition) {\n        var c;\n        this._super(transition);\n        c = this.get('Collector');\n        if (transition.targetName !== 'site_safety.tr.notices' && !c.testNeedsOne('tr@add')) {\n            transition.abort();\n            return this.transitionTo('site_safety.report.tr.notices');\n        }\n    },\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var cols, date, monthAgo, store, trfieldkeys, trfields;\n        params.sideload = true;\n        if (params.project === 'undefined') {\n            delete params.project;\n        }\n        if (!params.group) {\n            delete params.group;\n        }\n        params.order = 'date';\n        store = this.get('store');\n        monthAgo = moment().subtract(1, 'month').format('YYYY-MM-DD_');\n        date = moment().format('YYYY-MM-DD');\n        trfields = this.get('Collector').fields('tr');\n        trfieldkeys = Object.keys(trfields);\n        cols = [];\n        trfieldkeys.forEach(function (field) {\n            if (trfields[field].type !== 'multiselect') {\n                return cols.push(field);\n            }\n        });\n        params.cols = cols.join(',');\n        return Ember.RSVP.hash({\n            tr: store.query('tr', params),\n            noticesSelected: store.query('trnotice', {\n                type: 'tr',\n                limit: 100,\n                created: monthAgo.concat(date),\n                sideload: params.sideload,\n                project: params.project,\n                group: params.group,\n            }),\n            notices: store.query('trnotice', {\n                type: 'tr',\n                limit: 1,\n                created: params.date,\n                project: params.project,\n                group: params.group,\n            }),\n            not_solved: store.query('trnotice', {\n                type: 'tr',\n                limit: 1,\n                created: params.date,\n                status: 'open',\n                project: params.project,\n                group: params.group,\n            }),\n            overdue: store.query('trnotice', {\n                type: 'tr',\n                created: params.date,\n                date: params.date,\n                status: 'open',\n                limit: 1,\n                project: params.project,\n                group: params.group,\n            }),\n        });\n    },\n});\n\nexport default SiteSafetyTrGraphsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"xm+HHklx\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\",\\\"hideClearFilters\\\"],[[24,[\\\"filters\\\"]],\\\"tr\\\",\\\"filterChanged\\\",true]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row col-xs-12 export-pdf-button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary btn-large\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"exportNewestPdf\\\",[24,[\\\"project\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.export_newest_pdf\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary btn-large\\\"],[10,\\\"disabled\\\",\\\"\\\"],[11,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"tr.chart.select_project\\\"],null]]]],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.export_newest_pdf\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row site-safety-measurement-row-container\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-container col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"site_safety.report.tr.notices\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"notices-graph\\\",null,[[\\\"all\\\",\\\"overdue\\\",\\\"not_solved\\\"],[[24,[\\\"model\\\",\\\"notices\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"model\\\",\\\"overdue\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"model\\\",\\\"not_solved\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"site_safety.report.tr.data\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"tr\\\",\\\"meta\\\",\\\"count\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notices-graph-container\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"notices-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.tr_rating_pie\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"average_rating\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            , \\\"],[1,[28,\\\"t\\\",[\\\"tr.chart.average\\\"],null],false],[0,\\\": \\\"],[1,[22,\\\"average_rating\\\"],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\",\\\"chart\\\"],[[24,[\\\"data_rating_pie\\\"]],\\\"pie\\\",\\\"#D9534F,#FFC56C,#5CB85C\\\",[24,[\\\"pie_options\\\"]],[24,[\\\"piechart\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"tr\\\",\\\"meta\\\",\\\"count\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.measurement_ratings\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"type\\\",\\\"data\\\",\\\"export\\\",\\\"chart\\\",\\\"Ymax\\\",\\\"Ymin\\\"],[\\\"column\\\",[24,[\\\"data\\\"]],true,[24,[\\\"datachart\\\"]],100,0]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data_rating\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.tr_rating\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"selectionHandler\\\",\\\"export\\\",\\\"Xmax\\\",\\\"Xmin\\\",\\\"chart\\\"],[[24,[\\\"data_rating\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"handleSelection\\\"],null],true,100,0,[24,[\\\"dataratingchart\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/tr/graphs/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/notices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrNoticesController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from 'tt4/controllers/general-report';\n\nimport { computed } from '@ember/object';\n\nSiteSafetyTrNoticesController = GeneralReportController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    flags: Ember.inject.service(),\n    intl: Em.inject.service(),\n    queryParams: ['project', 'status', 'page', 'employer', 'user', 'date', 'groupBy'],\n    filters: computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                field: 'employer',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    arrangedContent: Ember.computed('model.[]', function () {\n        return this.get('content').sortBy('date');\n    }),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({}),\n        //            hideEdit: true\n        //            hideHistory: true\n        massedit: true,\n        rowActions: [],\n    }),\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    search: false,\n    status: 'all',\n    form: 'trnotice',\n    showColumns: ['date', 'status', 'desc', 'user', 'project', 'pic'],\n    extraData: {\n        type: 'tr',\n    },\n    emailValid: Em.A([]),\n    emailNotValid: Em.A([]),\n    sentToEmails: Em.A([]),\n    init_functions: function () {\n        this._super();\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            return this.addRowActions();\n        }\n    },\n    addRowActions: function () {\n        var self2;\n        self2 = this;\n        if (this.Collector == null) {\n            return;\n        }\n        return this.get('settings.rowActions').push({\n            text: this.get('intl').t('site_safety.action.send_notice_email'),\n            action: function (self, notifications) {\n                return self2.emailAction(self, self2, notifications);\n            },\n        });\n    },\n    emailAction: function (self, self2, notifications) {\n        var c, emailNotValid, emailsArr, fields, intl;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        fields = c.fields('trnotice');\n        emailNotValid = self2.get('emailNotValid');\n        notifications.forEach(function (notification) {\n            var user, username;\n            if (!notification.get('email')) {\n                user = notification.get('user');\n                username = user.get('lastname') + ' ' + user.get('firstname');\n                if (emailNotValid.indexOf(username) < 0) {\n                    return emailNotValid.push(username);\n                }\n            } else {\n                //if emailNotValid.indexOf(notification.get('email')) < 0\n                //    emailNotValid.push(notification.get('user'))\n                return self2.get('emailValid').push(notification);\n            }\n        });\n        self2.set('emailModalTitle', intl.t('site_safety.action.email.modal_title'));\n        //if nothing selected\n        if (self2.get('emailNotValid.length') === 0 && self2.get('emailValid.length') === 0) {\n            self2.set('emailModalText', intl.t('site_safety.action.email.nothing_found'));\n            self2.set('showEmailModal', true);\n            return;\n        }\n        //if only not valid emails\n        if (self2.get('emailValid.length') === 0) {\n            self2.set('emailModalSent', true);\n            self2.set('showEmailModal', true);\n            return;\n        }\n        //send credentials to valid email\n        emailsArr = self2.get('sentToEmails');\n        self2.get('emailValid').forEach(function (notification) {\n            var email,\n                emailContent,\n                field,\n                file,\n                i,\n                len,\n                linebreak,\n                obj,\n                pics,\n                ref,\n                tmp_file,\n                user,\n                userString,\n                username,\n                value;\n            user = notification.get('user');\n            username =\n                user.get('lastname') +\n                ' ' +\n                user.get('firstname') +\n                ' (' +\n                notification.get('email') +\n                ')';\n            if (emailsArr.indexOf(username) < 0) {\n                emailsArr.push(username);\n            }\n            emailContent = [];\n            emailContent.push(self2.get('intl').t('site_safety.notice.email_content.content'));\n            pics = [];\n            linebreak = '<br>';\n            for (field in fields) {\n                obj = fields[field];\n                if (\n                    obj['features'] != null &&\n                    (obj['features']['hide'] || obj['features']['hide_column'])\n                ) {\n                    continue;\n                }\n                if (obj['type'] === 'hdfile' && notification.get(field)[0]['name']) {\n                    ref = notification.get(field);\n                    for (i = 0, len = ref.length; i < len; i++) {\n                        file = ref[i];\n                        tmp_file = {};\n                        tmp_file['name'] = file['name'];\n                        //tmp_file['url'] = notification.get(field)[0]['url']\n                        tmp_file['s3url'] = file['s3url'];\n                        tmp_file['type'] = file['type'];\n                        pics.push(tmp_file);\n                    }\n                } else {\n                    value = c.format(notification.get(field), obj, null, null, true);\n                    emailContent.push(\n                        self2.get('intl').t('report.trnotice.' + field) + ': ' + value,\n                    );\n                }\n            }\n            if (pics.length > 0) {\n                linebreak = '\\r\\n';\n            }\n            userString = '';\n            if (self2.get('session.currentUser.firstname')) {\n                userString += self2.get('session.currentUser.firstname') + ' ';\n            }\n            if (self2.get('session.currentUser.lastname')) {\n                userString += self2.get('session.currentUser.lastname') + '\\n';\n            }\n            if (self2.get('session.currentUser.email')) {\n                userString += self2.get('session.currentUser.email') + '\\n';\n            }\n            if (self2.get('session.currentUser.phone')) {\n                userString += self2.get('session.currentUser.phone') + '\\n';\n            }\n            if (userString !== '') {\n                userString = '\\r\\n' + userString;\n                emailContent.push(userString);\n            }\n            email = emailContent.join(linebreak);\n            return self2.Collector.ttapi({\n                url: 'sendEmailWithImages',\n                data: {\n                    email: notification.get('email'),\n                    title:\n                        self2.get('session.currentUser.company') +\n                        ' - ' +\n                        self2.get('intl').t('site_safety.notice.email_content.title'),\n                    content: email,\n                    attachments: JSON.stringify(pics),\n                    rowid: notification.get('id'),\n                    add_link: true,\n                },\n                method: 'post',\n            });\n        });\n        self2.set('emailModalSent', true);\n        return self2.set('showEmailModal', true);\n    },\n    actions: {\n        removeEmailModal: function () {\n            this.set('emailModalText', null);\n            this.set('showEmailModal', false);\n            this.set('emailModalSent', false);\n            this.set('emailValid', Em.A([]));\n            this.set('emailNotValid', Em.A([]));\n            return this.set('sentToEmails', Em.A([]));\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        sendEmailAction: function (selected) {\n            return this.emailAction(this, this, selected);\n        },\n    },\n});\n\nexport default SiteSafetyTrNoticesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/notices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrNoticesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from 'tt4/routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyTrNoticesRoute = GeneralReportRoute.extend({\n    capi: service(),\n    flags: service(),\n    form: 'trnotice',\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    actions: {\n        didTransition: function () {\n            return this.set('controller.statusSelector', true);\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            params.type = 'tr';\n            if (params.date) {\n                params.created = params.date;\n                delete params.date;\n            }\n            params.sideload = true;\n            if (params.status === 'all') {\n                delete params.status;\n            }\n            if (Ember.isPresent(params.groupBy)) {\n                params.sideload = true;\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll(this.get('form'), params);\n            } else {\n                return this.store.query('trnotice', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.report.tr.notices').set('qParams', params);\n        }\n    },\n});\n\nexport default SiteSafetyTrNoticesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"xOJG3hOW\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\",\\\"user\\\",\\\"user\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"trnotice\\\",[22,\\\"qParams\\\"],\\\"user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"created\\\",\\\"type\\\"],[[23,0,[\\\"date\\\"]],\\\"tr\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,4,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\\n                    \\\"],[6,[23,7,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"sendEmailAction\\\",[23,5,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.action.send_notice_email\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/notices/edit/\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],\\\"trnotice\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"status\\\",\\\"settings\\\",\\\"count\\\",\\\"extraData\\\"],[\\\"bubbleTransition\\\",\\\"trnotice\\\",[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"extraData\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHidden\\\"],[[23,0,[\\\"showEmailModal\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showEmailModal\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"modal-title\\\"],[8],[1,[23,0,[\\\"emailModalTitle\\\"]],false],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[22,\\\"emailModalText\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailModalSent\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailNotValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.action.sendemail.these_were_not_sent\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"emailNotValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item list-group-item-warning\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[23,3,[]],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ban-circle pull-right\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.action.sendemail.these_were_sent\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sentToEmails\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item list-group-item-success\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[23,2,[]],false],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok-circle pull-right\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/tr/notices/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSiteSafetyRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default SiteSafetyRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/saved/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetySavedController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport pdf_measurement_mixin from '../../../mixins/sitesafety-export';\n\nimport formatted_pdf_measurement_mixin from '../../../mixins/sitesafety-formatted-export';\n\nSiteSafetySavedController = Ember.Controller.extend(\n    pdf_measurement_mixin,\n    formatted_pdf_measurement_mixin,\n    {\n        Collector: Ember.inject.service('collector-service'),\n        intl: Ember.inject.service(),\n        queryParams: ['email'],\n        email: false,\n        form: Ember.computed('model', function () {\n            return this.get('model.constructor.modelName');\n        }),\n        fields: Ember.computed('model', function () {\n            var fields;\n            fields = this.get('Collector').fieldArray(this.get('model.constructor.modelName'));\n            return fields.reject(function (item) {\n                item.ext = item.name;\n                if (item.name.slice(-6) === '_minus') {\n                    return true;\n                }\n            });\n        }),\n        afterSave: Ember.computed('model', function () {\n            if (['tr', 'mvr'].includes(this.get('model.constructor.modelName'))) {\n                return 'site_safety.report.' + this.get('model.constructor.modelName') + '.graphs';\n            }\n            return [\n                'site_safety.measurement.graphs',\n                this.get('model.constructor.modelName').substring(12).toLowerCase(),\n            ];\n        }),\n        showApprovalLinkSelection: Ember.computed(function () {\n            var field, fields, found;\n            fields = this.get('fields');\n            found = false;\n            for (field in fields) {\n                if (\n                    fields[field].type === 'status' &&\n                    !fields[field].features.readonly &&\n                    indexOf.call(fields[field].options, 'approved') >= 0\n                ) {\n                    found = true;\n                }\n            }\n            return found;\n        }),\n        actions: {\n            //        setEmail: (value) ->\n            //            @get('store').findRecord('user', value.get('id'), {reload: true}).then (user) =>\n            //                user.validate(['email']).then =>\n            //                    error = user.get('errors').errorsFor('email')\n            //                    email = user.get('email')\n            //                    if error.length > 0\n            //                        @set 'email_error', error\n            //                    else if email\n            //                        @set 'email', email\n            send_email: function (recipient, title, content, params) {\n                var fields;\n                fields = this.get('Collector').fields(this.get('model.constructor.modelName'));\n                this.set('loading', true);\n                return this.createMeasurementPdf(fields, [this.get('model')], 'base64').then(\n                    (pdf) => {\n                        var c, intl;\n                        c = this.get('Collector');\n                        intl = this.get('intl');\n                        return c\n                            .ttapi({\n                                method: 'post',\n                                url: 'sendReportAsEmail',\n                                data: {\n                                    to_address: recipient,\n                                    email: pdf,\n                                    header: title,\n                                    content: content,\n                                    lang: intl.primaryLocale,\n                                    includeApproval: params.approvalLink,\n                                    form: this.get('form'),\n                                    form_name: 'tr',\n                                    rowids: [this.get('model.id')],\n                                },\n                            })\n                            .then((ret) => {\n                                this.set('emailSent', true);\n                                return this.set('loading', false);\n                            })\n                            .catch((e) => {\n                                this.set('email', false);\n                                this.set('loading', false);\n                                throw new Ember.Error(e);\n                            });\n                    },\n                );\n            },\n            removeModal: function () {\n                return this.set('email', false);\n            },\n        },\n    },\n);\n\nexport default SiteSafetySavedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/saved/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetySavedRoute;\n\nimport Ember from 'ember';\n\nimport toTop from '../../../mixins/reset-scroll';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSiteSafetySavedRoute = Ember.Route.extend(toTop, AuthenticatedRouteMixin, {\n    store: Ember.inject.service(),\n    model: function (params) {\n        return this.get('store').findRecord(params.type, params.id, {\n            include: true,\n        });\n    },\n});\n\n//    actions:\n//        willTransition: ->\n//            @get('store').unloadAll('tr')\nexport default SiteSafetySavedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"86ZtV5tT\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saved.title\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[23,1,[\\\"name\\\"]],[23,1,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n                    : \\\"],[9],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[[23,1,[]],[23,1,[\\\"form\\\"]],[24,[\\\"model\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"afterSave\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[4,\\\"link-to\\\",null,[[\\\"params\\\",\\\"tagName\\\",\\\"classNames\\\"],[[24,[\\\"afterSave\\\"]],\\\"a\\\",\\\"btn btn-m-link btn-lg btn-block\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\"],[\\\"a\\\",\\\"btn btn-m-link btn-lg btn-block\\\",[24,[\\\"afterSave\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"query\\\"],[\\\"a\\\",\\\"btn btn-m-link btn-lg btn-block\\\",[28,\\\"hash\\\",null,[[\\\"email\\\"],[true]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"site_safety.saved.send_email\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"email\\\"]],true],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"export-modal\\\",null,[[\\\"sendEmailAction\\\",\\\"showEmailModal\\\",\\\"initType\\\",\\\"form\\\",\\\"showApprovalLinkSelection\\\",\\\"includeApprovalLink\\\",\\\"emailSent\\\",\\\"loading\\\",\\\"currentTemplate\\\",\\\"action\\\",\\\"count\\\"],[\\\"send_email\\\",[24,[\\\"email\\\"]],\\\"email\\\",[24,[\\\"form\\\"]],[24,[\\\"showApprovalLinkSelection\\\"]],[24,[\\\"includeApprovalLink\\\"]],[24,[\\\"emailSent\\\"]],[24,[\\\"loading\\\"]],[24,[\\\"currentTemplate\\\"]],[24,[\\\"action\\\"]],1]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/saved/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"MNBM1Qx+\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsAddController;\n\nimport Ember from 'ember';\n\nProjectsAddController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    session: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    intl: Em.inject.service(),\n    projectField: Em.computed('model', function () {\n        return this.get('Collector').field('skyddsrond', 'project');\n    }),\n    setDefaultValue: function (field) {\n        if (field.name === 'project') {\n            field.features.hide = true;\n        }\n        return field;\n    },\n    sendNoticeEmail: function (notification) {\n        var c,\n            email,\n            emailContent,\n            field,\n            fields,\n            file,\n            i,\n            len,\n            linebreak,\n            obj,\n            pics,\n            projectString,\n            ref,\n            tmp_file,\n            userString,\n            value;\n        c = this.get('Collector');\n        fields = c.fields('notice');\n        pics = [];\n        emailContent = [];\n        emailContent.push(this.get('intl').t('site_safety.notice.email_content.content'));\n        for (field in fields) {\n            obj = fields[field];\n            if (field === 'status') {\n                continue;\n            }\n            if (obj['type'] === 'hdfile') {\n                ref = notification.get(field);\n                for (i = 0, len = ref.length; i < len; i++) {\n                    file = ref[i];\n                    console.log(file);\n                    tmp_file = {};\n                    tmp_file['name'] = file.name;\n                    tmp_file['url'] = file.url;\n                    tmp_file['s3url'] = file.s3url;\n                    tmp_file['type'] = file.type;\n                    pics.push(tmp_file);\n                }\n            } else {\n                value = c._format_(notification.get(field), 'notice', field);\n                emailContent.push(this.get('intl').t('report.notice.' + field) + ': ' + value);\n            }\n        }\n        userString = '';\n        if (this.get('session.currentUser.firstname')) {\n            userString += this.get('session.currentUser.firstname') + ' ';\n        }\n        if (this.get('session.currentUser.lastname')) {\n            userString += this.get('session.currentUser.lastname') + '\\n';\n        }\n        if (this.get('session.currentUser.email')) {\n            userString += this.get('session.currentUser.email') + '\\n';\n        }\n        if (this.get('session.currentUser.phone')) {\n            userString += this.get('session.currentUser.phone') + '\\n';\n        }\n        projectString = '';\n        if (notification.get('project.number')) {\n            projectString += notification.get('project.number') + ' ';\n        }\n        projectString += notification.get('project.name');\n        linebreak = '\\n';\n        email = emailContent.join(linebreak);\n        // get email for assigned user\n        return this.get('store')\n            .findRecord('user', notification.get('user.id'), {\n                reload: true,\n            })\n            .then((userRecord) => {\n                var emailAddress;\n                emailAddress = userRecord.get('email');\n                return this.get('Collector').ttapi({\n                    dataType: 'text',\n                    url: 'sendEmailWithImages',\n                    data: {\n                        form: 'notice',\n                        email: emailAddress,\n                        title:\n                            this.get('session.currentUser.company') +\n                            ' - ' +\n                            this.get('intl').t('site_safety.notice.email_content.title'),\n                        content: email,\n                        link_text: this.get('intl').t('site_safety.notice.fix_link')['string'],\n                        attachments: JSON.stringify(pics),\n                        rowid: notification.get('id'),\n                        add_link: true,\n                        userid: userRecord.get('id'),\n                    },\n                    method: 'post',\n                });\n            });\n    },\n    actions: {\n        setValue: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n        addNotice: function (value, field) {\n            var c, object;\n            c = this.get('Collector');\n            object = c.field('skyddsrond', field);\n            if (object.type === 'radio' && value === '$med_anm') {\n                this.set('openNotice', field);\n                return this.set(\n                    'noticeRecord',\n                    this.get('store').createRecord('notice', {\n                        project: this.get('model.project'),\n                        creator: this.get('session.currentUser'),\n                        fixbydate: moment().add(7, 'days').format('YYYY-MM-DD'),\n                    }),\n                );\n            } else if (object.type === 'radio') {\n                return this.send('closeNotice');\n            }\n        },\n        addToNoticeArray: function (settings, record) {\n            var field;\n            field = this.get('model.' + this.get('openNotice') + '_notices');\n            if (Ember.isArray(field)) {\n                field.pushObject(record);\n            } else {\n                this.set('model.' + this.get('openNotice') + '_notices', Em.A([record]));\n            }\n            this.sendNoticeEmail(record);\n            return this.send('closeNotice', false);\n        },\n        closeNotice: function (destroy = true) {\n            this.set('openNotice', false);\n            if (destroy && this.get('noticeRecord')) {\n                this.get('noticeRecord').destroyRecord();\n            }\n            return this.set('noticeRecord', false);\n        },\n        cancel: function () {\n            return this.transitionToRoute('skyddsrond.report');\n        },\n        saved: function (settings, record) {\n            return this.send('transitionToSaved', record);\n        },\n        openInfo: function (field) {\n            return this.get('dialogs').alert(this.get('intl').t('skyddsrond.info.' + field));\n        },\n    },\n});\n\nexport default ProjectsAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondAddRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport toTop from '../../../mixins/reset-scroll';\n\nSkyddsrondAddRoute = Ember.Route.extend(AuthenticatedRouteMixin, toTop, {\n    Collector: Ember.inject.service('collector-service'),\n    model: function () {\n        var default_values, fields;\n        fields = this.get('Collector').fieldArray('skyddsrond');\n        default_values = {};\n        fields.forEach(function (item) {\n            if (item.type === 'radio') {\n                return (default_values[item.name] = '$ej_akt');\n            }\n        });\n        return this.get('store').createRecord('skyddsrond', default_values);\n    },\n    actions: {\n        transitionToSaved: function (record) {\n            return this.transitionTo('skyddsronds.saved', record);\n        },\n    },\n});\n\nexport default SkyddsrondAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"mNU4f1D0\",\"block\":\"{\\\"symbols\\\":[\\\"component\\\",\\\"field\\\",\\\"record\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.skyddsrond\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"tagName\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"span\\\",\\\"skyddsronds.report\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"skyddsrond-container\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"projectField\\\"]]],[[\\\"change\\\",\\\"model\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\"],null],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"mini text-muted\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"collector/record-custom-comp\\\",null,[[\\\"record\\\",\\\"form\\\",\\\"returnField\\\",\\\"bubbleChange\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"model\\\"]],\\\"skyddsrond\\\",[24,[\\\"setDefaultValue\\\"]],\\\"addNotice\\\",\\\"saved\\\",\\\"cancel\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"type\\\"]],\\\"radio\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default btn-sm pull-left\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openInfo\\\",[23,2,[\\\"name\\\"]]]],[8],[1,[28,\\\"standard-icon\\\",[\\\"info\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"collector/field-container\\\",[[23,2,[]]],[[\\\"change\\\",\\\"model\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\"],[[\\\"target\\\"],[[23,1,[]]]]],[23,3,[]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[[28,\\\"concat\\\",[[23,2,[\\\"form\\\"]],\\\".\\\",[23,2,[\\\"name\\\"]],\\\"_notices\\\"],null]],null]],null,{\\\"statements\\\":[[4,\\\"skyddsronds/notice-array\\\",null,[[\\\"field\\\",\\\"model\\\",\\\"addNotice\\\",\\\"noticeAdded\\\"],[[23,2,[]],[23,3,[]],[28,\\\"action\\\",[[23,0,[]],\\\"addNotice\\\"],null],\\\"closeNotice\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"openNotice\\\"]],[23,2,[\\\"name\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"glyphicon glyphicon-remove-circle icon-big pull-right\\\"],[12,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"skyddsrond.notice.remove\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"closeNotice\\\"]],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector/record-custom-comp\\\",null,[[\\\"record\\\",\\\"form\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"noticeRecord\\\"]],\\\"notice\\\",\\\"addToNoticeArray\\\",\\\"closeNotice\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"mini text-muted\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2,3]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.select_project_first\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/skyddsronds/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/dashboard/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondDashboardController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nSkyddsrondDashboardController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    queryParams: ['project', 'date'],\n    form: 'skyddsrond',\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({}),\n    }),\n    filters: Em.A([]),\n    date: moment().subtract(1, 'month').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    pie_options: {\n        pieHole: 0.9,\n        chartArea: {\n            width: '90%',\n            height: '95%',\n        },\n        height: 200,\n        width: 350,\n        pieSliceTextStyle: {\n            color: 'black',\n            fontSize: 20,\n        },\n    },\n    //        slices: {\n    //            1: {offset: 0.02}\n    //            2: {offset: 0.02}\n    //            3: {offset: 0.02}\n    //        }\n    data: Ember.computed('model.skyddsrond', function () {\n        var arr, by_date, date_obj, intl, key, obj, value;\n        obj = {\n            $utan_anm: 0,\n            $med_anm: 0,\n            $ej_akt: 0,\n        };\n        date_obj = {};\n        //        projects = Em.A([])\n        this.get('model.skyddsrond').forEach(function (item) {\n            var date;\n            //            projects.pushObject item.get('project.id')\n            date = item.get('date');\n            if (date_obj[date] == null) {\n                date_obj[date] = {\n                    $utan_anm: 0,\n                    $med_anm: 0,\n                    $ej_akt: 0,\n                };\n            }\n            return item.eachAttribute(function (name, meta) {\n                var value;\n                value = item.get(name);\n                if (value === '$utan_anm' || value === '$med_anm' || value === '$ej_akt') {\n                    ++date_obj[date][value];\n                    return ++obj[value];\n                }\n            });\n        });\n        intl = this.get('intl');\n        arr = Em.A([\n            ['Rating', 'Value'],\n            [intl.t('skyddsrond.option.utan_anm'), obj['$utan_anm']],\n            [intl.t('skyddsrond.option.med_anm'), obj['$med_anm']],\n            [intl.t('skyddsrond.option.ej_akt'), obj['$ej_akt']],\n        ]);\n        by_date = [\n            [\n                'Date',\n                intl.t('skyddsrond.option.utan_anm'),\n                intl.t('skyddsrond.option.med_anm'),\n                intl.t('skyddsrond.option.ej_akt'),\n            ],\n        ];\n        //        by_date_normalized = [[\"Date\", \"Utan\",\"Med\",\"Ej akt\"]]\n        //        projects_amount = projects.uniq().get('length')\n        for (key in date_obj) {\n            value = date_obj[key];\n            by_date.push([\n                moment(key).format('L'),\n                value['$utan_anm'],\n                value['$med_anm'],\n                value['$ej_akt'],\n            ]);\n        }\n        return {\n            //            by_date_normalized.push [moment(key).format('L'), value[\"$utan_anm\"]/projects_amount, value[\"$med_anm\"]/projects_amount, value[\"$ej_akt\"]/projects_amount]\n            total: arr,\n            by_date: by_date, //, by_date_normalized: by_date_normalized}\n        };\n    }),\n    pie_colors: '#086E3D,#C51017,#B3B3B3',\n    chart_options: {\n        height: 350,\n        width: '100%',\n        colors: ['#086E3D', '#C51017', '#B3B3B3'],\n    },\n});\n\nexport default SkyddsrondDashboardController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/dashboard/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondDashboardRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nSkyddsrondDashboardRoute = GeneralReportRoute.extend({\n    store: Ember.inject.service(),\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var store;\n        params = this._super(params);\n        params.sideload = true;\n        store = this.get('store');\n        return Ember.RSVP.hash({\n            skyddsrond: store.query('skyddsrond', params),\n            notices: store.query('notice', {\n                limit: 1,\n                project: params.project,\n            }),\n            not_solved: store.query('notice', {\n                limit: 1,\n                status: 'open',\n                project: params.project,\n            }),\n            overdue: store.query('notice', {\n                fixbydate: params.date,\n                status: 'open',\n                limit: 1,\n                project: params.project,\n            }),\n        });\n    },\n});\n\nexport default SkyddsrondDashboardRoute;\n","export default Ember.HTMLBars.template({\"id\":\"CQfBWscd\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-container\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"notices-graph\\\",null,[[\\\"all\\\",\\\"overdue\\\",\\\"not_solved\\\"],[[24,[\\\"model\\\",\\\"notices\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"model\\\",\\\"overdue\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"model\\\",\\\"not_solved\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.dashboard.pie_all\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"skyddsrond\\\",\\\"meta\\\",\\\"count\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notices-graph-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"notices-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\"],[[24,[\\\"data\\\",\\\"total\\\"]],\\\"pie\\\",[24,[\\\"pie_colors\\\"]],[24,[\\\"pie_options\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.dashboard.timeline\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[24,[\\\"model\\\",\\\"skyddsrond\\\",\\\"meta\\\",\\\"count\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"export\\\",\\\"options\\\"],[[24,[\\\"data\\\",\\\"by_date\\\"]],true,[24,[\\\"chart_options\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.dashboard.no_info\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/skyddsronds/dashboard/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/notice-array/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondsNoticeArrayComponent;\n\nimport Ember from 'ember';\n\nSkyddsrondsNoticeArrayComponent = Ember.Component.extend({\n    notices: Em.computed('model', 'refresh', function () {\n        var field, model;\n        model = this.get('model');\n        field = this.get('field');\n        return model.get(field.name + '_notices');\n    }),\n    columns: Ember.computed('form', function () {\n        var c, form;\n        c = this.get('Collector');\n        form = c.field(this.get('field.form'), this.get('field.name') + '_notices').options.form;\n        return c.fieldArray(form).mapBy('name');\n    }),\n    showNotices: false,\n    actions: {\n        add: function () {\n            if (this.get('addNotice')) {\n                return this.addNotice('$med_anm', this.get('field.name'));\n            }\n        },\n        showNotices: function () {\n            return this.toggleProperty('showNotices');\n        },\n    },\n});\n\nexport default SkyddsrondsNoticeArrayComponent;\n","export default Ember.HTMLBars.template({\"id\":\"n/ZpG2S7\",\"block\":\"{\\\"symbols\\\":[\\\"notice\\\",\\\"column\\\",\\\"column\\\",\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notice-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"notices\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"b\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"showNotices\\\"]],[8],[1,[28,\\\"t\\\",[\\\"notice_array.show_notices\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move \\\",[28,\\\"if\\\",[[24,[\\\"showNotices\\\"]],\\\"move-CollapseArrow\\\",\\\"move-ExpandArrow\\\"],null]]]],[8],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Plus pull-right text-success icon-big\\\"],[12,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"notice_array.add_notice\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"add\\\"]],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showNotices\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notice-table-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive table-hover\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"report.notice.\\\",[23,3,[]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"notices\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"notice\\\",[23,2,[]],[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[14,4],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/skyddsronds/notice-array/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/notices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondReportController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nSkyddsrondReportController = GeneralReportController.extend({\n    form: 'notice',\n    showColumns: ['fixbydate', 'project', 'title', 'desc', 'status', 'pic', 'user'],\n    queryParams: ['fixbydate', 'status', 'user', 'project'],\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideEdit: true,\n        }),\n        sortByColumn: 'fixbydate',\n    }),\n    filters: Em.A([]),\n    status: 'all',\n});\n\nexport default SkyddsrondReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/notices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondReportRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nSkyddsrondReportRoute = GeneralReportRoute.extend({\n    form: 'notice',\n    queryParams: {\n        fixbydate: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('notice', params);\n    },\n});\n\nexport default SkyddsrondReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"XEEw5X7Z\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/skyddsronds/notices/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondReportController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nSkyddsrondReportController = GeneralReportController.extend({\n    form: 'skyddsrond',\n    showColumns: ['date', 'project', 'user', 'foreman_sign', 'safety_officer_sign'],\n    queryParams: ['date', 'status', 'user', 'project'],\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideEdit: true,\n            hideHistory: true,\n        }),\n        sortByColumn: 'project',\n    }),\n    filters: Em.A([]),\n});\n\nexport default SkyddsrondReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondReportRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nSkyddsrondReportRoute = GeneralReportRoute.extend({\n    form: 'skyddsrond',\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('skyddsrond', params);\n    },\n});\n\nexport default SkyddsrondReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"2Oclos1I\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/skyddsronds/report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondsRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSkyddsrondsRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default SkyddsrondsRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/saved/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetySavedController;\n\nimport Ember from 'ember';\n\nimport pdf_mixin from '../../../mixins/pdf-export';\n\nSiteSafetySavedController = Ember.Controller.extend(pdf_mixin, {\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    queryParams: ['email'],\n    email: false,\n    fields: Ember.computed('model', function () {\n        var fields;\n        fields = this.get('Collector').fieldArray(this.get('model.constructor.modelName'));\n        return fields.reject(function (item) {\n            item.ext = item.name;\n            return false;\n        });\n    }),\n    afterSave: Ember.computed('model', function () {\n        return 'site_safety.' + this.get('model.constructor.modelName') + '.graphs';\n    }),\n    actions: {\n        //        setEmail: (value) ->\n        //            @get('store').findRecord('user', value.get('id'), {reload: true}).then (user) =>\n        //                user.validate(['email']).then =>\n        //                    error = user.get('errors').errorsFor('email')\n        //                    email = user.get('email')\n        //                    if error.length > 0\n        //                        @set 'email_error', error\n        //                    else if email\n        //                        @set 'email', email\n        send_email: function () {\n            var email, fields;\n            email = this.get('address');\n            if (!email) {\n                return this.set('email_error', this.get('intl').t('validation.errors.mandatory'));\n            } else if (\n                email &&\n                !/^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i.test(\n                    email,\n                )\n            ) {\n                return this.set('email_error', this.get('intl').t('validation.errors.email'));\n            } else {\n                this.set('loading', true);\n                fields = this.get('fields').reject(function (item) {\n                    if (item.type === 'databasearray') {\n                        return true;\n                    }\n                });\n                return this.formatCollectorFieldsToPdfArray(fields, this.get('model')).then(\n                    (data) => {\n                        var element;\n                        element = this.createPdfTableElement(['name', 'value'], data, ['', '']);\n                        return this.createPdfFromElements([element], 'base64').then((pdf) => {\n                            var c, intl;\n                            c = this.get('Collector');\n                            intl = this.get('intl');\n                            return c\n                                .ttapi({\n                                    method: 'post',\n                                    url: 'sendReportAsEmail',\n                                    data: {\n                                        to_address: this.get('address'),\n                                        email: pdf,\n                                        header: intl.t('skyddsrond.email.title', {\n                                            date: moment(this.get('model.date')).format('L'),\n                                        }),\n                                        content: this.get('email_content'),\n                                    },\n                                })\n                                .then((ret) => {\n                                    this.set('email', false);\n                                    return this.set('loading', false);\n                                });\n                        });\n                    },\n                );\n            }\n        },\n        removeModal: function () {\n            return this.set('email', false);\n        },\n    },\n});\n\nexport default SiteSafetySavedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/saved/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondSavedRoute;\n\nimport Ember from 'ember';\n\nimport toTop from '../../../mixins/reset-scroll';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSkyddsrondSavedRoute = Ember.Route.extend(toTop, AuthenticatedRouteMixin, {\n    store: Ember.inject.service(),\n    model: function (params) {\n        return this.get('store').findRecord('skyddsrond', params.id, {\n            include: true,\n        });\n    },\n});\n\nexport default SkyddsrondSavedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"qfXFWs3H\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saved.title\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[23,1,[\\\"name\\\"]],[23,1,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n                    : \\\"],[9],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[[23,1,[]],[23,1,[\\\"form\\\"]],[24,[\\\"model\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\"],[\\\"a\\\",\\\"btn btn-m-link btn-lg btn-block\\\",\\\"skyddsronds.dashboard\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"query\\\"],[\\\"a\\\",\\\"btn btn-m-link btn-lg btn-block\\\",[28,\\\"hash\\\",null,[[\\\"email\\\"],[true]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"skyddsrond.saved.send_email\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"email\\\"]],true],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-container\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup-header\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.saved.modal.title\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross add-modal-cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup-content\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[24,[\\\"email_error\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.saved.modal.email_address\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"email_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[22,\\\"email_error\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"placeholder\\\"],[\\\"text\\\",\\\"form-control\\\",[24,[\\\"address\\\"]],[28,\\\"t\\\",[\\\"skyddsrond.saved.modal.address.placeholder\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"email_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.saved.modal.text\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"class\\\",\\\"rows\\\",\\\"value\\\",\\\"placeholder\\\"],[\\\"form-control\\\",6,[24,[\\\"email_content\\\"]],[28,\\\"t\\\",[\\\"skyddsrond.saved.modal.content.placeholder\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send_email\\\"]],[8],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"skyddsrond.saved.modal.send_email\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n                \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-overlay\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/skyddsronds/saved/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/archive/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportListController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport pdfmixin from '../../../mixins/worksitediary_pdf';\n\nTaxmanTaxreportListController = GeneralReportController.extend(pdfmixin, {\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    mappedFilters: Em.computed('filter_value', function () {\n        var arr;\n        arr = [];\n        arr.push({\n            name: 'export_month',\n            value: this.get('filter_value'),\n        });\n        return arr;\n    }),\n    //get 36 previous months\n    months: Ember.computed(function () {\n        var count, montharr, obj;\n        count = 0;\n        montharr = [];\n        while (count < 36) {\n            obj = {\n                id: moment().subtract(count, 'months').format('YYYY-MM'),\n                name: moment().subtract(count++, 'months').format('MMMM YYYY'),\n            };\n            montharr.push(obj);\n        }\n        return montharr;\n    }),\n});\n\nexport default TaxmanTaxreportListController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/archive/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportListRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nTaxmanTaxreportListRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    queryParams: {\n        export_month: {\n            refreshModel: true,\n        },\n    },\n});\n\nexport default TaxmanTaxreportListRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Jx9N3D6D\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[\\\"form-control\\\",[24,[\\\"months\\\"]],[24,[\\\"filter_value\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.taxman_reports\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"form\\\",\\\"order\\\",\\\"query\\\"],[\\\"export_taxman\\\",\\\"date-\\\",[24,[\\\"mappedFilters\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.taxman_contract_reports\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"form\\\",\\\"order\\\",\\\"query\\\"],[\\\"export_taxman_urakka\\\",\\\"date-\\\",[24,[\\\"mappedFilters\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/archive/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListAddController;\n\nimport Ember from 'ember';\n\nTaxmanContractListAddController = Ember.Controller.extend({\n    launchProjectUpdate: false,\n    Collector: Em.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    employers: Ember.computed(function () {\n        return this.store.findAll('employer');\n    }),\n    selectedMonth: 0,\n    contracts: Em.A([]),\n    mandatoryFields: Em.computed(function () {\n        var field, field_obj, fields, tmp_fields;\n        tmp_fields = [];\n        fields = this.get('Collector').fields('urakkaraportointi');\n        for (field in fields) {\n            field_obj = fields[field];\n            if (\n                field !== 'contract_month' &&\n                field_obj.features != null &&\n                field_obj.features.mandatory\n            ) {\n                tmp_fields.push(field);\n            }\n        }\n        return tmp_fields;\n    }),\n    //get 36 previous months\n    months: Ember.computed(function () {\n        var count, montharr, obj;\n        count = 0;\n        montharr = [];\n        while (count < 36) {\n            obj = {\n                id: count,\n                name: moment().subtract(count++, 'months').format('MMMM YYYY'),\n            };\n            montharr.push(obj);\n        }\n        return montharr;\n    }),\n    flipped_options: Ember.computed(function () {\n        var values;\n        values = Em.A([]);\n        values.push({\n            id: '1',\n            name: this.get('intl').t('general.yes'),\n        });\n        values.push({\n            id: '2',\n            name: this.get('intl').t('general.no'),\n        });\n        return values;\n    }),\n    contract_type_options: Ember.computed(function () {\n        var values;\n        values = Em.A([]);\n        values.push({\n            id: '1',\n            name: this.get('intl').t('taxman.contract.add.contract_type.1'),\n        });\n        values.push({\n            id: '2',\n            name: this.get('intl').t('taxman.contract.add.contract_type.2'),\n        });\n        //values.push( {id:'4', name:@get('intl').t(\"taxman.contract.add.contract_type.4\")} ) Not supported properly currently\n        return values;\n    }),\n    okToAdd: Ember.computed('selectedMonth', 'selectedProject', 'contract_number', function () {\n        var contractNumberSet, monthSet, projectSet;\n        monthSet = this.get('selectedMonth') != null && this.get('selectedMonth') !== '';\n        projectSet = this.get('selectedProject') != null && this.get('selectedProject') !== '';\n        contractNumberSet =\n            this.get('contract_number') != null && this.get('contract_number') !== '';\n        if (!monthSet) {\n            return false;\n        }\n        if (!projectSet) {\n            return false;\n        }\n        if (contractNumberSet && !projectSet) {\n            return false;\n        }\n        return true;\n    }),\n    updateContract: function (contract) {\n        var contract_number, params, project;\n        project = this.get('selectedProject');\n        contract_number = this.get('contract_number');\n        if ((!project && !contract_number) || !contract.contract_employer) {\n            return;\n        }\n        params = {\n            contract_employer: contract.contract_employer.get('id'),\n        };\n        if (project) {\n            params.contract_project = project.get('id');\n        } else if (contract_number) {\n            params.contract_number = contract_number;\n        }\n        params.order = 'contract_month-';\n        params.limit = 12;\n        return this.store.query('urakkaraportointi', params).then((all_records) => {\n            var getLatestRecordEndDate, records;\n            // EP-8664 change logic to use previous data instead of previous month\n            // filter the latest contract end date\n            getLatestRecordEndDate = all_records.mapBy('contract_end_date').sort().reverse();\n            records = all_records.filterBy('contract_end_date', getLatestRecordEndDate[0]);\n            Em.set(contract, 'old_contracts', all_records); // show old contracts\n            // if yhere are no records, display empty values\n            if (records.get('length') === 0) {\n                Em.set(contract, 'contract_billed', null);\n                Em.set(contract, 'contract_total_price', null);\n                Em.set(contract, 'contract_start_date', null);\n                return Em.set(contract, 'contract_end_date', null);\n            } else {\n                // if there are records, use the latest by contract_end_date\n                Em.set(contract, 'contract_billed', records.get('firstObject.contract_billed'));\n                Em.set(\n                    contract,\n                    'contract_total_price',\n                    records.get('firstObject.contract_total_price'),\n                );\n                Em.set(\n                    contract,\n                    'contract_start_date',\n                    records.get('firstObject.contract_start_date'),\n                );\n                Em.set(contract, 'contract_end_date', records.get('firstObject.contract_end_date'));\n                Em.set(contract, 'contract_flipped', records.get('firstObject.contract_flipped'));\n                Em.set(contract, 'contract_type', records.get('firstObject.contract_type'));\n                return this.set('contract_number', records.get('firstObject.contract_number'));\n            }\n        });\n    },\n    actions: {\n        addNewContract: function () {\n            var obj;\n            obj = {\n                employer: this.get('model.contract_employer'),\n                flipped_tax: this.get('model.contract_flipped'),\n                contract_type: this.get('model.contract_type'),\n                first_worker: this.get('model.contract_first_worker'),\n                total_price: this.get('model.contract_total_price'),\n                contract_start: this.get('model.contract_start_date'),\n                contract_end: this.get('model.contract_end_date'),\n                billed: this.get('model.contract_billed'),\n                description: this.get('model.contract_description'),\n            };\n            return this.get('contracts').pushObject(obj);\n        },\n        save: function () {\n            var i, missingFields, records, self, validated;\n            self = this;\n            this.set('spinIsLoading', true);\n            this.set('disabled', true);\n            this.set('errorMessage', null);\n            records = [];\n            missingFields = [];\n            i = 0;\n            this.get('contracts').forEach((contract) => {\n                var contract_record, currentContractMissingFields, field, j, len, ref;\n                currentContractMissingFields = [];\n                ref = this.get('mandatoryFields');\n                // try to validate\n                for (j = 0, len = ref.length; j < len; j++) {\n                    field = ref[j];\n                    if (\n                        field === 'contract_first_worker' &&\n                        contract['contract_type'] === '2' &&\n                        contract[field] === void 0\n                    ) {\n                        currentContractMissingFields.push(field);\n                    } else if (field !== 'contract_first_worker' && contract[field] === void 0) {\n                        currentContractMissingFields.push(field);\n                    }\n                }\n                missingFields[i] = currentContractMissingFields;\n                contract_record = self.store.createRecord('urakkaraportointi', {\n                    contract_employer: contract.contract_employer,\n                    contract_end_date: contract.contract_end_date,\n                    contract_first_worker: contract.contract_first_worker,\n                    contract_flipped: contract.contract_flipped,\n                    contract_month: moment()\n                        .subtract(self.get('selectedMonth'), 'months')\n                        .format('YYYY-MM'),\n                    contract_project: self.get('selectedProject'),\n                    contract_number: this.get('contract_number'),\n                    contract_total_price: contract.contract_total_price,\n                    contract_billed: contract.contract_billed,\n                    contract_start_date: contract.contract_start_date,\n                    contract_type: contract.contract_type,\n                    contract_description: contract.contract_description,\n                });\n                records.push(contract_record);\n                return i++;\n            });\n            this.set('missingFields', missingFields);\n            validated = records.invoke('validate');\n            return Em.RSVP.Promise.all(validated).then(() => {\n                var saved_records;\n                if (records.filterBy('isValid', false).length > 0) {\n                    this.set('errorMessage', this.get('intl').t('general_add.error'));\n                    this.set('spinIsLoading', false);\n                    this.set('disabled', false);\n                    return;\n                }\n                saved_records = records.invoke('save');\n                return Em.RSVP.Promise.all(saved_records)\n                    .then(() => {\n                        this.set('spinIsLoading', false);\n                        this.set('disabled', false);\n                        this.set('contracts', Em.A([]));\n                        return this.transitionToRoute('taxman.contract-list.index');\n                    })\n                    .catch((reason) => {\n                        this.set('errorMessage', reason.errors[0].error_msg);\n                        self.set('spinIsLoading', false);\n                        return self.set('disabled', false);\n                    });\n            });\n        },\n        removeContract: function (contract) {\n            return this.get('contracts').removeObject(contract);\n        },\n        setEmployer: function (contract, value) {\n            if (Ember.typeOf(value) === 'instance') {\n                Em.set(contract, 'contract_employer', value);\n                return this.updateContract(contract);\n            }\n        },\n        setProject: function (value) {\n            return this.set('selectedProject', value);\n        },\n    },\n});\n\nexport default TaxmanContractListAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nTaxmanContractListAddRoute = GeneralAddRoute.extend({\n    modelName: 'urakkaraportointi',\n    controllerName: 'taxman/contract-list/add',\n    //    model: ->\n    //        self = @\n    //        params = {}\n    //        params.sideload = true\n    //        newest = @.store.query('urakkaraportointi', params)\n    //        newest.then ->\n    //            return newest.get(\"firstObject\")\n    actions: {\n        willTransition: function (transition) {\n            this.controller.set('selectedProject', null);\n            this.controller.set('contracts', Em.A([]));\n            return this.controller.toggleProperty('launchProjectUpdate');\n        },\n    },\n});\n\nexport default TaxmanContractListAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"uq3Itezd\",\"block\":\"{\\\"symbols\\\":[\\\"contract\\\",\\\"index\\\",\\\"field\\\",\\\"contract\\\",\\\"old_contract\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.contract-list\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"taxman.contract-list\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.project\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"urakkaraportointi.contract_project\\\"],[[\\\"change\\\"],[\\\"setProject\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.contract_number\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"value\\\"],[\\\"form-control input-lg\\\",\\\"contract_number\\\",[24,[\\\"contract_number\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.month\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"name\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[\\\"form-control input-lg\\\",\\\"contract_month\\\",[24,[\\\"months\\\"]],[24,[\\\"selectedMonth\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"okToAdd\\\"]]],null,{\\\"statements\\\":[[7,\\\"h3\\\",true],[10,\\\"id\\\",\\\"taxman-contract-not-enough-info\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.please_select_project_and_month\\\"],null],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"okToAdd\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"contracts\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"close\\\"],[12,\\\"aria-label\\\",[28,\\\"t\\\",[\\\"general.close\\\"],null]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeContract\\\",[23,4,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.employer\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_employer\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"change\\\",\\\"disabled\\\"],[\\\"urakkaraportointi.contract_employer\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setEmployer\\\",[23,4,[]]],null],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.flipped_tax\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_flipped\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"name\\\",\\\"options\\\",\\\"value\\\",\\\"disabled\\\",\\\"prompt\\\"],[\\\"form-control\\\",\\\"contract_flipped\\\",[24,[\\\"flipped_options\\\"]],[23,4,[\\\"contract_flipped\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.contract_type\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_type\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"name\\\",\\\"options\\\",\\\"value\\\",\\\"disabled\\\",\\\"prompt\\\"],[\\\"form-control\\\",\\\"contract_type\\\",[24,[\\\"contract_type_options\\\"]],[23,4,[\\\"contract_type\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.total_price\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_total_price\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"number\\\",\\\"contract_total_price\\\",\\\"form-control\\\",[23,4,[\\\"contract_total_price\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"contract_type\\\"]],\\\"2\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.first_worker\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_first_worker\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"form-control\\\",\\\"contract_first_worker\\\",[23,4,[\\\"contract_first_worker\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.contract_start\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_start_date\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"form-control\\\",\\\"contract_start_date\\\",[23,4,[\\\"contract_start_date\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.contract_end\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_end_date\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"form-control\\\",\\\"contract_end_date\\\",[23,4,[\\\"contract_end_date\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.billed\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_billed\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"number\\\",\\\"contract_billed\\\",\\\"form-control\\\",[23,4,[\\\"contract_billed\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.description\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_description\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"text\\\",\\\"contract_description\\\",\\\"form-control\\\",[23,4,[\\\"contract_description\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,4,[\\\"old_contracts\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.previous_rows\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.month\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.billed\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.total_price\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,4,[\\\"old_contracts\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[\\\"contract_month\\\",\\\"urakkaraportointi\\\",[23,5,[\\\"contract_month\\\"]]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,5,[\\\"contract_billed\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,5,[\\\"contract_total_price\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"name\\\",\\\"add_new_contract\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addNewContract\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.add_new\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"missingFields\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"missingFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"formeditor.form\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"add\\\",[[23,2,[]],1],null],false],[0,\\\", \\\"],[1,[28,\\\"t\\\",[\\\"worktime.validation.mandatory\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"urakkaraportointi.\\\",[23,3,[]]],null]],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[22,\\\"errorMessage\\\"],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"spinIsLoading\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/contract-list/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nTaxmanContractListEditController = GeneralAddController.extend({\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n});\n\nexport default TaxmanContractListEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nTaxmanContractListEditRoute = GeneralAddRoute.extend({\n    modelName: 'urakkaraportointi',\n    controllerName: 'taxman/contract-list/edit',\n    edit: true,\n    afterSave: 'taxman.contract-list.index',\n});\n\nexport default TaxmanContractListEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"tJ2jVDb3\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/contract-list/edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListHistoryRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nTaxmanContractListHistoryRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default TaxmanContractListHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"j+Rs3KlI\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"project\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/contract-list/history/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nTaxmanContractListIndexController = GeneralReportController.extend({\n    form: 'urakkaraportointi',\n    showColumns: ['contract_project', 'contract_month', 'contract_employer'],\n    queryParams: ['page', 'contract_project', 'contract_month', 'contract_employer'],\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'contract_employer',\n            }),\n            Em.Object.create({\n                field: 'contract_project',\n            }),\n            Em.Object.create({\n                field: 'contract_month',\n            }),\n        ]);\n    }),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: 'taxman.contract-list.edit',\n            historyRoute: 'taxman.contract-list.history',\n        }),\n    }),\n});\n\nexport default TaxmanContractListIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nTaxmanContractListIndexRoute = GeneralReportRoute.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        contract_employer: {\n            refreshModel: true,\n        },\n        contract_project: {\n            refreshModel: true,\n        },\n        contract_month: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('urakkaraportointi', params);\n    },\n});\n\nexport default TaxmanContractListIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"soN1csZ7\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"settings\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/contract-list/index/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"iFgGTfEy\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/contract-list/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nTaxmanRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default TaxmanRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-component/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxreportComponent;\n\nimport Ember from 'ember';\n\nimport ccrep from '../../../components/cc-report';\n\nTaxreportComponent = ccrep.extend({\n    gui: Ember.inject.service(),\n    rowsOnPage: 25,\n    errorPage: 1,\n    dataPage: 1,\n    _error: Ember.computed('error', function () {\n        if (\n            this.startswith(\n                this.get('error_description'),\n                \"Exception: Contact person must be given in buffer['contact_person']\",\n            )\n        ) {\n            return 'contact_missing';\n        }\n        return this.get('error');\n    }),\n    startswith: function (str, startsas) {\n        if (Ember.typeOf(str) !== 'string') {\n            return false;\n        }\n        return str.substring(0, startsas.length) === startsas;\n    },\n    validations: Ember.computed('chartData', function () {\n        var data;\n        this.set('errorPage', 1);\n        this.set('dataPage', 1);\n        if (!this.get('chartData.validations')) {\n            return;\n        }\n        data = this.get('chartData.validations');\n        data.forEach(function (item) {\n            item.message = JSON.parse(item.message);\n            return (item.message.text = new Ember.String.htmlSafe(item.message.text));\n        });\n        return data;\n    }),\n    chartDataOnPage: Ember.computed('dataPage', 'chartData.data', function () {\n        if (!this.get('chartData.data')) {\n            return;\n        }\n        return this.get('chartData.data').slice(\n            (this.get('dataPage') - 1) * this.get('rowsOnPage'),\n            this.get('dataPage') * this.get('rowsOnPage'),\n        );\n    }),\n    validationsOnPage: Ember.computed('errorPage', 'validations', function () {\n        if (!this.get('validations')) {\n            return;\n        }\n        return this.get('validations').slice(\n            (this.get('errorPage') - 1) * this.get('rowsOnPage'),\n            this.get('errorPage') * this.get('rowsOnPage'),\n        );\n    }),\n    datapages: Ember.computed('chartData.data.length', function () {\n        return Math.ceil(this.get('chartData.data.length') / this.get('rowsOnPage'));\n    }),\n    errorpages: Ember.computed('validations.length', function () {\n        return Math.ceil(this.get('validations.length') / this.get('rowsOnPage'));\n    }),\n    tzOffset: Ember.computed.alias('gui.tzOffset'),\n});\n\nexport default TaxreportComponent;\n","export default Ember.HTMLBars.template({\"id\":\"TRHbwloz\",\"block\":\"{\\\"symbols\\\":[\\\"vstyonte\\\",\\\"user\\\",\\\"error\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.taxreport.error.title\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"_error\\\"]],\\\"contact_missing\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"taxman.contactnotset\\\"],null],false],[0,\\\"\\\\n                    \\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"settings.general\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"taxman.set_contact\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"taxman.taxreport.error.type.\\\",[24,[\\\"error\\\"]]],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"validationsOnPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[23,3,[\\\"message\\\",\\\"text\\\"]],false],[0,\\\" \\\"],[4,\\\"link-to\\\",null,[[\\\"query\\\"],[[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[28,\\\"concat\\\",[[23,3,[\\\"message\\\",\\\"form\\\"]],\\\",\\\",[23,3,[\\\"message\\\",\\\"id\\\"]]],null]]]]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"report.taxman.fix_here\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"onlyErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxreport.no_errors\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"rowsOnPage\\\"]],[24,[\\\"errorPage\\\"]],[24,[\\\"errorpages\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"onlyErrors\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"chartDataOnPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.worksite\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"h_worksite_name\\\"]],false],[9],[0,\\\" - \\\"],[1,[23,1,[\\\"h_worksite_number\\\"]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"i\\\",true],[8],[1,[23,1,[\\\"h_worksite_address\\\"]],false],[0,\\\", \\\"],[1,[23,1,[\\\"h_worksite_zip\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"h_worksite_city\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.employer\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"h_employer_name\\\"]],false],[9],[0,\\\" - \\\"],[1,[23,1,[\\\"h_employer_id\\\"]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"i\\\",true],[8],[0,\\\"(\\\"],[1,[23,1,[\\\"h_employer_contact_lastname\\\"]],false],[0,\\\"    \\\"],[1,[23,1,[\\\"h_employer_contact_firstname\\\"]],false],[0,\\\"   \\\"],[1,[23,1,[\\\"h_employer_contact_phone\\\"]],false],[0,\\\"\\\\n                        )\\\"],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"h_relation\\\"]],\\\"2\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.rental\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"h_leasing_name\\\"]],false],[9],[0,\\\" - \\\"],[1,[23,1,[\\\"h_leasing_id\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-striped\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.worker\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.taxnumber\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.birthdate\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.work_period\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"firstname\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"taxnumber\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"moment-format\\\",[[28,\\\"concat\\\",[[23,2,[\\\"birthdate\\\"]],\\\" 00Z\\\"],null]],[[\\\"format\\\"],[\\\"d.m.YYYY\\\"]]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"moment-format\\\",[[28,\\\"concat\\\",[[23,2,[\\\"startdate\\\"]],\\\" 00Z\\\"],null]],[[\\\"format\\\"],[\\\"d.m.YYYY\\\"]]],false],[0,\\\" -\\\\n                                    \\\"],[1,[28,\\\"moment-format\\\",[[28,\\\"concat\\\",[[23,2,[\\\"enddate\\\"]],\\\" 00Z\\\"],null]],[[\\\"format\\\"],[\\\"d.m.YYYY\\\"]]],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                   \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxreport.add.no_data\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"rowsOnPage\\\"]],[24,[\\\"dataPage\\\"]],[24,[\\\"datapages\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport-component/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-contract/add/add-taxreport-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportAddAddTaxreportCompComponent;\n\nimport Ember from 'ember';\n\nimport recordComp from '../../../../collector/record-comp/component';\n\nTaxmanTaxreportAddAddTaxreportCompComponent = recordComp.extend({\n    layoutName: 'collector/record-comp',\n    Collector: Em.inject.service('collector-service'),\n    intl: Em.inject.service(),\n    cc: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    setValues: Em.on('init', function () {\n        var values;\n        values = [];\n        this.set('record', this.get('store').createRecord(this.get('form').dasherize(), values));\n        this.set('record.export_month', this.get('month') + '-01');\n        this.set('record.etype', 'P');\n        return this.set('record_id', 'new');\n    }),\n    save_record: function () {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var c, date, filename, month, promise, record, url;\n            record = this.get('record');\n            month = record.get('export_month');\n            date = moment(month).startOf('month').format('YYYY-MM');\n            c = this.get('Collector');\n            filename = record.get('export_name').replace(/[^A-Za-z0-9]/g, '') || 'verottaja';\n            url =\n                this.get('key') +\n                '?contract_month=' +\n                date +\n                '&format=verottaja&type=' +\n                record.get('etype') +\n                '&code=' +\n                record.get('etype_code');\n            if (record.get('maincontractor')) {\n                url += '&maincontractor=' + record.get('maincontractor.id');\n            }\n            promise = c.ccapi({\n                url: url,\n            });\n            return promise.then((back) => {\n                if (back === '') {\n                    alert(this.get('intl').t('taxman.no_data'));\n                    reject();\n                    return;\n                }\n                /*\n        a = document.createElement 'a'\n        a.href = 'data:attachment/csv;,' + back\n        a.target = '_blank'\n        a.download = filename + '.txt'\n        document.body.appendChild(a)\n        a.click()\n        */\n                record.set('export_period_file', [\n                    {\n                        name: filename + '.txt',\n                        file: 'data:text/plain;base64,' + btoa(back),\n                    },\n                ]);\n                return record.save().then((back) => {\n                    var a, file_url, files;\n                    if (c.testNeeds(['products.autotaxman'])) {\n                        return this.sendTaxmanFile(record, resolve, reject);\n                    }\n                    files = back.get('export_period_file');\n                    file_url = files[0].url;\n                    a = document.createElement('a');\n                    a.href = this.get('Collector').getApiUrl() + file_url;\n                    a.target = '_blank';\n                    a.download = filename + '.txt';\n                    document.body.appendChild(a);\n                    a.click();\n                    return resolve();\n                });\n            });\n        });\n    },\n    sendTaxmanFile: function (record, resolve, reject) {\n        var promise;\n        promise = this.get('cc').request('taxmanurakkasend?id=' + record.get('id'));\n        return promise.then(\n            (result) => {\n                if (result.response.errors.length > 0) {\n                    record.set('status', 'error');\n                    record.set('statusfile', [\n                        {\n                            name: 'response.html',\n                            file: 'data:text/plain;base64,' + btoa(result.html),\n                        },\n                    ]);\n                    return record.save().then(() => {\n                        this.downloadFile(\n                            'response.html',\n                            record.get('statusfile.firstObject.s3url'),\n                        );\n                        this.get('dialogs').alert(this.get('intl').t('taxman.send_failed'));\n                        return reject();\n                    });\n                } else {\n                    record.set('status', 'approved');\n                    if (result.response.deliveryId) {\n                        record.set('etype_code', result.response.deliveryId);\n                    }\n                    record.save();\n                    this.get('dialogs').alert(this.get('intl').t('taxman.send_success'));\n                    return resolve();\n                }\n            },\n            (e) => {\n                return reject(e);\n            },\n        );\n    },\n    downloadFile: function (filename, url) {\n        var a;\n        a = document.createElement('a');\n        a.href = url;\n        a.target = '_blank';\n        a.download = filename + '.txt';\n        document.body.appendChild(a);\n        return a.click();\n    },\n});\n\nexport default TaxmanTaxreportAddAddTaxreportCompComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-contract/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportIndexController;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportIndexController = Ember.Controller.extend({\n    indexController: Ember.inject.controller('taxman.taxreport-contract.index'),\n    key: Ember.computed.alias('indexController.key'),\n});\n\nexport default TaxmanTaxreportIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-contract/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportAddRoute;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportAddRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n    actions: {\n        fileCreated: function () {\n            return this.transitionTo('taxman.taxreport-contract');\n        },\n        cancel: function () {\n            return this.transitionTo('taxman.taxreport-contract');\n        },\n    },\n});\n\nexport default TaxmanTaxreportAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"ZJE+krKQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export.create_new_taxman_contract\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"taxman/taxreport-contract/add/add-taxreport-comp\\\",null,[[\\\"form\\\",\\\"month\\\",\\\"maincontractor\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\",\\\"key\\\"],[\\\"export_taxman_urakka\\\",[24,[\\\"model\\\",\\\"month\\\"]],[24,[\\\"model\\\",\\\"maincontractor\\\"]],\\\"fileCreated\\\",\\\"cancel\\\",[24,[\\\"key\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport-contract/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-contract/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportIndexController;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportIndexController = Ember.Controller.extend({\n    intl: Ember.inject.service(),\n    selectedMonth: 0,\n    maincontractor: null,\n    projectFilter: null,\n    key: 'vsurakka',\n    contacts: Ember.computed('maincontractor', function () {\n        if (this.get('maincontractor')) {\n            return this.store.query('exportContactPerson', {\n                employer: this.get('maincontractor.id'),\n            });\n        } else {\n            return this.store.findAll('exportContactPerson');\n        }\n    }),\n    contactNotSet: Em.computed('contacts.[]', function () {\n        var contacts;\n        contacts = this.get('contacts').filter((contact) => {\n            return contact.get('isNew') === false;\n        });\n        return contacts.length <= 0;\n    }),\n    settings: Em.Object.create({\n        form: 'export_contact_person',\n    }),\n    //get 36 previous months\n    months: Ember.computed(function () {\n        var count, montharr, obj;\n        count = 0;\n        montharr = [];\n        while (count < 36) {\n            obj = {\n                id: count,\n                name: moment().subtract(count++, 'months').format('MMMM YYYY'),\n            };\n            montharr.push(obj);\n        }\n        return montharr;\n    }),\n    values: Ember.computed('selectedMonth', 'maincontractor', 'projectFilter', function () {\n        var arr, moment_month, month;\n        month = this.get('selectedMonth');\n        moment_month = moment().subtract(month, 'months');\n        arr = [\n            {\n                name: 'contract_month',\n                value: moment_month.format('YYYY-MM'),\n            },\n        ];\n        if (this.get('projectFilter')) {\n            arr.push({\n                name: 'contract_project',\n                value: this.get('projectFilter.id'),\n            });\n        }\n        if (this.get('maincontractor') && !this.get('projectFilter')) {\n            arr.push({\n                name: 'maincontractor',\n                value: this.get('maincontractor.id'),\n            });\n        }\n        return arr;\n    }),\n    employerField: Ember.computed(function () {\n        if (this.get('Collector').testNeedsOne('worktime')) {\n            return 'worktime.employer';\n        } else {\n            return 'presence.employer';\n        }\n    }),\n    projectField: Ember.computed(function () {\n        if (this.get('Collector').testNeedsOne('worktime')) {\n            return 'worktime.project';\n        } else {\n            return 'presence.project';\n        }\n    }),\n    actions: {\n        maincontractorChanged: function (value) {\n            return this.set('maincontractor', value);\n        },\n        refreshPreview: function () {\n            return this.notifyPropertyChange('selectedMonth');\n        },\n        projectChanged: function (value) {\n            return this.set('projectFilter', value);\n        },\n        toggleModal: function (settings, record) {\n            if (record) {\n                this.notifyPropertyChange('contacts');\n            }\n            this.toggleProperty('showModal');\n            return false;\n        },\n    },\n});\n\nexport default TaxmanTaxreportIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-contract/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportIndexRoute;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportIndexRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    actions: {\n        getTaxmanFile: function (filters) {\n            var date_between, date_start;\n            date_between = filters.findBy('name', 'contract_month').value;\n            date_start = date_between.split('_')[0];\n            return this.transitionTo('taxman.taxreport-contract.add', date_start);\n        },\n    },\n});\n\nexport default TaxmanTaxreportIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"llSlygz1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.export_taxman.export_month\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[\\\"form-control add-fields\\\",[24,[\\\"months\\\"]],[24,[\\\"selectedMonth\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"modules.multiple_companies\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"employerField\\\"]]],[[\\\"change\\\"],[\\\"maincontractorChanged\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"projectField\\\"]]],[[\\\"change\\\",\\\"value\\\"],[\\\"projectChanged\\\",[24,[\\\"projectFilter\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"contactNotSet\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"taxman.contactnotset\\\"],null],false],[0,\\\"\\\\n    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"taxman.set_contact\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"getTaxmanFile\\\",[24,[\\\"values\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.get_taxman_file\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"refreshPreview\\\"]],[8],[1,[28,\\\"t\\\",[\\\"taxman.report.preview.refresh\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"taxman/taxreport-component\\\",null,[[\\\"key\\\",\\\"query\\\",\\\"onlyErrors\\\",\\\"requestMethod\\\"],[[24,[\\\"key\\\"]],[24,[\\\"values\\\"]],true,\\\"POST\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"taxman.add_contact\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"settings\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"settings\\\"]],\\\"toggleModal\\\",\\\"toggleModal\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport-contract/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-contract/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportContractRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nTaxmanTaxreportContractRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default TaxmanTaxreportContractRoute;\n","export default Ember.HTMLBars.template({\"id\":\"2EIAHxVQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport-contract/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport/add/add-taxreport-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportAddAddTaxreportCompComponent;\n\nimport Ember from 'ember';\n\nimport recordComp from '../../../../collector/record-comp/component';\n\nTaxmanTaxreportAddAddTaxreportCompComponent = recordComp.extend({\n    layoutName: 'collector/record-comp',\n    Collector: Em.inject.service('collector-service'),\n    cc: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    intl: Em.inject.service(),\n    didReceiveAttrs: function () {\n        var values;\n        values = [];\n        this.set('record', this.get('store').createRecord(this.get('form').dasherize(), values));\n        this.set('record.export_month', this.get('month'));\n        this.set('record.etype', 'P');\n        return this.set('record_id', 'new');\n    },\n    save_record: function () {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var c, date, filename, month, promise, record, url;\n            record = this.get('record');\n            month = record.get('export_month');\n            date =\n                moment(month).startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment(month).endOf('month').format('YYYY-MM-DD');\n            c = this.get('Collector');\n            filename = record.get('export_name').replace(/[^A-Za-z0-9]/g, '') || 'verottaja';\n            url =\n                this.get('key') +\n                '?date=' +\n                date +\n                '&format=verottaja&type=' +\n                record.get('etype') +\n                '&code=' +\n                record.get('etype_code');\n            if (record.get('maincontractor')) {\n                url += '&maincontractor=' + record.get('maincontractor.id');\n            }\n            promise = c.ccapi({\n                url: url,\n            });\n            return promise.then((back) => {\n                if (back === '') {\n                    alert(this.get('intl').t('taxman.no_data'));\n                    reject();\n                    return;\n                }\n                /*\n        a = document.createElement 'a'\n        a.href = 'data:attachment/csv;,' + back\n        a.target = '_blank'\n        a.download = filename + '.txt'\n        document.body.appendChild(a)\n        a.click()\n        */\n                record.set('export_period_file', [\n                    {\n                        name: filename + '.txt',\n                        file: 'data:text/plain;base64,' + btoa(back),\n                    },\n                ]);\n                return record.save().then((back) => {\n                    var a, file_url, files;\n                    if (c.testNeeds(['products.autotaxman'])) {\n                        return this.sendTaxmanFile(record, resolve, reject);\n                    }\n                    files = back.get('export_period_file');\n                    file_url = files[0].url;\n                    a = document.createElement('a');\n                    a.href = this.get('Collector').getApiUrl() + file_url;\n                    a.target = '_blank';\n                    a.download = filename + '.txt';\n                    document.body.appendChild(a);\n                    a.click();\n                    return resolve();\n                });\n            });\n        });\n    },\n    sendTaxmanFile: function (record, resolve, reject) {\n        var promise;\n        promise = this.get('cc').request('taxmansend?id=' + record.get('id'));\n        return promise.then(\n            (result) => {\n                if (result.response.errors.length > 0) {\n                    record.set('status', 'error');\n                    record.set('statusfile', [\n                        {\n                            name: 'response.html',\n                            file: 'data:text/plain;base64,' + btoa(result.html),\n                        },\n                    ]);\n                    return record.save().then(() => {\n                        this.downloadFile(\n                            'response.html',\n                            record.get('statusfile.firstObject.s3url'),\n                        );\n                        this.get('dialogs').alert(this.get('intl').t('taxman.send_failed'));\n                        return reject();\n                    });\n                } else {\n                    record.set('status', 'approved');\n                    if (result.response.deliveryId) {\n                        record.set('etype_code', result.response.deliveryId);\n                    }\n                    record.save();\n                    this.get('dialogs').alert(this.get('intl').t('taxman.send_success'));\n                    return resolve();\n                }\n            },\n            (e) => {\n                return reject(e);\n            },\n        );\n    },\n    downloadFile: function (filename, url) {\n        var a;\n        a = document.createElement('a');\n        a.href = url;\n        a.target = '_blank';\n        a.download = filename + '.txt';\n        document.body.appendChild(a);\n        return a.click();\n    },\n});\n\nexport default TaxmanTaxreportAddAddTaxreportCompComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportAddController;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportAddController = Ember.Controller.extend({\n    indexController: Ember.inject.controller('taxman.taxreport.index'),\n    key: Ember.computed.alias('indexController.key'),\n});\n\nexport default TaxmanTaxreportAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportAddRoute;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportAddRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n    actions: {\n        fileCreated: function () {\n            return this.transitionTo('taxman.taxreport');\n        },\n        cancel: function () {\n            return this.transitionTo('taxman.taxreport');\n        },\n    },\n});\n\nexport default TaxmanTaxreportAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"oAUz5yj9\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export.create_new_taxman\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"taxman/taxreport/add/add-taxreport-comp\\\",null,[[\\\"form\\\",\\\"month\\\",\\\"maincontractor\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\",\\\"key\\\"],[\\\"export_taxman\\\",[24,[\\\"model\\\",\\\"month\\\"]],[24,[\\\"model\\\",\\\"maincontractor\\\"]],\\\"fileCreated\\\",\\\"cancel\\\",[24,[\\\"key\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportIndexController;\n\nimport Ember from 'ember';\n\nimport config from '../../../../config/environment';\n\nTaxmanTaxreportIndexController = Ember.Controller.extend({\n    session: Em.inject.service(),\n    exportFile: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    selectedMonth: 0,\n    maincontractor: null,\n    projectFilter: null,\n    generatingPdf: false,\n    key: 'vstyonte',\n    contacts: Em.computed('maincontractor', function () {\n        if (this.get('maincontractor')) {\n            return this.store.query('exportContactPerson', {\n                employer: this.get('maincontractor.id'),\n            });\n        } else {\n            return this.store.findAll('exportContactPerson');\n        }\n    }),\n    contactNotSet: Em.computed('contacts.[]', function () {\n        var contacts;\n        contacts = this.get('contacts').filter((contact) => {\n            return contact.get('isNew') === false;\n        });\n        return contacts.length <= 0;\n    }),\n    //get 36 previous months\n    months: Ember.computed(function () {\n        var count, montharr, obj;\n        count = 0;\n        montharr = [];\n        while (count < 36) {\n            obj = {\n                id: count,\n                name: moment().subtract(count++, 'months').format('MMMM YYYY'),\n            };\n            montharr.push(obj);\n        }\n        return montharr;\n    }),\n    settings: Em.Object.create({\n        form: 'export_contact_person',\n    }),\n    values: Ember.computed(\n        'selectedMonth',\n        'maincontractor',\n        'projectFilter',\n        'ownerFilter',\n        function () {\n            var arr, moment_month, month;\n            month = this.get('selectedMonth');\n            moment_month = moment().subtract(month, 'months');\n            arr = [\n                {\n                    name: 'date',\n                    value:\n                        moment_month.startOf('month').format('YYYY-MM-DD') +\n                        '_' +\n                        moment_month.endOf('month').format('YYYY-MM-DD'),\n                },\n            ];\n            if (this.get('projectFilter')) {\n                arr.push({\n                    name: 'project',\n                    value: this.get('projectFilter.id'),\n                });\n            }\n            if (this.get('maincontractor') && !this.get('projectFilter')) {\n                arr.push({\n                    name: 'maincontractor',\n                    value: this.get('maincontractor.id'),\n                });\n            }\n            if (this.get('ownerFilter')) {\n                arr.push({\n                    name: 'owner',\n                    value: this.get('ownerFilter.id'),\n                });\n            }\n            return arr;\n        },\n    ),\n    employerField: Ember.computed(function () {\n        if (this.get('Collector').testNeedsOne('worktime')) {\n            return 'worktime.employer';\n        } else {\n            return 'presence.employer';\n        }\n    }),\n    projectField: Ember.computed(function () {\n        if (this.get('Collector').testNeedsOne('worktime')) {\n            return 'worktime.project';\n        } else {\n            return 'presence.project';\n        }\n    }),\n    actions: {\n        refreshPreview: function () {\n            // Kikka miljoona is NO HAX\n            return this.notifyPropertyChange('selectedMonth');\n        },\n        maincontractorChanged: function (value) {\n            return this.set('maincontractor', value);\n        },\n        projectChanged: function (value) {\n            return this.set('projectFilter', value);\n        },\n        ownerChanged: function (value) {\n            return this.set('ownerFilter', value);\n        },\n        toggleModal: function (settings, record) {\n            if (record) {\n                this.notifyPropertyChange('contacts');\n            }\n            this.toggleProperty('showModal');\n            return false;\n        },\n        exportPdf: function () {\n            var data, filter, filters, i, len, promise, url;\n            this.set('generatingPdf', true);\n            filters = this.get('values');\n            data = {};\n            for (i = 0, len = filters.length; i < len; i++) {\n                filter = filters[i];\n                data[filter['name']] = filter['value'];\n            }\n            if (config.environment === 'development') {\n                data.capi_url = 'http://capi/';\n                data.ttapi_url = 'http://ttapi/';\n            } else {\n                data.capi_url = config.APP.COLLECTOR_API_URL + '/';\n                data.ttapi_url = this.get('ttapi').host + '/';\n            }\n            data.dataType = 'text';\n            data.type = 'base64';\n            data.key = this.get('key');\n            url = 'pdf/taxman';\n            promise = this.get('Collector').ttapi({\n                dataType: 'text',\n                url: url,\n                data: data,\n                type: 'POST',\n            });\n            return promise.then((data) => {\n                this.set('generatingPdf', false);\n                return this.get('exportFile').exportFile(data, 'export', 'pdf', true);\n            });\n        },\n    },\n});\n\nexport default TaxmanTaxreportIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportIndexRoute;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportIndexRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    actions: {\n        getTaxmanFile: function (filters) {\n            var date_between, date_start;\n            date_between = filters.findBy('name', 'date').value;\n            date_start = date_between.split('_')[0];\n            return this.transitionTo('taxman.taxreport.add', date_start);\n        },\n    },\n});\n\nexport default TaxmanTaxreportIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"xbHxZcpZ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.export_taxman.export_month\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[\\\"form-control add-fields\\\",[24,[\\\"months\\\"]],[24,[\\\"selectedMonth\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"modules.multiple_companies\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"employerField\\\"]]],[[\\\"change\\\"],[\\\"maincontractorChanged\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"projectField\\\"]]],[[\\\"change\\\",\\\"value\\\"],[\\\"projectChanged\\\",[24,[\\\"projectFilter\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"project.owner\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"project.owner\\\"],[[\\\"change\\\",\\\"value\\\"],[\\\"ownerChanged\\\",[24,[\\\"ownerFilter\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"help-dialog\\\",null,[[\\\"translation_key\\\",\\\"title\\\",\\\"classNames\\\"],[\\\"taxman.help_dialog\\\",[28,\\\"t\\\",[\\\"taxman.help_title\\\"],null],\\\"inline-block\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"contactNotSet\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"taxman.contactnotset\\\"],null],false],[0,\\\"\\\\n    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"taxman.set_contact\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"getTaxmanFile\\\",[24,[\\\"values\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.get_taxman_file\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"refreshPreview\\\"]],[8],[1,[28,\\\"t\\\",[\\\"taxman.report.preview.refresh\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"disabled\\\",[22,\\\"generatingPdf\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"exportPdf\\\"]],[8],[1,[28,\\\"t\\\",[\\\"taxman.report.export_pdf\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"taxman/taxreport-component\\\",null,[[\\\"key\\\",\\\"query\\\",\\\"requestMethod\\\"],[[24,[\\\"key\\\"]],[24,[\\\"values\\\"]],\\\"POST\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"taxman.add_contact\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"settings\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"settings\\\"]],\\\"toggleModal\\\",\\\"toggleModal\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nTaxmanTaxreportRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default TaxmanTaxreportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"+F6eWNlE\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"q3PgIn2J\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ThereportController;\n\nimport Ember from 'ember';\n\nThereportController = Ember.Controller.extend({\n    intl: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    subMenus: Em.computed('model', function () {\n        var menus;\n        menus = Em.A([]);\n        this.get('model').forEach((item, index) => {\n            return menus.pushObject({\n                text: item.name,\n                link: ['thereport.page', index],\n            });\n        });\n        menus.pushObject({\n            text: this.get('intl').t('thereport.settings'),\n            link: ['thereport.settings'],\n        });\n        return menus;\n    }),\n    saveReport: function (id, name, settings) {\n        return this.get('Collector').ttapi({\n            method: 'post',\n            url: 'comboreport',\n            data: {\n                id: id,\n                name: name,\n                settings: JSON.stringify(settings),\n            },\n        });\n    },\n    removeReport: function (id) {\n        return this.get('Collector').ttapi({\n            method: 'delete',\n            url: 'comboreport/' + id,\n        });\n    },\n});\n\nexport default ThereportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/form-reporteditor/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormReporteditorComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nFormReporteditorComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    showSaveButton: Ember.computed.or('settings.form', 'settings.custom'),\n    rowsPerPageOptions: Em.computed('settings.form', function () {\n        return Em.A([\n            Em.Object.create({\n                id: 25,\n                name: '25',\n            }),\n            Em.Object.create({\n                id: 50,\n                name: '50',\n            }),\n            Em.Object.create({\n                id: 100,\n                name: '100',\n            }),\n        ]);\n    }),\n    forms: Ember.computed(function () {\n        var c, forms, intl, ret, supportedForms;\n        supportedForms = ['worktime', 'abcense', 'bill', 'presence', 'materiallog','orientation'];\n        c = this.get('Collector');\n        intl = this.get('intl');\n        forms = c.forms();\n        ret = Em.A([]);\n        $.each(forms, (key, item) => {\n            if (!(indexOf.call(supportedForms, key) >= 0 || item.name)) {\n                return;\n            }\n            if (item.name) {\n                return ret.pushObject(\n                    Ember.Object.create({\n                        id: key,\n                        name: intl.t(item.name),\n                    }),\n                );\n            } else {\n                return ret.pushObject(\n                    Ember.Object.create({\n                        id: key,\n                        name: intl.t('forms.' + key),\n                    }),\n                );\n            }\n        });\n        return ret;\n    }),\n    columns: Ember.computed('settings.form', 'groupingIsOn', function () {\n        var c, columns, form, groupableColumnsList, groupingIsOn, intl, ret;\n        groupableColumnsList = [\n            'date',\n            'number',\n            'hours',\n            'price',\n            'big_price',\n            'dropdown_values',\n            'dropdown_options',\n        ];\n        c = this.get('Collector');\n        form = this.get('settings.form');\n        intl = this.get('intl');\n        groupingIsOn = this.get('groupingIsOn');\n        if (!form || !c.formExists(form)) {\n            return Em.A([]);\n        }\n        columns = c.fields(form);\n        ret = Em.A([]);\n        ret.push(\n            Ember.Object.create({\n                id: 'id',\n                name: 'id',\n            }),\n        );\n        $.each(columns, (key, item) => {\n            var ref;\n            if (\n                groupingIsOn &&\n                !((ref = item.type), indexOf.call(groupableColumnsList, ref) >= 0)\n            ) {\n                return;\n            }\n            return ret.pushObject(\n                Ember.Object.create({\n                    id: key,\n                    name: c.getTranslationForColumn(form, key),\n                }),\n            );\n        });\n        return ret;\n    }),\n    groupingIsOn: Ember.computed.gt('group_columns.length', 0),\n    groupByColumns: Ember.computed('settings.form', function () {\n        var c, columns, form, groupByColumnsList, ret_arr;\n        groupByColumnsList = ['database', 'dropdown_values', 'dropdown_options', 'date'];\n        c = this.get('Collector');\n        form = this.get('settings.form');\n        if (!form || !c.formExists(form)) {\n            return [];\n        }\n        columns = c.fields(form);\n        ret_arr = Em.A([]);\n        $.each(columns, function (key, item) {\n            var ref;\n            if (((ref = item.type), indexOf.call(groupByColumnsList, ref) >= 0)) {\n                return ret_arr.pushObject(\n                    Ember.Object.create({\n                        id: key,\n                        name: c.getTranslationForColumn(form, key),\n                    }),\n                );\n            }\n        });\n        ret_arr.pushObject(\n            Ember.Object.create({\n                id: 'all',\n                name: this.get('intl').t('general.sum_all'),\n            }),\n        );\n        return ret_arr;\n    }),\n    saveValues: Em.on('init', function () {\n        var settings;\n        settings = Em.Object.create({\n            calendar: this.get('settings.calendar'),\n            editorMode: false,\n            form: this.get('settings.form'),\n            group: this.get('settings.group'),\n            half: this.get('settings.half'),\n            header: this.get('settings.header'),\n            show_columns: this.get('settings.show_columns'),\n            rowsPerPage: this.get('settings.rowsPerPage'),\n        });\n        return this.set('originalSettings', settings);\n    }),\n    columnsObserver: Ember.observer('show_columns', function () {\n        var columns;\n        columns = this.get('show_columns');\n        return this.set('settings.show_columns', columns.join(','));\n    }),\n    groupObserver: Ember.observer('group_columns', function () {\n        var columns;\n        columns = this.get('group_columns');\n        return this.set('settings.group', columns.join(','));\n    }),\n    rowsPerPageObserver: Ember.observer('rowsPerPage', function () {\n        var rowsPerPage;\n        rowsPerPage = this.get('rowsPerPage.firstObject');\n        return this.set('settings.rowsPerPage', rowsPerPage);\n    }),\n    show_columns: Ember.computed('settings.show_columns', function () {\n        var show_columns;\n        show_columns = this.get('settings.show_columns');\n        if (show_columns) {\n            return show_columns.split(',');\n        } else {\n            return [];\n        }\n    }),\n    group_columns: Ember.computed('settings.group', function () {\n        var group;\n        group = this.get('settings.group');\n        if (group) {\n            return group.split(',');\n        } else {\n            return [];\n        }\n    }),\n    rowsPerPage: Ember.computed('settings.rowsPerPage', function () {\n        var rowsPerPage;\n        rowsPerPage = this.get('settings.rowsPerPage');\n        if (rowsPerPage) {\n            return [rowsPerPage];\n        } else {\n            return [25];\n        }\n    }),\n    actions: {\n        save: function () {\n            var settings;\n            settings = this.get('settings');\n            if (!settings.show_columns) {\n                settings.show_columns = 'empty';\n            }\n            if (this.get('save')) {\n                return this.save(settings);\n            }\n        },\n        remove: function () {\n            if (this.get('remove')) {\n                return this.remove(this.get('settings'));\n            }\n        },\n        cancel: function () {\n            var settings;\n            if (this.get('cancel')) {\n                this.cancel(this.get('settings'));\n            }\n            settings = this.get('originalSettings');\n            if (settings) {\n                this.set('settings.calendar', settings.calendar);\n                this.set('settings.form', settings.form);\n                this.set('settings.group', settings.group);\n                this.set('settings.half', settings.half);\n                this.set('settings.header', settings.header);\n                this.set('settings.show_columns', settings.show_columns);\n                return this.set('settings.rowsPerPage', settings.rowsPerPage);\n            }\n        },\n    },\n});\n\nexport default FormReporteditorComponent;\n","export default Ember.HTMLBars.template({\"id\":\"i4oUYqUT\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-horizontal\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"formeditor.header\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control\\\",[24,[\\\"settings\\\",\\\"header\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"settings\\\",\\\"custom\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"formeditor.form\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"select-comp\\\",null,[[\\\"classes\\\",\\\"value\\\",\\\"content\\\",\\\"promptTranslation\\\"],[\\\"form-control\\\",[24,[\\\"settings\\\",\\\"form\\\"]],[24,[\\\"forms\\\"]],\\\"general.select_choose\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"settings\\\",\\\"form\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"settings\\\",\\\"calendar\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"formeditor.group\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"multi-buttons\\\",null,[[\\\"content\\\",\\\"values\\\",\\\"orderable\\\"],[[24,[\\\"groupByColumns\\\"]],[24,[\\\"group_columns\\\"]],true]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"formeditor.columns\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"multi-buttons\\\",null,[[\\\"content\\\",\\\"values\\\",\\\"orderable\\\"],[[24,[\\\"columns\\\"]],[24,[\\\"show_columns\\\"]],true]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.limit\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"multi-buttons\\\",null,[[\\\"content\\\",\\\"values\\\",\\\"orderable\\\",\\\"singleSelectMode\\\"],[[24,[\\\"rowsPerPageOptions\\\"]],[24,[\\\"rowsPerPage\\\"]],false,true]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"formeditor.width\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\"],[\\\"checkbox\\\",[24,[\\\"settings\\\",\\\"half\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"groupingIsOn\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"formeditor.calendar\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\"],[\\\"checkbox\\\",[24,[\\\"settings\\\",\\\"calendar\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSaveButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"formeditor.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\"]],[8],[1,[28,\\\"t\\\",[\\\"formeditor.remove\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn report-cancel\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"formeditor.cancel\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/thereport/form-reporteditor/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/page/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ThereportController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport pdfExport from '../../../mixins/pdf-export';\n\nimport csvExport from '../../../mixins/csv-export';\n\nimport formReport from '../../collector/report-comp/component';\n\nimport ccReport from '../../../components/cc-report';\n\nThereportController = Ember.Controller.extend(pdfExport, csvExport, {\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    sessionGlobals: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    session: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    checked_rows: [],\n    // contains current values of report filters\n    filterValues: null,\n    rowActions: Ember.computed('intl', function () {\n        var arr;\n        arr = [\n            {\n                action: 'editRow',\n                icon: 'move move-Pencil',\n                text: this.get('intl').t('general.edit'),\n            },\n            {\n                action: 'rowHistory',\n                icon: 'move move-Search',\n                text: this.get('intl').t('report.customer.history'),\n            },\n            {\n                action: 'removeRow',\n                icon: 'move move-Delete',\n                text: this.get('intl').t('report.delete_rows'),\n            },\n        ];\n        return arr;\n    }),\n    isMobile: Em.computed(function () {\n        return typeof cordova !== 'undefined' && cordova !== null;\n    }),\n    // these field types can be used as filters\n    filterFieldTypes: ['database', 'status', 'dropdown_options', 'dropdown_values', 'multiselect'],\n    allowedMoreFilters: ['user.worktimegroup'],\n    // this needs to be set for filters to work .. we must use filters for SOME form\n    baseForm: Em.computed(function () {\n        if (this.get('Collector').testNeeds(['bill'])) {\n            return 'bill';\n        } else {\n            return 'worktime';\n        }\n    }),\n    settings: Em.computed.alias('model.settings'),\n    pageid: Em.computed.alias('model.pageid'),\n    selectableFilters: Ember.computed('pageid', function () {\n        var c,\n            field,\n            fields,\n            filterFieldTypes,\n            form,\n            i,\n            len,\n            moreFilter,\n            moreFilterArr,\n            name,\n            ref,\n            ref1,\n            ret;\n        c = this.get('Collector');\n        filterFieldTypes = this.get('filterFieldTypes');\n        form = this.get('baseForm');\n        fields = c.fields(form);\n        ret = Em.A([]);\n        for (name in fields) {\n            field = fields[name];\n            if (((ref = field.type), indexOf.call(filterFieldTypes, ref) >= 0)) {\n                ret.pushObject(\n                    Ember.Object.create({\n                        id: name,\n                        name: c.getTranslationForColumn(form, name),\n                    }),\n                );\n            }\n        }\n        if (this.get('allowedMoreFilters')) {\n            ref1 = this.get('allowedMoreFilters');\n            for (i = 0, len = ref1.length; i < len; i++) {\n                moreFilter = ref1[i];\n                moreFilterArr = moreFilter.split('.');\n                if (c.fieldExists(moreFilterArr[0], moreFilterArr[1])) {\n                    ret.pushObject(\n                        Ember.Object.create({\n                            id: moreFilterArr[0] + '.' + moreFilterArr[1],\n                            name: c.getTranslationForColumn(moreFilterArr[0], moreFilterArr[1]),\n                        }),\n                    );\n                }\n            }\n        }\n        return ret;\n    }),\n    refreshQueries: Ember.on(\n        'init',\n        Ember.observer('filterValues', function () {\n            var reports;\n            reports = this.get('reports');\n            return reports.forEach((item) => {\n                return this.refreshReport(item);\n            });\n        }),\n    ),\n    refreshReport: function (report) {\n        var c, fields, filterValues, form, query, showFiltersArr;\n        filterValues = this.get('filterValues');\n        if (!filterValues) {\n            return;\n        }\n        c = this.get('Collector');\n        form = report.get('form');\n        showFiltersArr = this.get('showFilters').split(',');\n        fields = c.fields(form);\n        query = [];\n        $.each(showFiltersArr, (key, item) => {\n            var field_key, i, len, ref, useField, value;\n            if (fields) {\n                ref = Object.keys(fields);\n                for (i = 0, len = ref.length; i < len; i++) {\n                    field_key = ref[i];\n                    if (fields[field_key].options && fields[field_key].options.form === item) {\n                        useField = this.queryDefinitions(form, fields[field_key].ext);\n                        break;\n                    }\n                }\n            }\n            if (!useField) {\n                useField = this.queryDefinitions(form, item);\n            }\n            if (!fields && report.get('type') !== 'cc') {\n                // this means that report is some broken or empty\n                return;\n            }\n            if (report.get('type') !== 'cc' && !(useField in fields) && item.indexOf('.') === -1) {\n                return;\n            }\n            value = filterValues.findBy('name', item).value;\n            if (!value) {\n                return;\n            }\n            return query.pushObject({\n                name: useField,\n                value: value,\n            });\n        });\n        return report.set('query', query);\n    },\n    // list for special definitions for query parameters .. ie. abcenses has startdate not date field\n    queryDefinitions: function (form, field) {\n        if (form === 'abcense' && field === 'date') {\n            return 'startdate';\n        }\n        return field;\n    },\n    saveSettings: function () {\n        var addReport,\n            c,\n            date_field_found,\n            field,\n            field_name,\n            field_obj,\n            form_fields,\n            i,\n            j,\n            k,\n            len,\n            len1,\n            len2,\n            report,\n            report_field,\n            report_fields,\n            reports,\n            save,\n            saveFields,\n            tmp_field;\n        c = this.get('Collector');\n        reports = this.get('reports');\n        saveFields = [\n            'header',\n            'group',\n            'show_columns',\n            'form',\n            'half',\n            'custom',\n            'type',\n            'key',\n            'calendar',\n            'rowsPerPage',\n        ];\n        save = [];\n        for (i = 0, len = reports.length; i < len; i++) {\n            report = reports[i];\n            // this is calendar-report so make sure that date-column is selected\n            if (report['calendar']) {\n                date_field_found = false;\n                if (report['show_columns']) {\n                    report_fields = report['show_columns'].split(',');\n                } else if (report['group']) {\n                    report_fields = report['group'].split(',');\n                }\n                for (j = 0, len1 = report_fields.length; j < len1; j++) {\n                    report_field = report_fields[j];\n                    tmp_field = c.formField(report['form'], report_field);\n                    if (tmp_field && tmp_field['type'] === 'date') {\n                        date_field_found = true;\n                        break;\n                    }\n                }\n                if (!date_field_found) {\n                    // no datefield was found, iterate through form and get first date-field\n                    form_fields = c.fields(report['form']);\n                    for (field_name in form_fields) {\n                        field_obj = form_fields[field_name];\n                        if (field_obj['type'] === 'date') {\n                            if (report['show_columns']) {\n                                Ember.set(\n                                    report,\n                                    'show_columns',\n                                    report['show_columns'] + ',' + field_name,\n                                );\n                            } else if (report['group']) {\n                                Ember.set(report, 'group', report['group'] + ',' + field_name);\n                            }\n                        }\n                    }\n                }\n            }\n            if (this.Collector.fieldExists(report['form'], 'status')) {\n                Ember.set(report, 'canChangeStatus', true);\n            } else {\n                Ember.set(report, 'canChangeStatus', false);\n            }\n            addReport = {};\n            for (k = 0, len2 = saveFields.length; k < len2; k++) {\n                field = saveFields[k];\n                addReport[field] = report.get(field);\n            }\n            save.push(addReport);\n        }\n        return c.ttapi({\n            method: 'post',\n            url: 'comboreport',\n            data: {\n                id: this.get('pageid'),\n                settings: JSON.stringify({\n                    filters: this.get('showFilters'),\n                    reports: save,\n                }),\n            },\n        });\n    },\n    showAddReportButton: Ember.computed('reports.length', function () {\n        if (this.get('reports.length') <= 6 && this.get('session.currentUser.userlevel') !== '1') {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n    reports: Ember.computed('settings.reports', function () {\n        var reports, ret;\n        ret = Em.A([]);\n        reports = this.get('settings.reports');\n        if (!reports) {\n            return ret;\n        }\n        $.each(reports, (key, item) => {\n            var field, i, len, ref, showcolumns;\n            item['index'] = key;\n            if (Ember.isPresent(item['form']) && !this.get('Collector').formExists(item['form'])) {\n                item.error_in_report = 'Form ' + item.form + ' does not exist in service';\n            }\n            //check group items\n            if (item['group']) {\n                ref = item['group'].split(',');\n                for (i = 0, len = ref.length; i < len; i++) {\n                    field = ref[i];\n                    if (field === 'all') {\n                        continue;\n                    }\n                    if (this.Collector.fieldExists(item.form, field) === false) {\n                        item.error_in_report = 'missing ' + field + ' in ' + item.form + ' form';\n                    }\n                }\n            }\n            if (item.type === 'cc') {\n                item.hideFullExportLink = true;\n            }\n            showcolumns = item['show_columns'] ? item['show_columns'].split(',') : [];\n            if (!item['group'] && this.Collector.fieldExists(item.form, 'status')) {\n                item.useRowInfo = true;\n            }\n            // we need checkbox on grouped report also\n            if (this.Collector.fieldExists(item.form, 'status')) {\n                item.canChangeStatus = true;\n            }\n            return ret.pushObject(Ember.Object.create(item));\n        });\n        return ret;\n    }),\n    showFilters: 'date,project,user',\n    loadFilters: Ember.observer('settings.filters', function () {\n        var _showFilters, filters, i, len, ref, val;\n        filters = this.get('settings.filters');\n        if (!filters) {\n            return 'date,project,user';\n        }\n        _showFilters = Em.A([]);\n        ref = filters.split(',');\n        for (i = 0, len = ref.length; i < len; i++) {\n            val = ref[i];\n            _showFilters.pushObject(val);\n        }\n        this.set('_showFilters', _showFilters);\n        return this.set('showFilters', filters);\n    }),\n    updateShowFilters: Ember.observer('_showFilters.[]', function () {\n        return this.set(\n            'showFilters',\n            Em.A(['date']).addObjects(this.get('_showFilters')).join(','),\n        );\n    }),\n    // default date-range for calendar\n    dateRange: Em.computed(function () {\n        return (\n            moment().startOf('month').format('YYYY-MM-DD') +\n            '_' +\n            moment().endOf('month').format('YYYY-MM-DD')\n        );\n    }),\n    actions: {\n        fullScreen: function () {\n            this.get('gui').togglefullScreen();\n            return false;\n        },\n        editorOn: function (report) {\n            report.set('editorMode', true);\n            return false;\n        },\n        editorOff: function (report) {\n            report.set('editorMode', false);\n            this.saveSettings();\n            this.refreshReport(report);\n            return false;\n        },\n        editRow: function (row, report) {\n            var record;\n            record = this.get('store').peekRecord(report.get('form'), row.get('id'));\n            record.one('didUpdate', () => {\n                return report.notifyPropertyChange('refreshRows');\n            });\n            return this.transitionToRoute({\n                queryParams: {\n                    modal: [report.get('form'), row.get('id')],\n                },\n            });\n        },\n        addNewReport: function () {\n            return this.get('reports').pushObject(\n                Ember.Object.create({\n                    editorMode: true,\n                }),\n            );\n        },\n        removeReport: function (report) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('thereport.remove'))\n                .then((con) => {\n                    if (con) {\n                        this.get('reports').removeObject(report);\n                        this.refreshReport(report);\n                        this.saveSettings();\n                    }\n                    return false;\n                });\n        },\n        editFilters: function (state) {\n            this.set('editFiltersMode', state);\n            if (state === false) {\n                this.saveSettings();\n            }\n            return false;\n        },\n        cancelEdit: function (report) {\n            report.set('editorMode', false);\n            return false;\n        },\n        export_csv: function (report) {\n            var component, csv_str, promise, self;\n            if (this.get('showLoader')) {\n                return;\n            }\n            this.set('showLoader', true);\n            // pretty much copy & paste code from export_pdf\n            csv_str = [];\n            component = this.createComponent(report);\n            component.set('settings', report);\n            promise = component.get('asCsvArray');\n            self = this;\n            return promise.then((array) => {\n                this.set('showLoader', false);\n                if (!array) {\n                    return;\n                }\n                return this.createCsvFromElements(array, false);\n            });\n        },\n        export_pdf_full: function (report = false) {\n            this.set('full_pdf_export', true);\n            return this.send('export_pdf', report);\n        },\n        export_excel: function (report) {\n            var component, promise;\n            if (this.get('showLoader')) {\n                return;\n            }\n            this.set('showLoader', true);\n            component = this.createComponent(report);\n            component.set('settings', report);\n            promise = component.get('asCsvArray');\n            return promise\n                .then((array) => {\n                    var excelArray;\n                    if (!array) {\n                        return;\n                    }\n                    excelArray = array.map((arr) => {\n                        return arr.map((item) => {\n                            if (typeof item === 'object' && item !== null) {\n                                return item.string;\n                            }\n                            return item;\n                        });\n                    });\n                    return this.get('excel').export(excelArray, 'sheet1', 'export.xlsx');\n                })\n                .finally(() => {\n                    return this.set('showLoader', false);\n                });\n        },\n        export_excel_page: function () {\n            var getReportData, promises, reports;\n            if (this.get('showLoader')) {\n                return;\n            }\n            this.set('showLoader', true);\n            reports = this.get('reports');\n            promises = [];\n            getReportData = (report, index) => {\n                var component, promise;\n                component = this.createComponent(report);\n                component.set('settings', report);\n                promise = component.get('asCsvArray');\n                return promise.then((array) => {\n                    if (!array) {\n                        return;\n                    }\n                    return array.map((arr) => {\n                        return arr.map((item) => {\n                            if (typeof item === 'object' && item !== null) {\n                                return item.string;\n                            }\n                            return item;\n                        });\n                    });\n                });\n            };\n            reports.forEach((report, index) => {\n                return promises.push(getReportData(report, index));\n            });\n            return Ember.RSVP.Promise.all(promises).then((data) => {\n                var excelArray;\n                excelArray = [];\n                data.forEach(function (rep) {\n                    rep.forEach(function (row) {\n                        return excelArray.push(row);\n                    });\n                    excelArray.push([]);\n                    return excelArray.push([]);\n                });\n                this.get('excel').export(excelArray, 'sheet1', 'export.xlsx');\n                return this.set('showLoader', false);\n            });\n        },\n        export_pdf: function (report = false) {\n            var column,\n                component,\n                counter,\n                getReportData,\n                headers,\n                i,\n                len,\n                pdfElements,\n                promises,\n                reports,\n                self;\n            if (this.get('showLoader')) {\n                return;\n            }\n            this.set('showLoader', true);\n            self = this;\n            reports = this.get('reports');\n            // If report is given we just want to export that\n            if (report) {\n                reports = reports.filter(function (rep) {\n                    if (rep.get('header') === report.get('header')) {\n                        //report_index =\n                        return true;\n                    }\n                });\n            }\n            promises = [];\n            pdfElements = Em.A([]);\n            headers = this.createAdditionalPdfHeaders();\n            getReportData = (report, counter, column) => {\n                var promise;\n                if (this.get('full_pdf_export')) {\n                    promise = report.get('asPdfElementFull');\n                    return promise.then(function (element) {\n                        return self.createPdfFromElements([element]);\n                    });\n                } else {\n                    promise = report.get('asPdfElement');\n                    promises.push(promise);\n                    return promise.then((element) => {\n                        var headerElement;\n                        if (!element) {\n                            return;\n                        }\n                        if (report.settings.header) {\n                            headerElement = this.createPdfHeaderElement(report.settings.header);\n                            headerElement.index = counter;\n                            headerElement.column = column;\n                            pdfElements.pushObject(headerElement);\n                        }\n                        element.index = counter + 1;\n                        element.column = column;\n                        return pdfElements.pushObject(element);\n                    });\n                }\n            };\n            column = null;\n            for (counter = i = 0, len = reports.length; i < len; counter = ++i) {\n                report = reports[counter];\n                component = this.createComponent(report);\n                component.set('settings', report);\n                if (report.half) {\n                    column = column === 1 ? 2 : 1;\n                } else {\n                    column = null;\n                }\n                getReportData(component, counter * 2, column);\n            }\n            if (this.get('full_pdf_export')) {\n                // remove property so next export doesn't use this\n                this.set('full_pdf_export', false);\n                this.set('showLoader', false);\n                return;\n            }\n            return Em.RSVP.Promise.all(promises).then(() => {\n                if (this.get('signature')) {\n                    pdfElements.pushObject({\n                        index: Number.MAX_SAFE_INTEGER - 1,\n                        style: 'marginTop',\n                        table: {\n                            widths: ['auto', 140, 30, 'auto', 140],\n                            body: [\n                                [\n                                    {\n                                        border: [false, false, false, false],\n                                        text: this.get('intl').t('report.worktask.signature') + ':',\n                                    },\n                                    {\n                                        border: [false, false, false, true],\n                                        text: '',\n                                    },\n                                    {\n                                        border: [false, false, false, false],\n                                        text: '',\n                                    },\n                                    {\n                                        border: [false, false, false, false],\n                                        text: this.get('intl').t('thereport.print_name') + ':',\n                                    },\n                                    {\n                                        border: [false, false, false, true],\n                                        text: '',\n                                    },\n                                ],\n                            ],\n                        },\n                    });\n                }\n                if (this.get('datePlace')) {\n                    pdfElements.pushObject({\n                        index: Number.MAX_SAFE_INTEGER,\n                        style: 'marginTop',\n                        table: {\n                            widths: ['auto', 140, 30, 'auto', 140],\n                            body: [\n                                [\n                                    {\n                                        border: [false, false, false, false],\n                                        text: this.get('intl').t('thereport.date') + ':',\n                                    },\n                                    {\n                                        border: [false, false, false, true],\n                                        text: '',\n                                    },\n                                    {\n                                        border: [false, false, false, false],\n                                        text: '',\n                                    },\n                                    {\n                                        border: [false, false, false, false],\n                                        text: this.get('intl').t('thereport.place') + ':',\n                                    },\n                                    {\n                                        border: [false, false, false, true],\n                                        text: '',\n                                    },\n                                ],\n                            ],\n                        },\n                    });\n                }\n                return this.createPdfFromElements(\n                    pdfElements.sortBy('index'),\n                    'download',\n                    headers,\n                ).finally(() => {\n                    return this.set('showLoader', false);\n                });\n            });\n        },\n        addDefaultReport: function (defaultReport) {\n            var header, key, newReport, ref, value;\n            header =\n                'header' in defaultReport.settings\n                    ? defaultReport.settings.header\n                    : defaultReport.name;\n            newReport = Ember.Object.create({\n                custom: true,\n                header: header,\n            });\n            ref = defaultReport.settings;\n            for (key in ref) {\n                value = ref[key];\n                newReport[key] = value;\n            }\n            this.get('reports').pushObject(newReport);\n            return this.saveSettings();\n        },\n        checkedRowsChanged: function (report_index, rows) {\n            return this.set('checked_rows_' + report_index, rows);\n        },\n        removeFieldFromOrder: function (field) {\n            var cols;\n            cols = this.get('settings.order').split(',');\n            if (cols.length === 1) {\n                this.set('settings.order', this.get('settings.defaultOrder'));\n                this.set('manuallyOrdered', false);\n                return;\n            }\n            if (cols.includes(field + '-')) {\n                field = field + '-';\n            }\n            cols.splice(cols.indexOf(field), 1);\n            if (cols.length > 0) {\n                this.set('manuallyOrdered', true);\n                this.set('order', cols.join(','));\n                return this.set('settings.order', cols.join(','));\n            }\n        },\n    },\n    createComponent: function (report) {\n        if (report.type === 'cc') {\n            return ccReport.create({\n                renderer: this,\n                store: this.get('store'),\n                Collector: this.get('Collector'),\n                intl: this.get('intl'),\n                rowsPerPage: 'all',\n                sessionGlobals: this.get('sessionGlobals'),\n                settings: report,\n                key: report.key,\n            });\n        } else {\n            return formReport.create({\n                renderer: this,\n                store: this.get('store'),\n                Collector: this.get('Collector'),\n                intl: this.get('intl'),\n                rowsPerPage: 'all',\n                sessionGlobals: this.get('sessionGlobals'),\n                checked_rows: this.get('checked_rows_' + report.index),\n                settings: report,\n            });\n        }\n    },\n    createAdditionalPdfHeaders: function () {\n        var baseForm, c, field, filter, filterValues, filtername, formName, i, len, rows, tmpFilter;\n        c = this.get('Collector');\n        filterValues = this.get('filterValues');\n        if (!filterValues) {\n            // ugly hack to get empty filters to work in pdf headers\n            filterValues = [\n                {\n                    name: 'date',\n                    value:\n                        moment().startOf('week').format('YYYY-MM-DD') +\n                        '_' +\n                        moment().endOf('week').format('YYYY-MM-DD'),\n                },\n            ];\n        }\n        rows = [];\n        baseForm = this.get('baseForm');\n        for (i = 0, len = filterValues.length; i < len; i++) {\n            filter = filterValues[i];\n            if (!filter.value) {\n                continue;\n            }\n            if (filter.name.indexOf('.') > -1) {\n                tmpFilter = filter.name.split('.');\n                formName = tmpFilter[0];\n                filtername = tmpFilter[1];\n            } else {\n                formName = baseForm;\n                filtername = filter.name;\n            }\n            field = c.field(formName, filtername);\n            if (\n                field.type === 'database' &&\n                Ember.typeOf(filter.value) === 'string' &&\n                !isNaN(filter.value)\n            ) {\n                filter.value = parseInt(filter.value);\n            }\n            rows.push(\n                c.getTranslationForColumn(formName, filtername) +\n                    ': ' +\n                    c._format_(filter.value, formName, filtername, 'pdf'),\n            );\n        }\n        return rows.join('\\n');\n    },\n    defaultReports: Ember.computed(function () {\n        var c, intl, promise;\n        intl = this.get('intl');\n        c = this.get('Collector');\n        promise = c.ttapi({\n            url: 'defaultReports',\n        });\n        promise.then((data) => {\n            var i, key, len, report;\n            for (key = i = 0, len = data.length; i < len; key = ++i) {\n                report = data[key];\n                if ('translatedName' in report) {\n                    data[key].name = intl.t(report.translatedName);\n                }\n            }\n            data = c.needsOfArray(data);\n            return this.set('defaultReports', data);\n        });\n        return null;\n    }),\n});\n\nexport default ThereportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/page/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ThereportRoute;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nThereportRoute = Ember.Route.extend({\n    model: function (params) {\n        var pages;\n        pages = this.modelFor('thereport');\n        return new Ember.RSVP.hash({\n            settings: params.page in pages ? pages[params.page].settings : [],\n            pageid: params.page in pages ? pages[params.page].id : null,\n        });\n    },\n    actions: {\n        didTransition: function () {\n            return Ember.run.schedule('afterRender', this, function () {\n                $('.dropdown-toggler').on('click', function (event) {\n                    $('input.checkbox-button').prop('checked', false);\n                    return $(this).parent().toggleClass('open');\n                });\n                return $('body').on('click', function (e) {\n                    if (\n                        !$('.dropdown-toggler').is(e.target) &&\n                        $('.dropdown-menu').has(e.target).length === 0 &&\n                        $('.open').has(e.target).length === 0\n                    ) {\n                        $('input.checkbox-button').prop('checked', false);\n                        return $('div.dropdown').removeClass('open');\n                    }\n                });\n            });\n        },\n    },\n});\n\nexport default ThereportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"qK2odIhw\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\",\\\"defaultReport\\\",\\\"report\\\",\\\"idx\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-10\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"editFiltersMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"multi-buttons\\\",[[24,[\\\"multi-buttons\\\"]]],[[\\\"content\\\",\\\"values\\\"],[[24,[\\\"selectableFilters\\\"]],[24,[\\\"_showFilters\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/filters-comp\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"values\\\"],[[24,[\\\"showFilters\\\"]],[24,[\\\"baseForm\\\"]],[24,[\\\"filterValues\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"not\\\",[[24,[\\\"editFiltersMode\\\"]]],null],[28,\\\"has-permission\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],[24,[\\\"settings\\\",\\\"userlevels\\\",\\\"edit\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"editFilters\\\",true]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-pencil\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"editFiltersMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"editFilters\\\",false]],[8],[1,[28,\\\"t\\\",[\\\"formeditor.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dropdown btn-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"btn btn-default dropdown-toggler\\\"],[10,\\\"role\\\",\\\"button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"dropdown-menu dropdown-menu-right\\\"],[10,\\\"role\\\",\\\"menu\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"checkbox-margins\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"signature\\\"]],\\\"sig\\\"]]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"sig\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"report.worktask.signature\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"checkbox-margins\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"datePlace\\\"]],\\\"dateplace\\\"]]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"dateplace\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"thereport.date_and_place\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"divider\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_excel_page\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_excel\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"fullScreen\\\"]],\\\"report-main-zoomed\\\"],null],\\\" report-main-content report-thereport\\\"]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"reports\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"unless\\\",[[23,4,[\\\"editorMode\\\"]],[23,4,[\\\"half\\\"]]],null],\\\"col-sm-6\\\",\\\"col-sm-12\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-10 col-xs-5\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,4,[\\\"header\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"h3\\\",true],[8],[1,[23,4,[\\\"header\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-2 col-xs-7 text-right\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[23,4,[\\\"editorMode\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"has-permission\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],[24,[\\\"settings\\\",\\\"userlevels\\\",\\\"edit\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"editorOn\\\",[23,4,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-pencil\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\",[23,4,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PDF-2Filled\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dropdown btn-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"a\\\",true],[10,\\\"role\\\",\\\"button\\\"],[10,\\\"class\\\",\\\"btn btn-default dropdown-toggler\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"dropdown-menu dropdown dropdown-menu-right\\\"],[10,\\\"role\\\",\\\"menu\\\"],[10,\\\"aria-labelledby\\\",\\\"dropdownMenu\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"isMobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_csv\\\",[23,4,[]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_csv\\\"],null],false],[9],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_excel\\\",[23,4,[]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_excel\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-submenu\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"input\\\",true],[11,\\\"id\\\",[29,[[28,\\\"concat\\\",[[23,5,[]],\\\"-toggle\\\"],null]]]],[10,\\\"class\\\",\\\"checkbox-button\\\"],[10,\\\"href\\\",\\\"javascript:void(0)\\\"],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[11,\\\"for\\\",[29,[[28,\\\"concat\\\",[[23,5,[]],\\\"-toggle\\\"],null]]]],[10,\\\"class\\\",\\\"label-checkbox\\\"],[8],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-left\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"dropdown-menu\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"checkbox-margins\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"signature\\\"]],[28,\\\"concat\\\",[[23,5,[]],\\\"-signature\\\"],null]]]],false],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[11,\\\"for\\\",[29,[[28,\\\"concat\\\",[[23,5,[]],\\\"-signature\\\"],null]]]],[8],[0,\\\"\\\\n                                            \\\"],[1,[28,\\\"t\\\",[\\\"report.worktask.signature\\\"],null],false],[0,\\\"\\\\n                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"checkbox-margins\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"datePlace\\\"]],[28,\\\"concat\\\",[[23,5,[]],\\\"-dateplace\\\"],null]]]],false],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[11,\\\"for\\\",[29,[[28,\\\"concat\\\",[[23,5,[]],\\\"-dateplace\\\"],null]]]],[8],[0,\\\"\\\\n                                            \\\"],[1,[28,\\\"t\\\",[\\\"thereport.date_and_place\\\"],null],false],[0,\\\"\\\\n                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"divider\\\"],[8],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\",[23,4,[]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[23,4,[\\\"hideFullExportLink\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf_full\\\",[23,4,[]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf_full\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"fullScreen\\\"]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"fullScreen\\\"]],\\\"move move-Cross\\\",\\\"move move-FitWidth report-fullscreen\\\"],null]],[8],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,4,[\\\"editorMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"thereport/form-reporteditor\\\",null,[[\\\"settings\\\",\\\"save\\\",\\\"remove\\\",\\\"cancel\\\"],[[23,4,[]],[28,\\\"action\\\",[[23,0,[]],\\\"editorOff\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeReport\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"cancelEdit\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,4,[\\\"error_in_report\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-exclamation-sign\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"comboreport.error_in_report\\\"],null],false],[0,\\\" (\\\"],[1,[23,4,[\\\"error_in_report\\\"]],false],[0,\\\")\\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"type\\\"]],\\\"cc\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"cc-report\\\",null,[[\\\"settings\\\"],[[23,4,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,4,[\\\"group\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"settings\\\",\\\"action\\\",\\\"useSpecialQueryParams\\\",\\\"checkedRowsChanged\\\",\\\"rowActions\\\",\\\"checkable\\\",\\\"hideCheckedActions\\\"],[[23,4,[]],\\\"editorOn\\\",true,[28,\\\"action\\\",[[23,0,[]],\\\"checkedRowsChanged\\\",[23,4,[\\\"index\\\"]]],null],false,false,true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"settings\\\",\\\"action\\\",\\\"useSpecialQueryParams\\\",\\\"checkedRowsChanged\\\",\\\"rowActions\\\",\\\"editRow\\\",\\\"checkable\\\"],[[23,4,[]],\\\"editorOn\\\",true,[28,\\\"action\\\",[[23,0,[]],\\\"checkedRowsChanged\\\",[23,4,[\\\"index\\\"]]],null],[24,[\\\"rowActions\\\"]],\\\"editRow\\\",[23,4,[\\\"canChangeStatus\\\"]]]]],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4,5]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"has-permission\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],[24,[\\\"settings\\\",\\\"userlevels\\\",\\\"edit\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showAddReportButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group dropup\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addNewReport\\\"]],[8],[1,[28,\\\"t\\\",[\\\"formeditor.add_report\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"defaultReports\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[5,\\\"bs-dropdown\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,1,[\\\"button\\\"]],[],[[\\\"@class\\\"],[\\\"btn-primary dropdown-toggle\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"caret\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"sr-only\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.thereport.toggle_dropdown\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"defaultReports\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"addDefaultReport\\\",[23,3,[]]]],[8],[1,[23,3,[\\\"name\\\"]],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/thereport/page/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ThereportRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nThereportRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    model: function (params) {\n        var c, report_prefix;\n        c = this.get('Collector');\n        report_prefix = this.get('intl').t('thereport.report_prefix');\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise;\n            promise = c.ttapi({\n                url: 'comboreports',\n            });\n            return promise.then((data) => {\n                data.forEach((item, index) => {\n                    if (!item.name) {\n                        return (item.name = report_prefix + ' ' + (index + 1));\n                    }\n                });\n                while (data.length < 4) {\n                    data.pushObject({\n                        name: report_prefix + ' ' + (data.length + 1),\n                    });\n                }\n                return resolve(data);\n            });\n        });\n    },\n    redirect: function (model, transition) {\n        if (transition.targetName === 'thereport.index') {\n            return this.transitionTo('thereport.page', 0);\n        }\n    },\n    actions: {\n        willTransition: function () {\n            return this.refresh();\n        },\n        reload: function () {\n            return this.refresh();\n        },\n    },\n});\n\nexport default ThereportRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/settings/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ThereportSettingsController;\n\nimport Ember from 'ember';\n\nThereportSettingsController = Ember.Controller.extend({\n    parent: Em.inject.controller('thereport'),\n    dialogs: Em.inject.service(),\n    intl: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    reports: Em.computed.alias('parent.model'),\n    _reports: Em.computed('reports', function () {}),\n    allInUse: Em.computed('reports', function () {\n        var allInUse;\n        allInUse = true;\n        if (this.get('session.currentUser.userlevel') === '1') {\n            //hide \"Add report\" from settings page for worker if worker has been given edit permissions for some report...\n            allInUse = false;\n        }\n        this.get('model').forEach(function (item) {\n            if (!item.id) {\n                return (allInUse = false);\n            }\n        });\n        return allInUse;\n    }),\n    _userlevels: Em.computed('currentReport', function () {\n        var c, lvls;\n        c = this.get('Collector');\n        lvls = c.getUserlevels([]);\n        return lvls;\n    }),\n    onlyIcanSee: Em.computed('currentReport', function () {\n        if (this.get('currentReport.id')) {\n            if (this.get('currentReport.settings.only_creator_can_see')) {\n                return true;\n            }\n        }\n        return false;\n    }),\n    createdByCurrentuser: Em.computed('currentReport', function () {\n        if (this.get('currentReport.created_by_currentuser') === true) {\n            return true;\n        }\n        return false;\n    }),\n    userlevels: Em.computed('_userlevels', function () {\n        var i, len, lvl, lvls, savedUserlevels, tmp_lvls;\n        tmp_lvls = this.get('_userlevels');\n        savedUserlevels = this.get('currentReport.settings.userlevels');\n        if (this.get('session.currentUser.userlevel') !== '5') {\n            lvls = tmp_lvls.filter((lvl) => {\n                if (lvl['id'] === '5') {\n                    return false;\n                } else {\n                    return true;\n                }\n            });\n        } else {\n            lvls = tmp_lvls;\n        }\n        for (i = 0, len = lvls.length; i < len; i++) {\n            lvl = lvls[i];\n            if (\n                (savedUserlevels && savedUserlevels['view'].indexOf(parseInt(lvl['id'])) > -1) ||\n                lvl['id'] === this.get('session.currentUser.userlevel')\n            ) {\n                //console.log \"userlevel \"+lvl['id']+\" has view permission\"\n                lvl['view'] = true;\n            }\n            if (\n                (savedUserlevels && savedUserlevels['edit'].indexOf(parseInt(lvl['id'])) > -1) ||\n                lvl['id'] === this.get('session.currentUser.userlevel')\n            ) {\n                //console.log \"userlevel \"+lvl['id']+\" has edit permission\"\n                lvl['edit'] = true;\n            }\n        }\n        return lvls;\n    }),\n    actions: {\n        saveComboSettings: function () {\n            var editPermissions, i, len, lvl, ref, report, viewPermissions;\n            report = this.get('currentReport');\n            viewPermissions = [];\n            editPermissions = [];\n            ref = this.get('userlevels');\n            for (i = 0, len = ref.length; i < len; i++) {\n                lvl = ref[i];\n                if (lvl['edit']) {\n                    editPermissions.push(parseInt(lvl['id']));\n                }\n                if (lvl['view']) {\n                    viewPermissions.push(parseInt(lvl['id']));\n                }\n            }\n            if (this.get('onlyIcanSee')) {\n                Em.set(report, 'settings.only_creator_can_see', true);\n            } else {\n                delete report['settings']['only_creator_can_see'];\n                //Em.set report,'settings.userid', null\n                if (viewPermissions.length > 0 && editPermissions.length > 0) {\n                    // if this is not personal report-page, set permissions\n                    // also set permissions only if user has checked some boxes\n                    // ALSO admin has always permissions to edit & view\n                    if (viewPermissions.indexOf(5) === -1) {\n                        viewPermissions.push(5);\n                    }\n                    if (editPermissions.indexOf(5) === -1) {\n                        editPermissions.push(5);\n                    }\n                    Em.set(report, 'settings.userlevels', {\n                        view: viewPermissions,\n                        edit: editPermissions,\n                    });\n                } else {\n                    delete report['settings']['userlevels'];\n                }\n            }\n            this.get('parent').saveReport(report['id'], report['name'], report['settings']);\n            this.set('showComboDialog', false);\n            return this.get('parent').send('reload');\n        },\n        edit: function (report) {\n            this.set('currentReport', report);\n            if (\n                this.get('currentReport.settings.userid') &&\n                parseInt(this.get('currentReport.settings.userid')) ===\n                    parseInt(this.get('session.currentUser.id'))\n            ) {\n                this.set('ownReportPage', true);\n            }\n            this.set('showComboDialog', true);\n            return false;\n        },\n        rename: function (report) {\n            var promise;\n            promise = this.get('dialogs').prompt(\n                this.get('intl').t('thereport.report_name'),\n                report.name,\n            );\n            return promise.then((val) => {\n                if (val !== false) {\n                    return this.get('parent')\n                        .saveReport(report.id, val)\n                        .then(() => {\n                            return this.get('parent').send('reload');\n                        });\n                }\n            });\n        },\n        addNew: function () {\n            this.set('ownReportPage', true);\n            this.set(\n                'currentReport',\n                Em.Object.create({\n                    settings: {\n                        userid: this.get('session.currentUser.id'),\n                    },\n                    created_by_currentuser: true,\n                }),\n            );\n            this.set('showComboDialog', true);\n            //@set 'currentReport', report\n            return false;\n        },\n        /*\n    promise = @get('dialogs').prompt @get('intl').t \"thereport.report_new_name\"\n\n    promise.then (val) =>\n        if val isnt false\n            @get('parent').saveReport(null, val).then =>\n                @get('parent').send 'reload'\n\n    */\n        remove: function (report) {\n            var promise;\n            promise = this.get('dialogs').confirm(this.get('intl').t('thereport.remove'));\n            return promise.then((val) => {\n                if (val === true) {\n                    return this.get('parent')\n                        .removeReport(report.id)\n                        .then(() => {\n                            return this.get('parent').send('reload');\n                        });\n                }\n            });\n        },\n        removeModal: function () {\n            return this.set('showComboDialog', false);\n        },\n    },\n});\n\nexport default ThereportSettingsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/settings/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ThereportSettingsRoute;\n\nimport Ember from 'ember';\n\nThereportSettingsRoute = Ember.Route.extend();\n\nexport default ThereportSettingsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"9WJUTJvS\",\"block\":\"{\\\"symbols\\\":[\\\"userlevel\\\",\\\"rep\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"reports\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n        \\\"],[2,\\\"div class=\\\\\\\"input-group-btn\\\\\\\">\\\\n            <div class=\\\\\\\"btn-group-vertical\\\\\\\" role=\\\\\\\"group\\\\\\\" aria-label=\\\\\\\"...\\\\\\\">\\\\n                <button class=\\\\\\\"btn btn-m-default\\\\\\\" data-ember-action=\\\\\\\"1875\\\\\\\"><span class=\\\\\\\"move move-SortUp\\\\\\\"></span></button>\\\\n                <button class=\\\\\\\"btn btn-m-default\\\\\\\" data-ember-action=\\\\\\\"1876\\\\\\\"><span class=\\\\\\\"move move-SortDown\\\\\\\"></span></button>\\\\n            </div>\\\\n        </div\\\"],[0,\\\"\\\\n        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item form-editor-field  \\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-btn form-editor\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group-vertical\\\"],[10,\\\"role\\\",\\\"group\\\"],[10,\\\"aria-label\\\",\\\"...\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"has-permission\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],[23,2,[\\\"settings\\\",\\\"userlevels\\\",\\\"edit\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"btn btn-m-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"edit\\\",[23,2,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-action\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,2,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Delete\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showComboDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"thereport.edit_page\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"thereport.report_name\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"currentReport\\\",\\\"name\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"thereport.permissions\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"createdByCurrentuser\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"thereport.only_i_can_see\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"class\\\"],[\\\"checkbox\\\",[24,[\\\"onlyIcanSee\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"onlyIcanSee\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive table-hover general-report\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"thereport.can_edit\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"thereport.can_view\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.user.userlevel\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"userlevels\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"disabled\\\",\\\"type\\\",\\\"checked\\\",\\\"class\\\"],[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]]],null],true],null],\\\"checkbox\\\",[23,1,[\\\"edit\\\"]],\\\"form-control add-fields\\\"]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"disabled\\\",\\\"type\\\",\\\"checked\\\",\\\"class\\\"],[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]]],null],true],null],\\\"checkbox\\\",[23,1,[\\\"view\\\"]],\\\"form-control add-fields\\\"]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"thereport.cannot_hide_own_report\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"name\\\",\\\"save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveComboSettings\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"allInUse\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"]],[8],[1,[28,\\\"t\\\",[\\\"thereport.add_report_page\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/thereport/settings/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"nxPLqLND\",\"block\":\"{\\\"symbols\\\":[\\\"sublink\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subMenus\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[4,\\\"link-to\\\",null,[[\\\"params\\\",\\\"class\\\",\\\"tagName\\\"],[[23,1,[\\\"link\\\"]],\\\"submenu-item\\\",\\\"div\\\"]],{\\\"statements\\\":[[1,[23,1,[\\\"text\\\"]],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/thereport/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerAddController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nimport collector from '../../../classes/collector';\n\nimport config from '../../../config/environment';\n\nTimetrackerAddController = GeneralAddController.extend({\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    flags: Ember.inject.service(),\n    useFormAdd: Ember.computed(function () {\n        return (\n            this.get('flags').test('form-add') ||\n            this.get('flags').test('ember-movenium-form-add-worktime')\n        );\n    }),\n    useNewVersion: Ember.computed(function () {\n        return (\n            this.get('Collector').testNeeds(['products.multitasking']) ||\n            this.get('flags').test('form-add') ||\n            this.get('flags').test('ember-movenium-form-add-worktime')\n        );\n    }),\n    init: function () {\n        var cust, fields;\n        this._super();\n        fields = collector.getFormObjects('worktime');\n        cust = {};\n        if (\n            !fields.starttime.features.hide &&\n            !fields.endtime.features.hide &&\n            !fields.work_hours.features.mandatory\n        ) {\n            cust = {\n                starttime: {\n                    defaultValue: '07:00',\n                },\n                endtime: {\n                    defaultValue: moment().format('HH:mm'),\n                },\n                date: {\n                    defaultValue: moment().format('YYYY-MM-DD'),\n                },\n                pause: {\n                    minValue: 0,\n                },\n            };\n            this.set('customization', cust);\n        }\n        if (fields.starttime.features.hide && fields.endtime.features.hide) {\n            cust = {\n                date: {\n                    defaultValue: moment().format('YYYY-MM-DD'),\n                },\n            };\n            this.set('customization', cust);\n        }\n        // IF SERVICE THROWS ERROR HERE ABOUT \"Can't set project of undefined\" THEN THE SERVICE IS B-R-O-K-E-N\n        // Don't fix this code, rather check what is wrong with the service, usually work_hours is set to mandatory\n        // when using clockcard or something else\n        // It pretty much means that the above two ifs didn't trigger so something wrong with the fields starttime, endtime or work_hours\n        //if collector.getFormObject(\"project.force_location\") && @get('session.currentUser.userlevel') != \"5\"\n        //    cust = @get \"customization\"\n        //    cust.project =\n        //        template: \"timetracker/add/gpsprojects\"\n        //else\n        cust = this.get('customization');\n        cust.project = {\n            template: 'timetracker/add/project',\n        };\n        if (this.get('Collector').testNeedsOne('products.timetracker_km_automatic')) {\n            return (cust.km = {\n                template: 'timetracker/add/km_auto',\n            });\n        }\n    },\n    addNewLink: 'timetracker.add',\n    editNewLink: 'timetracker.edit',\n    date_newer_warning: false,\n    getStarttime: function () {\n        // get starttime by using magic aka fuzzy logic\n        return this.get('Collector').ttapi({\n            method: 'get',\n            dataType: 'text',\n            url: 'get_starttime',\n        });\n    },\n    model_observer: Em.observer('model', function () {\n        var fields, records;\n        if (this.get('useNewVersion')) {\n            return;\n        }\n        fields = collector.getFormObjects('worktime');\n        if (this.get('session.currentUser.currentMySite')) {\n            this.set('model.project', this.get('session.currentUser.currentMySite'));\n        }\n        if (\n            !fields.starttime.features.hide &&\n            !fields.endtime.features.hide &&\n            !fields.work_hours.features.mandatory &&\n            this.get('model.isNew') &&\n            !this.get('model.starttime')\n        ) {\n            records = this.store\n                .peekAll('worktime')\n                .filterBy('date', moment().format('YYYY-MM-DD'))\n                .sortBy('endtime');\n            if (records.get('lastObject.endtime')) {\n                return this.set('model.starttime', records.get('lastObject.endtime'));\n            } else {\n                return this.getStarttime().then((start) => {\n                    if (start) {\n                        return this.set('model.starttime', start);\n                    }\n                });\n            }\n        }\n    }),\n    date_observer: Em.observer('model.date', function () {\n        var date, next_month_date, selected_date;\n        if (this.get('useNewVersion')) {\n            return;\n        }\n        date = this.get('model.date');\n        if (date == null) {\n            return;\n        }\n        if (!moment(new Date(date)).isValid()) {\n            return;\n        }\n        selected_date = moment(new Date(date)).format('YYYY-MM-DD');\n        next_month_date = moment().add(1, 'months').format('YYYY-MM-DD');\n        if (selected_date > next_month_date) {\n            return this.set('date_newer_warning', true);\n        } else {\n            return this.set('date_newer_warning', false);\n        }\n    }),\n    actions: {\n        goBack: () => {\n            return window.history.back(-1);\n        },\n    },\n});\n\nexport default TimetrackerAddController;\n","export default Ember.HTMLBars.template({\"id\":\"rparQZTA\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"gps-forced-dropdown\\\",null,[[\\\"model\\\",\\\"custom_projects\\\",\\\"change\\\",\\\"classes\\\"],[[24,[\\\"model\\\"]],[24,[\\\"custom_projects\\\"]],\\\"changeValue\\\",\\\"form-control add-fields\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/add/gpsprojects/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Ok/24ZQk\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"gps-auto-km\\\",null,[[\\\"model\\\",\\\"field\\\",\\\"classes\\\"],[[24,[\\\"model\\\"]],[24,[\\\"fieldRoute\\\"]],\\\"form-control add-fields\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/add/km_auto/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"foq9ZkN9\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"change\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"fieldRoute\\\"]],\\\"customChangeValue\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"project-help\\\",null,[[\\\"projectid\\\"],[[24,[\\\"model\\\",\\\"project\\\",\\\"id\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/add/project/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nimport config from '../../../config/environment';\n\nTimetrackerAddRoute = GeneralAddRoute.extend({\n    Collector: Ember.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    store: Ember.inject.service(),\n    session: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    flags: Ember.inject.service(),\n    modelName: 'worktime',\n    controllerName: 'timetracker/add',\n    afterSave: Em.computed(function () {\n        if (this.get('Collector').testNeeds(['mobileView', 'userlevel=1'])) {\n            return 'timetracker.week-report';\n        } else {\n            return 'timetracker.worktime-list';\n        }\n    }),\n    savedRoute: 'timetracker.addsaved',\n    rowSaved: function (row) {\n        var project, user;\n        // save worktime adding to ttapi\n        this.get('ttapi').request('/worktimeAdded', {\n            method: 'post',\n            data: {\n                username: row.get('user.username'),\n                userid: row.get('user.id'),\n                starttime: row.get('starttime'),\n                date: row.get('date'),\n            },\n        });\n        // Alert for missing orientation or outdated pass\n        if (\n            this.get('Collector').testNeedsOne('modules.orientations') &&\n            this.get('session.currentUser.userlevel') === '1' &&\n            !this.get('session.currentUser.no_orientation')\n        ) {\n            project = row.get('project.id');\n            if (this.get('Collector').testNeedsOne('products.rakentajanpaketti')) {\n                if (row.get('project.proj_type') === '2' || row.get('project.proj_type') === null) {\n                    return;\n                }\n            }\n            user = row.get('user.id');\n            return this.get('store')\n                .query('orientation', {\n                    ori_site: project,\n                    ori_user: user,\n                    limit: 1,\n                })\n                .then((data) => {\n                    if (\n                        this.get('Collector').testNeedsOne('products.orientations_self') &&\n                        data.get('meta.count') === 0\n                    ) {\n                        return this.get('dialogs')\n                            .alert(\n                                this.get('intl').t(\n                                    'worktime.after_save.orientation.self_orientation',\n                                ),\n                            )\n                            .then(() => {\n                                return this.transitionTo(\n                                    'orientations.own-orientation',\n                                    row.get('project.id'),\n                                );\n                            });\n                    } else if (data.get('meta.count') === 0) {\n                        if (this.flags.test('disable-worktime-orientations-missing-warning')) {\n                            return;\n                        }\n                        \n                        return this.get('dialogs').alert(\n                            this.get('intl').t('worktime.after_save.orientation.not_found'),\n                        );\n                    } else if (\n                        data.get('firstObject.pass_end') &&\n                        moment().isAfter(moment(data.get('firstObject.pass_end')))\n                    ) {\n                        return this.get('dialogs').alert(\n                            this.get('intl').t('worktime.after_save.orientation.outdated'),\n                        );\n                    }\n                });\n        }\n    },\n    actions: {\n        afterSave: function (settings, record) {\n            return this.transitionTo('timetracker.addsaved').then((newRoute) => {\n                newRoute.controller.set('model', record);\n                newRoute.controller.set('afterSave', this.get('afterSave'));\n                newRoute.controller.set('addPageLink', this.get('controller.addNewLink'));\n                return newRoute.controller.set('editPageLink', this.get('controller.editNewLink'));\n            });\n        },\n        cancelClicked: function () {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('general.confirm.cancel'))\n                .then((con) => {\n                    if (con) {\n                        this.get('controller.model').rollbackAttributes();\n                        return window.history.back(-1);\n                    }\n                });\n        },\n    },\n});\n\nexport default TimetrackerAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"27qSG9y0\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"useNewVersion\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"gps-icon\\\",null,[[\\\"position\\\"],[\\\"left\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"header.path.add.worktime\\\"],null],false],[9],[9],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"timetracker.week-report\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"useFormAdd\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/form-add/forms/worktime\\\",null,[[\\\"close\\\",\\\"showSaved\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"goBack\\\"],null],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/add-modal/worktime\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"record_id\\\",\\\"cancelClicked\\\",\\\"recordSaved\\\"],[\\\"worktime\\\",[24,[\\\"model\\\"]],\\\"new\\\",\\\"cancelClicked\\\",\\\"afterSave\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"date_newer_warning\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[28,\\\"t\\\",[\\\"timetracker.add_date_for_future_warning\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/addsaved/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerAddSavedController;\n\nimport Ember from 'ember';\n\nimport savedController from '../../../controllers/saved';\n\nTimetrackerAddSavedController = savedController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    customerSettings: Ember.inject.service(),\n    session: Ember.inject.service(),\n    showSelfOrientationLink: Em.computed('model.project.id', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                if (\n                    this.get('customerSettings').checkSetting('self_orientation') &&\n                    !this.get('model.user.no_orientation') &&\n                    parseInt(this.get('session.currentUser.userlevel')) === 1\n                ) {\n                    return this.get('store')\n                        .query('orientation', {\n                            ori_user: this.get('model.user.id'),\n                            ori_site: this.get('model.project.id'),\n                        })\n                        .then((orientations) => {\n                            if (orientations.get('meta.count') === 0) {\n                                return resolve(true);\n                            } else {\n                                return resolve(false);\n                            }\n                        });\n                } else {\n                    return resolve(false);\n                }\n            }),\n        });\n    }),\n    currentSaldo: Ember.computed('model', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                return this.get('Collector')\n                    .ttapi({\n                        url: 'saldo/get_saldo?userid=' + this.get('model.user.id'),\n                    })\n                    .then((back) => {\n                        return resolve({\n                            value: back['saldo'] / 60,\n                            from: back['from'],\n                            to: back['to'],\n                        });\n                    });\n            }),\n        });\n    }),\n});\n\nexport default TimetrackerAddSavedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/addsaved/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerAddSavedRoute;\n\nimport Ember from 'ember';\n\nimport SavedRoute from '../../../routes/saved';\n\nTimetrackerAddSavedRoute = SavedRoute.extend({\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.notifyPropertyChange('currentSaldo');\n    },\n});\n\nexport default TimetrackerAddSavedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"9Kt9hjP3\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/saved\\\",[]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.your_saldo_now\\\"],null],false],[0,\\\":\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentSaldo\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"currentSaldo\\\",\\\"value\\\"]]],null],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/addsaved/template.hbs\"}});","import { alias } from '@ember/object/computed';\nimport EmberPromise, { hash } from 'rsvp';\nimport Controller from '@ember/controller';\nimport EmberObject, { get, set, computed } from '@ember/object';\nimport { A } from '@ember/array';\nimport { typeOf } from '@ember/utils';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    Collector: service('collector-service'),\n    dialogs: service(),\n    intl: service(),\n    analytics: service(),\n    store: service(),\n    capi: service(),\n    ttapi: service(),\n    error: service(),\n    form: 'worktime',\n    user: null,\n    employer: null,\n\n    init() {\n        this._super(...arguments);\n        this.queryParams = ['user', 'date', 'status', 'project', 'employer'];\n        this.shownColumns = ['project', 'starttime', 'endtime', 'work_hours', 'task'];\n        this.absenceColorFrom = ['abcensetype.id', 'user.firstname', 'user.lastname'];\n        this.worktimeFields = ['work_hours'];\n        this.absenceFields = ['hours'];\n    },\n\n    dailyWorktimeSums: alias('model.dailyWorktimeSums.content'),\n    worktimeSums: alias('model.worktimeSums.content'),\n    absences: alias('model.absences.abcenses'),\n    absenceTypes: alias('model.absences.abcensetypes'),\n    settings: EmberObject.create({\n        massedit: true,\n        hideExports: true,\n        rowSettings: EmberObject.create({\n            editRoute: 'timetracker.edit',\n            historyRoute: 'timetracker.history',\n        }),\n    }),\n    absence_settings: EmberObject.create({\n        massedit: true,\n        hideExports: true,\n        rowSettings: EmberObject.create({\n            editRoute: 'abcenses.edit',\n            historyRoute: 'abcenses.history',\n        }),\n    }),\n    filters: computed('status', 'user', 'date', function () {\n        const c = get(this, 'Collector');\n\n        let fields = c.fieldArray('worktime', ['date', 'user', 'status', 'project', 'employer']);\n\n        // https://jira.visma.com/browse/SUP-3159 can't filter by worktimes as box users don't show then\n        // if (c.testNeeds(['user.module_controls'])) {\n        //     fields.findBy('name', 'user').filterOptions = {module_controls: \"worktimes\"}\n        // }\n        const filters = A([]);\n        fields.forEach((field) => {\n            let filter = EmberObject.create({...field, value: get(this, get(field, 'name')), field: field.name});\n            filters.pushObject(filter);\n        });\n\n        return filters;\n    }),\n\n    showWarning: computed('dailyWorktimeSums', 'absences', function () {\n        if (get(this, 'dailyWorktimeSums.length') >= 100 || get(this, 'absences.length') >= 100) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n\n    statusTypes: computed('form', function () {\n        if (!get(this, 'form')) {\n            return [];\n        }\n        const c = get(this, 'Collector');\n        const intl = get(this, 'intl');\n        const field = c.field(get(this, 'form'), 'status');\n        let options = [];\n        field.options.forEach((option) => {\n            options.push(\n                intl.exists('status.' + option)\n                    ? {\n                          id: option,\n                          name: intl.t('calendar.' + option + '_all_rows'),\n                      }\n                    : { id: option, name: intl.t('calendar.change_status') + option },\n            );\n        });\n        return options;\n    }),\n\n    actions: {\n        addNew(day, type) {\n            window.scrollTo(0, 0);\n            let params = {};\n            if (type == 'abcense') {\n                params.startdate = day;\n                params.enddate = day;\n            } else {\n                params.date = day;\n            }\n\n            if (get(this, 'user')) {\n                params.user = get(this, 'store').peekRecord('user', get(this, 'user'));\n            }\n            if (get(this, 'project')) {\n                params.project = get(this, 'store').peekRecord('project', get(this, 'project'));\n            }\n            const record = get(this, 'store').createRecord(type, params);\n\n            ['didDelete', 'didCreate', 'didUpdate'].forEach((eventName) => {\n                record.on(eventName, () => {\n                    this.send('refreshModel', record);\n                });\n            });\n\n            this.transitionToRoute({ queryParams: { modal: [type, 'new'] } });\n        },\n        openEditor(row) {\n            if (get(row, 'row_info.privilege_remove') != undefined && !get(row, 'isEditable')) {\n                return;\n            }\n            window.scrollTo(0, 0);\n            row.on('didUpdate', () => {\n                this.send('refreshModel', row);\n            });\n            this.transitionToRoute({\n                queryParams: { modal: [get(row, 'constructor.modelName'), get(row, 'id')] },\n            });\n        },\n        remove(record) {\n            get(this, 'dialogs')\n                .confirm(get(this, 'intl').t('general.remove_row'))\n                .then((con) => this._removeRecord(con, record));\n        },\n\n        filterChanged(value, field) {\n            if (['object', 'instance'].includes(typeOf(value))) {\n                value = get(value, 'id');\n            }\n            if (!field) {\n                set(this, 'date', value);\n            } else {\n                set(this, field, value);\n            }\n        },\n\n        showRows(date) {\n            this.transitionToRoute('timetracker.aggregated.rows', date);\n        },\n\n        showAllRows() {\n            this.toggleProperty('showAllRows');\n            if (get(this, 'showAllRows')) {\n                this.transitionToRoute('timetracker.aggregated.rows', 'all');\n            } else {\n                this.transitionToRoute('timetracker.aggregated');\n            }\n        },\n\n        print() {\n            get(this, 'analytics').trackEvent({\n                category: 'Aggregated report',\n                action: 'Print report',\n            });\n            print();\n        },\n\n        async printAll() {\n            get(this, 'analytics').trackEvent({\n                category: 'Aggregated report',\n                action: 'Print all data',\n            });\n            if (get(this, 'showAllRows')) {\n                this.transitionToRoute('timetracker.aggregated');\n                set(this, 'showAllRowsByUser', true);\n            } else {\n                set(this, 'showAllRowsByUser', false);\n            }\n            set(this, 'printLoading', true);\n\n            this.Collector.ajax({\n                url:\n                    'system/clear_memcache?partnerid=' +\n                    get(this, 'session.currentUser.partnerid') +\n                    '&username=' +\n                    get(this, 'session.currentUser.username'),\n            });\n            let users = await this.store.query('user', { limit: 'all' });\n            let mappedData = [];\n\n            mappedData = users.map(async (user) => {\n                try {\n                    return hash({\n                        user: user,\n                        dailyWorktimeSums: await this.capi.findAll('worktime', {\n                            user: user.id,\n                            date: get(this, 'date'),\n                            groupBy: 'date',\n                            status: this.status,\n                        }),\n                        absences: await this.ttapi._get('/api/absences/splitted', {\n                            user: user.id,\n                            status: this.status,\n                            startdate: get(this, 'date').split('_')[0],\n                            enddate: get(this, 'date').split('_')[1],\n                            sideload: this.Collector.getSideloads('abcense'),\n                            raw: true,\n                        }),\n                        worktimeSums: await this.capi.findAll('worktime', {\n                            user: user.id,\n                            date: get(this, 'date'),\n                            groupBy: 'user',\n                            status: this.status,\n                        }),\n                        rows: hash({\n                            worktimeRows: this.showAllRowsByUser\n                                ? get(this, 'store').query('worktime', {\n                                      user: user.id,\n                                      date: get(this, 'date'),\n                                      status: this.status,\n                                  })\n                                : [],\n                            absenceRows: this.showAllRowsByUser\n                                ? get(this, 'store').query('abcense', {\n                                      user: user.id,\n                                      startdate: get(this, 'date'),\n                                      status: this.status,\n                                  })\n                                : [],\n                        }),\n                    });\n                } catch (e) {\n                    this.error.notify(e);\n                    set(this, 'printLoading', false);\n                    return [];\n                }\n            });\n\n            let data = await EmberPromise.all(mappedData);\n            await set(this, 'printableData', data);\n            set(this, 'printLoading', false);\n            await this.printableData;\n            print();\n            set(this, 'printableData', []);\n        },\n\n        setRowsPerPage(form, limit) {\n            set(this, form + '_page', 1);\n            set(this, form + '_limit', limit);\n        },\n    },\n    _removerecord(con, record) {\n        if (con) {\n            record.destroyRecord();\n        }\n    },\n\n    canAdd(type, date) {\n        if (type == 'worktime') {\n            const c = get(this, 'Collector');\n            return c.canAddWorktime(date);\n        }\n        return true;\n    },\n\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n});\n","import { hash } from 'rsvp';\nimport Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport collector from '../../../classes/collector';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\nimport { isPresent } from '@ember/utils';\n\nexport default Route.extend({\n    Collector: service('collector-service'),\n    capi: service(),\n    ttapi: service(),\n    gui: service(),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n    },\n    AuthenticatedRouteMixin,\n\n    beforeModel() {\n        this._super(...arguments);\n        set(this, 'gui.sidebar', true);\n    },\n    model(params) {\n        const c = get(this, 'Collector');\n        const capi = get(this, 'capi');\n        const ttapi = get(this, 'ttapi');\n        if (!c.testNeedsOne('employer')) delete params.employer;\n        if (!params.user) delete params.user;\n        delete params.page;\n        params.sideload = true;\n        params.order = 'date';\n\n        let aparams = Object.assign({}, params);\n        if (c.testNeedsOne('abcense')) {\n            const split_date = params.date.split('_');\n            delete aparams.date;\n            aparams.startdate = split_date[0];\n            aparams.enddate = split_date[1];\n            aparams.order = 'startdate';\n            aparams.tt3flag = get(collector, 'tt3flag');\n            aparams.sideload = c.getSideloads('abcense');\n            aparams.raw = true;\n        }\n\n        return hash({\n            dailyWorktimeSums: c.testNeedsOne('worktime')\n                ? capi.findAll('worktime', Object.assign(params, { groupBy: 'date' }))\n                : [],\n            absences: c.testNeedsOne('abcense')\n                ? ttapi\n                      ._get('/api/absences/splitted', aparams)\n                      .then((data) => this._returnData(data, c))\n                : [],\n            worktimeSums: c.testNeedsOne('worktime')\n                ? capi.findAll('worktime', Object.assign(params, { groupBy: 'user' }))\n                : [],\n        });\n    },\n    resetController(controller, isExiting) {\n        if (isExiting) {\n            get(this, 'gui').resetSidebar();\n        }\n    },\n    actions: {\n        refreshModel(record) {\n            this.refresh();\n            record.off('didUpdate');\n        },\n    },\n\n    _returnData(data, c) {\n        if (isPresent(data.abcenses)) {\n            c.pushToStore(data);\n            return data;\n        } else {\n            return { abcenses: [] };\n        }\n    },\n});\n","import GeneralReportController from '../../../../controllers/general-report';\nimport { inject as service } from '@ember/service';\nimport EmberObject, { set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nexport default GeneralReportController.extend({\n    collector: service('collector-service'),\n    gui: service(),\n    queryParams: ['worktime_page', 'absence_page', 'worktime_limit', 'absence_limit'],\n    worktime_page: 1,\n    absence_page: 1,\n    worktime_limit: 25,\n    absence_limit: 25,\n    status: 'all',\n    aggregatedrows: alias('model'),\n    form_status: alias('status'),\n    absence_order: alias('absence_settings.sortByColumn'),\n    settings: EmberObject.create({\n        massedit: true,\n        hideExports: true,\n        rowSettings: EmberObject.create({\n            editRoute: 'timetracker.edit',\n            historyRoute: 'timetracker.history',\n        }),\n    }),\n    absence_settings: EmberObject.create({\n        massedit: true,\n        hideExports: true,\n        rowSettings: EmberObject.create({\n            editRoute: 'abcenses.edit',\n            historyRoute: 'abcenses.history',\n        }),\n    }),\n    actions: {\n        setRowsPerPage(form, limit) {\n            set(this, form + '_page', 1);\n            set(this, form + '_limit', limit);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"PIMMpEPY\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/aggregated/rows/loading/template.hbs\"}});","import { hash } from 'rsvp';\nimport GeneralReportRoute from '../../../../routes/general-report';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\n\nexport default GeneralReportRoute.extend({\n    store: service(),\n    collector: service('collector-service'),\n    queryParams: {\n        worktime_limit: {\n            refreshModel: true,\n        },\n        absence_limit: {\n            refreshModel: true,\n        },\n        worktime_page: {\n            refreshModel: true,\n        },\n        absence_page: {\n            refreshModel: true,\n        },\n        order: {\n            refreshModel: true,\n        },\n        absence_order: {\n            refreshModel: true,\n        },\n        form_status: {\n            refreshModel: true,\n        },\n    },\n    beforeModel(transition) {\n        this._super(...arguments);\n        if (\n            transition.targetName === 'timetracker.aggregated.rows' &&\n            transition.to.params.date === 'all'\n        ) {\n            set(this.controllerFor('timetracker.aggregated'), 'showAllRows', true);\n        }\n    },\n    model(params) {\n        let parentParams = this.paramsFor('timetracker.aggregated');\n        parentParams.sideload = true;\n        if (!this.collector.testNeedsOne('employer')) delete parentParams.employer;\n        if (!parentParams.user) delete parentParams.user;\n        let worktimeParams = parentParams;\n\n        let absenceParams = {\n            startdate: parentParams.date,\n            user: parentParams.user,\n            status: parentParams.status,\n            limit: parentParams.limit,\n            sideload: true,\n        };\n        if (params.date != 'all') {\n            parentParams.date = params.date;\n        }\n        if (params.form_status === 'all') {\n            delete params.form_status;\n        }\n\n        worktimeParams.limit = params.worktime_limit;\n        worktimeParams.order = params.order;\n        worktimeParams.status = parentParams.status;\n        worktimeParams.offset = (params.worktime_page - 1) * params.worktime_limit;\n\n        absenceParams.limit = params.absence_limit;\n        absenceParams.order = params.absence_order;\n        absenceParams.status = parentParams.status;\n        absenceParams.offset = (params.absence_page - 1) * params.absence_limit;\n\n        const c = get(this, 'collector');\n\n        return hash({\n            worktimeRows: c.testNeedsOne('worktime')\n                ? get(this, 'store').query('worktime', worktimeParams)\n                : [],\n            absenceRows: c.testNeedsOne('abcense')\n                ? get(this, 'store').query('abcense', absenceParams)\n                : [],\n            params: parentParams,\n        });\n    },\n    setupController(controller) {\n        this._super(...arguments);\n        // set filters for rows controllers settings object from parent controller, so they can be used in the general-report component\n        const parentFilters = this.controllerFor('timetracker.aggregated').filters;\n        set(controller, 'settings.filters', parentFilters);\n    },\n    actions: {\n        willTransition(transition) {\n            set(this.controllerFor('timetracker.aggregated'), 'showAllRows', false);\n\n            if (\n                transition.targetName === 'abcenses.edit' ||\n                transition.targetName === 'timetracker.edit'\n            ) {\n                transition.queryParams.afterSave = 'timetracker.aggregated';\n                this.transitionTo(transition.targetName).then((newRoute) =>\n                    this.setAfterSave(newRoute),\n                );\n            }\n        },\n    },\n    setAfterSave(newRoute) {\n        newRoute.controller.afterSave = 'timetracker.aggregated';\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"odg30CR6\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"aggre-gated/rows\\\",null,[[\\\"model\\\",\\\"worktime_page\\\",\\\"absence_page\\\",\\\"worktime_limit\\\",\\\"absence_limit\\\",\\\"settings\\\",\\\"absence_settings\\\",\\\"status\\\",\\\"setRowsPerPage\\\"],[[24,[\\\"aggregatedrows\\\"]],[24,[\\\"worktime_page\\\"]],[24,[\\\"absence_page\\\"]],[24,[\\\"worktime_limit\\\"]],[24,[\\\"absence_limit\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"absence_settings\\\"]],[24,[\\\"form_status\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\"],null]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/aggregated/rows/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"RIixOOe3\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"printLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"printableData\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"printableData\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"print-all-data\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"concat\\\",[[23,1,[\\\"user\\\",\\\"lastname\\\"]],\\\" \\\",[23,1,[\\\"user\\\",\\\"firstname\\\"]]],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"aggre-gated\\\",null,[[\\\"filters\\\",\\\"absenceTypes\\\",\\\"absences\\\",\\\"worktimeSums\\\",\\\"dailyWorktimeSums\\\",\\\"date\\\",\\\"showAllRows\\\",\\\"showWarning\\\",\\\"addNew\\\",\\\"showRows\\\",\\\"print\\\",\\\"printAll\\\",\\\"toggleAllRows\\\",\\\"filterChanged\\\"],[[24,[\\\"filters\\\"]],[23,1,[\\\"absences\\\",\\\"abcensetypes\\\"]],[23,1,[\\\"absences\\\",\\\"abcenses\\\"]],[23,1,[\\\"worktimeSums\\\",\\\"content\\\"]],[23,1,[\\\"dailyWorktimeSums\\\",\\\"content\\\"]],[24,[\\\"date\\\"]],[24,[\\\"showAllRows\\\"]],[24,[\\\"showWarning\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showRows\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"print\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"printAll\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showAllRows\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"filterChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAllRowsByUser\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"aggre-gated/rows\\\",null,[[\\\"model\\\",\\\"worktime_page\\\",\\\"absence_page\\\",\\\"settings\\\",\\\"absence_settings\\\",\\\"status\\\",\\\"setRowsPerPage\\\"],[[23,1,[\\\"rows\\\"]],1,1,[24,[\\\"settings\\\"]],[24,[\\\"absence_settings\\\"]],\\\"all\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"aggre-gated\\\",null,[[\\\"filters\\\",\\\"absenceTypes\\\",\\\"absences\\\",\\\"worktimeSums\\\",\\\"dailyWorktimeSums\\\",\\\"date\\\",\\\"showAllRows\\\",\\\"showWarning\\\",\\\"addNew\\\",\\\"showRows\\\",\\\"print\\\",\\\"printAll\\\",\\\"toggleAllRows\\\",\\\"filterChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"absenceTypes\\\"]],[24,[\\\"absences\\\"]],[24,[\\\"worktimeSums\\\"]],[24,[\\\"dailyWorktimeSums\\\"]],[24,[\\\"date\\\"]],[24,[\\\"showAllRows\\\"]],[24,[\\\"showWarning\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showRows\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"print\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"printAll\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showAllRows\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"filterChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/aggregated/template.hbs\"}});","import Controller from '@ember/controller';\nimport { computed } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { A } from '@ember/array';\nimport EmberObject, { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    ttapi: service(),\n\n    queryParams: ['date', 'user'],\n    user: null,\n    tests: null,\n    tolerance: 15,\n    anomalies: alias('model'),\n\n    filters: computed(function () {\n        return A([\n            EmberObject.create({\n                field: 'date',\n                type: 'date',\n                form: 'worktime',\n                value: get(this, 'date'),\n            }),\n            EmberObject.create({\n                field: 'user',\n                type: 'database',\n                form: 'worktime',\n                value: get(this, 'user'),\n            }),\n        ]);\n    }),\n\n    actions: {\n        filterChanged(value, field) {\n            set(this, field, value);\n        },\n\n        showAddModal(type, day, user) {\n            set(this, 'type', type);\n            let params = {};\n\n            if (type === 'abcense') {\n                params.startdate = day;\n                params.enddate = day;\n            } else {\n                params.date = day;\n            }\n\n            if (user) {\n                params.user = get(this, 'store').peekRecord('user', user);\n            }\n\n            get(this, 'store').createRecord(type, params);\n\n            this.transitionToRoute({ queryParams: { modal: [type, 'new'] } });\n        },\n\n        showEditModal(type, rows) {\n            let row = get(rows, 'firstObject');\n            let params = [type, get(row, 'id')];\n            this.transitionToRoute({ queryParams: { modal: params } });\n        },\n\n        updateTests(tests) {\n            //need to convert over from emberobject to normal json\n            tests = JSON.parse(JSON.stringify(tests));\n\n            new Promise((resolve) => {\n                let params = {};\n\n                params['date'] = get(this, 'date');\n                params['user'] = get(this, 'user');\n                params['page'] = get(this, 'page');\n                params['anomalies'] = tests;\n                get(this, 'ttapi')\n                    ._post('/api/anomalyReport', params)\n                    .then(this._reloadModel.bind(this)) //eslint: Use named functions defined on objects to handle promises\n                    .then(resolve());\n            });\n        },\n\n        toggleSettingsPanel() {\n            this.toggleProperty('showSettings');\n        },\n    },\n\n    _reloadModel(anomalies) {\n        set(this, 'model', anomalies);\n    },\n\n    date:\n        moment().startOf('isoweek').subtract(1, 'week').format('YYYY-MM-DD') +\n        '_' +\n        moment().format('YYYY-MM-DD'),\n});\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport EmberObject, { get, set } from '@ember/object';\n\nexport default Route.extend({\n    ttapi: service(),\n    localStorageWrapper: service(),\n\n    queryParams: {\n        date: { refreshModel: true },\n        page: { refreshModel: true },\n        user: { refreshModel: true },\n    },\n\n    model: function (params) {\n        let anomalies = [];\n        let controller = this.controllerFor('timetracker/anomalies');\n        return new Promise((resolve) => {\n            new Promise((resolve) => {\n                let tests = get(this, 'ttapi')._get('/api/anomalyReport/anomalies');\n                resolve(tests);\n            }).then((tests) => {\n                tests.forEach((anomaly) => {\n                    let testParams = {\n                        test: anomaly,\n                        active: true,\n                        translatedName: 'anomaly.' + anomaly,\n                        tolerance: get(controller, 'tolerance'),\n                    };\n                    anomalies.push(EmberObject.create(testParams));\n                });\n\n                set(controller, 'anomalyTests', anomalies);\n                params['anomalies'] = JSON.parse(JSON.stringify(anomalies));\n\n                resolve(get(this, 'ttapi')._post('/api/anomalyReport', params));\n            });\n        });\n    },\n});\n","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\nimport { debounce } from '@ember/runloop';\n\nexport default Component.extend({\n    actions: {\n        toggleActive(test) {\n            test.toggleProperty('active');\n            this.update(); //calls the updateTests action passed from anomalies controller (check template)\n        },\n\n        setTolerance(test, tolerance) {\n            set(test, 'tolerance', tolerance);\n            debounce(this, this.update, 500); //calls the updateTests action passed from anomalies controller (check template)\n        },\n    },\n\n    update() {\n        this.updateTests(get(this, 'anomalyTests'));\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"+M3cVU8q\",\"block\":\"{\\\"symbols\\\":[\\\"test\\\"],\\\"statements\\\":[[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-default btn-toggleAnomalies\\\"],[10,\\\"data-toggle\\\",\\\"collapse\\\"],[10,\\\"data-target\\\",\\\"#anomaly_settings_panel\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"anomaly.settings\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Settings\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"id\\\",\\\"anomaly_settings_panel\\\"],[10,\\\"class\\\",\\\"collapse container-fluid\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"anomalyTests\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-3 col-lg-2 col-xl-1\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"ruleName\\\"],[8],[1,[28,\\\"t\\\",[[23,1,[\\\"translatedName\\\"]]],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3 col-md-3 col-lg-2 col-xl-1\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"theme\\\",\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"onLabel\\\",\\\"offLabel\\\",\\\"showLabes\\\"],[\\\"light\\\",[24,[\\\"disabled\\\"]],[23,1,[\\\"active\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleActive\\\",[23,1,[]]],null],\\\"medium\\\",\\\"on\\\",\\\"off\\\",true]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row settings-row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"active\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-fluid\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[1,[28,\\\"t\\\",[\\\"anomaly.tolerance\\\"],null],false],[0,\\\" : \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\",\\\"input\\\"],[\\\"toleranceInput\\\",\\\"number\\\",[23,1,[\\\"tolerance\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setTolerance\\\",[23,1,[]],[23,1,[\\\"tolerance\\\"]]],null]]]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/anomalies/settings-panel/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"v81bGMd0\",\"block\":\"{\\\"symbols\\\":[\\\"anomaly\\\",\\\"index\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"worktime\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"timetracker/anomalies/settings-panel\\\",null,[[\\\"anomalyTests\\\",\\\"updateTests\\\"],[[24,[\\\"anomalyTests\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateTests\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[24,[\\\"anomalies\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"anomalies\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"date\\\"]],\\\"L\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"user\\\",[[23,1,[\\\"user\\\"]]],null],false],[0,\\\" - \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"anomaly.names.\\\",[23,1,[\\\"name\\\"]]],null]],null],false],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-info pull-right\\\"],[10,\\\"data-toggle\\\",\\\"collapse\\\"],[11,\\\"data-target\\\",[29,[\\\"#fix_actions_\\\",[23,2,[]]]]],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"anomaly.fix_here\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"anomaly.values.given\\\"],null],false],[0,\\\": \\\"],[1,[23,1,[\\\"values\\\",\\\"given\\\"]],false],[0,\\\" - \\\"],[1,[28,\\\"t\\\",[\\\"anomaly.values.expected\\\"],null],false],[0,\\\": \\\"],[1,[23,1,[\\\"values\\\",\\\"expected\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"id\\\",[29,[\\\"fix_actions_\\\",[23,2,[]]]]],[10,\\\"class\\\",\\\"collapse\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-fluid\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link add-card-btn pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showAddModal\\\",\\\"abcense\\\",[23,1,[\\\"date\\\"]],[23,1,[\\\"user\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"anomaly.add_abcense\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link add-card-btn pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showAddModal\\\",\\\"worktime\\\",[23,1,[\\\"date\\\"]],[23,1,[\\\"user\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"anomaly.add_worktime\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"meta\\\",\\\"absences\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link add-card-btn pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showEditModal\\\",\\\"abcense\\\",[23,1,[\\\"meta\\\",\\\"absences\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"anomaly.edit_abcense\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,1,[\\\"meta\\\",\\\"worktimes\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link add-card-btn pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showEditModal\\\",\\\"worktime\\\",[23,1,[\\\"meta\\\",\\\"worktimes\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"anomaly.edit_worktime\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"anomaly.no_anomalies\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/anomalies/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalController;\n\nimport Ember from 'ember';\n\nTimetrackerApprovalController = Ember.Controller.extend({\n    intl: Ember.inject.service(),\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    queryParams: ['date', 'employer'],\n    userSelector2: true,\n    employer: null,\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'employer',\n                type: 'database',\n                form: 'worktime',\n                name: 'employer',\n                singleselect: 'true',\n            }),\n            Em.Object.create({\n                field: 'date',\n                type: 'date',\n                form: 'worktime',\n                name: 'date',\n                value: this.get('date'),\n                wagePeriods: true,\n            }),\n        ]);\n    }),\n    dateRange: Ember.computed('intl.primaryLocale', function () {\n        return Em.A([\n            Em.Object.create({\n                id:\n                    moment().startOf('week').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('week').format('YYYY-MM-DD'),\n                name:\n                    this.get('intl').t('timetracker.approval.this_week') +\n                    ': ' +\n                    moment().startOf('week').format('L') +\n                    '-' +\n                    moment().endOf('week').format('L'),\n            }),\n            Em.Object.create({\n                id:\n                    moment().subtract(1, 'week').startOf('week').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().subtract(1, 'week').endOf('week').format('YYYY-MM-DD'),\n                name:\n                    this.get('intl').t('timetracker.approval.last_week') +\n                    ': ' +\n                    moment().subtract(1, 'week').startOf('week').format('L') +\n                    '-' +\n                    moment().subtract(1, 'week').endOf('week').format('L'),\n            }),\n            Em.Object.create({\n                id:\n                    moment().startOf('week').subtract(2, 'week').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('week').subtract(1, 'week').format('YYYY-MM-DD'),\n                name:\n                    this.get('intl').t('timetracker.approval.last_two_weeks') +\n                    ': ' +\n                    moment().startOf('week').subtract(2, 'week').format('L') +\n                    '-' +\n                    moment().endOf('week').subtract(1, 'week').format('L'),\n            }),\n            Em.Object.create({\n                id:\n                    moment().subtract(1, 'months').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD'),\n                name:\n                    this.get('intl').t('timetracker.approval.last_month') +\n                    ': ' +\n                    moment().subtract(1, 'months').format('L') +\n                    '-' +\n                    moment().format('L'),\n            }),\n        ]);\n    }),\n    actions: {\n        filterChanged: function (value, fieldName) {\n            if (fieldName === 'employer') {\n                if (value == null) {\n                    return this.set('employer', '');\n                } else {\n                    return this.set('employer', value.id);\n                }\n            } else {\n                return this.set(fieldName, value);\n            }\n        },\n    },\n});\n\nexport default TimetrackerApprovalController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalIndexController;\n\nimport Ember from 'ember';\n\nTimetrackerApprovalIndexController = Ember.Controller.extend({\n    approvalController: Em.inject.controller('timetracker/approval'),\n    model: Em.computed.alias('approvalController.model'),\n    date: Em.computed.alias('approvalController.date'),\n    dateinterval: Em.computed('date', function () {\n        var dates, format;\n        dates = this.get('date').split('_');\n        format = moment.localeData().longDateFormat('L');\n        return moment(dates[0]).format(format) + ' - ' + moment(dates[1]).format(format);\n    }),\n    sites: Ember.computed('model.[]', function () {\n        var k, ret, site, sites, worktimes;\n        worktimes = this.get('model');\n        sites = {};\n        worktimes.forEach(function (time) {\n            var project_id;\n            project_id = time.get('project.id');\n            if (sites[project_id]) {\n                return sites[project_id].amount++;\n            } else {\n                return (sites[project_id] = {\n                    id: project_id,\n                    amount: 1,\n                    name: time.get('project.name'),\n                });\n            }\n        });\n        ret = Em.A([]);\n        for (k in sites) {\n            site = sites[k];\n            ret.pushObject(site);\n        }\n        return ret;\n    }),\n});\n\nexport default TimetrackerApprovalIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalIndexRoute;\n\nimport Ember from 'ember';\n\nTimetrackerApprovalIndexRoute = Ember.Route.extend();\n\n//    model: (params) ->\n//        params.status = 'open'\n//        params.sideload = true\n//#        params.date = moment().startOf('week').format('YYYY-MM-DD')+'_'+moment().endOf('week').format('YYYY-MM-DD')\n//        @store.query('worktime', params)\nexport default TimetrackerApprovalIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"OIgpSU3t\",\"block\":\"{\\\"symbols\\\":[\\\"site\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"approval.worktimes\\\"],[[\\\"dateinterval\\\"],[[24,[\\\"dateinterval\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sites\\\"]]],[[\\\"key\\\"],[\\\"id\\\"]],{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\",\\\"model\\\"],[\\\"a\\\",\\\"list-group-item\\\",\\\"timetracker.approval.site\\\",[23,1,[\\\"id\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge\\\"],[8],[1,[23,1,[\\\"amount\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/approval/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nTimetrackerApprovalRoute = Ember.Route.extend({\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params.status = 'open||system_edited';\n        params.sideload = true;\n        params.limit = 'all';\n        //        params.date = moment().startOf('week').format('YYYY-MM-DD')+'_'+moment().endOf('week').format('YYYY-MM-DD')\n        params.employer = this.controllerFor('timetracker.approval').get('employer');\n        if (!this.get('Collector').testNeedsOne('worktime.employer')) {\n            delete params.employer;\n        }\n        return this.store.query('worktime', params);\n    },\n    beforeModel: function () {\n        if ('readonly' in collector.forms.worktime.objects.status.features) {\n            return this.transitionTo('timetracker.timecard');\n        }\n    },\n    setupController: function (controller, model) {\n        return this._super(controller, model);\n    },\n});\n\nexport default TimetrackerApprovalRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/site/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalSiteController;\n\nimport Ember from 'ember';\n\nTimetrackerApprovalSiteController = Ember.Controller.extend({\n    //    needs: [\"timetracker/approval/site/user\"]\n    //    queryParams: [\"date\": {as: 'other-date'}]\n    userController: Ember.inject.controller('timetracker/approval/site/user'),\n    approvalIndexController: Ember.inject.controller('timetracker/approval/index'),\n    sites: Ember.computed('model.worktimes.firstObject.project.id', function () {\n        return this.get('approvalIndexController.sites');\n    }),\n    users: Ember.computed('model.worktimes.[]', function () {\n        var k, ret, user, users, worktimes;\n        worktimes = this.get('model.worktimes');\n        users = Em.A({});\n        worktimes.forEach(function (time) {\n            var user_id;\n            user_id = time.get('user.id');\n            if (!users[user_id]) {\n                return (users[user_id] = time.get('user'));\n            }\n        });\n        ret = Em.A([]);\n        for (k in users) {\n            user = users[k];\n            ret.pushObject(user);\n        }\n        return ret;\n    }),\n    currentUser: Ember.computed('users', 'userController.model.firstObject.user', function () {\n        if (this.get('userController.model.firstObject.user')) {\n            return this.get('userController.model.firstObject.user');\n        } else {\n            return this.get('users.firstObject');\n        }\n    }),\n    nextUser: Ember.computed('users', 'userController.model.firstObject.user', function () {\n        var found, i, len, ref, self, user;\n        self = this;\n        found = false;\n        ref = this.get('users');\n        for (i = 0, len = ref.length; i < len; i++) {\n            user = ref[i];\n            if (found) {\n                return user;\n            }\n            if (user.get('id') === self.get('currentUser.id')) {\n                found = true;\n            }\n        }\n    }),\n    previousUser: Ember.computed('users', 'userController.model.firstObject.user', function () {\n        var i, last, len, ref, self, user;\n        self = this;\n        last = void 0;\n        ref = this.get('users');\n        for (i = 0, len = ref.length; i < len; i++) {\n            user = ref[i];\n            if (user.get('id') === self.get('currentUser.id')) {\n                return last;\n            }\n            last = user;\n        }\n    }),\n    currentSite: Ember.computed('sites', 'model.firstObject.project', function () {\n        return this.get('model.worktimes.firstObject.project');\n    }),\n    previousSite: Ember.computed('sites', function () {\n        var i, last, len, ref, self, site;\n        self = this;\n        last = void 0;\n        ref = this.get('sites');\n        for (i = 0, len = ref.length; i < len; i++) {\n            site = ref[i];\n            if (site['id'] === self.get('currentSite.id')) {\n                return last;\n            }\n            last = site;\n        }\n    }),\n    nextSite: Ember.computed('sites', function () {\n        var found, i, len, ref, self, site;\n        self = this;\n        found = false;\n        ref = this.get('sites');\n        for (i = 0, len = ref.length; i < len; i++) {\n            site = ref[i];\n            if (found) {\n                return site;\n            }\n            if (site['id'] === self.get('currentSite.id')) {\n                found = true;\n            }\n        }\n    }),\n});\n\nexport default TimetrackerApprovalSiteController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/site/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalSiteRoute;\n\nimport Ember from 'ember';\n\nTimetrackerApprovalSiteRoute = Ember.Route.extend({\n    model: function (params) {\n        //        params.status = 'open'\n        params.sideload = true;\n        params.date = this.controllerFor('timetracker.approval').get('date');\n        params.employer = this.controllerFor('timetracker.approval').get('employer');\n        if (!this.get('Collector').testNeedsOne('worktime.employer')) {\n            delete params.employer;\n        }\n        return Em.RSVP.hash({\n            project: this.store.findRecord('project', params.project),\n            worktimes: this.store.query('worktime', params),\n        });\n    },\n    afterModel: function (model, transition) {\n        var first, worktimes;\n        worktimes = model.worktimes;\n        if (worktimes.get('length') > 0) {\n            first = worktimes.get('firstObject.user.id');\n            return this.transitionTo('timetracker.approval.site.user', first);\n        }\n    },\n});\n\nexport default TimetrackerApprovalSiteRoute;\n","export default Ember.HTMLBars.template({\"id\":\"7oeFJplA\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"currentSite\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 col-margin-top\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"previousSite\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"classNames\\\",\\\"tagName\\\",\\\"route\\\",\\\"models\\\"],[\\\"btn btn-m-default pull-left\\\",\\\"a\\\",\\\"timetracker.approval.site.user\\\",[28,\\\"array\\\",[[24,[\\\"previousSite\\\",\\\"id\\\"]],[24,[\\\"currentUser\\\",\\\"id\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"standard-icon\\\",[\\\"previous\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"approval-menu pull-right hidden-xs\\\"],[8],[1,[24,[\\\"previousSite\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h2\\\",true],[8],[1,[24,[\\\"currentSite\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 col-margin-top\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"nextSite\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"pull-left approval-menu hidden-xs\\\"],[8],[1,[24,[\\\"nextSite\\\",\\\"name\\\"]],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"classNames\\\",\\\"tagName\\\",\\\"route\\\",\\\"models\\\"],[\\\"btn btn-m-default pull-right\\\",\\\"a\\\",\\\"timetracker.approval.site.user\\\",[28,\\\"array\\\",[[24,[\\\"nextSite\\\",\\\"id\\\"]],[24,[\\\"currentUser\\\",\\\"id\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"standard-icon\\\",[\\\"next\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentUser\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 col-margin-top\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"previousUser\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"classNames\\\",\\\"tagName\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-m-default pull-left\\\",\\\"a\\\",\\\"timetracker.approval.site.user\\\",[24,[\\\"previousUser\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"standard-icon\\\",[\\\"previous\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"approval-menu pull-right hidden-xs\\\"],[8],[1,[24,[\\\"previousUser\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"previousUser\\\",\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[24,[\\\"currentUser\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"currentUser\\\",\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 col-margin-top\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"nextUser\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"pull-left approval-menu hidden-xs\\\"],[8],[1,[24,[\\\"nextUser\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"nextUser\\\",\\\"lastname\\\"]],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"classNames\\\",\\\"tagName\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-m-default pull-right\\\",\\\"a\\\",\\\"timetracker.approval.site.user\\\",[24,[\\\"nextUser\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"standard-icon\\\",[\\\"next\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n         \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well text-center\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timetracker.approval.site.no_worktimes\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/approval/site/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/site/user/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalSiteUserController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../../controllers/general-report';\n\nimport collector from '../../../../../classes/collector';\n\nTimetrackerApprovalSiteUserController = GeneralReportController.extend({\n    //    status: 'all'\n    queryParams: ['status', 'page'],\n    form: 'worktime',\n    localStorageKey: 'Tt4.WorktimeApproval',\n    showColumns: ['task', 'status', 'starttime', 'endtime', 'work_hours', 'pause', 'description'],\n    sortByDates: true,\n    status: 'all',\n    statusSelector: true,\n    user: null,\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    project: null,\n    date: Em.computed(function () {\n        return this.get('model').get('query.date');\n    }),\n    setData: function (params) {\n        this.set('user', params.user);\n        this.set('project', params.project);\n        return this.set('date', params.date);\n    },\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n                form: 'worktime',\n                value: this.get('project'),\n            }),\n            Em.Object.create({\n                field: 'user',\n                form: 'worktime',\n                value: this.get('user'),\n            }),\n            Em.Object.create({\n                field: 'date',\n                start: '',\n                end: '',\n                form: 'worktime',\n                type: 'date',\n                value: this.get('date'),\n            }),\n        ]);\n    }),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: {\n                modal: true,\n            },\n            historyRoute: 'timetracker.history',\n        }),\n    }),\n    hideColumns: Em.on('init', function () {\n        var fields;\n        fields = collector.getFormObjects('worktime');\n        if (\n            fields &&\n            fields.starttime.features.hide &&\n            fields.endtime.features.hide &&\n            fields.work_hours.features.mandatory\n        ) {\n            return this.set('settings.hideColumns', ['starttime', 'endtime']);\n        }\n    }),\n});\n\nexport default TimetrackerApprovalSiteUserController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/site/user/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalSiteUserRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../../routes/general-report';\n\nTimetrackerApprovalSiteUserRoute = GeneralReportRoute.extend({\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n    },\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.setData(model.query);\n    },\n    model: function (params) {\n        var parentModel;\n        params = this._super(params);\n        if (params.status === 'all') {\n            delete params.status;\n        }\n        parentModel = this.modelFor('timetracker.approval.site');\n        params.project = parentModel.project.get('id');\n        params.date = this.controllerFor('timetracker.approval').get('date');\n        params.employer = this.controllerFor('timetracker.approval').get('employer');\n        if (!this.get('Collector').testNeedsOne('worktime.employer')) {\n            delete params.employer;\n        }\n        params.sideload = true;\n        //        params.status = 'open'\n        return this.store.query('worktime', params);\n    },\n});\n\nexport default TimetrackerApprovalSiteUserRoute;\n","export default Ember.HTMLBars.template({\"id\":\"cATHirzQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"settings\\\",\\\"page\\\",\\\"showColumns\\\",\\\"status\\\",\\\"sortByDates\\\",\\\"localStorageKey\\\"],[\\\"bubbleTransition\\\",\\\"worktime\\\",[24,[\\\"model\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"page\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"status\\\"]],true,\\\"worktime.approval\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/approval/site/user/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"aSvPSN8F\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-employer\\\"],[8],[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"classes\\\",\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[\\\"form-control\\\",[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/approval/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/avi/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsAviController;\n\nimport Ember from 'ember';\n\nimport pdfExport from '../../../mixins/pdf-export';\n\nimport csvExport from '../../../mixins/csv-export';\n\nimport avi from '../../../mixins/avi';\n\nimport initController from '../../../mixins/init-controller';\n\nimport $ from 'jquery';\n\nOrientationsAviController = Ember.Controller.extend(pdfExport, csvExport, avi, initController, {\n    intl: Ember.inject.service(),\n    collector: Ember.inject.service('collector-service'),\n    limit: 25,\n    page: 1,\n    project: null,\n    country: null,\n    queryParams: ['project', 'country', 'page', 'showWorkingNow'],\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n                form: 'worktime',\n                singleselect: 'true',\n                value: this.project,\n            }),\n            Em.Object.create({\n                field: 'homecountry',\n                form: 'user',\n                type: 'dropdown_country',\n                value: this.country,\n            }),\n        ]);\n    }),\n    rowActions: [],\n    pages: Em.computed('model.count', function () {\n        if (this.get('showWorkingNow') === 'true') {\n            return 1;\n        } else {\n            return Math.ceil(this.get('model.count') / this.get('limit'));\n        }\n    }),\n    showColumns: [\n        'firstname',\n        'lastname',\n        'birthdate',\n        'taxnumber',\n        'employer',\n        'startdate',\n        'enddate',\n        'orientation_ori_date',\n        'orientation_pass_end',\n        'homecountry',\n        'sent_contact_person',\n        'sent_contact_address',\n        'workpass',\n    ],\n    init_functions: function () {\n        if(this.collector.testNeedsOne('products.workPermit')) {\n            // if the user has the workPermit product,\n            // we need to add the workpermit columns to the showColumns array after the homecountry column\n            const pushIndex = this.showColumns.indexOf('homecountry') + 1;\n            this.showColumns.replace(pushIndex, 0, ['nationality', 'work_permit_type', 'workpermit']);\n        }\n\n        return this._super();\n    },\n    data: Em.computed('model.users.[]', function () {\n        var data;\n        data = this.get('model.users');\n        if (!data) {\n            return null;\n        }\n        return this.format_data(data);\n    }),\n    format_data: function (data, formatExport = false) {\n        var columns, formatted_data, intl;\n        intl = this.get('intl');\n        columns = this.get('showColumns');\n        formatted_data = Em.A([]);\n        data.forEach((unformatted_row) => {\n            var row;\n            row = Ember.Object.create();\n            if (unformatted_row.id) {\n                row.id = unformatted_row.id;\n            }\n            $.each(columns, (key, column) => {\n                var cell;\n                cell = unformatted_row[column];\n                if (column === 'birthdate' || column === 'startdate' || column === 'enddate') {\n                    if (cell != null) {\n                        cell = moment(cell).format('L');\n                    }\n                }\n                if (column === 'employer') {\n                    if (cell) {\n                        cell = cell.emp_id + ' ' + cell.name;\n                    }\n                }\n                if (column === 'orientation_ori_date') {\n                    if (unformatted_row.orientation != null) {\n                        cell = moment(unformatted_row.orientation.ori_date).format('L');\n                    }\n                }\n                if (column === 'orientation_pass_end') {\n                    if (unformatted_row.orientation != null) {\n                        cell = moment(unformatted_row.orientation.pass_end).format('L');\n                    }\n                }\n                if (column === 'workpass') {\n                    if (cell === false) {\n                        cell = intl.t('general.no');\n                    }\n                    if (cell === true) {\n                        cell = intl.t('general.yes');\n                    }\n                }\n                if (column === 'workpermit' && formatExport) {\n                    if (cell) {\n                        data = Ember.A(cell);\n                        cell = this.collector._format_(data, \"user\", 'workpermit', formatExport); \n                    }\n                }\n                return (row[column] = cell);\n            });\n            return formatted_data.pushObjects([row]);\n        });\n        return formatted_data;\n    },\n    // get translation for every column\n    translated_columns: Em.computed('showColumns', function () {\n        var c, columns, intl, translated_columns;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        columns = this.get('showColumns');\n        translated_columns = [];\n        $.each(columns, (key, item) => {\n            return translated_columns.push(intl.t('report.avi.' + item));\n        });\n        return translated_columns;\n    }),\n    make_pdf_export: function (data) {\n        var addHeader, element, intl, project;\n        intl = this.get('intl');\n        element = this.createPdfTableElement(\n            this.get('showColumns'),\n            data,\n            this.get('translated_columns'),\n        );\n        project = this.get('store').peekRecord('project', this.get('project'));\n        addHeader = intl.t('report.orientations.avi') + ' - ' + project.get('name');\n        return this.createPdfFromElements([element], 'download', addHeader.toString(), 16).then(\n            (file) => {\n                if (typeof cordova !== 'undefined' && cordova !== null) {\n                    return this.get('cordova').openFile(file, 'application/pdf');\n                }\n            },\n        );\n    },\n    make_csv_export: function (data) {\n        var element;\n        element = this.createCsvElement(\n            this.get('showColumns'),\n            data,\n            this.get('translated_columns'),\n        );\n        return this.createCsvFromElements(element, false);\n    },\n    actions: {\n        catchActions: function (action, params) {\n            if (action === 'columnClicked') {\n                return;\n            }\n            return this.send(action, params);\n        },\n        filterChanged: function (value, fieldName) {\n            if (fieldName === 'project') {\n                if (value == null) {\n                    this.set('project', '');\n                } else {\n                    this.set('project', value.id);\n                }\n            }\n            if (fieldName === 'homecountry') {\n                return this.set('country', value);\n            }\n        },\n        showWorkingNowRows: function () {\n            //stupid way to find out if its true, sometimes it's string and sometimes boolean\n            if (this.get('showWorkingNow') === true || this.get('showWorkingNow') === 'true') {\n                this.set('showWorkingNow', false);\n            } else {\n                this.set('showWorkingNow', true);\n                this.set('page', 1);\n            }\n            return false;\n        },\n        export_csv: function () {\n            var checked_data, data, params, use_checked_rows;\n            data = this.get('data');\n            use_checked_rows = false;\n            checked_data = Em.A([]);\n            data.forEach((row) => {\n                if (row.checkedClass === 'checked') {\n                    use_checked_rows = true;\n                    return checked_data.push(row);\n                }\n            });\n            if (use_checked_rows) {\n                data = checked_data;\n                return this.make_csv_export(data);\n            } else {\n                params = {\n                    project: this.get('project'),\n                    order: this.get('order'),\n                    limit: 'all',\n                };\n                if (this.get('showWorkingNow')) {\n                    params.showWorkingNow = 'true';\n                }\n                return this.getAviData(params).then((avidata) => {\n                    data = this.format_data(avidata.users, 'csv');\n                    return this.make_csv_export(data);\n                });\n            }\n        },\n        export_pdf: function () {\n            var checked_data, data, params, use_checked_rows;\n            data = this.get('data');\n            use_checked_rows = false;\n            checked_data = Em.A([]);\n            data.forEach((row) => {\n                if (row.checkedClass === 'checked') {\n                    use_checked_rows = true;\n                    return checked_data.push(row);\n                }\n            });\n            if (use_checked_rows) {\n                data = checked_data;\n                return this.make_pdf_export(data);\n            } else {\n                params = {\n                    project: this.get('project'),\n                    order: this.get('order'),\n                    limit: 'all',\n                };\n                if (this.get('showWorkingNow')) {\n                    params.showWorkingNow = 'true';\n                }\n                return this.getAviData(params).then((avidata) => {\n                    data = this.format_data(avidata.users, 'pdf');\n                    return this.make_pdf_export(data);\n                });\n            }\n        },\n    },\n});\n\nexport default OrientationsAviController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/avi/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsAviRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nimport avi from '../../../mixins/avi';\n\nOrientationsAviRoute = GeneralReportRoute.extend(avi, {\n    queryParams: {\n        project: {\n            refreshModel: true,\n            replace: true,\n        },\n        country: {\n            refreshModel: true,\n            replace: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        showWorkingNow: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        return this.getAviData(params);\n    },\n});\n\nexport default OrientationsAviRoute;\n","export default Ember.HTMLBars.template({\"id\":\"6H5HWOH2\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"columns\\\",\\\"column\\\",\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 text-right\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showWorkingNowRows\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showWorkingNow\\\"]],\\\"true\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"report.avi.show_all\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"report.avi.show_working_now\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[6,[23,5,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\",[24,[\\\"data\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_csv\\\",[24,[\\\"data\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_csv\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"checkable\\\",\\\"hideSort\\\"],[[24,[\\\"showColumns\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"data\\\"]],[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",false,true]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"tr\\\",true],[11,\\\"class\\\",[29,[[23,1,[\\\"class\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"eq\\\",[[23,3,[]],\\\"workpermit\\\"],null],[28,\\\"eq\\\",[[23,3,[]],\\\"work_permit_type\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                    \\\"],[5,\\\"addon/value-format\\\",[],[[\\\"@form\\\",\\\"@field\\\",\\\"@value\\\",\\\"@record\\\"],[\\\"user\\\",[23,3,[]],[28,\\\"get\\\",[[23,1,[]],[23,3,[]]],null],[23,1,[]]]]],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"get\\\",[[23,1,[]],[23,3,[]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[0,\\\"\\\\n\\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pages\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/avi/template.hbs\"}});","/* eslint-disable ember/named-functions-in-promises */\nimport { htmlSafe } from '@ember/string';\nimport { A } from '@ember/array';\nimport EmberObject, { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport Controller from '@ember/controller';\nimport initController from '../../../mixins/init-controller';\nimport FormatUtil from 'tt4/utils/format';\nconst format = FormatUtil.create(); // because reasons\n\nconst { alias } = computed;\n\nexport default Controller.extend(initController, {\n    store: service(),\n    collector: service('collector-service'),\n    intl: service(),\n    capi: service(),\n    ttapi: service(),\n    dialogs: service(),\n    gui: service(),\n    session: service(),\n    fileExports: service('file-exports'),\n    flags: service(),\n    evented: service(),\n    router: service(),\n    queryParams: ['date', 'page', 'user', 'employer', 'hideEmptyRows'],\n    date: null,\n    page: 1,\n    user: null,\n    employer: null,\n    limit: 25,\n    hideEmptyRows: false,\n    historyDataLoading: false,\n    historyFilters: null,\n    newDeducterRecord: null,\n    bankfields: null,\n    historyOldestDate: null,\n    historyAllLoaded: false,\n    loadOlderHistory: false,\n\n    accounts: alias('model.accounts'),\n    userRows: alias('model.users'),\n\n    usersWithBanks: computed('userRows.users', function () {\n        return get(this, 'userRows.users').map(this.reformatUserRow.bind(this));\n    }),\n\n    columnList: computed('accounts', function () {\n        const list = ['user'];\n\n        get(this, 'accounts').forEach((account) => {\n            let column = get(account, 'column');\n            if (!column) {\n                column = 'bank_' + get(account, 'id');\n            }\n\n            list.push(column);\n        });\n\n        return list;\n    }),\n\n    banks: computed(function () {\n        return get(this, 'store').peekAll('bank');\n    }),\n\n    translated_columns: computed('year', function () {\n        return get(this, 'columnList').map((column) => {\n            if (column === 'user') {\n                return get(this, 'intl').t('defaults.field.' + column);\n            } else {\n                let account = get(this, 'accounts').findBy('column', column);\n                if (!account) {\n                    account = get(this, 'accounts').findBy('id', column.replace('bank_', ''));\n                }\n                return get(account, 'name');\n            }\n        });\n    }),\n\n    translated_columns2: computed('year', function () {\n        return get(this, 'showHistoryColumns').map((column) => {\n            if (column === 'date') {\n                return get(this, 'intl').t('report.worktime.date');\n            } else if (column === 'bank') {\n                return get(this, 'intl').t('settings.timetracker.banks');\n            } else if (column === 'absencetype') {\n                return get(this, 'intl').t('abcense.abcensetype');\n            } else if (column === 'description') {\n                return get(this, 'intl').t('worktime.description');\n            } else if (column === 'hours') {\n                return get(this, 'intl').t('report.worktime.work_hours');\n            } else if (column === 'addhours') {\n                return get(this, 'intl').t('report.bankdeducter.addhours');\n            } else {\n                return column;\n            }\n        });\n    }),\n\n    filters: computed('date', function () {\n        let filters = A([\n            EmberObject.create({\n                field: 'date',\n                type: 'date',\n                form: 'worktime',\n                value: get(this, 'date'),\n                defaultValue: get(this, 'default_date'),\n            }),\n            EmberObject.create({\n                field: 'user',\n                type: 'database',\n                form: 'worktime',\n                value: get(this, 'user'),\n            }),\n            EmberObject.create({\n                field: 'employer',\n                type: 'database',\n                form: 'worktime',\n                value: get(this, 'employer'),\n            }),\n        ]);\n\n        return filters;\n    }),\n\n    isCordova: computed(function () {\n        return get(this, 'gui.isCordova');\n    }),\n\n    earliestDate: computed('model.firstDate', function () {\n        // If model.firstDate is empty or undefined, fallback to 6 years ago to match old logic, etc.\n        return get(this, 'model.firstDate') || moment().subtract(6, 'years').format('YYYY-MM-DD');\n    }),\n\n    currentDate: computed(function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n\n    actions: {\n        clearAllFilters() {\n            // Reset the query param properties\n            set(this, 'date', null);\n            set(this, 'user', null);\n            set(this, 'employer', null);\n            set(this, 'page', 1);\n\n            // Transition to the same route with an empty queryParams object\n            this.router.transitionTo('timetracker.bank', { queryParams: {} });\n          },\n        deducterAdded(rec) {\n            if (this.checkedRows) {\n                let promises = [];\n                for (let i = 1; i < this.checkedRows.length; i++) {\n                    promises.push(\n                        get(this, 'store')\n                            .createRecord('bankdeducter', {\n                                date: get(rec, 'date'),\n                                user: this.checkedRows[i],\n                                hours: get(rec, 'hours'),\n                                column: rec.column,\n                                addhours: get(rec, 'addhours'),\n                                description: get(rec, 'description'),\n                            })\n                            .save(),\n                    );\n                }\n\n                Promise.all(promises).then(() => {\n                    set(this, 'checkedRows', false);\n                    this.send('refreshReport');\n                });\n            } else {\n                this.send('refreshReport');\n            }\n        },\n\n        filterChanged(value, field) {\n            // only way to empty date-filter\n            if (field == 'date' && value == get(this, 'default_date')) {\n                set(this, 'filters.0.value', null);\n                this.notifyPropertyChange('filters');\n            }\n            set(this, field, value);\n            if (field == 'user') {\n                set(this, 'filters.1.value', value);\n                this.router.transitionTo({ queryParams: {\n                    [field]: value,\n                    page: 1, // Reset page to 1 when changing user\n                 } });\n            }\n            if (field == 'employer') {\n                set(this, 'filters.2.value', value);\n                this.router.transitionTo({ queryParams: {\n                    [field]: value,\n                    page: 1, // Reset page to 1 when changing employer\n                 } });\n            }\n        },\n\n        closeEditManualEntry() {\n            set(this, 'showFormDeducter', null);\n            this.send('refreshReport');\n            this.send('showWorkBankHistoryModal', get(this, 'selectedUserObj'));\n        },\n\n        historyRowAction(action, row) {\n            if (action === 'remove') {\n                get(this, 'dialogs')\n                    .confirm(get(this, 'intl').t('report.confirm_delete'))\n                    .then(this.removeOrNot.bind(this, row));\n            }\n            if (action === 'edit') {\n                let found = get(this, 'store').peekRecord('bankdeducter', row.id);\n                if (found) {\n                    set(this, 'showFormDeducter', found);\n                } else {\n                    get(this, 'store')\n                        .peekRecord('bankdeducter', row.id)\n                        .then((data) => set(this, 'showFormDeducter', data));\n                }\n            }\n        },\n\n        onFilterHistoryChange(name, e) {\n            this.filterHistory(name, e.target.value);\n        },\n\n        showDeducterModal(on) {\n            if (this.banks.length === 0) {\n                return get(this, 'dialogs').alert(\n                    get(this, 'intl').t('worktimebank.notice.no_worktimebanks_found'),\n                );\n            }\n\n            set(this, 'newDeducterRecord', this.store.createRecord('bankdeducter'));\n            set(this, 'values', { user: null, hours: 0, addhours: false, description: null });\n            set(this, 'showDeducter', on);\n        },\n\n        setBankDate(date) {\n            set(this, 'values.date', date);\n        },\n\n        selectUser(record) {\n            set(this, 'values.user', record);\n        },\n\n        setHours(hours) {\n            set(this, 'values.hours', hours);\n        },\n        setAddhours(check) {\n            set(this, 'values.addhours', check);\n        },\n\n        changeColumn(column) {\n            set(this, 'values.column', column);\n        },\n\n        setDesc(desc) {\n            set(this, 'values.description', desc);\n        },\n\n        async showWorkBankHistoryModal(user) {\n            const userid = user.userid;\n            let absencetypes_ids = [];\n            let banks = [];\n\n            const existingHistoryData = this.loadOlderHistory ? get(this, 'historyData') || [] : [];\n            let historyData = [];\n\n            // Only set historyData to null if we're NOT loading older history\n            if (!this.loadOlderHistory) {\n                set(this, 'historyDataLoading', true);\n                set(this, 'historyData', null);\n                set(this, 'selectedUser', null);\n                set(this, 'historyData_filtered', null);\n                set(this, 'historyFilters.type', 'both');\n                set(this, 'historyFilters.bank', 'all');\n                set(this, 'reservedData', null);\n                set(this, 'reservedSummary', null);\n                set(this, 'reservedData_filtered', null);\n            } else {\n                set(this, 'historyDataLoading', true);\n            }\n\n            let endDate;\n            let startDate;\n\n            if (this.loadOlderHistory) {\n                endDate = this.historyOldestDate;\n                startDate = '2019-01-01';\n            } else {\n                endDate = moment().format('YYYY-MM-DD');\n                startDate = moment().subtract(6, 'years').format('YYYY-MM-DD');\n            }\n\n            // Set the initial date range - last 6 years\n            set(this, 'historyOldestDate', startDate);\n            set(this, 'historyAllLoaded', startDate <= '2019-01-01');\n\n            set(this, 'selectedUserObj', user);\n\n            this.store\n                .query('user', { id: userid })\n                .then((data) => set(this, 'selectedUser', data.objectAt(0)));\n\n            const reservedData = [];\n\n            const fetchAbsences = async (fromDate, toDate, targetArray, type) => {\n                const dateRange = `${fromDate}_${toDate}`;\n                const order = type === 'reserved' ? 'startdate' : 'startdate-';\n                return get(this, 'capi')\n                    .request(\n                        '/abcenses?user=' +\n                            userid +\n                            '&startdate=' +\n                            dateRange +\n                            '&limit=100&abcensetype=' +\n                            absencetypes_ids.map((el) => el.id) +\n                            '&sideload=true' +\n                            '&order=' + order,\n                    )\n                    .then((data) => {\n                        data.abcenses.forEach((row) => {\n                            let bank = '';\n                            let bankf = banks.filter(\n                                (el) => parseInt(el.absencetype) === parseInt(row.abcensetype),\n                            );\n\n                            if (bankf.length) {\n                                bank = bankf[0].name;\n                            }\n\n                            let absencetype = '';\n\n                            let absencetype_f = absencetypes_ids.filter(\n                                (el) => parseInt(el.id) === parseInt(row.abcensetype),\n                            );\n                            if (absencetype_f.length) {\n                                absencetype = absencetype_f[0].name;\n                                targetArray.push({\n                                    hours: format.hours(row.absence_hours),\n                                    hours_raw: parseFloat(row.absence_hours) || 0,\n                                    user: data.users[0].firstname + ' ' + data.users[0].lastname,\n                                    date: row.startdate,\n                                    description: row.description,\n                                    bank: bank,\n                                    absencetype: absencetype,\n                                    absencetype_id: absencetype_f[0].id,\n                                    type: type,\n                                    addhours: false,\n                                });\n                            }\n                        });\n                    });\n            };\n\n            const getBankdeducter = async (fromDate, toDate) => {\n                return this.store.query('bankdeducter', {\n                    user: user.userid,\n                    date: `${fromDate}_${toDate}`\n                }).then((data) => {\n                    data.map((historyrow) => {\n                        historyData.push({\n                            id: get(historyrow, 'id'),\n                            date: get(historyrow, 'date'),\n                            addhours: get(historyrow, 'addhours'),\n                            user:\n                                get(historyrow, 'user.firstname') +\n                                ' ' +\n                                get(historyrow, 'user.lastname'),\n                            description: get(historyrow, 'description'),\n                            hours: format.hours(get(historyrow, 'hours')),\n                            bank: getBankName(banks, get(historyrow, 'column')),\n                            type: 'manual',\n                        });\n                    });\n                });\n            };\n\n            const getBankName = (ar, columnName) => {\n                if (columnName === null) return '';\n\n                let found = ar.filter((el) => el.column === columnName);\n\n                // no bank with column\n                if (!found.length) {\n                    let name = columnName.replace('bank_', '');\n                    found = ar.filter((el) => el.row_info === name);\n                }\n\n                if (found.length) {\n                    found = found[0].name;\n                } else {\n                    found = '';\n                }\n                return found;\n            };\n\n            const getWorkTime = async (column, fromDate, toDate) => {\n                let queryObj = {\n                    date: `${fromDate}_${toDate}`,\n                    sideload: true,\n                    user: user.userid,\n                    limit: 'all',\n                };\n\n                // Make sure we only get work entries that\n                // actually have something filled in\n                queryObj[column] = '!(empty)';\n\n                return this.store.query('worktime', queryObj).then((worktimerows) => {\n                    this.accounts.forEach((el) => {\n                        const accountcolumn = el.column;\n                        if (!accountcolumn) return;\n                        const bankName = getBankName(banks, column);\n                        worktimerows.forEach((workrow) => {\n                            let hoursInAccount = get(workrow, accountcolumn);\n                            if (hoursInAccount && get(el, 'name') === bankName) {\n                                var bankrow = {\n                                    hours: format.hours(hoursInAccount),\n                                    user:\n                                        get(workrow, 'user.firstname') +\n                                        ' ' +\n                                        get(workrow, 'user.lastname'),\n                                    date: get(workrow, 'date'),\n                                    bank: bankName,\n                                    type: 'entry',\n                                    addhours: true,\n                                };\n                                historyData.push(bankrow);\n                            }\n                        });\n                    });\n                });\n            };\n\n            const getbanks = async () => {\n                return this.store.query('bank', {}).then((data) => {\n                    data.forEach((row) => {\n                        // only push if get(row, \"absencetype.id\") is something\n                        let id = get(row, 'absencetype.id');\n                        let name = get(row, 'absencetype.name');\n                        if (id !== undefined) {\n                            absencetypes_ids.push({\n                                id,\n                                name,\n                            });\n                        }\n\n                        banks.push(JSON.parse(JSON.stringify(row)));\n                    });\n                });\n            };\n\n            set(this, 'historyModal', true);\n\n            try {\n                await getbanks();\n                await getBankdeducter(startDate, endDate);\n\n                // We need make request for each bank, becaus we cant use\n                // column_name=!(empty) with multiple values\n                for (const bank of banks) {\n                    if (bank.column) {\n                        await getWorkTime(bank.column, startDate, endDate);\n                    }\n                }\n\n                await fetchAbsences(startDate, endDate, historyData, 'absence');\n\n                // Fetch future absences for reserved section (skip on loadOlderHistory — same data)\n                if (!this.loadOlderHistory) {\n                    const tomorrow = moment().add(1, 'days').format('YYYY-MM-DD');\n                    const reservedEndDate = moment().add(6, 'years').format('YYYY-MM-DD');\n                    await fetchAbsences(tomorrow, reservedEndDate, reservedData, 'reserved');\n\n                    // Set reserved data\n                    set(this, 'reservedData', reservedData);\n\n                    // Compute summary: aggregate hours per bank\n                    const summaryMap = {};\n                    reservedData.forEach((row) => {\n                        if (!summaryMap[row.bank]) {\n                            summaryMap[row.bank] = 0;\n                        }\n                        summaryMap[row.bank] += row.hours_raw;\n                    });\n                    set(this, 'reservedSummary', Object.keys(summaryMap).map((bank) => ({\n                        bank,\n                        hours: format.hours(summaryMap[bank]),\n                    })));\n                }\n            } catch (e) {\n                let message = e.message || 'Server error';\n                get(this, 'dialogs').alert(message);\n            }\n\n            set(this, 'historyDataLoading', false);\n\n            // Sort the newly loaded data\n            const sortedNewData = historyData.sort((el1, el2) => (el1.date < el2.date ? 1 : -1));\n\n            if (this.loadOlderHistory) {\n                // Combine new data with existing data when loading older history\n                const combinedData = [...existingHistoryData, ...sortedNewData];\n                set(\n                    this,\n                    'historyData',\n                    combinedData.sort((el1, el2) => (el1.date < el2.date ? 1 : -1))\n                );\n            } else {\n                // Original behavior for initial load\n                set(this,'historyData', sortedNewData);\n            }\n\n            set(this, 'historyData_filtered', get(this, 'historyData'));\n            set(this, 'reservedData_filtered', get(this, 'reservedData'));\n            this.filterHistory('type', 'both');\n\n            if (this.loadOlderHistory) {\n                set(this, 'loadOlderHistory', false);\n            }\n        },\n\n        async loadOlderHistory() {\n            try {\n                set(this, 'historyDataLoading', true);\n                set(this, 'loadOlderHistory', true);\n\n                this.send('showWorkBankHistoryModal', get(this, 'selectedUserObj'));\n\n            } catch (error) {\n                get(this, 'dialogs').alert(`Error loading older history: ${error.message || 'Unknown error'}`);\n                // Only reset loading state if there was an error\n                set(this, 'historyDataLoading', false);\n            }\n        },\n\n        action(action, row) {\n            if (action === 'showHistory') {\n                this.send('showWorkBankHistoryModal', row);\n            }\n            if (action === 'checkedRows') {\n                let users = row.map((item) => get(this, 'store').peekRecord('user', item.userid));\n                set(this, 'checkedRows', users);\n            }\n        },\n\n        closeHistoryModal() {\n            set(this, 'historyModal', false);\n            this.send('refreshModel');\n        },\n\n        refreshReport() {\n            this.notifyPropertyChange('rows');\n            this.notifyPropertyChange('deducters');\n        },\n\n        // Update report after saved page\n        updateReport() {\n            this.send('refreshModel');\n            set(this, 'showDeducter', null);\n        },\n\n        showSettings() {\n            let self = this;\n            this.store\n                .findAll('bank', { include: 'absencetype', reload: true })\n                .then(function (data) {\n                    set(self, 'settingsModel', data);\n                    set(self, 'showSettingsDialog', true);\n                });\n        },\n        deleteBank(row) {\n            let self = this;\n            get(this, 'store')\n                .peekRecord('bank', row.id)\n                .destroyRecord()\n                .then(function () {\n                    self.send('refreshModel');\n                });\n        },\n        createNewBank(values) {\n            let self = this;\n            get(this, 'store')\n                .createRecord('bank', values)\n                .save()\n                .then(function () {\n                    self.send('refreshModel');\n                });\n        },\n\n        editBank(row) {\n            return get(this, 'store').findRecord('bank', row.id);\n        },\n        saveBank(record) {\n            return record.save().then(() => {\n                this.send('refreshModel');\n            });\n        },\n        async exportExcel() {\n            let excelHeaders = [];\n            get(this, 'translated_columns').forEach((col, index) => {\n                excelHeaders.pushObject({ name: col, key: get(this, 'columnList')[index] });\n            });\n\n            const exportRows = await this.newExportRows();\n\n            const rows = exportRows?.users.map((user) => {\n                let banks = user._banks;\n                banks['user'] = get(user, 'lastname') + ' ' + get(user, 'firstname');\n                return banks;\n            });\n            get(this, 'fileExports').createExcelFromJSON({ rows: rows, columns: excelHeaders });\n        },\n\n        async reMigrateBanks() {\n            if (!this.checkedRows || this.checkedRows.length === 0) return;\n\n            let selectedUsers = this.checkedRows.map(obj => {\n                return {\n                    userid: obj.id\n                };\n            });\n\n            // Combine all user IDs into a comma-separated string\n            let userids = selectedUsers.map(u => u.userid).join(',');\n\n            if (!userids) {\n                return;\n            }\n\n            let url = `api/reMigrateBanks?users=${userids}`;\n            await this.ttapi.request(url);\n            // Reset checkedRows after migration\n            set(this, 'checkedRows', undefined);\n            this.send('refreshModel');\n        },\n\n        toggleHideEmptyRows(value) {\n            set(this, 'hideEmptyRows', value);\n            this.router.transitionTo({ queryParams: {\n                hideEmptyRows: value,\n                page: 1 // Reset page to 1 when toggling filter\n            }});\n        },\n    },\n\n    async init_functions() {\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n\n        set(this, 'default_date', this.earliestDate + '_' + this.currentDate);\n\n        this._super(...arguments);\n        this.rowActions = [{ action: 'showHistory', icon: 'move move-Search' }];\n\n        this.historyRowActions = [\n            { action: 'remove', icon: 'move move-Delete' },\n            { action: 'edit', icon: 'move move-Pencil' },\n        ];\n\n        set(this, 'showHistoryColumns', [\n            'date',\n            'bank',\n            'absencetype',\n            'description',\n            'hours',\n            'addhours',\n        ]);\n\n        set(this, 'historyFilters', {\n            type: 'both',\n            bank: 'all',\n        });\n\n        const banks = await this.store.findAll('bank');\n        let options = [];\n        banks.forEach((bank) => {\n            options.push({ value: get(bank, 'name'), id: get(bank, 'column') });\n        });\n        this.bankfields = {\n            name: 'Bank',\n            options,\n        };\n    },\n\n    willDestroy() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n    },\n\n    onStoreEvent(params) {\n        const updateOnForms = ['worktime', 'abcense'];\n        if (params.action === 'insert' && updateOnForms.includes(params.type)) {\n            if (this.router.currentRouteName == 'timetracker.bank') this.send('refreshModel');\n        }\n    },\n\n    filterHistory(name, value) {\n        this.historyFilters[name] = value;\n\n        let historydata = get(this, 'historyData');\n\n        // filter by type\n        if (this.historyFilters.type !== 'both') {\n            historydata = historydata.filter((el) => {\n                let ret = true;\n                if (this.historyFilters.type === 'automatic') {\n                    ret = el.type === 'entry' || el.type === 'absence';\n                }\n\n                if (this.historyFilters.type === 'manual') {\n                    ret = el.type === 'manual';\n                }\n                return ret;\n            });\n        }\n\n        // filter by bank\n        if (this.historyFilters.bank !== 'all') {\n            historydata = historydata.filter((el) => {\n                let ret = true;\n                ret = el.bank === this.historyFilters.bank;\n\n                if (\n                    el.absencetype &&\n                    this.checkIfAbsenceTypeBelongsToBank(\n                        el.absencetype_id,\n                        this.historyFilters.bank,\n                    )\n                ) {\n                    ret = true;\n                }\n                return ret;\n            });\n        }\n\n        // finally remove any empty banks\n        historydata = historydata.filter((el) => !(el.bank === '' && !el.absencetype));\n\n        // Filter reserved data by bank (type filter does not apply — all reserved are absences)\n        let reservedFiltered = get(this, 'reservedData') || [];\n        if (this.historyFilters.bank !== 'all') {\n            reservedFiltered = reservedFiltered.filter((el) => {\n                let ret = el.bank === this.historyFilters.bank;\n                if (\n                    el.absencetype &&\n                    this.checkIfAbsenceTypeBelongsToBank(\n                        el.absencetype_id,\n                        this.historyFilters.bank,\n                    )\n                ) {\n                    ret = true;\n                }\n                return ret;\n            });\n        }\n        set(this, 'reservedData_filtered', reservedFiltered);\n\n        // Recompute summary from filtered reserved data\n        const summaryMap = {};\n        reservedFiltered.forEach((row) => {\n            if (!summaryMap[row.bank]) {\n                summaryMap[row.bank] = 0;\n            }\n            summaryMap[row.bank] += row.hours_raw;\n        });\n        set(this, 'reservedSummary', Object.keys(summaryMap).map((bank) => ({\n            bank,\n            hours: format.hours(summaryMap[bank]),\n        })));\n\n        set(this, 'historyData_filtered', historydata);\n    },\n\n    checkIfAbsenceTypeBelongsToBank(absensetype_id, bank) {\n        let bankwithAbsenceType = this.banks.toArray().filter((el) => {\n            return bank === get(el, 'name');\n        });\n\n        if (bankwithAbsenceType.length) {\n            bankwithAbsenceType = bankwithAbsenceType[0];\n            if (parseInt(get(bankwithAbsenceType, 'absencetype.id')) === parseInt(absensetype_id)) {\n                return true;\n            }\n        }\n        return false;\n    },\n\n    reformatUserRow(row) {\n        const ret = {\n            user: row.firstname\n                ? row.lastname + ' ' + row.firstname\n                : row.values.lastname + ' ' + row.values.firstname,\n            userid: row.id,\n        };\n\n        const banks = Object.keys(row._banks);\n\n        banks.forEach(\n            (bank) => (ret[bank] = htmlSafe(this.formatHours(row._banks[bank] / 60).string)),\n        );\n\n        return ret;\n    },\n\n    removeOrNot(row, answer) {\n        if (!answer) return;\n        this.store.query('bankdeducter', { id: row.id }).then(this.removeRow.bind(this, row));\n    },\n\n    removeRow(row, rows) {\n        get(rows, 'firstObject').destroyRecord();\n        set(\n            this,\n            'historyData_filtered',\n            get(this, 'historyData_filtered').filter((el) => el.id !== row.id),\n        );\n    },\n\n    formatHours(hours) {\n        if (hours === 0) return htmlSafe('<span class=\"move move-Time\"></span> 0:00h');\n        else return get(this, 'collector')._format_(hours, 'worktime', 'work_hours');\n    },\n\n    async newExportRows() {\n        const query = ['limit=all', 'hoursFormat=true'];\n        if (get(this, 'date')) query.push('date=' + get(this, 'date'));\n        if (get(this, 'user')) query.push('id=' + get(this, 'user'));\n        if (get(this, 'employer')) query.push('employer=' + get(this, 'employer'));\n\n        let url = 'api/usersWithBanks' + (query.length ? '?' + query.join('&') : '');\n        return await get(this, 'ttapi').request(url);\n    },\n\n});\n","import { hash } from 'rsvp';\nimport Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport moment from 'moment';\nimport initRoute from '../../../mixins/init-route';\n\nconst PAGE_SIZE = 25;\n\nexport default Route.extend(initRoute, {\n    ttapi: service(),\n\n    queryParams: {\n        date: { refreshModel: true },\n        page: { refreshModel: true },\n        user: { refreshModel: true },\n        employer: { refreshModel: true },\n        hideEmptyRows: { refreshModel: true }\n    },\n\n    async model(params) {\n        return this._loadModel(params);\n    },\n\n    actions: {\n        refreshModel() {\n            this.refresh();\n        }\n    },\n\n    /**\n     * Loads users with bank data.\n     * If no date range is provided but backend returns firstDate,\n     * sets date query param to firstDate_today and reloads.\n     */\n    async _loadModel(rawParams) {\n        // Do not mutate the original params object Ember passes around\n        const params = { ...rawParams };\n\n        const hasFilter = params.user || params.employer;\n\n        let page = params.page || 1;\n\n        if (hasFilter) {\n            page = 1; // reset to first page when filtering\n        }\n\n        const offset = (params.page ? (params.page - 1) * PAGE_SIZE : 0);\n\n        const queryParts = [\n            `limit=${PAGE_SIZE}`,\n            `offset=${offset}`\n        ];\n\n        if (params.date) queryParts.push(`date=${encodeURIComponent(params.date)}`);\n        if (params.user) queryParts.push(`id=${encodeURIComponent(params.user)}`);\n        if (params.employer) queryParts.push(`employer=${encodeURIComponent(params.employer)}`);\n        if (params.hideEmptyRows) queryParts.push(`hideEmptyRows=${encodeURIComponent(params.hideEmptyRows)}`);\n\n        const url = `api/usersWithBanks?${queryParts.join('&')}`;\n\n        const data = await get(this, 'ttapi').request(url);\n\n        if (!params.date && data.firstDate) {\n            const startDate = data.firstDate;\n            const endDate = moment().format('YYYY-MM-DD');\n            const newDate = `${startDate}_${endDate}`;\n\n            this.transitionTo({\n                queryParams: {\n                    ...params,\n                    page, // ensure page consistency\n                    date: newDate\n                }\n            });\n            return;\n        }\n\n        const banks = await this.store.findAll('bank', { include: true });\n\n        return hash({\n            users: data,\n            accounts: banks,\n            pageCount: Math.ceil((data.count || 0) / PAGE_SIZE),\n            firstDate: data.firstDate\n        });\n    }\n});\n","/* eslint-disable ember/named-functions-in-promises */\nimport { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport Component from '@ember/component';\nimport { get, set } from '@ember/object';\n\nexport default Component.extend({\n    collector: service('collector-service'),\n    dialogs: service(),\n    intl: service(),\n\n    banks: alias('model'),\n\n    translated_columns: computed(function () {\n        return get(this, 'columnList').map((column) => {\n            return get(this, 'intl').t('defaults.field.' + column);\n        });\n    }),\n\n    absencetypefield: computed('record.[]', function () {\n        let c = get(this, 'Collector');\n        let field = c.field('bank', 'absencetype');\n        field.value = get(this, 'record.absencetype.id');\n        return field;\n    }),\n\n    rows: computed('model.[]', function () {\n        return get(this, 'banks').map((row) => {\n            const column =\n                get(row, 'column') &&\n                get(this, 'collector').fieldExists('worktime', get(row, 'column'))\n                    ? get(this, 'collector').getTranslationForColumn('worktime', get(row, 'column'))\n                    : '-';\n            return {\n                id: get(row, 'id'),\n                name: get(row, 'name'),\n                column: column,\n                absencetype: get(this, 'collector').testNeedsOne('abcense')\n                    ? get(this, 'collector')._format_(\n                          get(row, 'absencetype'),\n                          'bank',\n                          'absencetype',\n                      )\n                    : null,\n                skipsaldo: get(this, 'collector').testNeedsOne('products.saldo')\n                    ? get(this, 'collector')._format_(get(row, 'skipsaldo'), 'bank', 'skipsaldo')\n                    : null,\n            };\n        });\n    }),\n\n    columns: computed(function () {\n        const collector = get(this, 'collector');\n        let worktimes = collector.fieldArray('worktime').filter((item) => {\n            return item.type === 'hours';\n        });\n\n        worktimes = worktimes.map((item) => {\n            const column = collector.fieldExists('worktime', item.name)\n                ? collector.getTranslationForColumn('worktime', item.name)\n                : '-';\n            return { id: item.name, name: column };\n        });\n\n        worktimes.unshift({ id: '', name: get(this, 'intl').t('general.select_choose') });\n\n        return worktimes;\n    }),\n\n    didReceiveAttrs() {\n        this._super(...arguments);\n        let c = get(this, 'collector');\n        let columns = ['name', 'column'];\n        if (get(this, 'collector').testNeedsOne('bank.skipsaldo')) {\n            columns.push('skipsaldo');\n        }\n        if (get(this, 'collector').testNeedsOne('abcense')) {\n            columns.push('absencetype');\n        }\n\n        set(this, 'rowActions', []);\n        set(this, 'columnList', columns);\n\n        if (c.testNeedsOne('bank@remove')) {\n            this.rowActions.pushObject({ action: 'removeRow', icon: 'move move-Delete' });\n        }\n        if (c.testNeedsOne('bank@edit')) {\n            this.rowActions.pushObject({ action: 'editRow', icon: 'move move-Pencil' });\n        }\n    },\n\n    actions: {\n        showAdder(on) {\n            set(this, 'record', null);\n            set(this, 'values', { name: null, column: null });\n            set(this, 'showAdder', on);\n        },\n\n        changeName(value) {\n            set(this, 'values.name', value);\n        },\n\n        changeColumn(value) {\n            if (this.columnAlreadyInUse(value)) return;\n            set(this, 'values.column', value);\n            if (get(this, 'record')) {\n                set(this, 'record.column', value);\n            }\n        },\n        change(value, field) {\n            set(this, `values.${field}`, value);\n            if (get(this, 'record')) {\n                set(this, `record.${field}`, value);\n            }\n        },\n        save(record) {\n            if (get(this, 'columnError')) return;\n\n            if (record) {\n                this.saveBank(record).then(() => {\n                    set(this, 'showAdder', false);\n                });\n            } else {\n                let obj = {\n                    name: get(this, 'values.name') || '---',\n                    column: get(this, 'values.column') || null,\n                    absencetype: get(this, 'values.absencetype'),\n                    skipsaldo: get(this, 'values.skipsaldo'),\n                };\n                this.createNewBank(obj);\n                set(this, 'showAdder', false);\n            }\n        },\n\n        action(type, row) {\n            if (type === 'removeRow') {\n                get(this, 'dialogs')\n                    .confirm(get(this, 'intl').t('report.confirm_delete'))\n                    .then((con) => {\n                        if (con) {\n                            this.deleteBank(row);\n                        }\n                    });\n            } else if (type === 'editRow') {\n                set(this, 'values', { name: null, column: null });\n                this.editBank(row).then((editableBank) => {\n                    set(this, 'record', editableBank);\n                    set(this, 'showAdder', true);\n                });\n            }\n        },\n    },\n    columnAlreadyInUse(value) {\n        let columnFound = get(this, 'banks').filter((bank) => bank.column === value);\n        set(this, 'columnError', columnFound.length > 0);\n        return this.columnError;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"OhrRVq8F\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row report-main-content\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"bubbleActions\\\"],[[24,[\\\"columnList\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"rows\\\"]],[24,[\\\"rowActions\\\"]],\\\"action\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"bank@add\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"showAdder\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"name\\\",\\\"create-bank\\\"],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showAdder\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.create\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"record\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"worktimebank.edit_bank\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"worktimebank.add_bank\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"bank.name\\\"],[[\\\"change\\\",\\\"model\\\"],[\\\"changeName\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"columnError\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.column\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"columnError\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"field.error.column_in_use\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"name\\\",\\\"bubbleChange\\\",\\\"value\\\"],[[24,[\\\"columns\\\"]],\\\"form-control add-fields\\\",\\\"column\\\",\\\"changeColumn\\\",[28,\\\"if\\\",[[24,[\\\"record\\\"]],[24,[\\\"record\\\",\\\"column\\\"]]],null]]]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"columnError\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"bank.skipsaldo\\\"],[[\\\"name\\\",\\\"change\\\",\\\"model\\\"],[\\\"skip-saldo\\\",\\\"change\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"absencetypefield\\\"]]],[[\\\"name\\\",\\\"change\\\",\\\"model\\\",\\\"usePowerDropdown\\\"],[\\\"absence-type\\\",\\\"change\\\",[24,[\\\"record\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"name\\\",\\\"save-button\\\"],[12,\\\"class\\\",\\\"btn btn-primary pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"record\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"name\\\",\\\"cancel-button\\\"],[12,\\\"class\\\",\\\"btn pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showAdder\\\",false]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/bank/settings-component/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"kd8soB2h\",\"block\":\"{\\\"symbols\\\":[\\\"form\\\",\\\"fields\\\",\\\"record\\\",\\\"field\\\",\\\"row\\\",\\\"columns\\\",\\\"rowActions\\\",\\\"button\\\",\\\"column\\\",\\\"row\\\",\\\"columns\\\",\\\"column\\\",\\\"item\\\",\\\"value\\\",\\\"form\\\",\\\"fields\\\",\\\"fieldcomp\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"start\\\",\\\"end\\\",\\\"form\\\",\\\"filterValueChanged\\\",\\\"onClearFilters\\\"],[[24,[\\\"filters\\\"]],[23,0,[\\\"earliestDate\\\"]],[23,0,[\\\"currentDate\\\"]],\\\"worktime\\\",\\\"filterChanged\\\",[28,\\\"action\\\",[[23,0,[]],\\\"clearAllFilters\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"bankdeducter@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"name\\\",\\\"bankdeducter-add\\\"],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showDeducterModal\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.modify\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showDeducter\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"class\\\",\\\"close\\\",\\\"header\\\"],[\\\"bankdeducter-modal\\\",[28,\\\"action\\\",[[23,0,[]],\\\"showDeducterModal\\\",false],null],[28,\\\"t\\\",[\\\"worktimebank.add\\\"],null]]],{\\\"statements\\\":[[4,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"close\\\",\\\"rowAdded\\\",\\\"record\\\"],[\\\"bankdeducter\\\",[28,\\\"action\\\",[[23,0,[]],\\\"showDeducterModal\\\",false],null],[28,\\\"action\\\",[[23,0,[]],\\\"deducterAdded\\\"],null],[24,[\\\"newDeducterRecord\\\"]]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,15,[\\\"fields\\\"]],\\\"expected `form.fields` to be a contextual component but found a string. Did you mean `(component form.fields)`? ('tt4/pods/timetracker/bank/template.hbs' @ L18:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"collector/form-add/forms/bankdeducter\\\",null,[[\\\"record\\\",\\\"checkedRows\\\",\\\"from\\\",\\\"bankfields\\\",\\\"showSaved\\\",\\\"fields\\\",\\\"fieldcomp\\\"],[[24,[\\\"newDeducterRecord\\\"]],[24,[\\\"checkedRows\\\"]],[23,15,[]],[24,[\\\"bankfields\\\"]],true,[23,16,[]],[23,17,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[16,17]},null],[0,\\\"                \\\"],[1,[23,15,[\\\"buttons\\\"]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,15,[\\\"saved\\\"]],\\\"expected `form.saved` to be a contextual component but found a string. Did you mean `(component form.saved)`? ('tt4/pods/timetracker/bank/template.hbs' @ L22:C18) \\\"],null]],[[\\\"close\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"updateReport\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[15]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"historyModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"worktimebank.history\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeHistoryModal\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"historyDataLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"historyDataLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"defaults.field.user\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[24,[\\\"selectedUser\\\",\\\"firstname\\\"]],false],[0,\\\"  \\\"],[1,[24,[\\\"selectedUser\\\",\\\"lastname\\\"]],false],[9],[0,\\\"  \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"history.action.show_data\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[10,\\\"name\\\",\\\"worktimebank-entry-filter\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"onFilterHistoryChange\\\",\\\"type\\\"],null]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"both\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.entry_type.both\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"manual\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.entry_type.manual\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"automatic\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.entry_type.automatic\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.worktime_bank\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[10,\\\"name\\\",\\\"worktimebank-bank-filter\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"onFilterHistoryChange\\\",\\\"bank\\\"],null]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"all\\\"],[8],[1,[28,\\\"t\\\",[\\\"select.all\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"banks\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[29,[[23,14,[\\\"name\\\"]]]]],[8],[1,[23,14,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[14]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"reservedData_filtered\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"reserved-hours-section\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.reserved_hours\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"reserved-hours-summary\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"reservedSummary\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"reserved-summary-item\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"strong\\\",true],[8],[1,[23,13,[\\\"bank\\\"]],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[23,13,[\\\"hours\\\"]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[13]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"data\\\",\\\"translated_columns\\\",\\\"hideSort\\\"],[[24,[\\\"showHistoryColumns\\\"]],[24,[\\\"reservedData_filtered\\\"]],[24,[\\\"translated_columns2\\\"]],true]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"tr\\\",true],[10,\\\"class\\\",\\\"reserved-row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,11,[]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,12,[]],\\\"addhours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,12,[]],\\\"date\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"moment-format\\\",[[28,\\\"get\\\",[[23,10,[]],[23,12,[]]],null],\\\"DD.MM.YYYY\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,12,[]],\\\"hours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"get\\\",[[23,10,[]],[23,12,[]]],null],false],[0,\\\"\\\\n                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label label-warning reserved-tag\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.reserved\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"get\\\",[[23,10,[]],[23,12,[]]],null],false],[0,\\\"\\\\n                                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.option.deducts\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[12]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[10,11]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"translated_columns\\\",\\\"hideSort\\\"],[[24,[\\\"showHistoryColumns\\\"]],[24,[\\\"historyData_filtered\\\"]],[24,[\\\"historyRowActions\\\"]],[24,[\\\"translated_columns2\\\"]],true]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[11,\\\"class\\\",[29,[[23,5,[\\\"class\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,6,[]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,9,[]],\\\"addhours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,9,[]],\\\"date\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"moment-format\\\",[[28,\\\"get\\\",[[23,5,[]],[23,9,[]]],null],\\\"DD.MM.YYYY\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"get\\\",[[23,5,[]],[23,9,[]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"if\\\",[[28,\\\"eq\\\",[[28,\\\"get\\\",[[23,5,[]],[23,9,[]]],null],true],null],[28,\\\"t\\\",[\\\"worktimebank.option.adds\\\"],null],[28,\\\"t\\\",[\\\"worktimebank.option.deducts\\\"],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[9]},null],[4,\\\"if\\\",[[23,7,[\\\"length\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"type\\\"]],\\\"manual\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-row-icon invisible\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,7,[]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[[23,8,[\\\"icon\\\"]]]]],[3,\\\"action\\\",[[23,0,[]],\\\"historyRowAction\\\",[23,8,[\\\"action\\\"]],[23,5,[]]]],[8],[4,\\\"if\\\",[[23,8,[\\\"text\\\"]]],null,{\\\"statements\\\":[[0,\\\" \\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,8,[\\\"text\\\"]]]]],false],[0,\\\" \\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5,6,7]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"historyAllLoaded\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center mt-3\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"loadOlderHistory\\\",[24,[\\\"selectedUser\\\"]]]],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"worktimebank.load_older_history\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showFormDeducter\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"collector-form-name\\\",[[24,[\\\"form\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeEditManualEntry\\\"],null]]],{\\\"statements\\\":[[4,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"close\\\",\\\"record\\\"],[\\\"bankdeducter\\\",[28,\\\"action\\\",[[23,0,[]],\\\"closeEditManualEntry\\\"],null],[24,[\\\"showFormDeducter\\\"]]]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"fields\\\"]],\\\"expected `form.fields` to be a contextual component but found a string. Did you mean `(component form.fields)`? ('tt4/pods/timetracker/bank/template.hbs' @ L152:C14) \\\"],null]],[[\\\"only\\\"],[\\\"addhours,date,description,hours\\\"]]],false],[0,\\\"\\\\n            \\\"],[1,[23,1,[\\\"buttons\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"saved\\\"]],\\\"expected `form.saved` to be a contextual component but found a string. Did you mean `(component form.saved)`? ('tt4/pods/timetracker/bank/template.hbs' @ L154:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,4,[\\\"name\\\"]],\\\"column\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"translate-column\\\",null,[[\\\"form\\\",\\\"field\\\"],[[23,4,[\\\"form\\\"]],[23,4,[\\\"name\\\"]]]]],false],[0,\\\": \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,4,[\\\"name\\\"]],\\\"addhours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,4,[\\\"value\\\"]],true],null],[28,\\\"t\\\",[\\\"worktimebank.option.adds\\\"],null],[28,\\\"t\\\",[\\\"worktimebank.option.deducts\\\"],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"collector/value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[23,4,[\\\"form\\\"]],[23,4,[\\\"name\\\"]],[28,\\\"get\\\",[[23,3,[]],[23,4,[\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[2,3]},null]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"userlevel=1\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"name\\\",\\\"bank-add-edit\\\"],[12,\\\"class\\\",\\\"btn btn-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showSettings\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.addAndEdit\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"isCordova\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"exportExcel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_excel\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"company_info\\\",\\\"country\\\"]],\\\"fi\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.generic_timetracker\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[28,\\\"t\\\",[\\\"click.help_workday_bank_otta\\\"],null]],[10,\\\"target\\\",\\\"_blank\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"settings.products.integration_info_button\\\"],null]],[10,\\\"class\\\",\\\"info-button-row move move-Info workday-calendar-info-button\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"https://ohjeet.visma.fi/articles/#!visma-movenium/ty-aikapankki\\\"],[10,\\\"target\\\",\\\"_blank\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"settings.products.integration_info_button\\\"],null]],[10,\\\"class\\\",\\\"info-button-row move move-Info workday-calendar-info-button\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"eq\\\",[[23,0,[\\\"checkedRows\\\",\\\"length\\\"]],0],null],[28,\\\"eq\\\",[[23,0,[\\\"checkedRows\\\"]],[27]],null]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-default disabled\\\"],[10,\\\"style\\\",\\\"float: right; margin-right: 30px;\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"worktimebank.reMigrate\\\"],null],false],[0,\\\"\\\\n            \\\"],[5,\\\"ember-popover\\\",[[12,\\\"class\\\",\\\"test-popover-example\\\"]],[[\\\"@popperContainer\\\",\\\"@side\\\",\\\"@event\\\"],[\\\"body\\\",\\\"bottom\\\",\\\"hover\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"worktimebank.reMigrateDisabledText\\\"],null],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"style\\\",\\\"float: right; margin-right: 30px;\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"reMigrateBanks\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"worktimebank.reMigrate\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"style\\\",\\\"margin: 15px 0px; justify-content: flex-start; display: flex;\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"theme\\\",\\\"label\\\"],[[24,[\\\"hideEmptyRows\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleHideEmptyRows\\\"],null],[28,\\\"t\\\",[\\\"worktimebank.button.hideEmptyRows\\\"],null],\\\"\\\",true,\\\"light\\\",[28,\\\"t\\\",[\\\"worktimebank.hideEmptyRows\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSettingsDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"close\\\",\\\"header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showSettingsDialog\\\"]]],null]],null],[28,\\\"t\\\",[\\\"worktimebank.settings\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"timetracker/bank/settings-component\\\",null,[[\\\"model\\\",\\\"deleteBank\\\",\\\"createNewBank\\\",\\\"editBank\\\",\\\"saveBank\\\"],[[24,[\\\"settingsModel\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"deleteBank\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"createNewBank\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"editBank\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"saveBank\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row report-main-content\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"checkable\\\",\\\"columns\\\",\\\"translated_columns\\\",\\\"rowActions\\\",\\\"data\\\",\\\"bubbleActions\\\",\\\"hideSort\\\"],[true,[24,[\\\"columnList\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"rowActions\\\"]],[24,[\\\"usersWithBanks\\\"]],\\\"action\\\",true]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"model\\\",\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/bank/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"AmbqxhPp\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"promo-ad\\\",[],[[\\\"@background\\\",\\\"@promoClass\\\",\\\"@product\\\"],[\\\"banks\\\",\\\"left-align\\\",\\\"worktimebank\\\"]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/bank_ad/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/calendar/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerCalendarController;\n\nimport Ember from 'ember';\n\nimport filterModel from '../../../mixins/filter-model';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport DS from 'ember-data';\n\nimport saveTheChildren from 'tt4/mixins/save-the-children';\n\nTimetrackerCalendarController = GeneralReportController.extend(filterModel, saveTheChildren, {\n    Collector: Ember.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    error: Ember.inject.service(),\n    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                });\n        },\n    },\n});\n\nexport default TimetrackerCalendarController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/calendar/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerCalendarRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport initRoute from '../../../mixins/init-route';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nimport { perDate } from 'tt4/utils/date-util';\n\nTimetrackerCalendarRoute = Ember.Route.extend(AuthenticatedRouteMixin, initRoute, {\n    Collector: Ember.inject.service('collector-service'),\n    ttapi: Ember.inject.service(),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        gantt: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        more: {\n            refreshModel: true,\n        },\n    },\n    more: null,\n    _getSideloadsWithExtras: function (form) {\n        var c = this.get('Collector');\n        var sideloads = c.getSideloads(form);\n        sideloads.push('user.image');\n        if (c.testNeedsOne('worktimegroup')) {\n            sideloads.push('user.worktimegroup');\n        }\n        return sideloads;\n    },\n    model: function (params) {\n        var abparams, c, param, split_date;\n        for (param in params) {\n            if (params[param] === null) {\n                delete params[param];\n            }\n        }\n        if (params.gantt) {\n            delete params.gantt;\n            if (!params.project) {\n                return [];\n            }\n            c = this.get('Collector');\n            params.sideload = this._getSideloadsWithExtras('worktime');\n            params.limit = 15;\n            if (params.page) {\n                params.offset = params.limit * (params.page - 1);\n                delete params.page;\n            }\n            return this.get('ttapi')\n                .request('api/project/users', {\n                    data: params,\n                })\n                .then((data) => {\n                    var promises;\n                    promises = [];\n                    this.get('store').pushPayload();\n                    delete params.limit;\n                    data.users.forEach((user) => {\n                        return promises.push(\n                            this.get('store')\n                                .query(\n                                    'worktime',\n                                    Object.assign(\n                                        {\n                                            user: Ember.get(user, 'id'),\n                                        },\n                                        params,\n                                    ),\n                                )\n                                .then((worktimes) => {\n                                    return Ember.Object.create({\n                                        main: user,\n                                        rows: perDate(worktimes),\n                                    });\n                                }),\n                        );\n                    });\n                    return Ember.RSVP.hash({\n                        response: data,\n                        data: Ember.RSVP.Promise.all(promises),\n                    });\n                });\n        } else {\n            delete params.gantt;\n            delete params.page;\n            c = this.get('Collector');\n            params.sideload = this._getSideloadsWithExtras('worktime');\n            if (params.startdate) {\n                params.order = 'startdate';\n            } else {\n                params.order = 'date';\n            }\n            //params.date = moment(split_date[0]).subtract(2, 'weeks').format('YYYY-MM-DD') + '_' + split_date[1]\n\n            //if service doesn't have employers, do not use it as query param\n            if (!this.get('Collector').testNeedsOne('worktime.employer')) {\n                delete params.employer;\n            }\n            // check if more-param is present, parse it correctly and finally remove it from params\n            if (params.more != null) {\n                params.more.split('|').forEach(function (param) {\n                    var split, splitted;\n                    splitted = param.split(':');\n                    if (splitted[0].includes('-')) {\n                        if (Ember.isPresent(splitted[1])) {\n                            split = splitted[0].split('-');\n                            if (Ember.isEmpty(params[split[0]])) {\n                                return (params[split[0]] = {\n                                    [`${split[1]}`]: splitted[1],\n                                });\n                            }\n                        }\n                    } else {\n                        return (params[splitted[0]] = splitted[1]);\n                    }\n                });\n                this.set('more', params.more);\n            } else {\n                this.set('more', null);\n            }\n            if (params != null && params['more']) {\n                delete params['more'];\n            }\n            this.store.query('worktime', params);\n            if (\n                this.get('Collector').testNeedsOne('abcense') &&\n                (Ember.isEmpty(params.project) ||\n                    this.get('Collector').testNeedsOne('abcense.project'))\n            ) {\n                abparams = Object.assign({}, params);\n                split_date = abparams.date.split('_');\n                for (param in abparams) {\n                    if (!c.fieldExists('abcense', param)) {\n                        delete abparams[param];\n                    }\n                }\n                abparams.startdate_enddate = split_date[0] + '_' + split_date[1];\n                abparams.sideload = this._getSideloadsWithExtras('abcense');\n                this.get('store').query('abcense', abparams);\n            }\n            return this.store.peekAll('worktime');\n        }\n    },\n    setupController: function (controller, model) {\n        this._super(controller, model);\n\n        // Ensure date parameter is set on controller\n        var currentParams = this.paramsFor('timetracker.calendar');\n        if (currentParams.date && !controller.get('date')) {\n            controller.set('date', currentParams.date);\n        }\n\n        if (this.get('more')) {\n            return this.get('more')\n                .split('|')\n                .forEach(function (param) {\n                    var splitted;\n                    splitted = param.split(':');\n                    return controller.set(splitted[0], splitted[1]);\n                });\n        }\n    },\n});\n\nexport default TimetrackerCalendarRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/calendar/saldo-info/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar timetrackerCalendarSaldoInfoComponent;\n\nimport Ember from 'ember';\n\ntimetrackerCalendarSaldoInfoComponent = Ember.Component.extend({\n    plus: Ember.computed('day_saldo', function () {\n        if (this.get('day_saldo') > 0) {\n            return '+';\n        }\n    }),\n    positiveornegative: Ember.computed('day_saldo', function () {\n        if (this.get('day_saldo') > 0) {\n            return 'positive';\n        }\n        if (this.get('day_saldo') < 0) {\n            return 'negative';\n        }\n        return '';\n    }),\n    day_saldo: Ember.computed('saldo', function () {\n        var saldo, saldoHours;\n        saldo = this.get('saldo');\n        saldoHours = saldo.saldo / 60;\n        if (saldo.cut) {\n            saldoHours -= saldo.cut / 60;\n        }\n        return saldoHours;\n    }),\n});\n\nexport default timetrackerCalendarSaldoInfoComponent;\n","export default Ember.HTMLBars.template({\"id\":\"kH+jYcdx\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n(\\\"],[1,[28,\\\"t\\\",[\\\"saldo.usersaldo\\\"],null],false],[0,\\\": \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[22,\\\"positiveornegative\\\"]],[8],[1,[22,\\\"plus\\\"],false],[1,[28,\\\"format-hours\\\",[[24,[\\\"day_saldo\\\"]]],null],false],[9],[0,\\\")\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/calendar/saldo-info/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"SaVWo3Cx\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\",\\\"index\\\",\\\"specialDay\\\",\\\"row\\\",\\\"row\\\",\\\"absenceSum\\\",\\\"worktimeSum\\\",\\\"calendar\\\",\\\"row\\\",\\\"cell\\\",\\\"title\\\",\\\"sum\\\",\\\"value\\\",\\\"key\\\",\\\"value\\\",\\\"key\\\",\\\"dd\\\",\\\"ddm\\\",\\\"type\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.rakentajanpaketti\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"theme\\\",\\\"onToggle\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[[24,[\\\"gantt\\\"]],\\\"light\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"gantt\\\"]]],null]],null],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"timetracker.calendar.gantt.toggle\\\"],null],\\\"\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"gantt\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showWarning\\\"]]],null,{\\\"statements\\\":[[0,\\\"         \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.too_many_rows\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row calendar-user-selector-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!mobileView\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"user\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"not\\\",[[24,[\\\"do_not_show_user_selector\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"user-selector\\\",null,[[\\\"userid\\\",\\\"employerid\\\",\\\"userChanged\\\",\\\"limit\\\"],[[24,[\\\"user\\\"]],[24,[\\\"employer\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"userChanged\\\"],null],[24,[\\\"userSelectorLimit\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!worktime.status@readonly\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"calendar-singleuser-buttons\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group pull-left report-more\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\",\\\"approved\\\"]],[8],[1,[28,\\\"t\\\",[\\\"calendar.approve_all\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\\n                            \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[6,[23,17,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"  \\\"],[1,[28,\\\"t\\\",[\\\"report.more_button\\\"],null],false],[0,\\\"\\\\n                                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"],[6,[23,17,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"statusTypes\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[6,[23,18,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\",[23,19,[\\\"id\\\"]]]],[8],[1,[23,19,[\\\"name\\\"]],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[19]},null],[0,\\\"                                \\\"]],\\\"parameters\\\":[18]}],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[17]}],[0,\\\"\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-sm-offset-6\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"form-column-selector\\\",null,[[\\\"form\\\",\\\"shownColumns\\\",\\\"localStorageKey\\\",\\\"bubbleActions\\\"],[[24,[\\\"form\\\"]],[24,[\\\"shownColumns\\\"]],\\\"worktimecalendar_defaultColumns\\\",\\\"catchActions\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"gantt\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!mobileView\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"user\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"userSums\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"class\\\"],[\\\"loading-icon\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"calendar-sums-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.worktimes.sums\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"calendar-singleuser-sums worktime\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[24,[\\\"userSums\\\",\\\"worktimes\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,16,[]],[24,[\\\"skipSumFieldsWorktimes\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"singleuser-sum-col\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"h5\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"form\\\",\\\"field\\\"],[\\\"worktime\\\",[23,16,[]]]]],false],[9],[0,\\\": \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"worktime\\\",[23,16,[]],[23,15,[]]]]],false],[7,\\\"br\\\",true],[8],[9],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[15,16]},null],[4,\\\"if\\\",[[24,[\\\"saldosInUse\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"singleuser-sum-col\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"h5\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.usersaldo\\\"],null],false],[9],[0,\\\":\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentSaldo\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"currentSaldo\\\",\\\"value\\\"]]],null],false],[0,\\\" (\\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"currentSaldo\\\",\\\"from\\\"]],\\\"L\\\"],null],false],[0,\\\"-\\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"currentSaldo\\\",\\\"to\\\"]],\\\"L\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.absences.sums\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"calendar-singleuser-sums absence\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[24,[\\\"userSums\\\",\\\"absences\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,14,[]],[24,[\\\"skipSumFieldsAbsences\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"singleuser-sum-col\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"h5\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"form\\\",\\\"field\\\"],[\\\"abcense\\\",[23,14,[]]]]],false],[9],[0,\\\": \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",[23,14,[]],[23,13,[]]]]],false],[7,\\\"br\\\",true],[8],[9],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[13,14]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"calendar-user-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sumsByUser\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"user-sum\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"user-icon2\\\",null,[[\\\"image\\\",\\\"user\\\"],[[23,12,[\\\"user\\\",\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]],[23,12,[\\\"user\\\"]]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sum-amounts\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,12,[\\\"worktime\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"work_hours\\\",\\\"worktime\\\",[23,12,[\\\"worktime\\\"]]]]],false],[0,\\\"\\\\n                                            (\\\"],[1,[23,12,[\\\"workdays\\\"]],false],[1,[28,\\\"t\\\",[\\\"general.days\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                            -\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cup\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,12,[\\\"absence\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"absence_hours\\\",\\\"abcense\\\",[23,12,[\\\"absence\\\"]]]]],false],[0,\\\"\\\\n                                            (\\\"],[1,[23,12,[\\\"absentdays\\\"]],false],[1,[28,\\\"t\\\",[\\\"general.days\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                            -\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[12]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"gantt\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"timetracker.calendar.gantt.select_project\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"calendar-compact\\\",null,[[\\\"data\\\",\\\"range\\\"],[[24,[\\\"model\\\",\\\"data\\\"]],[24,[\\\"date\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[23,8,[\\\"months-header\\\"]],false],[0,\\\"\\\\n        \\\"],[1,[23,8,[\\\"weeks-header\\\"]],false],[0,\\\"\\\\n        \\\"],[1,[23,8,[\\\"days-header\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"row\\\"]],\\\"expected `calendar.row` to be a contextual component but found a string. Did you mean `(component calendar.row)`? ('tt4/pods/timetracker/calendar/template.hbs' @ L157:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"title\\\"]],\\\"expected `row.title` to be a contextual component but found a string. Did you mean `(component row.title)`? ('tt4/pods/timetracker/calendar/template.hbs' @ L158:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"user-icon\\\",[[23,11,[\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],[[\\\"size\\\",\\\"inline\\\"],[\\\"sm\\\",true]]],false],[0,\\\" \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"user\\\",\\\"worktime\\\",[23,11,[\\\"id\\\"]]]]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[11]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"cell\\\"]],\\\"expected `row.cell` to be a contextual component but found a string. Did you mean `(component row.cell)`? ('tt4/pods/timetracker/calendar/template.hbs' @ L161:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[23,10,[\\\"bar\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[10]},null]],\\\"parameters\\\":[9]},null]],\\\"parameters\\\":[8]},null],[0,\\\"\\\\n    \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"calendar-report\\\",null,[[\\\"hideDateRangePicker\\\",\\\"date\\\",\\\"user\\\"],[true,[24,[\\\"date\\\"]],[24,[\\\"user\\\"]]]],{\\\"statements\\\":[[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\",\\\"class\\\",\\\"tagName\\\",\\\"data-field\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"eventDropped\\\",[23,1,[]]],null],\\\"draggable-calendar-day\\\",\\\"div\\\",[23,1,[\\\"date\\\"]]]],{\\\"statements\\\":[[4,\\\"calendar-report-day\\\",null,[[\\\"day\\\",\\\"specialDay\\\"],[[23,1,[]],[23,3,[]]]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"calendar-report-add-options\\\",null,[[\\\"options\\\",\\\"date\\\",\\\"add\\\"],[[24,[\\\"addOptions\\\"]],[23,1,[]],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\",[23,1,[]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"user\\\"]],[23,1,[]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime\\\"],null]],null,{\\\"statements\\\":[[4,\\\"calendar-card-sum\\\",null,[[\\\"model\\\",\\\"date\\\",\\\"fields\\\"],[[24,[\\\"filteredModel\\\"]],[23,1,[]],[28,\\\"hash\\\",null,[[\\\"hours\\\",\\\"date\\\"],[\\\"work_hours\\\",\\\"date\\\"]]]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"calendar-card-sum\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card-sum-col\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"format-hours\\\",[[23,7,[]],\\\"-\\\"],null],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"saldoList\\\"]],[23,1,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card-sum-col\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"timetracker/calendar/saldo-info\\\",null,[[\\\"saldo\\\"],[[28,\\\"get\\\",[[24,[\\\"saldoList\\\"]],[23,1,[]]],null]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[4,\\\"calendar-card-sum\\\",null,[[\\\"model\\\",\\\"date\\\",\\\"fields\\\"],[[24,[\\\"filteredAbsencesOneDay\\\"]],[23,1,[]],[28,\\\"hash\\\",null,[[\\\"hours\\\",\\\"date\\\"],[\\\"absence_hours\\\",\\\"startdate\\\"]]]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cup\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"format-hours\\\",[[23,6,[]],\\\"-\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"calendar-card-multi-day\\\",null,[[\\\"index\\\",\\\"date\\\",\\\"data\\\",\\\"day\\\",\\\"fields\\\",\\\"date_field\\\",\\\"classNames\\\",\\\"randomColor\\\",\\\"onclick\\\",\\\"remove\\\"],[[23,2,[]],[24,[\\\"date\\\"]],[24,[\\\"filteredAbsencesManyDays\\\"]],[23,1,[]],[24,[\\\"multiDayAbsenceFields\\\"]],\\\"startdate\\\",\\\"multi-absence-calendar-card\\\",[24,[\\\"absenceColorFrom\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"openEditor\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"remove\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"calendar-card-v2\\\",null,[[\\\"boldFields\\\",\\\"data\\\",\\\"day\\\",\\\"date_field\\\",\\\"fields\\\",\\\"classNames\\\",\\\"topImage\\\",\\\"onclick\\\",\\\"remove\\\"],[\\\"work_hours\\\",[24,[\\\"filteredModel\\\"]],[23,1,[]],\\\"date\\\",[24,[\\\"worktimeFields\\\"]],\\\"worktime-calendar-card\\\",\\\"user-image\\\",[28,\\\"action\\\",[[23,0,[]],\\\"openEditor\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"remove\\\"],null]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[28,\\\"concat\\\",[[23,5,[\\\"id\\\"]],\\\":\\\",[23,5,[\\\"_internalModel\\\",\\\"modelName\\\"]]],null],\\\"draggable-calendar-day-item\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,5,[\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[5]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[4,\\\"calendar-card-v2\\\",null,[[\\\"boldFields\\\",\\\"data\\\",\\\"day\\\",\\\"fields\\\",\\\"date_field\\\",\\\"classNames\\\",\\\"topImage\\\",\\\"onclick\\\",\\\"remove\\\"],[\\\"absence_hours\\\",[24,[\\\"filteredAbsencesOneDay\\\"]],[23,1,[]],[24,[\\\"oneDayAbsenceFields\\\"]],\\\"startdate\\\",\\\"absence-calendar-card\\\",\\\"user-image\\\",[28,\\\"action\\\",[[23,0,[]],\\\"openEditor\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"remove\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[28,\\\"concat\\\",[[23,4,[\\\"id\\\"]],\\\":\\\",[23,4,[\\\"_internalModel\\\",\\\"modelName\\\"]]],null],\\\"draggable-calendar-day-item\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,4,[\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2,3]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showFastExporter\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"fastexport.header\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showFastExporter\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"fast-exporter\\\",null,[[\\\"form\\\",\\\"date\\\",\\\"close\\\"],[[24,[\\\"form\\\"]],[24,[\\\"date\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showFastExporter\\\"]]],null],false],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/calendar/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/comp-report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CompReportController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport collector from '../../../classes/collector';\n\nCompReportController = GeneralReportController.extend({\n    queryParams: [\n        'user',\n        'employer',\n        'worktime_page',\n        'absence_page',\n        'project',\n        'group',\n        'status',\n        'absence_limit',\n        'worktime_limit',\n        'aborder',\n        'row_info_status',\n        'ab_row_info_status',\n    ],\n    gui: Ember.inject.service(),\n    exportFile: Ember.inject.service(),\n    worktime_page: 1,\n    absence_page: 1,\n    aborder: Ember.computed.alias('abcenseSettings.sortByColumn'),\n    row_info_status: Ember.computed.alias('settings.showStatus'),\n    ab_row_info_status: Ember.computed.alias('abcenseSettings.showStatus'),\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create(\n                {\n                    field: 'date',\n                    type: 'date',\n                    form: 'worktime',\n                },\n                {\n                    wagePeriods: true,\n                },\n            ),\n            Em.Object.create({\n                field: 'project',\n                form: 'worktime',\n            }),\n            Em.Object.create({\n                field: 'employer',\n                form: 'worktime',\n            }),\n            Em.Object.create({\n                field: 'user',\n                form: 'worktime',\n            }),\n            Em.Object.create({\n                field: 'group',\n                form: 'worktime',\n            }),\n        ]);\n    }),\n    date:\n        moment().startOf('month').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('month').format('YYYY-MM-DD'),\n    project: null,\n    employer: null,\n    settings: Em.Object.create({\n        massedit: true,\n        rowSettings: Em.Object.create({\n            editRoute: 'timetracker.edit',\n            historyRoute: 'timetracker.history',\n        }),\n    }),\n    init_functions: function () {\n        this._super();\n        return this.hideColumns();\n    },\n    abcenseSettings: Ember.computed('filters.@each.value', function () {\n        var abFilters, c, filters;\n        c = this.get('Collector');\n        filters = this.get('filters');\n        abFilters = Em.A([]);\n        filters.forEach(function (filter) {\n            var copy_filter;\n            if (filter.get('field') === 'date') {\n                copy_filter = Ember.Object.create({\n                    field: 'startdate',\n                    form: 'abcense',\n                    name: 'startdate',\n                    value: filter.get('value'),\n                });\n                return abFilters.pushObject(copy_filter);\n            } else if (c.fieldExists('abcense', filter.get('name'))) {\n                copy_filter = Ember.Object.create({\n                    field: filter.get('field'),\n                    form: 'abcense',\n                    name: filter.get('name'),\n                    value: filter.get('value'),\n                });\n                return abFilters.pushObject(copy_filter);\n            }\n        });\n        return Em.Object.create({\n            massedit: true,\n            limit: this.get('abcense_limit') || 25,\n            rowSettings: Em.Object.create({\n                editRoute: 'abcenses.edit',\n                historyRoute: {\n                    modal: true,\n                },\n            }),\n            filters: abFilters,\n        });\n    }),\n    hideColumns: function () {\n        var fields;\n        fields = collector.getFormObjects('worktime');\n        if (\n            fields.starttime.features.hide &&\n            fields.endtime.features.hide &&\n            fields.work_hours.features.mandatory\n        ) {\n            return this.set('settings.hideColumns', ['starttime', 'endtime']);\n        }\n    },\n    showColumnsWorktimes: ['project', 'user', 'date', 'status'],\n    showColumnsAbsences: ['abcensetype', 'user', 'startdate', 'status'],\n    users: Ember.computed('userSelector', 'userSelector2', function () {\n        var params, tmp_users;\n        tmp_users = Ember.A([\n            Ember.Object.create({\n                fullname: '',\n            }),\n        ]);\n        params = {};\n        params.sideload = true;\n        if (this.get('employer')) {\n            params.employer = this.get('employer');\n        }\n        params.form = 'worktime';\n        params.field = 'user';\n        params.limit = 'all'; // just get all users, this is only used for user-select in filter so we need to get all users, not just 100 first\n        this.store.query('user', params).then((users) => {\n            var userid;\n            users.forEach(function (user) {\n                user.set('fullname', user.get('firstname') + ' ' + user.get('lastname'));\n                return tmp_users.pushObject(user);\n            });\n            //use first user as query parameter\n            userid = tmp_users.objectAt(0)['id'];\n            return this.set('user', userid);\n        });\n        return tmp_users;\n    }),\n    // filters\n    userSelector2: true, // show custom user-selector\n    //userSelector: true # show custom user-selector\n    //    employerSelector: true\n    //dateSelector: true\n    filterToggler: true, // show button to toggle filters visibility on/off\n    status: 'all',\n    filterValues: Ember.computed('filters.@each.value', function () {\n        var filterVals, filters;\n        filters = this.get('filters');\n        filterVals = [];\n        filters.forEach(function (filter) {\n            if (filter.get('value')) {\n                return filterVals.push(filter.get('name') + '=' + filter.get('value'));\n            }\n        });\n        return filterVals;\n    }),\n    pdfColumns: Ember.computed('absencePdfColumns.[]', 'worktimePdfColumns.[]', function () {\n        var absence, worktime;\n        worktime = [];\n        if (this.get('worktimePdfColumns')) {\n            this.get('worktimePdfColumns').forEach(function (column) {\n                return worktime.push(column.ext);\n            });\n        }\n        absence = [];\n        if (this.get('absencePdfColumns')) {\n            this.get('absencePdfColumns').forEach(function (column) {\n                return absence.push(column.ext);\n            });\n        }\n        return { worktime, absence };\n    }),\n    actions: {\n        export_pdf: function () {\n            var columns, params;\n            params = this.get('filterValues');\n            columns = this.get('pdfColumns');\n            this.set('showPDFLoader', true);\n            return this.get('Collector')\n                .ttapi({\n                    dataType: 'text',\n                    data: {\n                        absenceColumns: JSON.stringify(columns.absence),\n                        worktimeColumns: JSON.stringify(columns.worktime),\n                        lang: moment.locale(),\n                    },\n                    url:\n                        'pdf/comboreport?type=base64&limit=all&__paper=A4-L' +\n                        (params.length > 0 ? '&' + params.join('&') : ''),\n                })\n                .then((data) => {\n                    this.set('showPDFLoader', false);\n                    return this.get('exportFile').exportFile(data, 'export', 'pdf', true);\n                });\n        },\n        filterChanged: function () {\n            this.set('worktime_page', 1);\n            return this.set('absence_page', 1);\n        },\n        setRowsPerPage: function (form, limit) {\n            //key = @get('defaultLimitKey')\n            this.set(form + '_page', 1);\n            return this.set(form + '_limit', limit);\n        },\n        //@get('localStorageWrapper').setUserSetting key, limit\n        setNewColumns: function (columns, form) {\n            if (form === 'worktime') {\n                return this.set('worktimePdfColumns', columns);\n            } else {\n                return this.set('absencePdfColumns', columns);\n            }\n        },\n    },\n});\n\nexport default CompReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/comp-report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CompReportRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nimport $ from 'jquery';\n\nCompReportRoute = GeneralReportRoute.extend({\n    localStorageWrapper: Ember.inject.service(),\n    // add new query-params if needed\n    queryParams: {\n        user: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        worktime_page: {\n            refreshModel: true,\n        },\n        absence_page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        worktime_limit: {\n            refreshModel: true,\n        },\n        absence_limit: {\n            refreshModel: true,\n        },\n        aborder: {\n            refreshModel: true,\n        },\n        row_info_status: {\n            refreshModel: true,\n        },\n        ab_row_info_status: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var ab_params, general_params, param, worktime_params;\n        params = this._super(params);\n        //params.sideload = true\n        //params.limit = 25\n        general_params = {};\n        // used by both reports\n        //general_params.limit = params.limit\n        //general_params.offset = params.offset\n        if (params) {\n            for (param in params) {\n                if (params[param] === 'null' || params[param] === 'undefined') {\n                    delete params[param];\n                }\n            }\n        }\n        worktime_params = {};\n        ab_params = {};\n        if (params.wage_period) {\n            params.date = params.wage_period;\n        }\n        if (!params.worktime_limit) {\n            params.worktime_limit = this.get('localStorageWrapper').getUserSetting(\n                'comp-report.worktime_defaultLimit',\n            );\n        }\n        if (Array.isArray(params.worktime_limit)) {\n            params.worktime_limit = 25; // sometimes ls contains [] ... and it causes an error that offset is always 0\n        }\n        worktime_params.date = params.date;\n        worktime_params.user = params.user;\n        worktime_params.group = params.group;\n        worktime_params.status = params.status;\n        worktime_params.order = params.order;\n        worktime_params.limit = params.worktime_limit || params.limit;\n        if (params.employer) {\n            worktime_params.employer = params.employer;\n        }\n        worktime_params.sideload = true;\n        worktime_params.offset =\n            (params.worktime_page - 1) * (params.worktime_limit || params.limit);\n        if (params.project) {\n            worktime_params.project = params.project;\n        }\n        //worktime_params.offset = true\n        worktime_params.row_info_status = params.row_info_status;\n        worktime_params = $.extend({}, worktime_params, general_params);\n        if (!params.absence_limit) {\n            params.absence_limit = this.get('localStorageWrapper').getUserSetting(\n                'comp-report.absences_defaultLimit',\n            );\n        }\n        if (Array.isArray(params.absence_limit)) {\n            params.absence_limit = 25; // sometimes ls contains [] ... and it causes an error that offset is always 0\n        }\n        ab_params['startdate_enddate'] = params.date;\n        ab_params.user = params.user;\n        ab_params.sideload = true;\n        ab_params.offset = (params.absence_page - 1) * (params.absence_limit || params.limit);\n        ab_params.group = params.group;\n        ab_params.status = params.status;\n        ab_params.limit = params.absence_limit || params.limit;\n        if (params.employer && this.get('Collector').fieldExists('abcense', 'employer')) {\n            ab_params.employer = params.employer;\n        }\n        if (params.project && this.get('Collector').fieldExists('abcense', 'project')) {\n            ab_params.project = params.project;\n        }\n        ab_params.order = params.aborder;\n        ab_params.row_info_status = params.ab_row_info_status;\n        ab_params = $.extend({}, ab_params, general_params);\n        return Ember.RSVP.hash({\n            worktimes: this.store.query('worktime', worktime_params),\n            absences: this.store.query('abcense', ab_params),\n        });\n    },\n    actions: {\n        willTransition: function (transition) {\n            if (\n                transition.targetName === 'timetracker.edit' ||\n                transition.targetName === 'abcenses.edit'\n            ) {\n                return this.transitionTo(transition.targetName).then((newRoute) => {\n                    return newRoute.controller.set('afterSave', 'timetracker.comp-report');\n                });\n            }\n        },\n    },\n});\n\nexport default CompReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Imi2cB6p\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"userSelector2\\\",\\\"users\\\",\\\"user\\\",\\\"employer\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"worktime\\\",true,[24,[\\\"users\\\"]],[24,[\\\"user\\\"]],[24,[\\\"employer\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dropdown btn-group pull-right\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary dropdown-toggler btn-secondary\\\"],[12,\\\"role\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showPDFLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PDF-2Filled\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"customFullScreen\\\"]],\\\"report-main-zoomed\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.worktimes\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\",\\\"localStorageKey\\\",\\\"fullscreenmode\\\",\\\"bubbleSetRowsPerPage\\\",\\\"showColumnsChanged\\\"],[\\\"bubbleTransition\\\",\\\"worktime\\\",[24,[\\\"model\\\",\\\"worktimes\\\"]],[24,[\\\"showColumnsWorktimes\\\"]],[24,[\\\"worktime_page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]],\\\"comp-report.worktime\\\",\\\"custom\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",\\\"worktime\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setNewColumns\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.absences\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\",\\\"localStorageKey\\\",\\\"fullscreenmode\\\",\\\"bubbleSetRowsPerPage\\\",\\\"showColumnsChanged\\\"],[\\\"bubbleTransition\\\",\\\"abcense\\\",[24,[\\\"model\\\",\\\"absences\\\"]],[24,[\\\"showColumnsAbsences\\\"]],[24,[\\\"absence_page\\\"]],[24,[\\\"abcenseSettings\\\"]],[24,[\\\"status\\\"]],\\\"comp-report.absences\\\",\\\"custom\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",\\\"absence\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setNewColumns\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/comp-report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorktimeEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nimport collector from '../../../classes/collector';\n\nWorktimeEditController = GeneralAddController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    flags: Ember.inject.service(),\n    useFormAdd: Ember.computed(function () {\n        return this.get('flags').test('form-add');\n    }),\n    useNewVersion: Ember.computed(function () {\n        return this.get('Collector').testNeeds(['products.multitasking']) || this.get('useFormAdd');\n    }),\n    editNewLink: 'timetracker.edit',\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n    init: function () {\n        var cust;\n        this._super();\n        cust = {};\n        if (this.get('Collector').testNeedsOne('products.timetracker_km_automatic')) {\n            cust.km = {\n                template: 'timetracker/add/km_auto',\n            };\n            return this.set('customization', cust);\n        }\n    },\n    actions: {\n        goBack: () => {\n            return window.history.back(-1);\n        },\n    },\n});\n\nexport default WorktimeEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorktimeEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nWorktimeEditRoute = GeneralAddRoute.extend({\n    modelName: 'worktime',\n    controllerName: 'timetracker/edit',\n    edit: true,\n    //    model: (params) ->\n    //        @store.findRecord(@get('modelName'), params.id)\n    savedRoute: 'timetracker.addsaved',\n    beforeModel: function (transition) {\n        this._super();\n        if (transition.from && transition.from.name === 'timetracker.comp-report') {\n            return this.set('afterSave', 'timetracker.comp-report');\n        } else if (transition.from && transition.from.name === 'timetracker.aggregated.rows') {\n            return this.set('afterSave', {\n                route: 'timetracker.aggregated.rows',\n                params: transition.from.params.date,\n            });\n        } else {\n            if (this.get('Collector').testNeeds(['mobileView', 'userlevel=1'])) {\n                return this.set('afterSave', 'timetracker.week-report');\n            } else {\n                return this.set('afterSave', 'timetracker.worktime-list');\n            }\n        }\n    },\n    actions: {\n        afterSave: function () {\n            return this.transitionTo(this.get('afterSave'));\n        },\n    },\n});\n\nexport default WorktimeEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"C/5sf3/4\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"useNewVersion\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"gps-icon\\\",null,[[\\\"position\\\"],[\\\"left\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.worktime\\\"],null],false],[9],[9],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"timetracker.week-report\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"useFormAdd\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/form-add/forms/worktime\\\",null,[[\\\"record\\\",\\\"close\\\"],[[24,[\\\"model\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"goBack\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/add-modal/worktime\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"cancelClicked\\\",\\\"recordSaved\\\"],[\\\"worktime\\\",[24,[\\\"model\\\",\\\"id\\\"]],\\\"afterSave\\\",\\\"afterSave\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/employer-sums/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerEmployerSumsController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nTimetrackerEmployerSumsController = GeneralReportController.extend({\n    showColumns: ['employer', 'work_hours'],\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'date',\n                form: 'worktime',\n                type: 'date',\n                value: this.get('date'),\n                wagePeriods: true,\n            }),\n            Em.Object.create({\n                field: 'project',\n                form: 'worktime',\n                value: this.get('project'),\n            }),\n        ]);\n    }),\n    form: 'worktime',\n    date:\n        moment().startOf('month').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    queryParams: ['project', 'page', 'date'],\n    project: null,\n    page: null,\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n            hideCheckbox: true,\n        }),\n    }),\n    actions: {\n        filterChanged: function (value, field) {\n            return this.set(field, value);\n        },\n    },\n});\n\nexport default TimetrackerEmployerSumsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/employer-sums/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerEmployerSumsRoute;\n\nimport Ember from 'ember';\n\nTimetrackerEmployerSumsRoute = Ember.Route.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n            replace: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var self;\n        //params = @._super(params)\n        self = this;\n        //params.sideload = true\n        //params.user='self' # get only own worktimes\n        delete params.page;\n        if (params.project === null) {\n            delete params.project;\n        }\n        //        params.date =\n        params.groupBy = 'employer';\n        return this.Collector.cget('worktime', params, true);\n    },\n});\n\nexport default TimetrackerEmployerSumsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"G12DJgPf\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"worktime\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"type\\\",\\\"localStorageKey\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",\\\"worktime\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],\\\"group\\\",\\\"employer_sums\\\",[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/employer-sums/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerHistoryRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nTimetrackerHistoryRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default TimetrackerHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"ASUrvr1n\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"worktime\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/history/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"kb7P3Zo5\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/realtime/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerRealtimeController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport collector from '../../../classes/collector';\n\nTimetrackerRealtimeController = GeneralReportController.extend({\n    showColumns: ['user', 'user.taxnumber', 'user.personid', 'project', 'starttime', 'date'],\n    filters: Em.A([\n        Em.Object.create({\n            field: 'project',\n        }),\n    ]),\n    form: 'worktime',\n    queryParams: ['page', 'project', 'user', 'employer'],\n    project: null,\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: 'timetracker.edit',\n            historyRoute: 'timetracker.history',\n            hideCheckbox: true,\n        }),\n    }),\n    init_functions: function () {\n        this._super();\n        return this.hideColumns();\n    },\n    hideColumns: function () {\n        var fields;\n        fields = collector.getFormObjects('worktime');\n        if (\n            fields.starttime.features.hide &&\n            fields.endtime.features.hide &&\n            fields.work_hours.features.mandatory\n        ) {\n            return this.set('settings.hideColumns', ['starttime', 'endtime']);\n        }\n    },\n});\n\nexport default TimetrackerRealtimeController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/realtime/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerRealtimeRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nimport collector from '../../../classes/collector';\n\nTimetrackerRealtimeRoute = GeneralReportRoute.extend({\n    form: 'worktime',\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n            replace: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        params.endtime = '(empty)';\n        params.date =\n            moment().subtract(1, 'days').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD');\n        if (!params.order) {\n            params.order = 'date-,starttime-';\n        }\n        return this.store.query('worktime', params);\n    },\n});\n\nexport default TimetrackerRealtimeRoute;\n","export default Ember.HTMLBars.template({\"id\":\"qSWHkbuf\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"worktime\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"localStorageKey\\\"],[\\\"bubbleTransition\\\",\\\"worktime\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],\\\"worktime-realtime\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/realtime/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nTimetrackerRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    Collector: Ember.inject.service('collector-service'),\n    beforeModel: function (transition) {\n        if (\n            transition.targetName === 'timetracker.worktime-list' &&\n            this.get('Collector').testNeeds(['mobileView', 'userlevel=1'])\n        ) {\n            this.transitionTo('timetracker.week-report');\n        }\n        return this._super(transition);\n    },\n});\n\nexport default TimetrackerRoute;\n","import Controller from '@ember/controller';\nimport { get, set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    queryParams: ['user', 'date'],\n\n    user: null,\n    date: null,\n\n    init() {\n        this._super(...arguments);\n        if (!get(this, 'date')) {\n            set(\n                this,\n                'date',\n                moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('isoWeek').format('YYYY-MM-DD'),\n            );\n        }\n    },\n\n    dummy: alias('model'),\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"w+MbBD+3\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"route-worktime-salary-category\\\",null,[[\\\"user\\\",\\\"date\\\"],[[28,\\\"mut\\\",[[24,[\\\"user\\\"]]],null],[28,\\\"mut\\\",[[24,[\\\"date\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/salary-category/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/saved/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar savedController;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nsavedController = Ember.Controller.extend({\n    //    needs: ['timetracker/timecard']\n    timecardController: Ember.inject.controller('timetracker/timecard'),\n    commentSaved: false,\n    actions: {\n        saveComment: function () {\n            var self, worktime;\n            self = this;\n            worktime = this.get('model');\n            return worktime.save().then(function () {\n                return self.set('commentSaved', true);\n            });\n        },\n    },\n});\n\nexport default savedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/saved/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SavedRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSavedRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    actions: {\n        willTransition: function () {\n            this.controllerFor('timetracker/timecard').set('isTogglerVisible', false);\n            this.controllerFor('timetracker/timecard').set('started_worktime', false);\n            return this.controllerFor('timetracker/timecard').set('worktimeDuration', '00:00:00');\n        },\n    },\n});\n\nexport default SavedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Jr1Ggrc7\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.saved.title\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.project\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"content\\\",\\\"project\\\",\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[24,[\\\"content\\\",\\\"project\\\",\\\"name\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"timecard.no_project\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.work_hours\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"content\\\",\\\"work_hours\\\"]]],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.starttime\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"content\\\",\\\"starttime\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.endtime\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"content\\\",\\\"endtime\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"commentSaved\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.description\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"content\\\",\\\"description\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"commentSaved\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.description\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"placeholderTranslation\\\"],[\\\"3\\\",\\\"form-control\\\",[24,[\\\"description\\\"]],[24,[\\\"content\\\",\\\"description\\\"]],\\\"workday.field.comment\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"commentSaved\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveComment\\\"]],[8],[1,[28,\\\"t\\\",[\\\"timecard.save_comment\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"timetracker.timecard\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"timecard.start_new\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/saved/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/timecard/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimecardAddController;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nimport FormatUtil from '../../../../utils/format';\n\nimport config from '../../../../config/environment';\n\nimport { copy } from 'ember-copy';\n\nimport $ from 'jquery';\n\nimport { captureException } from '@sentry/browser';\n\nTimecardAddController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    sessionhelper: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    Google: Ember.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    gps: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    clock: Ember.inject.service('timecard-clock'),\n    currentDate: null,\n    currentTime: null,\n    isTogglerVisible: false,\n    validForm: true,\n    refreshing: false,\n    dayStart: '---',\n    custom_projects: Em.A([]),\n    force_location: Ember.computed('openWorktime.project.force_location', function () {\n        if (!this.get('Collector').fieldExists('project', 'force_location')) {\n            return false;\n        }\n        if (this.get('openWorktime.project.force_location') === void 0) {\n            // The project hasn't loaded this field at all so we keep it as 'forced' until everything is loaded\n            return true;\n        }\n        return (\n            this.get('openWorktime.project.force_location') &&\n            Ember.isPresent(this.get('openWorktime.project.location_map'))\n        );\n    }),\n    totalWorkHours: '00:00',\n    totalWorkRaw: 0,\n    init: function () {\n        this._super(...arguments);\n        this.checkMandatoryFields();\n        this.resume();\n        //@updateTimeProperty()\n        if (collector.forms.worktime.objects.project.features.mandatory) {\n            this.set('projectIsMandatory', true);\n        }\n        return this.clock; //ember lazily loads injections, so this needs to be called somehow somewhere to get the clock ticking\n    },\n    resume: function () {\n        return this.get('sessionhelper').on('resumed', () => {\n            return this.onresume();\n        });\n    },\n    onresume: function () {\n        var create_new, self;\n        self = this;\n        create_new = true;\n        this.set('refreshing', true);\n        return this.get('store')\n            .query('worktime', {\n                date:\n                    moment().subtract(1, 'day').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD'),\n                user: 'self',\n                sideload: true,\n                order: 'date-,endtime-',\n            })\n            .then(function (data) {\n                var project, task, unsavedRecords, worktime;\n                self.set('refreshing', false);\n                if (data.get('firstObject')) {\n                    data.forEach(function (worktime) {\n                        if (!worktime.get('endtime')) {\n                            create_new = false;\n                            self.get('store').findRecord('project', worktime.get('project.id'), {\n                                reload: true,\n                            });\n                            self.set('openWorktime', worktime);\n                            return self.notifyPropertyChange('isForcedAndNotCloseEnough');\n                        }\n                    });\n                }\n                if (create_new) {\n                    unsavedRecords = self.get('store').peekAll('worktime').filterBy('isNew');\n                    if (unsavedRecords.length > 0) {\n                        worktime = unsavedRecords[0];\n                    } else {\n                        worktime = self.store.createRecord('worktime', {\n                            on_worksite: true,\n                        });\n                    }\n                    project = self.get('localStorageWrapper').getUserSetting('project');\n                    if (self.get('session.currentUser.currentMySite')) {\n                        project = self.get('session.currentUser.currentMySite.id');\n                    }\n                    if (project && Ember.typeOf(project) !== 'array') {\n                        self.store.findRecord('project', project).then(function (record) {\n                            return worktime.set('project', record);\n                        });\n                    }\n                    if (self.get('Collector').testNeeds(['worktime.task'])) {\n                        task = self.get('localStorageWrapper').getUserSetting('task');\n                        if (task && Ember.typeOf(task) !== 'array') {\n                            self.store.findRecord('task', task).then(function (record) {\n                                return worktime.set('task', record);\n                            });\n                        }\n                    }\n                    self.set('openWorktime', worktime);\n                    self.set('newWorktime', worktime);\n                    return self.set('started_worktime', false);\n                }\n            });\n    },\n    //data.get('content').push(worktime)\n    worktimeDuration: Ember.computed('clock.time', function () {\n        var clockedTime, diff, h, m, s, start;\n        if (\n            this.get('started_worktime') ||\n            (this.get('openWorktime') != null && this.get('openWorktime').get('starttime'))\n        ) {\n            if (this.get('started_worktime')) {\n                start = moment(this.get('started_worktime'));\n            } else {\n                start = moment(\n                    this.get('openWorktime').get('date') +\n                        ' ' +\n                        this.get('openWorktime').get('starttime'),\n                );\n            }\n            diff = moment().diff(start, 'seconds');\n            //if diff < 0 then return \"00:00:00\"\n            h = parseInt(diff / 3600) % 24;\n            m = parseInt(diff / 60) % 60;\n            s = diff % 60;\n            if (diff < 0) {\n                m = Math.abs(m);\n                s = Math.abs(s);\n                h = Math.abs(h);\n            }\n            if (h < 10) {\n                h = '0' + h;\n            }\n            if (m < 10) {\n                m = '0' + m;\n            }\n            if (s < 10) {\n                s = '0' + s;\n            }\n            clockedTime = diff < 0 ? '-' + h + ':' + m + ':' + s : h + ':' + m + ':' + s;\n            this.calculateTotalWorkingTime(diff);\n            return clockedTime;\n        } else {\n            return '00:00:00';\n        }\n    }),\n    calculateTotalWorkingTime: function (seconds) {\n        var tmp_totalwork, tmp_totalwork_hours, tmp_totalwork_mins, totalWorkHours;\n        //calculate total workingtime\n        tmp_totalwork = seconds / 3600 + this.get('totalWorkRaw'); // as hours\n        tmp_totalwork_hours = Math.floor(tmp_totalwork);\n        tmp_totalwork_mins = Math.floor((tmp_totalwork - tmp_totalwork_hours) * 60);\n        if (tmp_totalwork < 0) {\n            tmp_totalwork_hours = Math.abs(tmp_totalwork_hours);\n            tmp_totalwork_mins = Math.abs(tmp_totalwork_mins);\n        }\n        if (tmp_totalwork_hours < 10) {\n            tmp_totalwork_hours = '0' + tmp_totalwork_hours;\n        }\n        if (tmp_totalwork_mins < 10) {\n            tmp_totalwork_mins = '0' + tmp_totalwork_mins;\n        }\n        totalWorkHours =\n            tmp_totalwork < 0\n                ? '-' + tmp_totalwork_hours + ':' + tmp_totalwork_mins\n                : tmp_totalwork_hours + ':' + tmp_totalwork_mins;\n        return this.set('totalWorkHours', totalWorkHours);\n    },\n    setMySitesProject: function () {\n        if (this.get('session.currentUser.currentMySite') && !this.get('openWorktime.id')) {\n            return this.set('openWorktime.project', this.get('session.currentUser.currentMySite'));\n        } else if (\n            this.get('session.currentUser.currentMySite') &&\n            this.get('session.currentUser.currentMySite') !== this.get('openWorktime.project')\n        ) {\n            return this.get('notifications').warning(\n                this.get('intl').t('timetracker.timecard.already_started_other_project'),\n                {\n                    autoClear: true,\n                },\n            );\n        }\n    },\n    projectField: Ember.computed('openWorktime.project', function () {\n        var field;\n        field = this.get('Collector').fieldArray('worktime', ['project'])[0];\n        field.value = this.get('openWorktime.project.id');\n        return field;\n    }),\n    currentMySiteTooFar: Ember.computed(\n        'gps.lockedLatitude',\n        'gps.lockedLongitude',\n        'session.currentUser.currentMySite.location_map',\n        'session.currentUser.currentMySite.force_location',\n        function () {\n            var loc, projLoc;\n            if (\n                !this.get('session.currentUser.currentMySite') ||\n                !this.get('session.currentUser.currentMySite.location_map') ||\n                !this.get('session.currentUser.currentMySite.force_location')\n            ) {\n                return;\n            }\n            loc = this.get('session.currentUser.currentMySite.location_map');\n            projLoc = JSON.parse(loc);\n            if (\n                !this.get('gps').withinAcceptedDistance(\n                    {\n                        lat: projLoc.latitude,\n                        lon: projLoc.longitude,\n                    },\n                    {\n                        lat: this.get('gps.lockedLatitude'),\n                        lon: this.get('gps.lockedLongitude'),\n                    },\n                )\n            ) {\n                Ember.run.next(this, () => {\n                    return this.set('openWorktime.project', null);\n                });\n                return true;\n            }\n        },\n    ),\n    sortProperties: ['date:desc', 'starttime:asc'],\n    sortedModel: Ember.computed.sort('model', 'sortProperties'),\n    WorkHoursObs: function () {\n        var hours, mins, sorted_model, total;\n        if (this.get('model').get('firstObject')) {\n            sorted_model = this.get('sortedModel');\n            if (sorted_model.get('firstObject').get('starttime')) {\n                this.set('dayStart', sorted_model.get('firstObject').get('starttime'));\n            }\n            total = 0;\n            this.get('model').forEach(function (worktime) {\n                if (\n                    worktime.get('work_hours') &&\n                    worktime.get('date') === moment().format('YYYY-MM-DD')\n                ) {\n                    return (total = total + worktime.get('work_hours'));\n                }\n            });\n            if (total > 0) {\n                hours = parseInt(total);\n                mins = Math.round((total - hours) * 60);\n                if (mins < 10) {\n                    mins = '0' + mins;\n                }\n                if (hours < 10) {\n                    hours = '0' + hours;\n                }\n                this.set('totalWorkRaw', total);\n                return this.set('totalWorkHours', hours + ':' + mins);\n            }\n        }\n    }.observes('model'),\n    isForcedAndNotCloseEnough: Ember.computed(\n        'openWorktime.project',\n        'force_location',\n        'gps.lockedLongitude',\n        'gps.lockedLatitude',\n        function () {\n            var gps, projLoc, project;\n            project = this.get('openWorktime.project');\n            if (!project) {\n                return;\n            }\n            if (this.get('force_location') && project.get('location_map')) {\n                gps = this.get('gps');\n                projLoc = JSON.parse(project.get('location_map'));\n                if (\n                    gps.withinAcceptedDistance(\n                        {\n                            lat: projLoc.latitude,\n                            lon: projLoc.longitude,\n                        },\n                        {\n                            lat: gps.get('lockedLatitude'),\n                            lon: gps.get('lockedLongitude'),\n                        },\n                    )\n                ) {\n                    return false;\n                }\n                return true;\n            } else if (this.get('force_location') && !project.get('location_map')) {\n                return true;\n            }\n            return false;\n        },\n    ),\n    latlng: Ember.computed(\n        'gps.lockedLatitude',\n        'gps.lockedLongitude',\n        'gps.currentAccuracy',\n        function () {\n            return {\n                lat: this.get('gps.lockedLatitude'),\n                lng: this.get('gps.lockedLongitude'),\n                accuracy: this.get('gps.currentAccuracy'),\n            };\n        },\n    ),\n    projectMarker: Ember.computed('openWorktime.project.location_map', function () {\n        var projLoc;\n        if (this.get('openWorktime.project.location_map')) {\n            projLoc = JSON.parse(this.get('openWorktime.project.location_map'));\n            return [\n                {\n                    position: {\n                        lat: projLoc.latitude,\n                        lng: projLoc.longitude,\n                        accuracy: this.get('customerSettings').checkSetting('gps_distance') || 700,\n                    },\n                    title: this.get('openWorktime.project.name'),\n                },\n            ];\n        } else {\n            return [];\n        }\n    }),\n    projectMissing: Ember.computed('openWorktime.project', function () {\n        var project;\n        project = this.get('openWorktime.project');\n        if (\n            collector.forms.worktime.objects.project.features.mandatory &&\n            !this.get('openWorktime.project.id')\n        ) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n    loading: true,\n    validation: null,\n    checkMandatoryFields: function () {\n        var self;\n        self = this;\n        return $.each(collector.forms.worktime.objects, function (field, settings) {\n            if (settings.features.mandatory && field !== 'project' && field !== 'user') {\n                return self.set('validForm', false);\n            }\n        });\n    },\n    location: Ember.computed(function () {\n        return this.get('Collector').fieldExists('worktime', 'location');\n    }),\n    hasError: Ember.computed(function () {\n        var error_types, errors;\n        errors = collector.getErrors('worktime');\n        error_types = this.Collector.parseFormErrors(errors);\n        this.set('errorMessages', error_types);\n        if (errors) {\n            return true;\n        }\n        return false;\n    }),\n    calcAutoKm: Em.computed(function () {\n        if (this.get('Collector').testNeedsOne('products.timetracker_km_automatic')) {\n            return true;\n        }\n    }),\n    showEndLocation: Em.computed(function () {\n        return this.get('Collector').fieldExists('worktime', 'end_location');\n    }),\n    showTasks: Em.computed(function () {\n        return (\n            this.get('Collector').fieldExists('worktime', 'task') &&\n            !this.get('taskField.features.hide')\n        );\n    }),\n    taskField: Ember.computed('openWorktime.project', function () {\n        var field;\n        //return if !@get('showTasks')\n        field = this.get('Collector').fieldArray('worktime', ['task'])[0];\n        field.value = this.get('openWorktime.task.id');\n        return field;\n    }),\n    commentField: Ember.computed('openWorktime.description', function () {\n        var field;\n        field = this.get('Collector').fieldArray('worktime', ['description'])[0];\n        field.value = this.get('openWorktime.description');\n        return field;\n    }),\n    showExtrainfoModal: false,\n    modalFields: Em.computed('openWorktime', function () {\n        var c, fields, form, record, retFields;\n        c = this.get('Collector');\n        form = 'worktime';\n        record = this.get('openWorktime');\n        if (!record) {\n            return;\n        }\n        fields = c.fieldArray(form);\n        retFields = [];\n        // Fetch form fields with collector service\n        fields.forEach((field) => {\n            var db_record, ref, ref1, user_address, value_from_ls;\n            if (field.features.stashed) {\n                return false;\n            }\n            if (\n                (ref = field.name) === 'group' ||\n                ref === 'endtime' ||\n                ref === 'description' ||\n                ref === 'employer' ||\n                ref === 'location' ||\n                ref === 'work_hours' ||\n                ref === 'customer'\n            ) {\n                return;\n            }\n            if (\n                !Em.isEmpty(record.get(field.name)) &&\n                record.get(field.name) !== 0 &&\n                field.type !== 'checkbox'\n            ) {\n                return;\n            }\n            if ((ref1 = field.type) === 'dropdown_values' || ref1 === 'dropdown_options') {\n                value_from_ls = this.get('localStorageWrapper').getUserSetting(\n                    'select_' + field.name,\n                );\n                if (value_from_ls && Ember.isPresent(value_from_ls)) {\n                    Ember.set(field, 'value', value_from_ls);\n                    record.set(field.name, value_from_ls);\n                }\n            }\n            if (field.type === 'database') {\n                value_from_ls = this.get('localStorageWrapper').getUserSetting(field.name);\n                //fetch that record\n                if (value_from_ls && Ember.isPresent(value_from_ls)) {\n                    db_record = this.get('store').peekRecord(\n                        field.options.form,\n                        parseInt(value_from_ls, 10),\n                    );\n                    record.set(field.name, db_record);\n                    field.value = parseInt(value_from_ls, 10);\n                }\n            }\n            if (\n                field.name === 'pause' &&\n                Ember.get(field, 'features.default_value') &&\n                !this.get('openWorktime.pause')\n            ) {\n                if (typeof Ember.get(field, 'features.default_value') === 'object') {\n                    this.set(\n                        'openWorktime.pause',\n                        Ember.get(field, 'features.default_value.value'),\n                    );\n                } else {\n                    this.set('openWorktime.pause', Ember.get(field, 'features.default_value'));\n                }\n            }\n            if (\n                field.name === 'affects_overtime' &&\n                Ember.get(field, 'features.default_value') &&\n                !this.get('openWorktime.affects_overtime')\n            ) {\n                this.set(\n                    'openWorktime.affects_overtime',\n                    Ember.get(field, 'features.default_value'),\n                );\n            }\n            if (field.name === 'km' && this.get('calcAutoKm')) {\n                if (\n                    !this.get('session.currentUser.address') ||\n                    !this.get('session.currentUser.city')\n                )\n                    return;\n\n                user_address =\n                    this.get('session.currentUser.address') +\n                    ', ' +\n                    this.get('session.currentUser.city');\n                if (this.get('session.currentUser.fin_address')) {\n                    user_address =\n                        this.get('session.currentUser.fin_address') +\n                        ', ' +\n                        this.get('session.currentUser.fin_city');\n                }\n                this.get('store')\n                    .findRecord('project', record.get('project.id'), {\n                        reload: true,\n                    })\n                    .then((project) => {\n                        var project_address;\n                        if (!project.get('address') || !project.get('city')) {\n                            return this.set('openWorktime.km', null);\n                        }\n                        project_address = project.get('address') + ', ' + project.get('city');\n                        return this.get('Google')\n                            .routeDistance(user_address, project_address)\n                            .then((dist) => {\n                                if (dist) {\n                                    return this.set('openWorktime.km', dist);\n                                } else {\n                                    return this.set('openWorktime.km', null);\n                                }\n                            });\n                    });\n            }\n            return retFields.push(copy(field));\n        });\n        return retFields;\n    }),\n    currentSaldo: function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                return this.get('Collector')\n                    .ttapi({\n                        url: 'saldo/get_saldo?userid=' + this.session.currentUser.id,\n                    })\n                    .then((back) => {\n                        return resolve({\n                            value: back['saldo'] / 60,\n                            from: back['from'],\n                            to: back['to'],\n                        });\n                    });\n            }),\n        });\n    },\n    actions: {\n        startWork: function () {\n            var date, row, self, starttime, store;\n            if (this.get('hasError')) {\n                return;\n            }\n            self = this;\n            row = this.get('openWorktime');\n            store = this.get('store');\n            date = moment().format('YYYY-MM-DD');\n            starttime = moment().format('HH:mm');\n            if (this.get('model.length') === 0) {\n                this.set('dayStart', starttime);\n            }\n            row.set('starttime', starttime);\n            row.set('date', date);\n            row.set('validation', 'off');\n            this.set('apiError', null);\n            return row.save().then(\n                () => {\n                    self.set('started_worktime', moment());\n                    this.set('startWasClicked', true);\n                    Em.run.later(() => {\n                        return this.set('startWasClicked', false);\n                    }, 3500);\n                    this.get('notifications').success(\n                        this.get('intl').t('timetracker.timecard.started'),\n                        {\n                            autoClear: true,\n                        },\n                    );\n                    return this.WorkHoursObs(); // calculate workhours again\n                },\n                (error) => {\n                    var errorObj;\n                    if (error.errors[0].error) {\n                        errorObj = error.errors[0];\n                    } else {\n                        errorObj = error.errors;\n                    }\n                    // overlapping worktimes, give user option to start this worktime at the last worktime endtime\n                    if (errorObj.error === 'overlap') {\n                        this.set('started_worktime', false);\n                        this.set('openWorktime.starttime', false);\n                        if (errorObj.errorMeta.hits === 'absence') {\n                            return this.get('dialogs').alert(\n                                this.get('intl').t('timetracker.timecard.overlap_absence'),\n                            );\n                        } else {\n                            //@set 'startWasClicked', false\n                            return this.get('dialogs')\n                                .confirm(this.get('intl').t('timetracker.timecard.confirm_overlap'))\n                                .then((con) => {\n                                    if (con) {\n                                        // model has worktimes sorted by date and endtime, so first element has always the latest endtime\n                                        row.set('starttime', this.get('model.firstObject.endtime'));\n                                        return row.save().then(() => {\n                                            this.set('startWasClicked', true);\n                                            Em.run.later(() => {\n                                                return this.set('startWasClicked', false);\n                                            }, 3500);\n                                            return this.get('notifications').success(\n                                                this.get('intl').t('timetracker.timecard.started'),\n                                                {\n                                                    autoClear: true,\n                                                },\n                                            );\n                                        });\n                                    }\n                                });\n                        }\n                    } else {\n                        //@WorkHoursObs() # calculate workhours again\n                        captureException(error);\n                        this.set(\n                            'apiError',\n                            JSON.stringify(error.errors != null ? error.errors : error),\n                        );\n                        if (error.errors != null) {\n                            this.set('started_worktime', false);\n                            row.set('starttime', void 0);\n                            row.set('date', void 0);\n                            return row.set('isError', false);\n                        }\n                    }\n                },\n            );\n        },\n        //                    self.set('openWorktime', self.store.createRecord('worktime', {}))\n        endWork: function () {\n            if (this.get('modalFields.length') === 0) {\n                return this.send('stopWorkAndSave');\n            } else {\n                return this.set('showExtrainfoModal', true);\n            }\n        },\n        stopWorkAndSave: function (type) {\n            var field, fieldValue, i, len, ref, self, worktime;\n            this.set('apiError', null);\n            self = this;\n            worktime = this.get('openWorktime');\n            worktime.set('endtime', moment().format('HH:mm'));\n            ref = this.get('Collector').fieldArray('worktime');\n            //get all database fields and save them to LS\n            for (i = 0, len = ref.length; i < len; i++) {\n                field = ref[i];\n                if (field.type === 'database') {\n                    fieldValue = worktime.get(field.name);\n                    this.get('localStorageWrapper').setUserSetting(\n                        field.name,\n                        fieldValue ? fieldValue.id : '',\n                    );\n                }\n            }\n            // a bit of a gimmick\n            // if startdate is same as current date..\n            // and starttime is in future..\n            // ..then set endtime same as starttime\n            if (\n                worktime.get('date') === moment().format('YYYY-MM-DD') &&\n                worktime.get('starttime') > moment().format('HH:mm')\n            ) {\n                worktime.set('endtime', worktime.get('starttime'));\n            }\n            return worktime.save().then(\n                (saved) => {\n                    var new_rec, new_worktime;\n                    this.get('notifications').success(this.get('intl').t('general.saved'), {\n                        autoClear: true,\n                    });\n                    if (this.get('Collector').testNeeds(['products.saldo'])) {\n                        this.currentSaldo().then((saldo) => {\n                            var format;\n                            format = FormatUtil.create();\n                            return this.get('notifications').success(\n                                this.get('intl').t('saldo.your_saldo_now') +\n                                    ' ' +\n                                    format.hours(saldo.value),\n                                {\n                                    autoClear: true,\n                                },\n                            );\n                        });\n                    }\n                    new_rec = {\n                        on_worksite: true,\n                    };\n                    if (type === 'task') {\n                        new_rec.project = worktime.get('project');\n                    }\n                    if (type === 'project' && this.get('showTasks')) {\n                        new_rec.task = worktime.get('task');\n                    }\n                    if (!type) {\n                        new_rec.project = worktime.get('project');\n                        if (this.get('Collector').testNeeds(['worktime.task'])) {\n                            new_rec.task = worktime.get('task');\n                        }\n                    }\n                    new_worktime = this.store.createRecord('worktime', new_rec);\n                    this.set('newWorktime', new_worktime);\n                    this.set('openWorktime', new_worktime);\n                    //@set(\"model\", new_worktime)\n                    this.set('started_worktime', null);\n                    //@WorkHoursObs()\n                    return this.send('refreshModel');\n                },\n                (error) => {\n                    captureException(error);\n                    this.set(\n                        'apiError',\n                        JSON.stringify(error.errors != null ? error.errors : error),\n                    );\n                    if (error.errors != null) {\n                        if (error.errors[0].errorMeta.hits === 'absence') {\n                            this.get('dialogs').alert(\n                                this.get('intl').t('timetracker.timecard.overlap_absence'),\n                            );\n                        }\n                        return worktime.set('endtime', null);\n                    }\n                },\n            );\n        },\n        change_task: function (value) {\n            return this.set('openWorktime.task', value);\n        },\n        cancelExtrainfoModal: function () {\n            return this.set('showExtrainfoModal', false);\n        },\n        saveExtrainfoModal: function () {\n            this.set('showExtrainfoModal', false);\n            return this.send('stopWorkAndSave');\n        },\n        emptyMySites: function (value) {\n            if (value && value.get('id') !== this.get('session.currentUser.currentMySite')) {\n                return this.set('session.currentUser.currentMySite', null);\n            } else if (!value) {\n                return this.set('session.currentUser.currentMySite', null);\n            }\n        },\n    },\n});\n\n//)\nexport default TimecardAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/timecard/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimecardAddRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nTimecardAddRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    store: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    date: null,\n    localStorageWrapper: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    openWorktime: false,\n    newWorktime: false,\n    beforeModel: function () {\n        this._super(...arguments);\n        return this.set('gui.hideMobileHeader', true);\n    },\n    model: function (params) {\n        var create_new, self;\n        self = this;\n        create_new = true;\n        return this.store\n            .query('worktime', {\n                date:\n                    moment().subtract(1, 'day').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD'),\n                user: 'self',\n                sideload: true,\n                order: 'date-,endtime-',\n            })\n            .then(function (data) {\n                var project, task, worktime;\n                if (data.get('firstObject')) {\n                    data.forEach(function (worktime) {\n                        if (!worktime.get('endtime')) {\n                            create_new = false;\n                            self.get('store').findRecord('project', worktime.get('project.id'), {\n                                reload: true,\n                            });\n                            return self.set('openWorktime', worktime);\n                        }\n                    });\n                }\n                if (create_new) {\n                    worktime = self.store.createRecord('worktime', {\n                        on_worksite: true,\n                    });\n                    project = self.get('localStorageWrapper').getUserSetting('project');\n                    if (self.get('session.currentUser.currentMySite')) {\n                        project = self.get('session.currentUser.currentMySite.id');\n                    }\n                    if (project && Ember.typeOf(project) !== 'array') {\n                        self.store.findRecord('project', project).then(function (record) {\n                            return worktime.set('project', record);\n                        });\n                    }\n                    if (self.get('Collector').testNeeds(['worktime.task'])) {\n                        task = self.get('localStorageWrapper').getUserSetting('task');\n                        if (task && Ember.typeOf(task) !== 'array') {\n                            self.store.findRecord('task', task).then(function (record) {\n                                return worktime.set('task', record);\n                            });\n                        }\n                    }\n                    self.set('newWorktime', worktime);\n                }\n                return data;\n            });\n    },\n    setupController: function (controller, model) {\n        // if contoller open worktime is removed reset it\n        if (\n            controller.get('openWorktime') &&\n            controller.get('openWorktime').get('currentState.stateName') === 'root.deleted.saved'\n        ) {\n            controller.set('openWorktime', null);\n        }\n        // do not overwrite controller openWorktime if we are refreshing model (screws up gps-calculating etc)\n        if (this.get('openWorktime') && !controller.get('openWorktime')) {\n            controller.set('openWorktime', this.get('openWorktime'));\n        }\n        if (this.get('newWorktime') && !controller.get('openWorktime')) {\n            controller.set('openWorktime', this.get('newWorktime'));\n        }\n        controller.set('model', model);\n        return controller.setMySitesProject();\n    },\n    resetController: function (controller, isExiting, transition) {\n        this._super.apply(this, arguments);\n        if (isExiting) {\n            controller.set('started_worktime', false);\n            return this.set('gui.hideMobileHeader', false);\n        }\n    },\n    actions: {\n        endWork: function () {},\n        refreshModel: function () {\n            return this.refresh();\n        },\n    },\n});\n\nexport default TimecardAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"EXDiSHrI\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"gps-icon\\\",null,[[\\\"position\\\"],[\\\"left\\\"]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.timecard\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"timetracker.week-report\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[5,\\\"form-error-message\\\",[],[[\\\"@hasError\\\"],[[23,0,[\\\"hasError\\\"]]]]],[0,\\\"\\\\n\\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-horizontal timecard\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time small\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"timecard.time_tracked\\\"],null],false],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-numbers\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"worktimeDuration\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"slim\\\"],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Marker small\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[1,[24,[\\\"projectField\\\",\\\"translated_name\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"projectIsMandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"openWorktime\\\",\\\"starttime\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"collector-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"model\\\"],[\\\"worktime\\\",\\\"project\\\",[24,[\\\"openWorktime\\\",\\\"project\\\"]]]]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentMySiteTooFar\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"gps.mysites.too_far\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"openWorktime\\\",\\\"starttime\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"openWorktime\\\",\\\"project\\\",\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"timecard.no_project\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"or\\\",[[24,[\\\"hasError\\\"]],[24,[\\\"projectMissing\\\"]],[24,[\\\"isForcedAndNotCloseEnough\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"validForm\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 text-right\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"change-button-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.change_project\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"circle-button-smaller\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"stopWorkAndSave\\\",\\\"project\\\"]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-refresh smaller-button\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"model\\\",\\\"change\\\"],[[24,[\\\"projectField\\\"]],\\\"form-control add-fields\\\",[24,[\\\"openWorktime\\\"]],\\\"emptyMySites\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showTasks\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"slim\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checklist small\\\"],[8],[9],[0,\\\" \\\"],[1,[24,[\\\"taskField\\\",\\\"translated_name\\\"]],false],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"openWorktime\\\",\\\"starttime\\\"]]],null,{\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[24,[\\\"openWorktime\\\",\\\"task\\\",\\\"name\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"openWorktime\\\",\\\"starttime\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"or\\\",[[24,[\\\"hasError\\\"]],[24,[\\\"projectMissing\\\"]],[24,[\\\"isForcedAndNotCloseEnough\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"validForm\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 text-right\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"change-button-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.change_task\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"circle-button-smaller\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"stopWorkAndSave\\\",\\\"task\\\"]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-refresh smaller-button\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"taskField\\\"]],\\\"form-control add-fields\\\",[24,[\\\"openWorktime\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"openWorktime\\\",\\\"starttime\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"slim\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Comments small pr-1\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[1,[24,[\\\"commentField\\\",\\\"translated_name\\\"]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"commentField\\\"]],\\\"form-control add-fields\\\",[24,[\\\"openWorktime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"openWorktime\\\",\\\"project\\\",\\\"help\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-info-sign\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[24,[\\\"openWorktime\\\",\\\"project\\\",\\\"help\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"location\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Marker small\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"timecard.gps\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"openWorktime\\\",\\\"starttime\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showEndLocation\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"gps-location\\\",null,[[\\\"value\\\",\\\"model\\\"],[[24,[\\\"openWorktime\\\",\\\"end_location\\\"]],[24,[\\\"openWorktime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"gps-location\\\",null,[[\\\"value\\\",\\\"model\\\"],[[24,[\\\"openWorktime\\\",\\\"location\\\"]],[24,[\\\"openWorktime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"gps-location\\\",null,[[\\\"value\\\",\\\"model\\\"],[[24,[\\\"openWorktime\\\",\\\"location\\\"]],[24,[\\\"openWorktime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"openWorktime\\\",\\\"isSaving\\\"]],[24,[\\\"refreshing\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"class\\\"],[\\\"overlay_loader_icon\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"or\\\",[[24,[\\\"hasError\\\"]],[24,[\\\"projectMissing\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"startWasClicked\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"class\\\"],[\\\"overlay_loader_icon\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"openWorktime\\\",\\\"starttime\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"isForcedAndNotCloseEnough\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.gps.too_far\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"google-map\\\",null,[[\\\"center\\\",\\\"markers\\\"],[[24,[\\\"latlng\\\"]],[24,[\\\"projectMarker\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"circle-button stop\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"endWork\\\"]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Stop huge-button stop-action\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"isForcedAndNotCloseEnough\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.gps.too_far\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"circle-button start\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"startWork\\\"]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Play huge-button start-action\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Play small\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[\\\"starttime\\\",\\\"worktime\\\"]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[1,[22,\\\"dayStart\\\"],false],[0,\\\"\\\\n                \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time small\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"timecard.time_today\\\"],null],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[1,[22,\\\"totalWorkHours\\\"],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"apiError\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.error_prefix\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"small\\\",true],[8],[1,[22,\\\"apiError\\\"],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showExtrainfoModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"timecard.extra_info\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"cancelExtrainfoModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"timetracker/timecard/add/timecard-record-comp\\\",null,[[\\\"form\\\",\\\"fields\\\",\\\"record\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"worktime\\\",[24,[\\\"modalFields\\\"]],[24,[\\\"openWorktime\\\"]],\\\"saveExtrainfoModal\\\",\\\"cancelExtrainfoModal\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/timecard/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/timecard/add/timecard-record-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimecardRecordCompComponent;\n\nimport Ember from 'ember';\n\nimport recordComp from '../../../../collector/record-custom-comp/component';\n\nTimecardRecordCompComponent = recordComp.extend({\n    layoutName: 'collector/record-comp',\n});\n\nexport default TimecardRecordCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"6/uRqo5w\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/timecard/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/week-report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerWeekReportController;\n\nimport Ember from 'ember';\n\nimport filterModel from '../../../mixins/filter-model';\n\nTimetrackerWeekReportController = Ember.Controller.extend(filterModel, {\n    intl: Em.inject.service(),\n    queryParams: ['date'],\n    startDate: moment().startOf('isoWeek'),\n    week: Em.computed('date', function () {\n        try {\n            return moment(this.get('date').substr(0, 10)).isoWeek();\n        } catch (error) {\n            return moment(this.get('startDate')).isoWeek();\n        }\n    }),\n    actions: {\n        changeWeek: function (value) {\n            var date, queryParam;\n            date = this.get('date')\n                ? moment(this.get('date').substr(0, 10))\n                : this.get('startDate');\n            if (value === 'plus') {\n                this.set('startDate', date.add(1, 'week').startOf('isoWeek'));\n            } else {\n                this.set('startDate', date.subtract(1, 'week').startOf('isoWeek'));\n            }\n            queryParam =\n                date.format('YYYY-MM-DD') + '_' + date.endOf('isoWeek').format('YYYY-MM-DD');\n            return this.set('date', queryParam);\n        },\n        rowClicked: function (row) {\n            if (row.abcensetype) {\n                return this.transitionToRoute('abcenses.edit', row.id);\n            } else {\n                return this.transitionToRoute('timetracker.edit', row.id);\n            }\n        },\n    },\n});\n\nexport default TimetrackerWeekReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/week-report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerWeekReportRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nTimetrackerWeekReportRoute = Ember.Route.extend({\n    Collector: Em.inject.service('collector-service'),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n    },\n    currentWeek:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    model: function (params) {\n        var c, date, sideloaded, split_date, worktime_params, worktimesArr;\n        c = this.get('Collector');\n        //params = @._super(params)\n        date = params.date || this.currentWeek;\n        worktime_params = {};\n        worktime_params.sideload = true;\n        worktime_params.user = 'self'; // get only own worktimes\n        worktime_params.date = date;\n        worktime_params.order = 'date-,starttime-';\n        split_date = date.split('_');\n        sideloaded = [];\n        sideloaded.push('abcensetype.name');\n        worktimesArr = [];\n        return this.store.query('worktime', worktime_params).then((worktimes) => {\n            var absPromise;\n            worktimes.forEach((row) => {\n                return worktimesArr.push(row);\n            });\n            absPromise = new Em.RSVP.Promise((resolve, reject) => {\n                var absences;\n                if (c.testNeedsOne('abcense')) {\n                    absences = this.get('Collector').ttapi({\n                        url: 'absence/split',\n                        data: {\n                            startdate: split_date[0],\n                            enddate: split_date[1],\n                            sideload: sideloaded,\n                            order: 'startdate-',\n                            tt3flag: collector.get('tt3flag'),\n                            user: 'self',\n                        },\n                    });\n                    return absences.then((abs) => {\n                        return resolve(abs);\n                    });\n                } else {\n                    return resolve([]);\n                }\n            });\n            return absPromise.then((abs) => {\n                var model;\n                //model = worktimesArr.concat(abs).sortBy(\"date\")\n                model = abs.concat(worktimesArr).sortBy('date');\n                return Em.RSVP.hash({\n                    combined: model,\n                });\n            });\n        });\n    },\n});\n\n//worktimes: @store.query('worktime', worktime_params)\n//absences: abs\nexport default TimetrackerWeekReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"daWPUaNY\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"week-report\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"week-display text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default\\\"],[12,\\\"style\\\",\\\"margin-right: 10px;\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeek\\\",\\\"minus\\\"]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-arrow-left\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"general.week\\\"],null],false],[0,\\\" \\\"],[1,[22,\\\"week\\\"],false],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default\\\"],[12,\\\"style\\\",\\\"margin-left: 10px;\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeek\\\",\\\"plus\\\"]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-arrow-right\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"week-report2\\\",null,[[\\\"model\\\",\\\"rowClicked\\\"],[[24,[\\\"model\\\",\\\"combined\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"rowClicked\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/week-report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/worktime-list/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerWorktimeListController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport collector from '../../../classes/collector';\n\nTimetrackerWorktimeListController = GeneralReportController.extend({\n    session: Ember.inject.service(),\n    form: 'worktime',\n    localStorageKey: 'worktime-list',\n    showColumns: [\n        'date',\n        'status',\n        'user',\n        'employer',\n        'project',\n        'starttime',\n        'endtime',\n        'work_hours',\n        'pause',\n        'description',\n    ],\n    limit: 25,\n    Collector: Em.inject.service('collector-service'),\n    filters: Ember.computed(function () {\n        var c, filter_fields;\n        c = this.get('Collector');\n        filter_fields = Em.A([\n            Em.Object.create(\n                {\n                    field: 'date',\n                    type: 'date',\n                },\n                {\n                    wagePeriods: true,\n                },\n            ),\n            Em.Object.create({\n                field: 'project',\n                value: this.get('project'),\n            }),\n            Em.Object.create({\n                field: 'employer',\n            }),\n            Em.Object.create({\n                field: 'user',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n        ]);\n        // hardcoded for delete for now..\n        // should make nicer\n        if (c.testNeedsOne('user.costcenter')) {\n            filter_fields.pushObject(\n                Em.Object.create({\n                    extra: true,\n                    type: 'search',\n                    field: 'costcenter',\n                    bindto: 'costcenter',\n                    sideload: 'user',\n                    form: 'user',\n                }),\n            );\n        }\n        return filter_fields;\n    }),\n    filterReport: Ember.computed('filters.@each.value', function () {\n        var filters;\n        filters = {};\n        this.get('filters').forEach((item) => {\n            return (filters[item.name] = item.value);\n        });\n        return filters;\n    }),\n    getAdditionalFilters: Ember.computed(function () {\n        if (this.session.currentUser.userlevel !== '1') {\n            return 'user.worktimegroup';\n        }\n        return null;\n    }),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: 'timetracker.edit',\n            historyRoute: 'timetracker.history',\n        }),\n        massedit: true,\n        inlineEdit: true,\n        sortByColumn: 'date-,starttime-',\n    }),\n    init_functions: function () {\n        this._super();\n        return this.hideColumns();\n    },\n    hideColumns: function () {\n        var fields;\n        fields = collector.getFormObjects('worktime');\n        if (\n            fields.starttime.features.hide &&\n            fields.endtime.features.hide &&\n            fields.work_hours.features.mandatory\n        ) {\n            return this.set('settings.hideColumns', ['starttime', 'endtime']);\n        }\n    },\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        closeEditModal: function () {\n            this.editRecord.rollbackAttributes();\n            return this.set('editRecord', null);\n        },\n    },\n    queryParams: [\n        'project',\n        'date',\n        'user',\n        'status',\n        'employer',\n        'customer',\n        'task',\n        'group',\n        'typeofwork',\n        'project_owner',\n        'groupBy',\n        'q',\n    ],\n    //    order: 'date-,starttime-'\n    customer: null,\n    project: null,\n    group: null,\n    typeofwork: null,\n    project_owner: null,\n    user: [],\n    employer: null,\n    status: 'all',\n    dateSelector: true,\n    userSelector: true,\n    statusSelector: true,\n    task: null,\n    groupBy: null,\n    date:\n        moment().startOf('isoweek').subtract(1, 'week').format('YYYY-MM-DD') +\n        '_' +\n        moment().format('YYYY-MM-DD'),\n});\n\nexport default TimetrackerWorktimeListController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/worktime-list/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerWorktimeListRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nTimetrackerWorktimeListRoute = GeneralReportRoute.extend({\n    collector: Ember.inject.service('collector-service'),\n    capi: Ember.inject.service(),\n    flags: Ember.inject.service(),\n    form: 'worktime',\n    localStorageKey: 'worktime-list',\n    queryParams: {\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        typeofwork: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('form-report-worktimes')) {\n            if (Ember.isPresent(params.groupBy)) {\n                params.sideload = true;\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll('worktime', params);\n            } else {\n                params.sideload = true;\n                return this.store.query('worktime', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('timetracker.worktime-list').set('qParams', params);\n        }\n    },\n});\n\nexport default TimetrackerWorktimeListRoute;\n","export default Ember.HTMLBars.template({\"id\":\"N4iQBJ3N\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"form-report-worktimes\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"worktime\\\",[22,\\\"qParams\\\"],\\\"date,user,project,employer,status,q,groupBy\\\",[22,\\\"getAdditionalFilters\\\"],[28,\\\"hash\\\",null,[[\\\"date\\\",\\\"order\\\"],[[24,[\\\"date\\\"]],\\\"date-,starttime-\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/timetracker/edit/\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"TemplateSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"editRecord\\\"]]],null]],null],\\\"remove,history,overview,edit\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],\\\"worktime\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"localStorageKey\\\",\\\"status\\\",\\\"filters\\\",\\\"count\\\"],[\\\"bubbleTransition\\\",\\\"worktime\\\",[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"localStorageKey\\\"]],[24,[\\\"status\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"editRecord\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.add_worktime\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"collector/form-add/forms/worktime\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\",\\\"@showSaved\\\"],[\\\"worktime\\\",[23,0,[\\\"editRecord\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null],true]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/worktime-list/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/trnotices/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TrnoticesEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nTrnoticesEditController = GeneralAddController.extend({\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n});\n\nexport default TrnoticesEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/trnotices/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TrnoticesEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nTrnoticesEditRoute = GeneralAddRoute.extend({\n    modelName: 'trnotice',\n    controllerName: 'trnotices.edit',\n    edit: true,\n    afterModel: function (model, transition) {\n        var page, type;\n        type = model.get('type');\n        if (type === 'tr') {\n            page = 'site_safety.report.tr.notices';\n        } else if (type === 'mvr') {\n            page = 'site_safety.report.mvr.notices';\n        } else {\n            page = 'index';\n        }\n        return this.set('afterSave', page);\n    },\n});\n\nexport default TrnoticesEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"CniT3IQc\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/trnotices/edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/trnotices/history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TrnoticesHistoryRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nTrnoticesHistoryRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default TrnoticesHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"MIBFf1Oh\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"trnotice\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/trnotices/history/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/trnotices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TrnoticesRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nTrnoticesRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default TrnoticesRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/add/builder/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersAddBuilderController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport config from '../../../../config/environment';\n\n// veronumero for testing 100011258537\nUsersAddBuilderController = Ember.Controller.extend({\n    //    needs: [\"employers/add\"]\n    session: Em.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    addController: Ember.inject.controller('employers/add'),\n    capi: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    cc: Ember.inject.service(),\n    store: Ember.inject.service(),\n    vastuuGroup: Ember.inject.service('vastuu-group'),\n    found_employers: [],\n    not_found_employers: [],\n    empArr: Em.A([]),\n    no_employers: false,\n    userAlreadyExists: false,\n    veroApiInfoExists: false,\n    birthday: null,\n    birthdateField: null,\n    obs: function () {\n        this.set('messageStatus', null);\n        this.set('message', null);\n        this.set('create', false);\n        this.set('users', null);\n        this.set('noEmployer', false);\n        this.set('userAlreadyExists', false);\n        this.set('activeUser', null);\n        this.set('found_employers', []);\n        this.set('not_found_employers', []);\n        this.set('no_employers', false);\n        if (this.get('taxnumber.length') === 12) {\n            return this.send('fetchTax');\n        } else if (this.get('cardnumber.length') === 12) {\n            return this.send('fetchCard');\n        } else if (this.get('taxnumber.length') === 14) {\n            return this.send('fetchCardWithUID');\n        }\n    }.observes('taxnumber', 'cardnumber'),\n    setModel: function (data, skip) {\n        var k, model, results, v;\n        model = this.get('model');\n        results = [];\n        for (k in data) {\n            v = data[k];\n            if (indexOf.call(skip, k) < 0) {\n                results.push(model.set(k, v));\n            } else {\n                results.push(void 0);\n            }\n        }\n        return results;\n    },\n    //    setUserInfo: (data, skip) ->\n    //        intl = @get 'intl'\n    //        if !data.error\n    //            @setModel(data,skip)\n    //            if data.cardStatus == 'closed' && data.status == 'verified'\n    //                @set 'messageStatus', 'alert-warning'\n    //            else if data.status == 'verified'\n    //                @set 'messageStatus', 'alert-success'\n    //            else\n    //                @set 'messageStatus', 'alert-danger'\n    //            string = ''\n    //            if data.status\n    //                string += '<div><h3>'+intl.t('user.add.status.taxnumber')+': <b>'+intl.t('user.add.status.'+data.status)+'</b></h3></div>'\n\n    //            if data.cardStatus == 'closed'\n    //               string += '<div><h3><b>'+intl.t('user.add.card.closed')+'</b></h3><b>'+intl.t('user.add.card.reason')+': '+data.cardReason+'</b></div>'\n    //            message = Ember.String.htmlSafe(string)\n    //        else\n    //            @set 'messageStatus', 'alert-danger'\n    //            message = Ember.String.htmlSafe('<div>'+\n    //                '<h3><b>'+intl.t('user.add.status.notfound')+'</b></h3></div>')\n    //        @set 'message', message\n    setUserData: function (data) {\n        var user_record;\n        if (data.names) {\n            user_record = {\n                firstname: data.names[0].given_names[0],\n                lastname: data.names[0].surnames.join(' '),\n                birthdate: data.date_of_birth,\n                taxnumber: data.gov_ids[0].gov_id,\n                homecountry: data.residences != null ? data.residences[0].toLowerCase() : 'fi',\n            };\n            if (this.get('cardUidUsed')) {\n                user_record.rfid_tag_id = this.get('cardUidUsed');\n            }\n            return this.set('user', user_record);\n        }\n    },\n    checkIfUserExists: function (taxnumber) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            return this.get('capi')\n                .request('/users?validation_only=taxnumber', {\n                    method: 'POST',\n                    data: {\n                        user: {\n                            taxnumber: taxnumber,\n                        },\n                    },\n                })\n                .then(\n                    () => {\n                        return resolve(false);\n                    },\n                    (reason) => {\n                        if (\n                            reason.payload.error_msg ===\n                            'user with this ' + taxnumber + ' taxnumber already exists!'\n                        ) {\n                            return resolve(true);\n                        } else {\n                            return resolve(false);\n                        }\n                    },\n                );\n        });\n    },\n    queryVeroApi: function (number, birthday) {\n        var isNumber, query;\n        isNumber = /^\\d+$/.test(number);\n        if (!number || !isNumber || number.length !== 12) {\n            return;\n        }\n        query = '/veroapi-veronumero?taxnumber=' + number;\n        if (birthday) {\n            query += '&birthday=' + birthday;\n        }\n        return $.ajax({\n            url: this.get('cc').host + query,\n            headers: {\n                Authorization: 'Bearer ' + this.session.data.authenticated.access_token,\n            },\n            success: (data) => {\n                this.set('veroApiInfoExists', data.InfoExists);\n                if (data.InfoExists) {\n                    this.set('veroApiUser', data);\n                }\n                if (data.InfoExists && birthday && !data.TaxNumberMatchBirthday) {\n                    return this.set('fetchedWithWrongBirthday', true);\n                }\n            },\n        });\n    },\n    getImage: function (field) {\n        var emp_id, taxnumber;\n        //        @set 'loading', true\n        taxnumber = this.get('model.taxnumber');\n        emp_id = this.get('model.employer.emp_id');\n        return $.ajax({\n            url: this.get('cc').host + config.APP.CC_TVCARDIMAGE,\n            data: {\n                taxnumber: taxnumber,\n                emp_id: emp_id,\n            },\n            success: (data) => {\n                //                @set 'loading', false\n                if (data != null && !data.error) {\n                    this.set('model.image', [\n                        {\n                            file: 'data:image/png;base64,' + data,\n                            name: 'profile.png',\n                        },\n                    ]);\n                    return this.set('fetchedImage', 'data:image/png;base64,' + data);\n                }\n            },\n        });\n    },\n    setMessage: function (status, messageKey) {\n\n        this.set('messageStatus', status);\n\n        const message = Ember.String.htmlSafe(\n            '<div>' +\n                '<h3><b>' +\n                this.intl.t(messageKey) +\n                '</b></h3></div>',\n        );\n\n        this.set('message', message);\n    },\n    actions: {\n        setInitialValue: function () {\n            if (!this.get('birthday')) {\n                return this.set('birthday', '1980-06-01');\n            }\n        },\n        fetchPersonFromTaxApi: function () {\n            //            console.log(@get('taxnumber'), @get('birthday'))\n            this.set('fetchedWithWrongBirthday', false);\n            return this.queryVeroApi(this.get('taxnumber'), this.get('birthday'));\n        },\n        // fetch card taxnumber from vgpersonapi integration and if card is found\n        // replace the taxnumber and taxnumber search starts automatically\n        fetchCardWithUID: async function () {\n            try {\n                this.set('loading', true);\n                this.set('cardUidUsed', null);\n                const uid = this.get('taxnumber');\n\n                const response = await this.vastuuGroup.request('vgpersonapi',\n                    {\n                        country: 'FI',\n                        'id-country': 'FI',\n                        'id-type': 'card_uid',\n                        'id-value': uid,\n                    },\n                );\n\n                if (response.length > 0 && response[0].taxnumber) {\n                    this.set('cardUidUsed', uid);\n                    this.set('taxnumber', response[0].taxnumber);\n                } else {\n                    this.set('loading', false);\n                }\n            } catch (e) {\n                console.error(e);\n                this.set('loading', false);\n            }\n        },\n        fetchTax: async function () {\n            const c = this.get('Collector');\n            this.set('empArr', Em.A([]));\n\n            if (this.get('taxnumber') && this.get('taxnumber.length') === 12) {\n                const value = this.get('taxnumber');\n                this.set('loading', true);\n\n                try {\n\n                    const users = await this.store.query('user', {\n                        taxnumber: value,\n                    });\n\n                    const veroapipromise = this.queryVeroApi(value);\n\n                    if (users.get('length') === 0) {\n                        const userExists = await this.checkIfUserExists(value);\n\n                        if (userExists) {\n                            this.set('loading', false);\n                            return this.set('userAlreadyExists', true);\n                        } else {\n                            this.set('userAlreadyExists', false);\n\n                            try {\n                                const data = await this.vastuuGroup.request(config.APP.CC_TVPERAPI,\n                                    {\n                                        country: 'FI',\n                                        'id-country': 'FI',\n                                        'id-type': 'tax_number',\n                                        'id-value': value,\n                                    }\n                                );\n\n                                if (data.message) {\n                                    this.set('loading', false);\n                                    this.setMessage('alert-danger', 'user.add.status.notfound');\n                                } else if (!data.error) {\n                                    if (Em.isEmpty(data.employers)) {\n                                        this.set('loading', false);\n                                        this.setMessage('alert-danger', 'user.add.no_employers');\n                                    } else {\n                                        this.setUserData(data);\n                                        let accessError = false;\n                                        const promises = data.employers.map(async (emp) => {\n                                            const found = [];\n                                            const not_found = [];\n                                            let emp_id = emp.gov_org_ids[0].gov_org_id;\n\n                                            if (emp.country !== 'FI' && emp.gov_org_ids[1]) {\n                                                emp_id = emp.gov_org_ids[1].gov_org_id;\n                                            }\n\n                                            if (c.testNeeds(['employer@access'])) {\n                                                await Promise.all(\n                                                    emp.gov_org_ids.map(async (gov_ids) => {\n                                                        const employers = await this.get('store').query(\n                                                            'employer',\n                                                            { emp_id: gov_ids.gov_org_id },\n                                                        );\n                                                        if (employers.get('length') > 0) {\n                                                            found.pushObject(gov_ids);\n                                                        } else {\n                                                            not_found.pushObject(gov_ids);\n                                                        }\n                                                    }),\n                                                );\n\n                                                this.get('empArr').pushObject({\n                                                    employer: emp,\n                                                    found,\n                                                    not_found,\n                                                });\n                                            } else if (\n                                                this.get('session.currentUser.employer.emp_id') === emp_id\n                                            ) {\n                                                emp.gov_org_id = emp_id;\n                                                this.get('empArr').pushObject({\n                                                    employer: emp,\n                                                    found: [\n                                                        emp.gov_org_ids.find(\n                                                            (item) => item.gov_org_id === emp_id,\n                                                        ),\n                                                    ],\n                                                    not_found: [],\n                                                });\n                                            } else {\n                                                accessError = true;\n                                            }\n                                        });\n\n                                        if (accessError && this.get('found_employers').length === 0) {\n                                            this.set('messageStatus', 'alert-danger');\n                                            this.setMessage('alert-danger', 'user.add.no_employer_access');\n                                        }\n\n                                        await Promise.all(promises);\n                                        this.set('loading', false);\n                                    }\n                                } else {\n                                    this.set('loading', false);\n                                }\n                            } catch (error) {\n                                this.set('loading', false);\n                                this.setMessage('alert-danger', 'user.add.status.failed');\n                            }\n                        }\n                    } else {\n                        this.set('loading', false);\n                        this.setMessage('alert-danger', 'user.add.exists');\n                    }\n                } catch (error) {\n                    this.set('loading', false);\n                    this.setMessage('alert-danger', 'user.add.status.failed');\n                }\n            }\n        },\n        createUser: function (user, employer, found_employer) {\n            var c, intl, self;\n            self = this;\n            if (\n                user.homecountry !== 'fi' &&\n                employer.employment_periods[0].address_in_home_country\n            ) {\n                user.address = employer.employment_periods[0].address_in_home_country.address[0];\n                user.zip = employer.employment_periods[0].address_in_home_country.post_code;\n                user.city = employer.employment_periods[0].address_in_home_country.post_area;\n                user.contract_type = employer.employment_periods[0].contract_type;\n                user.workpass = employer.employment_periods[0].documentation_of_sent_employee;\n            }\n            this.set('activeUser', user);\n            this.set('users', null);\n            this.set('message', null);\n            intl = this.get('intl');\n            c = this.get('Collector');\n            if (c.testNeeds(['employer@access'])) {\n                return self.store\n                    .query('employer', {\n                        emp_id: found_employer.gov_org_id,\n                    })\n                    .then(function (employers) {\n                        var message;\n                        if (employers.get('length') > 0) {\n                            user.employer = employers.get('firstObject');\n                            self.setModel(user, ['status', 'vatin']);\n                            self.set('message', null);\n                            self.set('users', null);\n                            return self.transitionToRoute('users.add.index');\n                        } else {\n                            self.set('messageStatus', 'alert-warning');\n                            self.set('noEmployer', true);\n                            message = Ember.String.htmlSafe(\n                                '<div>' +\n                                    '<h3><b>' +\n                                    intl.t('user.add.status.employer.notfound') +\n                                    '</b></h3><h4>' +\n                                    user.employer +\n                                    ', ' +\n                                    user.vatin +\n                                    '</h4></div>',\n                            );\n                            return self.set('message', message);\n                        }\n                    });\n            } else {\n                user.employer = self.get('session.currentUser.employer');\n                self.setModel(user, ['status', 'vatin']);\n                self.set('message', null);\n                self.set('users', null);\n                return self.transitionToRoute('users.add.index');\n            }\n        },\n        addEmployer: function (employer, id) {\n            var emp, emp_obj, user;\n            user = this.get('user');\n            emp_obj = {\n                emp_id: id.gov_org_id,\n                name: employer.name,\n                emp_firstname: employer.employers_contact_person.contact_first_name,\n                emp_lastname: employer.employers_contact_person.contact_last_name,\n                emp_phone: employer.employers_contact_person.contact_phone,\n                emp_email: employer.employers_contact_person.contact_email,\n            };\n            if (employer.country !== 'FI') {\n                //if employer.gov_org_ids[1]\n                //    emp_obj.emp_id = employer.gov_org_ids[1].gov_org_id\n                if (id.gov_org_id === 'vat_number') {\n                    emp_obj.emp_id_type = '1';\n                } else {\n                    emp_obj.emp_id_type = '2';\n                }\n                emp_obj.emp_homecountry = employer.country.toLowerCase();\n                if (employer.address) {\n                    emp_obj.emp_address = employer.address.address.toString();\n                    emp_obj.emp_zip = employer.address.post_code;\n                    emp_obj.emp_city = employer.address.post_area;\n                    emp_obj.emp_country = employer.address.country.toLowerCase();\n                }\n            }\n            emp = this.store.createRecord('employer', emp_obj);\n            Em.set(user, 'employer', emp);\n            this.store.createRecord('user', user);\n            this.set('addController.afterSave', 'users.add.index');\n            this.transitionToRoute('employers.add');\n            return this.set('noEmployer', false);\n        },\n        addUserToGroup: function (taxnumber) {\n            this.set('loading', true);\n            return this.get('ttapi')\n                ._post('addusertogroup', {\n                    taxnumber: taxnumber,\n                })\n                .then(() => {\n                    this.set('loading', false);\n                    return this.transitionToRoute('users.index');\n                });\n        },\n        setUserTaxnumber: function (taxnumber) {\n            var user;\n            user = {\n                taxnumber: taxnumber,\n            };\n            if (this.veroApiUser) {\n                user.firstname = this.veroApiUser.FirstName;\n                user.lastname = this.veroApiUser.LastName;\n                user.birthdate = this.birthday;\n            }\n            this.setModel(user, ['status', 'vatin']);\n            return this.transitionToRoute('users.add.index');\n        },\n    },\n});\n\nexport default UsersAddBuilderController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/add/builder/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersAddBuilderRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nUsersAddBuilderRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    actions: {\n        willTransition: function (transition) {\n            this.controller.set('create', false);\n            this.controller.set('users', null);\n            this.controller.set('message', null);\n            this.controller.set('taxnumber', null);\n            this.controller.set('cardnumber', null);\n            this.controller.set('noEmployer', false);\n            this.controller.set('activeUser', null);\n            return true;\n        },\n    },\n});\n\nexport default UsersAddBuilderRoute;\n","export default Ember.HTMLBars.template({\"id\":\"NKshqTuf\",\"block\":\"{\\\"symbols\\\":[\\\"empObj\\\",\\\"not_found_employer\\\",\\\"found_employer\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-offset-3 col-md-6 col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"user.add.by_tax\\\"],null],false],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"taxnumber\\\"]],\\\"form-control\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[1,[22,\\\"loader-icon\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"veroApiInfoExists\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row alert alert-success pb-3 \\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12 col-xs-12\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder.taxnumber_found\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-5\\\"],[8],[1,[28,\\\"date-input\\\",null,[[\\\"max\\\",\\\"class\\\",\\\"click\\\",\\\"value\\\"],[\\\"9999-12-31\\\",\\\"form-control add-fields date-input-component ember-text-field ember-view\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setInitialValue\\\"],null],[24,[\\\"birthday\\\"]]]]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-4\\\"],[8],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"fetchPersonFromTaxApi\\\"]],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder.fetch\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12 col-xs-12 mt-2\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"fetchedWithWrongBirthday\\\"]]],null,{\\\"statements\\\":[[0,\\\"                       \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well alert-danger\\\"],[8],[0,\\\"\\\\n                           \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder.taxnomatch1\\\"],null],false],[9],[0,\\\"\\\\n                           \\\"],[1,[28,\\\"t\\\",[\\\"user.birthdate\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[22,\\\"birthday\\\"],false],[9],[0,\\\" \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                           \\\"],[1,[28,\\\"t\\\",[\\\"report.avi.taxnumber\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[22,\\\"taxnumber\\\"],false],[9],[0,\\\"\\\\n                         \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"veroApiUser\\\",\\\"TaxNumberMatchBirthday\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder.taxandbirthdaymatch\\\"],null],false],[0,\\\" \\\"],[7,\\\"b\\\",true],[8],[1,[24,[\\\"veroApiUser\\\",\\\"FirstName\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"veroApiUser\\\",\\\"LastName\\\"]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"message\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"row alert \\\",[22,\\\"messageStatus\\\"],\\\" text-center\\\"]]],[8],[0,\\\"\\\\n                \\\"],[1,[22,\\\"message\\\"],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"empArr\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h2\\\",true],[8],[1,[23,1,[\\\"employer\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"found\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder.create\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"list-group-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"createUser\\\",[24,[\\\"user\\\"]],[23,1,[\\\"employer\\\"]],[23,3,[]]]],[8],[1,[24,[\\\"user\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"user\\\",\\\"lastname\\\"]],false],[0,\\\",\\\\n                            \\\"],[1,[23,1,[\\\"employer\\\",\\\"name\\\"]],false],[0,\\\",\\\\n                            \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"employer.identifier_type.\\\",[23,3,[\\\"org_id_type\\\"]]],null]],null],false],[0,\\\": \\\"],[1,[23,3,[\\\"gov_org_id\\\"]],false],[0,\\\",\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"employer.country\\\"],null],false],[0,\\\": \\\"],[1,[23,3,[\\\"country\\\"]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"not_found\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.status.employer.notfound\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"list-group-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addEmployer\\\",[23,1,[\\\"employer\\\"]],[23,2,[]]]],[8],[1,[24,[\\\"user\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"user\\\",\\\"lastname\\\"]],false],[0,\\\",\\\\n                        \\\"],[1,[23,1,[\\\"employer\\\",\\\"name\\\"]],false],[0,\\\",\\\\n                        \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"employer.identifier_type.\\\",[23,2,[\\\"org_id_type\\\"]]],null]],null],false],[0,\\\": \\\"],[1,[23,2,[\\\"gov_org_id\\\"]],false],[0,\\\",\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"employer.country\\\"],null],false],[0,\\\": \\\"],[1,[23,2,[\\\"country\\\"]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[4,\\\"if\\\",[[28,\\\"await\\\",[[24,[\\\"userAlreadyExists\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addUserToGroup\\\",[24,[\\\"taxnumber\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"user.add.user_to_group\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"create\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"users.add.index\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"user.add.builder.create\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[12,\\\"name\\\",\\\"addUserManually\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setUserTaxnumber\\\",[24,[\\\"taxnumber\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder.manually\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/add/builder/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersAddController;\n\nimport Ember from 'ember';\n\nUsersAddController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    saved: Ember.inject.controller(),\n});\n\nexport default UsersAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/add/id06/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersAddId06Controller;\n\nimport Ember from 'ember';\n\nimport config from '../../../../config/environment';\n\nUsersAddId06Controller = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    session: Ember.inject.service(),\n    countryLists: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    call_cc: function () {\n        var model;\n        model = this.get('model');\n        return this.get('Collector').ccapi({\n            url: config.APP.ID06_VERIFY_URL,\n            timeout: 10000,\n            data: {\n                card: model.get('id06kort'),\n                personid: model.get('personid'),\n                nationality: model.get('homecountry').toUpperCase(),\n                emp_id: model.get('employer.emp_id'),\n                emp_nationality: model.get('employer.country').toUpperCase(),\n            },\n        });\n    },\n    search_user_with_id06card: function () {\n        var model;\n        model = this.get('model');\n        return this.get('Collector').ttapi({\n            url: 'searchid06',\n            dataType: 'text',\n            data: {\n                card: model.get('id06kort'),\n                personid: model.get('personid'),\n                nationality: model.get('homecountry').toUpperCase(),\n            },\n        });\n    },\n    create_user_with_id06card: function () {\n        var model;\n        model = this.get('model');\n        return this.get('Collector').ttapi({\n            url: 'createid06linkeduser',\n            method: 'post',\n            data: {\n                card: model.get('id06kort'),\n                personid: model.get('personid'),\n                nationality: model.get('homecountry').toUpperCase(),\n                employerid: model.get('employer.id'),\n            },\n        });\n    },\n    //    setModel: (data, skip) ->\n    //        model = @get 'model'\n    //        for k,v of data\n    //            unless k in skip\n    //                model.set k, v\n\n    //    addEmployerIfNotExist: (name, id) ->\n    //        new Ember.RSVP.Promise (resolve, reject) =>\n    //            store = @get 'store'\n    //            store.query('employer', {emp_id: id}).then (employers) =>\n    //                console.log \"employers\", employers\n    //                if employers.get('length') > 0\n    //                    resolve employers.get 'firstObject'\n    //                else\n    //                    record = store.createRecord 'employer',\n    //                        name: name\n    //                        emp_id: id\n    //                    record.save().then =>\n    //                        resolve record\n    id06kortErrors: Em.computed('model.errors.[]', function () {\n        return this.get('model.errors').errorsFor('id06kort');\n    }),\n    personidErrors: Em.computed('model.errors.[]', function () {\n        return this.get('model.errors').errorsFor('personid');\n    }),\n    homecountryErrors: Em.computed('model.errors.[]', function () {\n        return this.get('model.errors').errorsFor('homecountry');\n    }),\n    employerErrors: Em.computed('model.errors.[]', function () {\n        return this.get('model.errors').errorsFor('employer');\n    }),\n    // TODO stuff like default values should be set in models\n    // moved to routes afterModel\n    //    setCountry: Em.observer('model', ->\n    //        c = @get('Collector')\n    //        if @get('model.homecountry') == undefined\n    //            @set 'model.homecountry', c.field('user', 'homecountry').features.default_value\n    //    )\n\n    //    setEmployer: Em.observer('model','session.currentUser', ->\n    //        if not @get('model') then return\n    //        if not @get('session.currentUser.employer') then return\n    //        @set 'model.employer', @get(\"session.currentUser.employer\")\n    //    )\n    actions: {\n        transitionToUserform: function (param) {\n            this.set('linkUser', false);\n            if (!param) {\n                this.set('model.id06kort', void 0);\n                this.set('model.personid', void 0);\n                return this.transitionToRoute('users.add.index').then((newRoute) => {\n                    return newRoute.controller.set('no_id06', true);\n                });\n            } else if (param === 'linkUser') {\n                this.set('loading', true);\n                return this.create_user_with_id06card().then((back) => {\n                    this.set('loading', false);\n                    return this.transitionToRoute('users.edit', back.user.user.id);\n                });\n            } else if (param === 'not_verified') {\n                this.set('model.status', 'not_verified');\n                return this.transitionToRoute('users.add.index');\n            } else {\n                return this.send('fetchID06Card');\n            }\n        },\n        fetchID06Card: function () {\n            this.set('loading', true);\n            this.set('errorMessage', false);\n            this.set('emp_link', false);\n            this.set('error500', false);\n            return this.get('model')\n                .validate(['id06kort', 'personid', 'homecountry', 'employer'])\n                .then(() => {\n                    if (Ember.isEmpty(this.get('model.id06kort'))) {\n                        this.get('model.errors').add(\n                            'id06kort',\n                            this.get('intl').t('validation.error.mandatory'),\n                        );\n                    }\n                    if (this.get('model.isValid')) {\n                        return this.search_user_with_id06card().then((response) => {\n                            if (response !== 'notfound') {\n                                this.set('linkUser', true);\n                                this.set(\n                                    'linkUserTitle',\n                                    this.get('intl').t('user.add.id06_link_user', {\n                                        lastname: response.lastname,\n                                        firstname: response.firstname,\n                                    }),\n                                );\n                                this.set('loading', false);\n                                return;\n                            }\n                            return this.store\n                                .findRecord('employer', this.get('model.employer.id'), {\n                                    reload: true,\n                                })\n                                .then(() => {\n                                    if (this.get('model.employer.country') === null) {\n                                        // Häx because all employers might not have the field filled\n                                        this.set(\n                                            'errorMessage',\n                                            this.get('intl').t('user.add.id06.emp_no_nationality'),\n                                        );\n                                        this.set('emp_link', true);\n                                        return this.set('loading', false);\n                                    } else if (this.get('model.employer.emp_id') === null) {\n                                        // Häx because all employers might not have the field filled\n                                        this.set(\n                                            'errorMessage',\n                                            this.get('intl').t('user.add.id06.emp_no_id'),\n                                        );\n                                        this.set('emp_link', true);\n                                        return this.set('loading', false);\n                                    } else {\n                                        return this.call_cc().then(\n                                            (response) => {\n                                                if (typeof response === 'string') {\n                                                    response = JSON.parse(response);\n                                                }\n                                                this.set('loading', false);\n                                                if (response.error) {\n                                                    return this.set(\n                                                        'errorMessage',\n                                                        this.get('intl').t('user.add.id06.cc_fail'),\n                                                    );\n                                                } else if (response.reason !== 'verified') {\n                                                    this.set(\n                                                        'errorMessage',\n                                                        this.get('intl').t(\n                                                            'user.add.id06.card_status.' +\n                                                                response.reason,\n                                                        ),\n                                                    );\n                                                    return this.set('error500', true);\n                                                } else {\n                                                    return this.transitionToRoute(\n                                                        'users.add.index',\n                                                    );\n                                                }\n                                            },\n                                            (error) => {\n                                                this.set('loading', false);\n                                                this.set(\n                                                    'errorMessage',\n                                                    this.get('intl').t('user.add.id06.cc_fail'),\n                                                );\n                                                if (error.statusText === 'timeout') {\n                                                    return this.set('error500', true);\n                                                }\n                                            },\n                                        ).catch((e) => {\n                                            this.set('loading', false);\n                                            this.set(\n                                                'errorMessage',\n                                                this.get('intl').t('user.add.id06.cc_fail'),\n                                            );\n                                            this.set('error500', true);\n                                        });\n                                    }\n                                });\n                        });\n                    } else {\n                        return this.set('loading', false);\n                    }\n                });\n        },\n        valueChanged: function (value, field) {\n            if (field) {\n                if (value && value !== 'null') {\n                    this.set('model.' + field, value);\n                    return this.get('model').validate([field]);\n                } else {\n                    if (value === 'null') {\n                        this.set('model.' + field, null);\n                    }\n                    return this.get('model').validate([field]);\n                }\n            } else {\n                this.set('model.homecountry', value.id);\n                return this.get('model').validate(['homecountry']);\n            }\n        },\n        validateField: function (field) {\n            return this.get('model').validate([field]);\n        },\n    },\n});\n\nexport default UsersAddId06Controller;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/add/id06/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersAddId06Route;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nUsersAddId06Route = Ember.Route.extend(AuthenticatedRouteMixin, {\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    afterModel: function (model, transition) {\n        var c;\n        c = this.get('Collector');\n        if (model.get('homecountry') === void 0) {\n            model.set('homecountry', c.field('user', 'homecountry').features.default_value);\n        }\n        if (this.get('session.currentUser.employer')) {\n            model.set('employer', this.get('session.currentUser.employer'));\n        }\n        return this._super(model, transition);\n    },\n    resetController: function (controller, isExiting, transition) {\n        this._super(controller, isExiting, transition);\n        if (isExiting) {\n            controller.set('error', false);\n            return controller.set('error500', false);\n        }\n    },\n});\n\nexport default UsersAddId06Route;\n","export default Ember.HTMLBars.template({\"id\":\"fj/qIMZE\",\"block\":\"{\\\"symbols\\\":[\\\"error\\\",\\\"error\\\",\\\"error\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-offset-3 col-md-6 col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.id06\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"id06kortErrors\\\",\\\"length\\\"]],0],null],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"user.id06kort\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"id06kortErrors\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"id06kortErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[23,3,[\\\"message\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"focus-out\\\"],[\\\"text\\\",[24,[\\\"model\\\",\\\"id06kort\\\"]],\\\"form-control add-fields\\\",[28,\\\"action\\\",[[23,0,[]],\\\"validateField\\\",\\\"id06kort\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"id06kortErrors\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"personidErrors\\\",\\\"length\\\"]],0],null],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"user.personid\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"personidErrors\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"personidErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[23,2,[\\\"message\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"focus-out\\\"],[\\\"text\\\",[24,[\\\"model\\\",\\\"personid\\\"]],\\\"form-control add-fields\\\",[28,\\\"action\\\",[[23,0,[]],\\\"validateField\\\",\\\"personid\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"personidErrors\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"homecountryErrors\\\",\\\"length\\\"]],0],null],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"user.homecountry\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"homecountryErrors\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"homecountryErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[23,1,[\\\"message\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"drop-down-search\\\",null,[[\\\"input\\\",\\\"options\\\",\\\"prompt\\\",\\\"bubbleChange\\\",\\\"classes\\\"],[[24,[\\\"model\\\",\\\"homecountry\\\"]],[24,[\\\"countryLists\\\",\\\"fullList\\\"]],[28,\\\"t\\\",[\\\"select.country\\\"],null],\\\"valueChanged\\\",\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"homecountryErrors\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"employerErrors\\\",\\\"length\\\"]],0],null],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"user.employer\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"employerErrors\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"employerErrors\\\",\\\"firstObject\\\",\\\"message\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],\\\"4\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[24,[\\\"model\\\",\\\"employer\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"user.employer\\\"],[[\\\"model\\\",\\\"change\\\",\\\"class\\\"],[[24,[\\\"model\\\"]],\\\"valueChanged\\\",\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"employerErrors\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[1,[22,\\\"loader-icon\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[22,\\\"errorMessage\\\"],false],[4,\\\"if\\\",[[24,[\\\"emp_link\\\"]]],null,{\\\"statements\\\":[[0,\\\" - \\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\",\\\"model\\\"],[\\\"employers.edit\\\",[24,[\\\"model\\\",\\\"employer\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"user.add.id06.fix_employer\\\"],[[\\\"htmlSafe\\\"],[true]]],false]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"error500\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionToUserform\\\",\\\"not_verified\\\"]],[8],[1,[28,\\\"t\\\",[\\\"user.add.id06_continue\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"linkUser\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"linkUserTitle\\\"],false],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionToUserform\\\",\\\"linkUser\\\"]],[8],[1,[28,\\\"t\\\",[\\\"user.add.id06_link_user_button\\\"],null],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionToUserform\\\",\\\"not_verified\\\"]],[8],[1,[28,\\\"t\\\",[\\\"user.add.id06_dont_link_user_button\\\"],null],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionToUserform\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"user.add.id06\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"user.add.info_text\\\"],null],false],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionToUserform\\\"]],[8],[1,[28,\\\"t\\\",[\\\"user.add.without_id06\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/add/id06/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Ev4SCPbF\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"model\\\",\\\"image\\\",\\\"0\\\",\\\"file\\\"]],[28,\\\"not\\\",[[24,[\\\"value\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-profile-circle-image img-circle\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[24,[\\\"model\\\",\\\"image\\\",\\\"0\\\",\\\"file\\\"]],\\\"');\\\"]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"remove\\\",\\\"change\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"fieldRoute\\\"]],\\\"removeFile\\\",\\\"customChangeValue\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"value\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"employer\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"taxnumber\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"data-anchor\\\",\\\"get-image-button\\\"],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"getImage\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"employer.get_tilaajavastuu_image\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/add/image/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/add/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersAddIndexController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nimport pdf from '../../../../mixins/pdf-export';\n\nimport config from '../../../../config/environment';\n\nimport workPermitUtils from '../../../../utils/work-permit';\n\nUsersAddIndexController = GeneralAddController.extend(pdf, {\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    cc: Ember.inject.service(),\n    savedController: Ember.inject.controller('users/saved'),\n    notifications: Ember.inject.service(),\n    vastuuGroup: Ember.inject.service('vastuu-group'),\n    addGetImageTilaajavastuu: Em.on('init', function () {\n        var c, customization;\n        c = this.get('Collector');\n        if (c.fieldExists('user', 'taxnumber')) {\n            customization = this.get('customization');\n            customization.image = {\n                template: 'users/add/image',\n                features: {\n                    hide_preview: true,\n                },\n            };\n            return this.set('customization', customization);\n        }\n    }),\n    getStatusFieldDefaultValue: function() {\n        // Fallback value used if default_value is not set in field settings\n        const DEFAULT_STATUS = 'ok';\n        let statusDefaultValue = DEFAULT_STATUS;\n\n        if (this.Collector.testNeedsOne('user.status')) {\n            const statusFieldSettings = Ember.get(\n                this.get('Collector').formField('user', 'status'),\n                'features',\n            );\n\n            // Use the settings default_value if it exists\n            statusDefaultValue = statusFieldSettings?.default_value ?? DEFAULT_STATUS;\n        }\n\n        return statusDefaultValue;\n    },\n    customization: Em.computed('model', {\n        set: function (key, value) {\n            return (this._value = value);\n        },\n        get: function () {\n            var country, cust, userlevels;\n            if (this._value) {\n                return this._value;\n            }\n            cust = {\n                setting_wap_font_size: {\n                    hide: true,\n                },\n                language: {\n                    hide: true,\n                },\n                ea1card: {\n                    type: 'date',\n                },\n                ea2card: {\n                    type: 'date',\n                },\n                firecard: {\n                    type: 'date',\n                },\n                safetycard: {\n                    type: 'date',\n                },\n                birthdate: {\n                    type: 'date',\n                    features: {},\n                },\n                userlevel: {\n                    features: {\n                        default_value: '1',\n                    },\n                },\n                username: {\n                    features: {\n                        validate_check: ['minLength:6', 'maxLength:80', 'remote:username'],\n                    },\n                },\n                status: {\n                    features: {\n                        default_value: this.getStatusFieldDefaultValue(),\n                    },\n                },\n                phone: {\n                    template: 'users/add/phone',\n                },\n                password: {\n                    features: {\n                        validate_check: ['password'],\n                    },\n                    default: null,\n                },\n            };\n            if (\n                parseInt(this.get('session.currentUser.userlevel')) < 5 ||\n                parseInt(this.get('session.currentUser.userlevel')) === 6\n            ) {\n                // allow adding roles 1-3 and own roles\n                userlevels = Ember.get(\n                    this.get('Collector').formField('user', 'userlevel'),\n                    'options',\n                );\n                cust.userlevel.options = userlevels\n                    .filter(function (userlevel) {\n                        return !(userlevel === '5' || userlevel === '6');\n                    })\n                    .join(',');\n            } else if (parseInt(this.get('session.currentUser.userlevel')) === 8) {\n                // allow adding roles 7 and 8\n                userlevels = Ember.get(\n                    this.get('Collector').formField('user', 'userlevel'),\n                    'options',\n                );\n                cust.userlevel.options = userlevels\n                    .filter(function (userlevel) {\n                        return userlevel === '7' || userlevel === '8';\n                    })\n                    .join(',');\n            }\n            // special feature used for date-input\n            // inserts default-value only after user has clicked date-input\n            if (Modernizr.inputtypes.date) {\n                cust.birthdate.features.onclick_default_value =\n                    moment('19800101').format('YYYY-MM-DD');\n            } else {\n                cust.birthdate.features.onclick_default_value = '01/01/1980';\n            }\n            if (this.get('model') && this.get('session.currentUser.userlevel') === '4') {\n                this.set('model.employer', this.get('session.currentUser.employer'));\n            }\n            //cust.password.default = @generatePassword()\n\n            //set phone by country\n            country = this.get('session.currentUser.company_info.country');\n            switch (country) {\n                case 'fi':\n                    cust.phone.default = '+358';\n                    break;\n                case 'se':\n                    cust.phone.default = '+46';\n            }\n            return cust;\n        },\n    }),\n    generatePassword: function () {\n        var chars, generated_password, i, rnum, string_length;\n        chars = '23456789abcdefghkmnpqrstuvwxyz';\n        string_length = 6;\n        generated_password = '';\n        i = 0;\n        while (i < string_length) {\n            rnum = Math.floor(Math.random() * chars.length);\n            generated_password += chars.substring(rnum, rnum + 1);\n            i++;\n        }\n        return generated_password;\n    },\n    countryLists: Ember.inject.service(),\n    setCountryCode: function () {\n        var code, codes, codesByNumber, j, len, model, ref, results;\n        model = this.get('model');\n        codes = this.get('countryLists.phoneList');\n        codesByNumber = codes.mapBy('number');\n        if (\n            !model.get('phone') ||\n            (((ref = model.get('phone')), indexOf.call(codesByNumber, ref) >= 0) &&\n                model.get('homecountry') &&\n                !this.get('countryCodeSetManually'))\n        ) {\n            results = [];\n            for (j = 0, len = codes.length; j < len; j++) {\n                code = codes[j];\n                if (code.id === model.get('homecountry')) {\n                    results.push(model.set('phone', code.number));\n                } else {\n                    results.push(void 0);\n                }\n            }\n            return results;\n        }\n    },\n    actions: {\n        FieldValueUpdated: function (field, value) {\n            // set default work permit type, when nationality is changed to something else than fi\n            if (field === 'nationality' && value != 'fi') {\n                this.set('model.work_permit_type', workPermitUtils.getDefaultWorkPermitType(value));\n            }\n        },\n        generalAddAction: async function (type, param) {\n            if (type === 'getImage') {\n                this.set('loading', true);\n                await this.getImage(this.get('model'));\n                this.set('loading', false);\n            }\n            if (type === 'changeCountry') {\n                return this.changeCountry(param);\n            }\n            if (type === 'setCountryCode') {\n                return this.setCountryCode();\n            }\n        },\n    },\n    changeCountry: function (countrycode) {\n        this.set('countryCodeSetManually', true);\n        return this.set('model.phone', countrycode);\n    },\n    getImage: async function (model) {\n        // Skip rest of the function and show warning if no employer set\n        if (!model.get('employer.id')) {\n            this.get('notifications').warning(this.get('intl').t('employer.add.emp_id_missing'), {\n                autoClear: true,\n            });\n            return;\n        }\n        var emp_id, intl, taxnumber;\n        intl = this.get('intl');\n\n        taxnumber = model.get('taxnumber');\n        // try to fetch emp_id of employer if it is not loaded yet (this is case when editing user)\n        if (!model.get('employer.emp_id')) {\n            let employer = await this.store.findRecord('employer', model.get('employer.id'), {\n                reload: true,\n            });\n            emp_id = employer.emp_id;\n        } else {\n            emp_id = model.get('employer.emp_id');\n        }\n        try {\n            const response = await this.vastuuGroup.request(config.APP.CC_TVCARDIMAGE,\n                {\n                    taxnumber: taxnumber,\n                    emp_id: emp_id,\n                }\n            );\n\n            let message;\n            if (response != null && !response.error) {\n                model.set('image', [\n                    {\n                        file: 'data:image/png;base64,' + response,\n                        name: 'naama.png',\n                    },\n                ]);\n                this.set('fetchedImage', 'data:image/png;base64,' + response);\n            } else {\n                message = Ember.String.htmlSafe(\n                    '<div>' +\n                        '<h3><b>' +\n                        intl.t('employer.add.status.notfound') +\n                        '</b></h3>' +\n                        intl.t('employer.add.status.marketing') +\n                        '</div>',\n                );\n            }\n            this.set('message', message);\n        } catch (error) {\n            this.get('notifications').warning(intl.t('employer.add.status.failed'), {\n                autoClear: true,\n            });\n        }\n    },\n    disable_username_generation: false,\n    username_observer: Em.observer('model.username', function () {\n        if (this.get('model.username')) {\n            return this.generateUsername().then((test) => {\n                if (test !== this.get('model.username')) {\n                    // User entered input so disable generating..\n                    return this.set('disable_username_generation', true);\n                }\n            });\n        } else {\n            return this.set('disable_username_generation', false);\n        }\n    }),\n    email_observer: Em.observer('model.email', function () {\n        var email, username;\n        if (!this.get('model.isNew')) {\n            return;\n        }\n        username = this.get('model.username');\n        email = this.get('model.email');\n        if (username && email) {\n            if (\n                username === email.substring(0, username.length) ||\n                email === username.substring(0, email.length)\n            ) {\n                return this.set('model.username', email);\n            }\n        } else if (email) {\n            return this.set('model.username', email);\n        } else if (username && username.length === 1 && !email) {\n            return this.set('model.username', email);\n        }\n    }),\n    employerPromise: Em.computed('model.employer', function () {\n        return new Ember.RSVP.Promise((resolve) => {\n            if (!this.get('model.employer.domain')) {\n                return this.get('store')\n                    .query('employer', {\n                        id: this.get('model.employer.id'),\n                    })\n                    .then(() => {\n                        return resolve();\n                    });\n            } else {\n                return resolve();\n            }\n        });\n    }),\n    generateUsername: function () {\n        return new Ember.RSVP.Promise((resolve) => {\n            var generatedUsername;\n            if (\n                this.get('model.lastname') &&\n                this.get('model.firstname') &&\n                this.get('model.employer.id') &&\n                this.get('model.homecountry')\n            ) {\n                return this.get('employerPromise').then(() => {\n                    var company_domain, domain, generatedUsername;\n                    company_domain = this.get('model.employer.domain');\n                    domain = company_domain\n                        ? company_domain\n                        : this.removeCompanyType(this.get('model.employer.name')) +\n                          '.' +\n                          this.get('model.homecountry');\n                    generatedUsername =\n                        this.get('model.firstname') +\n                        '.' +\n                        this.get('model.lastname') +\n                        '@' +\n                        domain;\n                    generatedUsername = this.convertAccentedCharacters(generatedUsername);\n                    generatedUsername = generatedUsername.replace(/\\s+/g, '');\n                    generatedUsername = generatedUsername.replace(/[&]+/g, '');\n                    generatedUsername = generatedUsername.toLowerCase();\n                    return resolve(generatedUsername);\n                });\n            } else if (this.get('model.lastname') && this.get('model.firstname')) {\n                generatedUsername = this.get('model.firstname') + '.' + this.get('model.lastname');\n                generatedUsername = this.convertAccentedCharacters(generatedUsername);\n                generatedUsername = generatedUsername.replace(/\\s+/g, '');\n                generatedUsername = generatedUsername.replace(/[&]+/g, '');\n                generatedUsername = generatedUsername.toLowerCase();\n                return resolve(generatedUsername);\n            } else {\n                return resolve(null);\n            }\n        });\n    },\n    validateAndGenerateUsername: Em.observer(\n        'model.lastname',\n        'model.firstname',\n        'model.employer',\n        'model.homecountry',\n        function () {\n            var employer_field_is_in_use;\n            if (!this.get('model.isNew')) {\n                return;\n            }\n            employer_field_is_in_use = this.get('Collector').testNeeds(['user.employer']);\n            if (employer_field_is_in_use) {\n                if (\n                    this.get('model.lastname') &&\n                    this.get('model.firstname') &&\n                    this.get('model.employer') &&\n                    this.get('model.homecountry') &&\n                    !this.get('disable_username_generation')\n                ) {\n                    return this.generateUsername().then((username) => {\n                        return this.set('model.username', username);\n                    });\n                }\n            } else {\n                if (this.get('model.lastname') && !this.get('disable_username_generation')) {\n                    return this.generateUsername().then((username) => {\n                        return this.set('model.username', username);\n                    });\n                }\n            }\n        },\n    ),\n    removeCompanyType: function (company) {\n        var arr, type;\n        if (!company) {\n            return '';\n        }\n        arr = company.split(' ');\n        type = arr[arr.length - 1].toLowerCase();\n        if (type === 'oy' || type === 'oyj' || type === 'ltd' || type === 'ab') {\n            arr.pop();\n        }\n        return arr.join(' ');\n    },\n    convertAccentedCharacters: function (str) {\n        var conversions, i, re;\n        conversions = {};\n        conversions['A'] = 'À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ|Ä';\n        conversions['a'] = 'à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ªä|æ|ǽ|ä';\n        conversions['C'] = 'Ç|Ć|Ĉ|Ċ|Č';\n        conversions['c'] = 'ç|ć|ĉ|ċ|č';\n        conversions['D'] = 'Ð|Ď|Đ';\n        conversions['d'] = 'ð|ď|đ';\n        conversions['E'] = 'È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě';\n        conversions['e'] = 'è|é|ê|ë|ē|ĕ|ė|ę|ě';\n        conversions['G'] = 'Ĝ|Ğ|Ġ|Ģ';\n        conversions['g'] = 'ĝ|ğ|ġ|ģ';\n        conversions['H'] = 'Ĥ|Ħ';\n        conversions['h'] = 'ĥ|ħ';\n        conversions['I'] = 'Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ';\n        conversions['i'] = 'ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı';\n        conversions['J'] = 'Ĵ';\n        conversions['j'] = 'ĵ';\n        conversions['K'] = 'Ķ';\n        conversions['k'] = 'ķ';\n        conversions['L'] = 'Ĺ|Ļ|Ľ|Ŀ|Ł';\n        conversions['l'] = 'ĺ|ļ|ľ|ŀ|ł';\n        conversions['N'] = 'Ñ|Ń|Ņ|Ň';\n        conversions['n'] = 'ñ|ń|ņ|ň|ŉ';\n        conversions['O'] = 'Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ|Ö';\n        conversions['o'] = 'ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|ºö|œ|ö';\n        conversions['R'] = 'Ŕ|Ŗ|Ř';\n        conversions['r'] = 'ŕ|ŗ|ř';\n        conversions['S'] = 'Ś|Ŝ|Ş|Š';\n        conversions['s'] = 'ś|ŝ|ş|š|ſ';\n        conversions['T'] = 'Ţ|Ť|Ŧ';\n        conversions['t'] = 'ţ|ť|ŧ';\n        conversions['U'] = 'Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ|Ü';\n        conversions['u'] = 'ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ|ü';\n        conversions['Y'] = 'Ý|Ÿ|Ŷ';\n        conversions['y'] = 'ý|ÿ|ŷ';\n        conversions['W'] = 'Ŵ';\n        conversions['w'] = 'ŵ';\n        conversions['Z'] = 'Ź|Ż|Ž';\n        conversions['z'] = 'ź|ż|ž';\n        conversions['ss'] = 'ß';\n        conversions['f'] = 'ƒ';\n        for (i in conversions) {\n            re = new RegExp(conversions[i], 'g');\n            str = str.replace(re, i);\n        }\n        return str;\n    },\n});\n\nexport default UsersAddIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/add/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\n//import collector from '../../../classes/collector'\nUsersAddRoute = GeneralAddRoute.extend({\n    modelName: 'user',\n    controllerName: 'users.add.index',\n    savedRoute: 'users.saved',\n    afterModel: function (model, transition) {\n        var controller;\n        controller = this.controllerFor('users/add/index');\n        return model.set('password', controller.generatePassword());\n    },\n});\n\nexport default UsersAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"KvWnTNqR\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/users/add/index/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"wCS0LG8G\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-phone-field\\\"],[8],[0,\\\"\\\\n    \\\"],[5,\\\"bs-dropdown\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"button\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-toggle form-control add-fields\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[28,\\\"country-flag\\\",[[24,[\\\"model\\\",\\\"phone\\\"]],\\\"number\\\"],null],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+358\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-fi\\\"],[8],[9],[0,\\\" +358\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+46\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-se\\\"],[8],[9],[0,\\\" +46\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+371\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-lv\\\"],[8],[9],[0,\\\" +371\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+372\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-ee\\\"],[8],[9],[0,\\\" +372\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+48\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-pl\\\"],[8],[9],[0,\\\" +48\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+44\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-gb\\\"],[8],[9],[0,\\\" +44\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+49\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-de\\\"],[8],[9],[0,\\\" +49\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+33\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-fr\\\"],[8],[9],[0,\\\" +33\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+36\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-hu\\\"],[8],[9],[0,\\\" +36\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+34\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-es\\\"],[8],[9],[0,\\\" +34\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+31\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-nl\\\"],[8],[9],[0,\\\" +31\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+47\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-no\\\"],[8],[9],[0,\\\" +47\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+370\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-lt\\\"],[8],[9],[0,\\\" +370\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+1\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-us\\\"],[8],[9],[0,\\\" +1\\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\",\\\"focus-in\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"field\\\",\\\"ext\\\"]],[24,[\\\"placeholder\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"setCountryCode\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/add/phone/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nimport collector from '../../../classes/collector';\n\nUsersAddRoute = GeneralAddRoute.extend({\n    Collector: Ember.inject.service('collector-service'),\n    modelName: 'user',\n    controllerName: 'users.add',\n    beforeModel: function (transition) {\n        var c, records;\n        c = this.get('Collector');\n        records = this.store.peekAll(this.get('modelName')).filterBy('isNew', true);\n        if (collector.getFormObject('user.taxnumber') && records.get('length') < 1) {\n            return this.transitionTo('users.add.builder');\n        } else if (c.testNeeds(['user.id06kort']) && records.get('length') < 1) {\n            return this.transitionTo('users.add.id06');\n        }\n    },\n});\n\nexport default UsersAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"t6d+mCOS\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/card/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersCardController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nUsersCardController = GeneralReportController.extend({\n    form: 'user',\n    showColumns: ['lastname', 'firstname', 'employer', 'id06kort', 'id06valid', 'status'],\n    queryParams: ['page', 'employer'],\n    filters: Em.A([\n        Em.Object.create({\n            field: 'employer',\n        }),\n    ]),\n    employer: null,\n    id06valid:\n        moment().subtract(1, 'year').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    settings: Em.Object.create({\n        localStorageKey: 'user_id06card',\n        sortByColumn: 'lastname',\n    }),\n});\n\nexport default UsersCardController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/card/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersCardRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nUsersCardRoute = GeneralReportRoute.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        id06valid: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('user', params);\n    },\n});\n\nexport default UsersCardRoute;\n","export default Ember.HTMLBars.template({\"id\":\"ekn2+2Y+\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\"],[[24,[\\\"filters\\\"]],\\\"user\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"limit\\\",\\\"offset\\\"],[\\\"bubbleTransition\\\",\\\"user\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/card/template.hbs\"}});","import Controller from '@ember/controller';\nimport { set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    store: service(),\n    capi: service(),\n\n    init() {\n        this._super(...arguments);\n        set(this, 'qParams', []);\n        set(this, 'reportIsEmpty', true);\n        set(this, 'loading', false);\n        set(this, 'show_removed', true);\n    },\n\n    dummy: alias('model'),\n\n    actions: {\n        async setEmployer(employer) {\n            set(this, 'employer', employer);\n            this.filterReport();\n        },\n        async setUser(user) {\n            try {\n                if(user && user?.id) {\n                    const userResult = await this.capi.findAll('users', { id: user.id });\n                    set(this, 'user', userResult.content[0]);\n                } else {\n                    set(this, 'user', user);\n                }\n            } catch(err) {\n                set(this, 'user', user);\n            }\n            this.filterReport();\n        },\n\n        showCard(row) {\n            set(this, 'cardRow', row);\n            set(this, 'showModal', true);\n        },\n    },\n    async filterReport() {\n        if (this.user?.id || this.employer?.id) {\n            set(this, 'showReport', true);\n            return;\n        }\n        set(this, 'showReport', false);\n        return [];\n    },\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"/fP2X6W1\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"field\\\",\\\"value\\\",\\\"unformatted\\\",\\\"row\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"employer\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25 pr-5\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"form-report-filter-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"defaults.field.employer\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"user.employer\\\"],[[\\\"useAsFilter\\\",\\\"value\\\",\\\"usePowerDropdown\\\",\\\"change\\\"],[true,[24,[\\\"employer\\\",\\\"id\\\"]],true,\\\"setEmployer\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"form-report-filter-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"defaults.field.user\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"worktime.user\\\"],[[\\\"useAsFilter\\\",\\\"value\\\",\\\"usePowerDropdown\\\",\\\"change\\\"],[true,[24,[\\\"user\\\",\\\"id\\\"]],true,\\\"setUser\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"presence.user\\\"],[[\\\"useAsFilter\\\",\\\"value\\\",\\\"usePowerDropdown\\\",\\\"change\\\"],[true,[24,[\\\"user\\\",\\\"id\\\"]],true,\\\"setUser\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"collector/form-report\\\",[],[[\\\"@form\\\",\\\"@rowActions\\\",\\\"@showColumns\\\",\\\"@updateOnDidReceiveAttrs\\\",\\\"@filterByValues\\\",\\\"@localStorageKey\\\",\\\"@jsonapi\\\",\\\"@hideCreatedColumn\\\"],[\\\"card\\\",\\\"\\\",\\\"name,taxnumber,type,date,image\\\",true,[28,\\\"hash\\\",null,[[\\\"employer\\\",\\\"taxnumber\\\"],[[23,0,[\\\"employer\\\"]],[23,0,[\\\"user\\\",\\\"taxnumber\\\"]]]]],\\\"cards\\\",true,true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"filters\\\"]],[],[[\\\"@showColumns\\\"],[\\\"date,type,name\\\"]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"table\\\"]],[],[[\\\"@selectable\\\",\\\"@formatCells\\\"],[false,true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[]],\\\"image\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,4,[]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"showCard\\\",[23,6,[]]]],[8],[0,\\\"\\\\n                            \\\"],[5,\\\"user-competences/card\\\",[],[[\\\"@width\\\",\\\"@record\\\"],[50,[23,6,[]]]]],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"]],\\\"parameters\\\":[3,4,5,6]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.cardregister.add_employer_or_user_filter\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"modal-container\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showModal\\\"]]],null]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup modal-image-popup\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"user-competences/card\\\",[],[[\\\"@width\\\",\\\"@record\\\"],[450,[22,\\\"cardRow\\\"]]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-overlay\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/cardregister/template.hbs\"}});","import { computed, get } from '@ember/object';\nimport Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    queryParams: ['date'],\n    activitycontroller: alias('model'),\n\n    date: computed(function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n\n    ago: computed('date', function () {\n        let date = moment(get(this, 'date'));\n\n        if (moment().diff(date, 'days') > 1) {\n            return date.add(1, 'day').fromNow(); // '2 days ago' etc.\n        }\n        return date.calendar().split(' ')[0]; // 'Today', 'yesterday', 'tomorrow'\n    }),\n});\n","import { inject as service } from '@ember/service';\nimport Route from '@ember/routing/route';\nimport { get } from '@ember/object';\n\nexport default Route.extend({\n    ttapi2: service(),\n    session: service(),\n\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n    },\n\n    model(params) {\n        return get(this, 'ttapi2')._get(\n            '/getUserActivity?userid=' +\n                get(this.modelFor('users.edit'), 'id') +\n                '&date=' +\n                moment(params.date).format('YYYY-MM-DD'),\n        );\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"tHoxhuXL\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"index\\\",\\\"action\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-md-3\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"date\\\",\\\"form-control\\\",[24,[\\\"date\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[22,\\\"ago\\\"],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,2,[]],0],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[1,[28,\\\"user\\\",[[23,1,[\\\"_id\\\",\\\"user\\\"]],\\\"icon\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"from\\\"]],\\\"HH:mm\\\"],null],false],[0,\\\" - \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"to\\\"]],\\\"HH:mm\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"actions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[8],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[\\\"action\\\"]],\\\"insertRow\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"user.activity.user_added\\\"],[[\\\"form\\\"],[[28,\\\"collector-form-name\\\",[[23,3,[\\\"form\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[\\\"action\\\"]],\\\"updateRow\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"user.activity.user_edited\\\"],[[\\\"form\\\"],[[28,\\\"collector-form-name\\\",[[23,3,[\\\"form\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[\\\"action\\\"]],\\\"findAll\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"user.activity.user_wathed\\\"],[[\\\"form\\\"],[[28,\\\"collector-form-name\\\",[[23,3,[\\\"form\\\"]]],null]]]],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"user.activity.no_actions\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/activity/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/changepassword/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditChangepasswordController;\n\nimport Ember from 'ember';\n\nimport ChangePasswordController from '../../../../controllers/changepassword';\n\nUsersEditChangepasswordController = ChangePasswordController.extend({\n    password_changed: false,\n});\n\nexport default UsersEditChangepasswordController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/changepassword/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditChangepasswordRoute;\n\nimport Ember from 'ember';\n\nimport ChangePasswordRoute from '../../../../routes/changepassword';\n\nUsersEditChangepasswordRoute = ChangePasswordRoute.extend({\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting) {\n            controller.set('password_changed', false);\n            controller.set('currentPassword', null);\n            controller.set('password', null);\n            controller.set('passwordAgain', null);\n        }\n        return this._super;\n    },\n});\n\nexport default UsersEditChangepasswordRoute;\n","export default Ember.HTMLBars.template({\"id\":\"30BNsFdJ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"password_changed\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"changepassword.password_changed\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"changeusername.returning_to_edit\\\"],null],false],[0,\\\" \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"general.returning\\\"],null]],[8],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"form\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"changePassword\\\"],[[\\\"on\\\"],[\\\"submit\\\"]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.username\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[24,[\\\"session\\\",\\\"currentUser\\\",\\\"username\\\"]],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.currentpassword\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\"],[\\\"password\\\",\\\"form-control add-fields\\\",\\\"currentpassword\\\",[24,[\\\"currentPassword\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.newpassword\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\"],[\\\"password\\\",\\\"form-control add-fields\\\",\\\"password\\\",[24,[\\\"password\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.newpasswordagain\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\"],[\\\"password\\\",\\\"form-control add-fields\\\",\\\"passwordagain\\\",[24,[\\\"passwordAgain\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showTitle\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"changepassword.set_info_for_password_retrieval\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showEmail\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"user.email\\\"],[[\\\"model\\\",\\\"errors\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],[24,[\\\"emailErrors\\\"]],\\\"change\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showPhone\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"user.phone\\\"],[[\\\"model\\\",\\\"errors\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],[24,[\\\"phoneErrors\\\"]],\\\"change\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"validation_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[8],[1,[22,\\\"validation_error\\\"],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changePassword\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/changepassword/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/changeusername/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditChangeusernameController;\n\nimport Ember from 'ember';\n\nUsersEditChangeusernameController = Ember.Controller.extend({\n    router: Em.inject.service(),\n    session: Em.inject.service(),\n    validated: Em.computed.and('model.isValid', 'new_username'),\n    username_changed: false,\n    old_username: null,\n    //    setOldUsername: Em.on 'init', Em.observer 'model.username', ->\n    //        username = @get 'model.username'\n    //        if username and not @get 'old_username'\n    //            @set 'old_username', username\n    editingCurrentUser: Em.computed('model.username', function () {\n        return this.get('model.username') === this.get('session.currentUser.username');\n    }),\n    actions: {\n        username_changed: function (value, fieldName) {\n            var model;\n            this.set('new_username', value);\n            model = this.get('model');\n            return model.set('username', value);\n        },\n        // validation is handled by field-comp component\n        //model.validate(['username'])\n        change_username: function (new_username) {\n            var model;\n            model = this.get('model');\n            if (model.get('isSaving')) {\n                return;\n            }\n            return model.validate(['username']).then(() => {\n                if (model.get('isSaving')) {\n                    return;\n                }\n                if (model.get('isValid')) {\n                    return model.save({ adapterOptions: { validation: 'off' } }).then(() => {\n                        this.set('username_changed', true);\n                        if (this.get('editingCurrentUser')) {\n                            return this.get('router').transitionTo('logout');\n                        } else {\n                            return Em.run.later(\n                                this,\n                                function () {\n                                    this.replaceRoute('users.edit', model.get('id'));\n                                    return this.set('username_changed', false);\n                                },\n                                2000,\n                            );\n                        }\n                    });\n                }\n            });\n        },\n    },\n});\n\nexport default UsersEditChangeusernameController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/changeusername/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditChangeusernameRoute;\n\nimport Ember from 'ember';\n\nUsersEditChangeusernameRoute = Ember.Route.extend({\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.set('old_username', model.get('username'));\n    },\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting) {\n            controller.set('username_changed', false);\n            controller.set('new_username', null);\n            controller.set('old_username', null);\n            if (controller.get('model.hasDirtyAttributes')) {\n                controller.get('model').rollbackAttributes();\n            }\n        }\n        return this._super;\n    },\n});\n\nexport default UsersEditChangeusernameRoute;\n","export default Ember.HTMLBars.template({\"id\":\"h7nCOYFG\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"username_changed\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"changeusername.username_changed\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"changeusername.returning_to_edit\\\"],null],false],[0,\\\" \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"general.returning\\\"],null]],[8],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"changeusername.current_username\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[22,\\\"old_username\\\"],false],[9],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"user.username\\\"],[[\\\"fieldLabel\\\",\\\"change\\\",\\\"model\\\"],[[28,\\\"t\\\",[\\\"changeusername.new_username\\\"],null],\\\"username_changed\\\",[24,[\\\"model\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[4,\\\"if\\\",[[24,[\\\"editingCurrentUser\\\"]]],null,{\\\"statements\\\":[[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"changeusername.notice\\\"],null],false],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\" \\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"validated\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"general.returning\\\"],null]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"change_username\\\",[24,[\\\"new_username\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"changeusername.change\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/changeusername/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default Route.extend({\n    model() {\n        return this.modelFor('users.edit');\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"7Dk2/JjK\",\"block\":\"{\\\"symbols\\\":[\\\"cards\\\",\\\"cardComponent\\\",\\\"card\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"user-competences\\\",null,[[\\\"user\\\"],[[24,[\\\"model\\\"]]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4\\\"],[8],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[]],\\\"expected `cardComponent` to be a contextual component but found a string. Did you mean `(component cardComponent)`? ('tt4/pods/users/edit/competence/template.hbs' @ L6:C36) \\\"],null]],[[\\\"record\\\"],[[23,3,[]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"cardregister.nocompetences\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/competence/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nimport format from 'ember-moment/computeds/format';\n\nimport momentComputed from 'ember-moment/computeds/moment';\n\nimport config from '../../../config/environment';\n\nimport { isMobile } from 'tt4/ember-movenium/utils/gui';\n\nUsersEditController = GeneralAddController.extend({\n    moment: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    userIsNotAdmin: function () {\n        var ref;\n        return (ref = Number(this.get('model.userlevel'))) !== 5 || Ember.devModeOn === true;\n    },\n    subMenus: Em.computed('model.userlevel', function () {\n        var c, subMenus;\n        c = this.get('Collector');\n        subMenus = [\n            {\n                link: 'users.edit.index',\n                text: 'menu.edit_profile',\n            },\n            {\n                link: 'users.edit.competence',\n                text: 'submenu.user.competences',\n                needs: ['!products.personalliggareandid06', 'employer', 'products.cardregister'],\n            },\n            {\n                link: 'users.edit.id06competence',\n                text: 'submenu.user.id06competences',\n                needs: ['products.personalliggareandid06'],\n            },\n            {\n                link: 'users.edit.orientations',\n                text: 'submenu.user.orientations',\n                needs: ['orientation'],\n            },\n            {\n                link: 'users.edit.permissions',\n                text: 'submenu.user.permissions',\n                needs: ['userlevel=4,5', this.userIsNotAdmin.bind(this)],\n            },\n            {\n                link: 'firecards.index',\n                text: 'report.users.firecard',\n                needs: ['products.firecard', '!userlevel=5'],\n            },\n            {\n                link: 'users.edit.saldo',\n                text: 'submenu.user.saldo',\n                needs: ['products.saldo'],\n            },\n            {\n                link: 'users.edit.saldos_ad',\n                text: 'submenu.user.saldo',\n                needs: ['!products.saldo', 'products.mini_entry'],\n            },\n            {\n                link: 'users.edit.saldohistory',\n                text: 'report.users.saldohistory',\n                needs: ['products.saldo', '!userlevel=5'],\n            },\n            {\n                link: 'users.edit.userdata',\n                text: 'report.users.userdata',\n                needs: ['userlevel=5'],\n            },\n            {\n                link: 'users.edit.superior_replacements',\n                text: 'report.users.superior_replacements',\n                needs: ['!userlevel=1', 'products.superior_replacement'],\n            },\n        ];\n        return subMenus.filter(function (item) {\n            if (item.needs) {\n                return c.testNeeds(item.needs);\n            }\n            return true;\n        });\n    }),\n    user_created: Ember.computed('model', function () {\n        var row_info;\n        row_info = this.get('model').get('row_info');\n        return row_info.created;\n    }),\n    saldosInUse: Ember.computed(function () {\n        return this.get('Collector').testNeeds(['products.saldo']);\n    }),\n    currentSaldo: Ember.computed('model', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                return this.get('Collector')\n                    .ttapi({\n                        url: 'saldo/get_saldo?userid=' + this.get('model.id'),\n                    })\n                    .then((back) => {\n                        return resolve({\n                            value: back['saldo'] / 60,\n                            from: back['from'],\n                            to: back['to'],\n                        });\n                    });\n            }),\n        });\n    }),\n    usersImage: Ember.computed('model.image', function () {\n        var image;\n        image = this.get('model.image');\n        if (image != null && image.length > 0) {\n            if (image[0].url) {\n                return config.APP.COLLECTOR_API_URL + '/' + image[0].url;\n            } else if (image[0].file) {\n                return image[0].file;\n            } else {\n                return 'img/dyn-icon-24-user-placeholder.svg';\n            }\n        } else {\n            return 'img/dyn-icon-24-user-placeholder.svg';\n        }\n    }),\n\n    get isMobile() {\n        return isMobile();\n    },\n\n    actions: {\n        refreshSaldo: function () {\n            return this.notifyPropertyChange('currentSaldo');\n        },\n        sendTestNotification: function () {\n            var c;\n            c = this.get('Collector');\n\n            return c.ttapi({\n                url: 'send_test_notification',\n                data: {\n                    lang: this.get('intl.primaryLocale'),\n                    userid: this.get('session.currentUser.id'),\n                },\n                method: 'post',\n            });\n        },\n    },\n});\n\nexport default UsersEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/id06competence/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditId06competenceController;\n\nimport Ember from 'ember';\n\nUsersEditId06competenceController = Ember.Controller.extend({\n    intl: Ember.inject.service(),\n    errorText: Em.computed('model', function () {\n        var intl;\n        intl = this.get('intl');\n        if (!this.get('model.error')) {\n            return false;\n        }\n        return intl.t('id06competence.error.' + this.get('model.error'));\n    }),\n});\n\nexport default UsersEditId06competenceController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/id06competence/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditId06competenceRoute;\n\nimport Ember from 'ember';\n\nUsersEditId06competenceRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    model: function (params) {\n        var c, id06kort, user;\n        c = this.get('Collector');\n        user = this.modelFor('users.edit');\n        if (!user.get('id06kort')) {\n            return {\n                error: 'id06kort_not_found',\n            };\n        }\n        if (!user.get('employer.id')) {\n            return {\n                error: 'employer_not_found',\n            };\n        }\n        if (!user.get('personid')) {\n            return {\n                error: 'personid_not_found',\n            };\n        }\n        id06kort = user.get('id06kort');\n        //get user employer\n        return this.store\n            .findRecord('employer', user.get('employer.id'), {\n                reload: true,\n            })\n            .then((employer) => {\n                if (!employer.get('emp_id')) {\n                    return {\n                        error: 'employer_id_not_found',\n                    };\n                }\n                //first get cardinfo with taxnumber\n                return c\n                    .ccapi({\n                        url: 'id06-competence',\n                        data: {\n                            id: id06kort,\n                            companyid: employer.get('emp_id'),\n                            personalcode: user.get('personid'),\n                        },\n                    })\n                    .then((data) => {\n                        if (data.length === 0) {\n                            return {\n                                error: 'no_competences',\n                            };\n                        }\n                        return data;\n                    });\n            });\n    },\n});\n\nexport default UsersEditId06competenceRoute;\n","export default Ember.HTMLBars.template({\"id\":\"/+oQYFwh\",\"block\":\"{\\\"symbols\\\":[\\\"competence\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[22,\\\"errorText\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"competences\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-md-4\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbnail\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"caption\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[23,1,[\\\"name\\\"]],false],[0,\\\" (\\\"],[1,[23,1,[\\\"code\\\"]],false],[0,\\\")\\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[8],[1,[23,1,[\\\"issuer_company_name\\\"]],false],[0,\\\" - \\\"],[1,[23,1,[\\\"issuer_company_nationality\\\"]],false],[0,\\\" - \\\"],[1,[23,1,[\\\"issuer_company_registration_number\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"i\\\",true],[8],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"issued_date\\\"]],\\\"L\\\"],null],false],[0,\\\" - \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"valid_until\\\"]],\\\"L\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.nothing_found\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/id06competence/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nimport $ from 'jquery';\n\nimport workPermitUtils from '../../../../utils/work-permit';\n\nUsersEditIndexController = GeneralAddController.extend({\n    session: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    notifications: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    showResetDialog: false,\n    resetSent: false,\n    resetSentFailed: false,\n    anySent: false,\n    isSaving: false,\n    UsersAddIndexController: Ember.inject.controller('users/add/index'),\n    customization: Em.computed('model', function () {\n        var cust, userlevels;\n        cust = {\n            phone: {\n                template: 'users/add/phone',\n            },\n            username: {\n                translation: 'user.edit.username',\n            },\n            password: {\n                translation: 'user.edit.password',\n            },\n        };\n        if (this.get('session.currentUser.userlevel') === '1') {\n            cust.password.hide = true;\n        }\n        if (this.get('model.id') === this.get('session.currentUser.id')) {\n            cust.userlevel = {\n                features: {\n                    disabled: true,\n                },\n            };\n        } else if (\n            parseInt(this.get('session.currentUser.userlevel')) < 5 ||\n            parseInt(this.get('session.currentUser.userlevel')) === 6\n        ) {\n            // allow adding roles 1-3 and own roles\n            userlevels = Ember.get(this.get('Collector').formField('user', 'userlevel'), 'options');\n            cust.userlevel = {\n                options: userlevels\n                    .filter(function (userlevel) {\n                        return !(userlevel === '4' || userlevel === '5' || userlevel === '6');\n                    })\n                    .join(','),\n            };\n        } else if (parseInt(this.get('session.currentUser.userlevel')) > 9) {\n            cust.userlevel = {\n                features: {\n                    disabled: false,\n                },\n            };\n        }\n        if (this.get('Collector').fieldExists('user', 'taxnumber')) {\n            cust.image = {\n                template: 'users/add/image',\n                features: {\n                    hide_preview: true,\n                },\n            };\n        }\n        return cust;\n    }),\n    hasEmail: Em.computed('model.email', function () {\n        if (this.get('model.email')) {\n            return true;\n        }\n    }),\n    hasPhone: Em.computed('model.phone', function () {\n        if (this.get('model.phone')) {\n            return true;\n        }\n    }),\n    generatePassword: function () {\n        var chars, generated_password, i, rnum, string_length;\n        chars = '23456789abcdefghkmnpqrstuvwxyz';\n        string_length = 6;\n        generated_password = '';\n        i = 0;\n        while (i < string_length) {\n            rnum = Math.floor(Math.random() * chars.length);\n            generated_password += chars.substring(rnum, rnum + 1);\n            i++;\n        }\n        return generated_password;\n    },\n    actions: {\n        FieldValueUpdated: function (field, value) {\n            // set default work permit type, when nationality is changed to something else than fi\n            if (field === 'nationality' && value != 'fi') {\n                this.set('model.work_permit_type', workPermitUtils.getDefaultWorkPermitType(value));\n            }\n        },\n        clear: function () {\n            $('.modal').modal('hide');\n            return this.set('showResetDialog', false);\n        },\n        generalAddAction: async function (type, param) {\n            if (type === 'getImage') {\n                this.set('loading', true);\n                await this.UsersAddIndexController.getImage(this.model);\n                this.set('loading', false);\n            }\n            if (type === 'changeCountry') {\n                return this.changeCountry(param);\n            }\n            if (type === 'resetPsw') {\n                return this.resetPsw();\n            }\n        },\n        reset_and_send: function () {\n            if (this.get('isSaving')) { return; }\n            this.set('isSaving', true);\n            var company, model, psw, username;\n            model = this.get('model');\n            psw = this.generatePassword();\n            model.set('password', psw);\n            username = model.get('username');\n            company = this.get('session.currentUser.company');\n            return model.save().then(() => {\n                var email_content, email_title, promises, sendEmail, sendSms;\n                sendEmail = this.get('by_email') && model.get('email');\n                sendSms = this.get('by_sms') && model.get('phone');\n                promises = [];\n                if (sendEmail) {\n                    email_title = this.get('intl').t('changepassword.reset_email_title');\n                    email_content = this.get('intl').t('changepassword.reset_email_content', {\n                        psw: psw,\n                        username: username,\n                        company: company,\n                    });\n                    promises.push(this.Collector.ttapi({\n                        url: 'sendPasswordReset',\n                        data: {\n                            userid: model.get('id'),\n                            title: email_title,\n                            content: email_content,\n                        },\n                        method: 'post',\n                        dataType: 'text',\n                    }));\n                }\n                if (sendSms) {\n                    promises.push(this.Collector.ttapi({\n                        url: 'sendSms',\n                        data: {\n                            phone: model.get('phone'),\n                            messageid: 'password_reset',\n                            values: {\n                                userid: model.get('id'),\n                            },\n                            language: moment.locale(),\n                        },\n                        method: 'post',\n                    }));\n                }\n                return Promise.all(promises).then(() => {\n                    if (sendEmail) {\n                        this.get('notifications').success(this.get('intl').t('general.email_sent'), {\n                            autoClear: true,\n                        });\n                    }\n                    if (sendSms) {\n                        this.get('notifications').success(this.get('intl').t('general.sms_sent'), {\n                            autoClear: true,\n                        });\n                    }\n                    this.set('isSaving', false);\n                    this.set('anySent', !!(sendEmail || sendSms));\n                    this.set('resetSent', true);\n                }).catch(() => {\n                    this.set('isSaving', false);\n                    this.set('resetSentFailed', true);\n                });\n            }).catch(() => {\n                this.get('notifications').error(this.get('intl').t('changepassword.reset_error'), {\n                    autoClear: true,\n                });\n                this.set('isSaving', false);\n                this.set('showResetDialog', false);\n            });\n        },\n        removeModal: function () {\n            this.setProperties({\n                showResetDialog: false,\n                resetSent: false,\n                resetSentFailed: false,\n                anySent: false,\n                isSaving: false,\n                by_email: false,\n                by_sms: false,\n            });\n        },\n    },\n    resetPsw: function () {\n        this.set('showResetDialog', true);\n        return false;\n    },\n    changeCountry: function (countrycode) {\n        var phone, val;\n        val = this.get('model.phone');\n        if (!val) {\n            phone = countrycode;\n        } else if (val.slice(0, 1) !== '+') {\n            phone = countrycode + this.get('model.phone');\n        } else {\n            phone = val;\n        }\n        return this.set('model.phone', phone);\n    },\n    fieldSettings: Em.computed('model', function () {\n        var i_am_this_person;\n        if (this.get('session.currentUser.id') === this.get('model.id')) {\n            i_am_this_person = true;\n        } else {\n            i_am_this_person = false;\n        }\n        return Em.A({\n            edit: true,\n            own_profile: i_am_this_person,\n        });\n    }),\n});\n\nexport default UsersEditIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nUsersEditIndexRoute = GeneralAddRoute.extend({\n    edit: true,\n    controllerName: 'users/edit/index',\n    model: function () {\n        return this.modelFor('users.edit');\n    },\n});\n\nexport default UsersEditIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"DZXYLokH\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\"],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"],[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHidden\\\"],[[23,0,[\\\"showResetDialog\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"changepassword.reset_dialog_title\\\"],null],false],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"resetSent\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[[28,\\\"if\\\",[[23,0,[\\\"anySent\\\"]],\\\"changepassword.reset_success\\\",\\\"changepassword.reset_success_no_send\\\"],null]],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"resetSentFailed\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"changepassword.reset_sent_failed\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"changepassword.reset_dialog_text\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-horizontal\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasEmail\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-2\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"form-control\\\",\\\"checkbox\\\",[24,[\\\"by_email\\\"]],\\\"EmailCheck\\\"]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"changepassword.by_email\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasPhone\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-2\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"form-control\\\",\\\"checkbox\\\",[24,[\\\"by_sms\\\"]],\\\"SmsCheck\\\"]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"changepassword.by_sms\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"default\\\",[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"or\\\",[[23,0,[\\\"resetSent\\\"]],[23,0,[\\\"resetSentFailed\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\",\\\"@disabled\\\"],[\\\"primary\\\",[28,\\\"action\\\",[[23,0,[]],\\\"reset_and_send\\\"],null],[23,0,[\\\"isSaving\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/index/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"p3e6WnTE\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/orientations/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersViewOrientationsController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nimport { alias } from '@ember/object/computed';\n\nUsersViewOrientationsController = GeneralReportController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('orientations/add'),\n    content: alias('model'),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'ori_site',\n        }),\n    ]),\n    ori_site: null,\n    projectObserver: function () {\n        return this.set('page', 1);\n    }.observes('project'),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideEdit: true,\n            hideRemove: true,\n        }),\n    }),\n    queryParams: [\n        'page',\n        'user',\n        {\n            ori_site: {\n                as: 'project',\n            },\n        },\n    ],\n    filter: false,\n    search: false,\n    form: 'orientation',\n    localStorageKey: 'Tt4.Orientation',\n    showColumns: [\n        'ori_date',\n        'special_warning',\n        'ori_place',\n        'ori_user',\n        'ori_site',\n        'ori_employer',\n        'sign_emp_img',\n        'sign_per_img',\n    ],\n    cancelRoute: 'orientations.reports',\n    orientations_on: Ember.computed(function () {\n        return this.get('Collector').testNeeds(['orientation']);\n    }),\n    showOriButton: Em.computed('ori_site', 'content.meta.count', function () {\n        if (\n            this.get('ori_site') &&\n            !this.get('ori_site').includes(',') &&\n            this.get('content.meta.count') === 0\n        ) {\n            return true;\n        }\n    }),\n    actions: {\n        orientate: function () {\n            var addController, userid;\n            userid = [parseInt(this.get('model.query.ori_user'))];\n            addController = this.get('addController');\n            this.get('store')\n                .findRecord('project', this.get('ori_site'))\n                .then((project) => {\n                    addController.set('users', userid);\n                    this.set('session.currentUser.currentMySite', project);\n                    return this.transitionToRoute('orientations.add');\n                });\n        },\n    },\n});\n\nexport default UsersViewOrientationsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/orientations/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditOrientationsRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nUsersEditOrientationsRoute = GeneralReportRoute.extend({\n    Collector: Ember.inject.service('collector-service'),\n    queryParams: {\n        ori_date: {\n            refreshModel: true,\n            replace: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        ori_site: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var user;\n        if (!this.get('Collector').testNeeds(['orientation'])) {\n            return;\n        }\n        params = this._super(params);\n        params.ori_date = params.date;\n        delete params.date;\n        if (params.project) {\n            if (params.project !== 'null') {\n                params.ori_site = params.project;\n            }\n        }\n        delete params.project;\n        params.sideload = true;\n        user = this.modelFor('users.edit');\n        params.ori_user = user.get('id');\n        return this.store.query('orientation', params);\n    },\n});\n\nexport default UsersEditOrientationsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"RFNGEr6g\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"orientations_on\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showOriButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group pull-left report-more\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"orientate\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.actions.orientateUsers\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"formatter\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"formatter\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/orientations/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/permissions/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditPermissionsRoute;\n\nimport Ember from 'ember';\n\nUsersEditPermissionsRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    model: function () {\n        var c, filteredLinks, links, record;\n        c = this.get('Collector');\n        record = this.modelFor('users.edit');\n        links = [\n            {\n                link: 'user',\n                fields: ['firstname', 'lastname'],\n            },\n            {\n                link: 'project',\n                fields: ['number', 'name'],\n                needs: ['project'],\n            },\n            {\n                link: 'task',\n                fields: ['name'],\n                needs: ['task'],\n            },\n            {\n                link: 'employer',\n                fields: ['name'],\n                needs: ['employer'],\n                disabled: ['!employer@edit'], // skip employer-permissions editing if user doesn't have permissions to edit employers (ie subcontractor user)\n            },\n        ];\n\n        // we can also use forms that have the feature use_linker as a link\n        let forms = this.Collector.forms();\n        for (let form in forms) {\n            if (forms[form].features?.use_linker) {\n                links.push({\n                    link: form,\n                    fields: this.returnLinkableFields(forms[form].objects),\n                    needs: [form],\n                    custom_name: forms[form].name,\n                });\n            }\n        }\n\n        filteredLinks = links.filter((item) => {\n            var ref;\n            if (item.disabled) {\n                item.disabled = c.testNeeds(item.disabled);\n            }\n            if (item.link === 'user' && c.testNeeds(['employer'])) {\n                item.fields.push('employer.name');\n            }\n            if (\n                item.link === 'user' &&\n                (ref = record.get('userlevel')) !== '6' &&\n                ref !== '5' &&\n                ref !== '4' &&\n                ref !== '3'\n            ) {\n                return false;\n            }\n            if (item.needs) {\n                return c.testNeeds(item.needs);\n            }\n            return true;\n        });\n        return Ember.RSVP.hash({\n            record: record,\n            linkers: filteredLinks,\n        });\n    },\n    // goes through the objects in the form and returns the fields that can be used in linker (the fields that have the feature \"show_in_linker\")\n    returnLinkableFields: function (fields) {\n        let linkableFields = [];\n        for (let field in fields) {\n            if (fields[field].features?.show_in_linker) {\n                linkableFields.push(field);\n            }\n        }\n        return linkableFields;\n    },\n});\n\nexport default UsersEditPermissionsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"O/5PSDEG\",\"block\":\"{\\\"symbols\\\":[\\\"link\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"users.edit.permissions.title\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"users.edit.permissions.description\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"linkers\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[4,\\\"if\\\",[[23,1,[\\\"custom_name\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[23,1,[\\\"custom_name\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"user.edit.permissions.\\\",[23,1,[\\\"link\\\"]]],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info mt-5\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-info-sign\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"user.edit.permissions.no_permission_to_edit\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"collector/linker-comp\\\",null,[[\\\"model\\\",\\\"link\\\",\\\"show_fields\\\",\\\"linkTo\\\"],[[24,[\\\"model\\\",\\\"record\\\"]],[23,1,[\\\"link\\\"]],[23,1,[\\\"fields\\\"]],\\\"user\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/permissions/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditRoute;\n\nimport Ember from 'ember';\n\nimport { scheduleOnce } from '@ember/runloop';\nimport GeneralAddRoute from '../../../routes/general-add';\n\nUsersEditRoute = GeneralAddRoute.extend({\n    modelName: 'user',\n    controllerName: 'users/edit',\n    edit: true,\n    afterSave: 'users',\n\n    queryParams: {\n        anchor: {\n            refreshModel: false,\n            defaultValue: null\n        },\n        profileImgClicked: {\n            refreshModel: false,\n            defaultValue: null\n        }\n    },\n\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        controller.notifyPropertyChange('currentSaldo');\n        this.scrollToAnchor();\n    },\n\n    scrollToAnchor() {\n        scheduleOnce('afterRender', this, function() {\n            const { anchor, profileImgClicked } = this.paramsFor(this.routeName);\n            if (anchor && profileImgClicked) {\n                const element = document.querySelector(`[data-anchor=\"${anchor}\"]`);\n                if (element) {\n                    element.scrollIntoView({ behavior: 'smooth' });\n                }\n            }\n        });\n    }\n});\n\nexport default UsersEditRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/saldo/calendar-card/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditSaldoCalendarCardComponent;\n\nimport Ember from 'ember';\n\nimport { htmlSafe } from '@ember/string';\n\nUsersEditSaldoCalendarCardComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    plus: Ember.computed('day_saldo', function () {\n        if (this.get('day_saldo') > 0) {\n            return '+';\n        }\n    }),\n    positiveornegative: Ember.computed('day_saldo', function () {\n        if (this.get('day_saldo') > 0) {\n            return 'positive';\n        }\n        if (this.get('day_saldo') < 0) {\n            return 'negative';\n        }\n        return '';\n    }),\n    emptyday: Ember.computed('saldo', function () {\n        if (\n            parseInt(this.get('saldo.workday_length'), 10) === 0 &&\n            parseInt(this.get('saldo.workday_hours'), 10) === 0\n        ) {\n            return true;\n        }\n    }),\n    notStarted: Ember.computed('saldo', function () {\n        if (this.get('saldo.saldo') === 'not_started') {\n            return true;\n        }\n    }),\n    notStartedText: Ember.computed(function () {\n        return htmlSafe(this.get('intl').t('saldo.calculation_not_started'));\n    }),\n    notCalculatedYet: Ember.computed('saldo', function () {\n        var diff, today;\n        today = moment().format('YYYY-MM-DD');\n        diff = moment.utc(this.get('saldo.date')).diff(moment.utc(today), 'days');\n        if (diff > 0) {\n            return true;\n        }\n    }),\n    day_saldo: Ember.computed('saldo', function () {\n        var saldo, saldoHours;\n        saldo = this.get('saldo');\n        saldoHours = saldo.saldo / 60;\n        if (saldo.cut) {\n            saldoHours -= saldo.cut / 60;\n        }\n        return saldoHours;\n    }),\n    day_saldo_over_max: Ember.computed('saldo_settings', 'saldo', function () {\n        if (this.saldo.dailySaldoCut) {\n            return this.saldo.dailySaldoCut;\n        } else {\n            return this.saldo.saldo > this.saldo_settings.dailymaximum;\n        }\n    }),\n    workday_length: Ember.computed('saldo', function () {\n        var saldo;\n        saldo = this.get('saldo');\n        return saldo.workday_length / 60;\n    }),\n    workday_hours: Ember.computed('saldo', function () {\n        var saldo;\n        saldo = this.get('saldo');\n        return saldo.workday_hours / 60;\n    }),\n    cumulative: Ember.computed('saldo', function () {\n        var saldo;\n        saldo = this.get('saldo');\n        return saldo.cumulative / 60;\n    }),\n    cumulative_under_min: Ember.computed('saldo_settings', 'saldo', function () {\n        return this.get('saldo.cumulative') < this.get('saldo_settings.minimum') * -1;\n    }),\n    cumulative_over_max: Ember.computed('saldo_settings', 'saldo', function () {\n        return this.get('saldo.cumulative') > this.get('saldo_settings.maximum');\n    }),\n    cut: Ember.computed('saldo', function () {\n        var saldo;\n        saldo = this.get('saldo');\n        if (saldo.cut) {\n            return saldo.cut / 60;\n        } else {\n            return null;\n        }\n    }),\n    actions: {\n        click: function () {\n            if (this.get('click')) {\n                return this.click();\n            }\n        },\n    },\n});\n\nexport default UsersEditSaldoCalendarCardComponent;\n","export default Ember.HTMLBars.template({\"id\":\"l306III+\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[14,1],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"insights-saldo\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"notStarted\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-saldo-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"saldo.daily_saldo_acc\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",false],[12,\\\"class\\\",[22,\\\"positiveornegative\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"click\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"emptyday\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"plus\\\"],false],[1,[28,\\\"format-hours\\\",[[24,[\\\"day_saldo\\\"]],\\\"00:00h\\\",false,true],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"day_saldo_over_max\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Error\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"day_saldo_over_max\\\"]],true],null],\\\"saldo.saldos_over_daily_max_limit.not_cutted\\\",\\\"saldo.saldos_over_daily_max_limit\\\"],null]],[[\\\"hours\\\"],[[28,\\\"format-minutes\\\",[[24,[\\\"day_saldo_over_max\\\"]]],[[\\\"hideIcon\\\",\\\"showLeadingZeros\\\"],[true,true]]]]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                 \\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-saldo-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"saldo.cumulative_saldo_acc\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"cumulative-text\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"cumulative\\\"]],\\\"00:00h\\\",false,true],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"cumulative_under_min\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Error\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"saldo.min_saldos_under_limit\\\"],null]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"cumulative_over_max\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Error\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"saldo.max_saldos_over_limit\\\"],null]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"cut\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Error\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"saldo.max_saldos_cut_by\\\"],[[\\\"cut\\\"],[[28,\\\"format-hours\\\",[[24,[\\\"cut\\\"]],\\\"00:00h\\\",false,true],null]]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"not-started-insights\\\"],[8],[1,[22,\\\"notStartedText\\\"],false],[9],[0,\\\" \\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/saldo/calendar-card/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/saldo/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditSaldoController;\n\nimport Controller from '@ember/controller';\n\nimport { inject as service } from '@ember/service';\n\nimport { get, set, computed } from '@ember/object';\n\nimport { alias } from '@ember/object/computed';\n\nUsersEditSaldoController = Controller.extend({\n    Collector: service('collector-service'),\n    session: service(),\n    queryParams: ['date'],\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    saldos: alias('model.list'),\n    showRecalculateButton: computed(function () {\n        if (\n            this.get('session.session.content.authenticated.scope') ||\n            this.get('Collector').testNeeds(['development'])\n        ) {\n            return true;\n        }\n    }),\n    modalTitle: computed('showDate', function () {\n        return moment(this.get('showDate')).format('L');\n    }),\n    actions: {\n        dayClicked: function (date) {\n            return set(this, 'showDate', date);\n        },\n        //@get('Collector').ttapi\n        //    url: \"saldo/calculateSaldos?date=\" + date\n        recalculate: function () {\n            var between, date, enddate, startdate;\n            date = get(this, 'date');\n            startdate = date.split('_')[0];\n            enddate = date.split('_')[1];\n            if (moment().isBefore(enddate)) {\n                enddate = moment().format('YYYY-MM-DD');\n            }\n            between = startdate + '_' + enddate;\n            return this.get('Collector')\n                .ttapi({\n                    url:\n                        'saldo/calculateSaldos?date=' +\n                        between +\n                        '&userid=' +\n                        get(this, 'model.user.id'),\n                })\n                .then(() => {\n                    return this.send('refreshModel');\n                });\n        },\n        closeModal: function () {\n            return set(this, 'showDate', null);\n        },\n    },\n});\n\nexport default UsersEditSaldoController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/saldo/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditSaldoRoute;\n\nimport Ember from 'ember';\n\nUsersEditSaldoRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var enddate, startdate, user;\n        user = this.modelFor('users.edit');\n        startdate = Ember.get(params, 'date').split('_')[0];\n        enddate = Ember.get(params, 'date').split('_')[1];\n        return Ember.RSVP.hash({\n            list: this.get('Collector').ttapi({\n                url:\n                    'saldo/get_saldo_list?startdate=' +\n                    startdate +\n                    '&enddate=' +\n                    enddate +\n                    '&userid=' +\n                    user.get('id'),\n            }),\n            user: user,\n            saldo_settings: this.get('Collector').ttapi({\n                url: 'saldo/saldoSettings?userid=' + user.get('id'),\n            }),\n        });\n    },\n    actions: {\n        refreshModel: function () {\n            return this.refresh();\n        },\n    },\n});\n\nexport default UsersEditSaldoRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/saldo/saldo-deducter/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditSaldoSaldoDeducterComponent;\n\nimport { set, get, computed } from '@ember/object';\n\nimport recordComp from '../../../../collector/record-comp/component';\n\nUsersEditSaldoSaldoDeducterComponent = recordComp.extend({\n    layoutName: 'collector/record-comp',\n    form: 'saldodeducter',\n    showFields: computed('fields', 'record', function () {\n        if (this._super()) {\n            return this._super().filter(function (item) {\n                var ref;\n                return !((ref = get(item, 'name')) === 'addhours');\n            });\n        }\n    }),\n    actions: {\n        save: function () {\n            var record;\n            record = get(this, 'record');\n            set(record, 'addhours', this.get('adding'));\n            return this._super();\n        },\n    },\n});\n\nexport default UsersEditSaldoSaldoDeducterComponent;\n","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\nimport { getOwner } from '@ember/application';\n\nexport default Component.extend({\n    ttapi: service(),\n    intl: service(),\n    notifications: service(),\n    tagName: '',\n\n    actions: {\n        openSaldostartModal() {\n            set(this, 'showSaldoStart', true);\n        },\n        closeSaldostartModal() {\n            this.refreshSaldo();\n            set(this, 'showSaldoStart', false);\n        },\n        saveSaldostart() {\n            get(this, 'ttapi')\n                ._post('/saldo/set_saldo_start', {\n                    id: get(this, 'userid'),\n                    startdate: get(this, 'startdate'),\n                })\n                .then((result) => this.showError(result));\n            let enddate = moment().endOf('week').format('YYYY-MM-DD');\n            enddate = moment().isBefore(enddate) ? moment().format('YYYY-MM-DD') : enddate;\n            let between = get(this, 'startdate') + '_' + enddate;\n            get(this, 'Collector')\n                .ttapi({\n                    url: 'saldo/calculateSaldos?date=' + between + '&userid=' + get(this, 'userid'),\n                })\n                .then(this._refreshRoute.bind(this));\n        },\n    },\n    _refreshRoute() {\n        let controller = getOwner(this).lookup('controller:application');\n        let route = getOwner(this).lookup('route:' + get(controller, 'currentRouteName'));\n        route.refresh();\n        this.send('closeSaldostartModal');\n    },\n    showError(result) {\n        if (result.error)\n            this.notifications.error(this.intl.t('saldo_start.date_too_old'), { autoClear: true });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"X30cDqA1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openSaldostartModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"saldo.edit_startdate\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSaldoStart\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"report.saldo.set_start\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeSaldostartModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"report.user.set_saldo_start\\\"],null],false],[0,\\\": \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"date\\\",[24,[\\\"startdate\\\"]],\\\"form-control\\\"]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"name\\\",\\\"save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSaldostart\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/saldo/saldo-start/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/saldo/show-date/component.coffee.old\n// Generated by CoffeeScript 2.6.1\n\n// TODO: There seems to be a newer SaldoInsights component in app/pods/components/saldo-insights/component.js\n// that might replace this one. It is unclear if things only in this component like \"bankdeducters\", \"halfday_absences\" and\n// \"fullday_absences\" are still needed or can we switch to the newer component entirely and remove this one.\n\nvar UsersEditSaldoShowDateComponent;\n\nimport Ember from 'ember';\n\nUsersEditSaldoShowDateComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    bankDeducerColumns: Ember.computed('userid', 'date', function () {\n        var arr, promise;\n        arr = Ember.A([]);\n        if (this.get('Collector').testNeedsOne('products.worktimebank')) {\n            promise = this.get('store').query('bank', {\n                skipsaldo: 'on',\n            });\n            promise.then((banks) => {\n                return banks.forEach((bank) => {\n                    return arr.pushObject(bank.get('column'));\n                });\n            });\n        }\n        return arr;\n    }),\n    userid: Ember.computed('user', function () {\n        if (Ember.typeOf(this.get('user')) === 'instance') {\n            return this.get('user.id');\n        } else {\n            return this.get('user');\n        }\n    }),\n    deducters: Ember.computed('userid', 'date', function () {\n        return this.get('store').query('saldodeducter', {\n            date: this.get('date'),\n            user: this.get('userid'),\n            _v: 2,\n        });\n    }),\n    worktimes: Ember.computed('userid', 'date', function () {\n        var params;\n        params = {\n            date: this.get('date'),\n            user: this.get('userid'),\n            sideload: true,\n        };\n        //if @get('Collector').fieldExists('worktime', 'affects_overtime')\n        //   params['affects_overtime'] = \"off\";\n        return this.get('store').query('worktime', params);\n    }),\n    absences: Ember.computed('userid', 'date', 'saldo_settings', function () {\n        var params;\n        if (!this.get('Collector').testNeeds(['abcense'])) {\n            return [];\n        }\n        params = {\n            startdate_enddate: this.get('date') + '_' + this.get('date'),\n            user: this.get('userid'),\n            sideload: ['abcensetype.name', 'abcensetype.usesholiday'],\n        };\n        return this.get('store').query('abcense', params);\n    }),\n    absences_for_date: Ember.computed('date', 'absences.[]', function () {\n        var date, saldo_absence_id;\n        date = this.get('date');\n        saldo_absence_id = this.get('saldo_settings.saldo_absence_id');\n        return this.get('absences').filter((absence) => {\n            return (\n                absence.get('abcensetype.id') !== saldo_absence_id &&\n                absence.get('abcensetype.usesholiday') !== 'saldo' &&\n                absence.get('startdate') <= date &&\n                absence.get('enddate') >= date\n            );\n        });\n    }),\n    fullday_absences: Ember.computed('absences_for_date.[]', function () {\n        return this.get('absences_for_date').filter((absence) => {\n            return absence.get('dayamount');\n        });\n    }),\n    halfday_absences: Ember.computed('absences_for_date.[]', function () {\n        return this.get('absences_for_date').filter((absence) => {\n            return !absence.get('dayamount');\n        });\n    }),\n    saldo_absences: Ember.computed('date', 'absences.[]', function () {\n        var date, saldo_absence_id;\n        date = this.get('date');\n        saldo_absence_id = this.get('saldo_settings.saldo_absence_id');\n        return this.get('absences').filter((absence) => {\n            return (\n                (absence.get('abcensetype.id') === saldo_absence_id ||\n                    absence.get('abcensetype.usesholiday') === 'saldo') &&\n                absence.get('startdate') <= date &&\n                absence.get('enddate') >= date\n            );\n        });\n    }),\n    hourSum: Ember.computed(\n        'worktimes.[]',\n        'deducters.[]',\n        'fullday_absences.[]',\n        'halfday_absences.[]',\n        'workday_length',\n        'bankDeducerColumns.[]',\n        function () {\n            var bankDeductionsSum,\n                col,\n                i,\n                len,\n                mark_sum_zero,\n                max_saldo_over,\n                ref,\n                sum,\n                tmp_sum,\n                totalsum;\n            sum = 0;\n            bankDeductionsSum = 0;\n            totalsum = 0;\n            max_saldo_over = false;\n            mark_sum_zero = false;\n            if (this.get('workday_length')) {\n                this.get('worktimes').forEach((row) => {\n                    if (row.get('typeofwork') === 'piece') {\n                        return;\n                    }\n                    if (row.get('affects_overtime') && row.get('affects_overtime') !== 'off') {\n                        mark_sum_zero = true;\n                    }\n                    return (sum += row.get('work_hours'));\n                });\n                this.get('deducters').forEach((row) => {\n                    return (sum = row.get('addhours')\n                        ? sum + row.get('hours')\n                        : sum - row.get('hours'));\n                });\n                this.get('fullday_absences').forEach((row) => {\n                    return (sum += this.get('workday_length'));\n                });\n                this.get('halfday_absences').forEach((row) => {\n                    return (sum += row.get('absence_hours'));\n                });\n                ref = this.get('bankDeducerColumns');\n                for (i = 0, len = ref.length; i < len; i++) {\n                    col = ref[i];\n                    this.get('worktimes').forEach((worktime) => {\n                        if (worktime.get(col)) {\n                            sum -= worktime.get(col);\n                            console.log('summing ', worktime.get(col));\n                            return (bankDeductionsSum += worktime.get(col));\n                        }\n                    });\n                }\n                tmp_sum = sum - this.get('workday_length');\n                if (mark_sum_zero && tmp_sum >= 0) {\n                    totalsum = 0;\n                } else if (mark_sum_zero && tmp_sum <= 0) {\n                    totalsum = sum - this.get('workday_length');\n                    mark_sum_zero = false;\n                } else {\n                    totalsum = sum - this.get('workday_length');\n                }\n                if (\n                    this.get('saldo_settings.auto_cut') &&\n                    this.get('saldo_settings.dailymaximum') > 0 &&\n                    totalsum > this.get('saldo_settings.dailymaximum') / 60\n                ) {\n                    totalsum = this.get('saldo_settings.dailymaximum') / 60;\n                    max_saldo_over = true;\n                }\n            }\n            return {\n                sum: totalsum,\n                bank_deductions: bankDeductionsSum,\n                max_saldo_over: max_saldo_over,\n                affects_overtime_info: mark_sum_zero,\n            };\n        },\n    ),\n    plus: Ember.computed('hourSum', function () {\n        if (this.get('hourSum') > 0) {\n            return '+';\n        }\n    }),\n    didReceiveAttrs: function () {\n        if (this.get('workday_list')) {\n            return this.set(\n                'workday_length',\n                this.get('workday_list')[this.get('date')].workday_length / 60,\n            );\n        } else {\n            return this.get('Collector')\n                .ttapi({\n                    url:\n                        'saldo/get_saldo_list?startdate=' +\n                        this.get('date') +\n                        '&enddate=' +\n                        this.get('date') +\n                        '&userid=' +\n                        this.get('user.id'),\n                })\n                .then((back) => {\n                    return this.set('workday_length', back[this.get('date')].workday_length / 60);\n                });\n        }\n    },\n});\n\nexport default UsersEditSaldoShowDateComponent;\n","export default Ember.HTMLBars.template({\"id\":\"0606dvaK\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"row\\\",\\\"row\\\",\\\"row\\\",\\\"row\\\",\\\"&default\\\"],\\\"statements\\\":[[14,6],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"is-pending\\\",[[24,[\\\"worktimes\\\"]]],null],[28,\\\"is-pending\\\",[[24,[\\\"hourSum\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"worktimes\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"typeofwork\\\"]],\\\"piece\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"do-not-sum\\\"],[8],[1,[28,\\\"t\\\",[\\\"saldo.worktime\\\"],null],false],[0,\\\" (\\\"],[1,[28,\\\"t\\\",[\\\"worktime.typeofwork.piece\\\"],null],false],[0,\\\")\\\"],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"do-not-sum\\\"],[8],[1,[23,5,[\\\"project\\\",\\\"name\\\"]],false],[0,\\\" \\\"],[1,[23,5,[\\\"starttime\\\"]],false],[0,\\\"-\\\"],[1,[23,5,[\\\"endtime\\\"]],false],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"hours\\\"],[8],[1,[28,\\\"format-hours\\\",[0],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.worktime\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[23,5,[\\\"project\\\",\\\"name\\\"]],false],[0,\\\" \\\"],[1,[23,5,[\\\"starttime\\\"]],false],[0,\\\"-\\\"],[1,[23,5,[\\\"endtime\\\"]],false],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"hours\\\"],[8],[1,[28,\\\"format-hours\\\",[[23,5,[\\\"work_hours\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.worktime\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"hours\\\"],[8],[1,[28,\\\"format-hours\\\",[0],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"each\\\",[[24,[\\\"fullday_absences\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.absence_fullday\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[23,4,[\\\"abcensetype\\\",\\\"name\\\"]],false],[0,\\\" \\\"],[1,[23,4,[\\\"startdate\\\"]],false],[0,\\\"-\\\"],[1,[23,4,[\\\"enddate\\\"]],false],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"hours\\\"],[8],[1,[28,\\\"format-hours\\\",[[24,[\\\"workday_length\\\"]]],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[4,\\\"each\\\",[[24,[\\\"halfday_absences\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.absence_halfday\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[23,3,[\\\"abcensetype\\\",\\\"name\\\"]],false],[0,\\\" \\\"],[4,\\\"if\\\",[[23,3,[\\\"starttime\\\"]]],null,{\\\"statements\\\":[[1,[23,3,[\\\"starttime\\\"]],false],[0,\\\"-\\\"],[1,[23,3,[\\\"endtime\\\"]],false]],\\\"parameters\\\":[]},null],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"hours\\\"],[8],[1,[28,\\\"format-hours\\\",[[23,3,[\\\"absence_hours\\\"]]],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[4,\\\"each\\\",[[24,[\\\"deducters\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.saldo_deduction\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"description\\\"]],false],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"hours\\\"],[8],[4,\\\"if\\\",[[23,2,[\\\"addhours\\\"]]],null,{\\\"statements\\\":[[0,\\\"+\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"-\\\"]],\\\"parameters\\\":[]}],[1,[28,\\\"format-hours\\\",[[23,2,[\\\"hours\\\"]]],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.workday_length\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"hours\\\"],[8],[0,\\\"-\\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"workday_length\\\"]]],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"hourSum\\\",\\\"bank_deductions\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.bank_deductions\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"hours\\\"],[8],[0,\\\"-\\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"hourSum\\\",\\\"bank_deductions\\\"]]],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[10,\\\"class\\\",\\\"sum\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.workday_sum\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"hours\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[22,\\\"plus\\\"],false],[1,[28,\\\"format-hours\\\",[[24,[\\\"hourSum\\\",\\\"sum\\\"]]],null],false],[4,\\\"if\\\",[[24,[\\\"hourSum\\\",\\\"max_saldo_over\\\"]]],null,{\\\"statements\\\":[[0,\\\"*\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hourSum\\\",\\\"affects_overtime_info\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"strong\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.calculated_to_overtime\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hourSum\\\",\\\"max_saldo_over\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        * \\\"],[1,[28,\\\"t\\\",[\\\"saldo.daily_max_over\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saldo_absences\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-info-sign\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.saldo_absences\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"saldo_absences\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[23,1,[\\\"abcensetype\\\",\\\"name\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"starttime\\\"]],false],[0,\\\"-\\\"],[1,[23,1,[\\\"endtime\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"format-hours\\\",[[23,1,[\\\"absence_hours\\\"]]],null],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/saldo/show-date/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"dWsuAXE6\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\",\\\"index\\\",\\\"specialDay\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"calendar-report\\\",null,[[\\\"date\\\"],[[24,[\\\"date\\\"]]]],{\\\"statements\\\":[[4,\\\"calendar-report-day\\\",null,[[\\\"day\\\",\\\"specialDay\\\"],[[23,1,[]],[23,3,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"saldos\\\"]],[23,1,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"users/edit/saldo/calendar-card\\\",null,[[\\\"saldo\\\",\\\"click\\\",\\\"saldo_settings\\\"],[[28,\\\"get\\\",[[24,[\\\"saldos\\\"]],[23,1,[]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"dayClicked\\\",[23,1,[]]],null],[24,[\\\"model\\\",\\\"saldo_settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2,3]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRecalculateButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"recalculate\\\"]],[8],[1,[28,\\\"t\\\",[\\\"saldo.recalculate\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showDate\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"modalTitle\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"users/edit/saldo/show-date\\\",null,[[\\\"date\\\",\\\"user\\\",\\\"workday_list\\\",\\\"saldo_settings\\\"],[[24,[\\\"showDate\\\"]],[24,[\\\"model\\\",\\\"user\\\"]],[24,[\\\"model\\\",\\\"list\\\"]],[24,[\\\"model\\\",\\\"saldo_settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/saldo/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/saldohistory/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditSaldohistoryController;\n\nimport Ember from 'ember';\n\nimport { computed } from '@ember/object';\n\nUsersEditSaldohistoryController = Ember.Controller.extend({\n    reportFilter: computed('model', function () {\n        return [\n            {\n                name: 'user',\n                value: this.get('model.id'),\n            },\n        ];\n    }),\n    rowActions: [\n        {\n            action: 'rowHistory',\n            icon: 'move move-Search',\n        },\n    ],\n});\n\nexport default UsersEditSaldohistoryController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/saldohistory/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditSaldohistoryRoute;\n\nimport Ember from 'ember';\n\nUsersEditSaldohistoryRoute = Ember.Route.extend();\n\nexport default UsersEditSaldohistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"NVrZGZu1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row report-main-content\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"form\\\",\\\"rowActions\\\",\\\"query\\\"],[\\\"saldodeducter\\\",[24,[\\\"rowActions\\\"]],[24,[\\\"reportFilter\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/saldohistory/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"1ynvepbj\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"promo-ad\\\",[],[[\\\"@background\\\",\\\"@promoClass\\\",\\\"@product\\\"],[\\\"saldos\\\",\\\"left-align\\\",\\\"saldo\\\"]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/saldos_ad/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"OszqUlDq\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@selectable\\\"],[\\\"superiorreplacement\\\",true]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Add\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Filters\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/superior_replacements/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"MPf5exr9\",\"block\":\"{\\\"symbols\\\":[\\\"sublink\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-fluid\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-3 col-md-4 col-sm-6 col-xs-6 my-profile-circle-image-div\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-profile-circle-image img-circle\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[22,\\\"usersImage\\\"],\\\"');\\\"]]],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-6 col-md-6 col-sm-6 col-xs-8\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[24,[\\\"model\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"model\\\",\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"span\\\",true],[8],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.employee_since\\\"],null],false],[0,\\\": \\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"model\\\",\\\"row_info\\\",\\\"created\\\"]],\\\"LLL\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[8],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.last_logged\\\"],null],false],[0,\\\"\\\\n                : \\\"],[1,[28,\\\"if\\\",[[24,[\\\"model\\\",\\\"row_info\\\",\\\"last_logged\\\"]],[28,\\\"moment-format\\\",[[24,[\\\"model\\\",\\\"row_info\\\",\\\"last_logged\\\"]],\\\"LLL\\\"],[[\\\"allow-empty\\\"],[true]]],[28,\\\"t\\\",[\\\"user.last_logged.never\\\"],null]],null],false],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saldosInUse\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[8],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.usersaldo\\\"],null],false],[0,\\\":\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentSaldo\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"currentSaldo\\\",\\\"value\\\"]]],null],false],[0,\\\" (\\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"currentSaldo\\\",\\\"from\\\"]],\\\"L\\\"],null],false],[0,\\\"-\\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"currentSaldo\\\",\\\"to\\\"]],\\\"L\\\"],null],false],[0,\\\") \\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"userlevel=1?\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"users/edit/saldo/saldo-start\\\",null,[[\\\"userid\\\",\\\"startdate\\\",\\\"refreshSaldo\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],[24,[\\\"currentSaldo\\\",\\\"from\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"refreshSaldo\\\"],null]]]],false],[0,\\\"           \\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"isMobile\\\"]],true],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"btn btn-secondary btn-xs\\\"],[12,\\\"role\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendTestNotification\\\"],[[\\\"on\\\"],[\\\"click\\\"]]],[8],[1,[28,\\\"t\\\",[\\\"menu.send_test_notification\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"subMenus\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subMenus\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"div\\\",\\\"submenu-item\\\",[23,1,[\\\"link\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/template.hbs\"}});","import { inject as service } from '@ember/service';\nimport Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    Collector: service('collector-service'),\n    showUserDataRemover: false,\n    showUserRemover: false,\n    userdata: alias('model'),\n});\n","import Route from '@ember/routing/route';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { Promise as EmberPromise } from 'rsvp';\nimport csvExport from '../../../../mixins/csv-export';\n\nexport default Route.extend(csvExport, {\n    Collector: service('collector-service'),\n    intl: service(),\n    startYear: 2006,\n    init() {\n        this._super(...arguments);\n        this.blacklist = ['holiday'];\n    },\n\n    model() {\n        return this.modelFor('users.edit');\n    },\n\n    actions: {\n        get_data() {\n            set(this.controller, 'loadingData', true);\n            let collector = get(this, 'Collector');\n            let all_forms = get(collector, 'forms')();\n            var userid = get(this.modelFor('users.edit'), 'id');\n            var loopYearByYear = [];\n            var formDateFields = [];\n            var loopOnce = [];\n            var startYear = 2006;\n            var endYear = parseInt(moment().format('YYYY'));\n            var formUserFields = {};\n\n            // do not fetch from blacklisted-forms\n            for (let formname in all_forms) {\n                if (get(this, 'blacklist').indexOf(formname) != -1) continue;\n\n                // first we check all forms for user-field\n                if (all_forms[formname]['objects']['user']) {\n                    formUserFields[formname] = 'user';\n                } else {\n                    // take first field that is database-field and has user as form\n                    for (var field in all_forms[formname]['objects']) {\n                        var fieldObj = all_forms[formname]['objects'][field];\n                        if (\n                            fieldObj['type'] == 'database' &&\n                            fieldObj['options']['form'] == 'user'\n                        ) {\n                            formUserFields[formname] = field;\n                            break;\n                        }\n                    }\n                }\n            }\n\n            for (var formname in formUserFields) {\n                var currentForm = all_forms[formname];\n\n                if (currentForm) {\n                    for (let field in currentForm['objects']) {\n                        // if it does have use_index-setting we need to pull data in one year increments\n                        if (\n                            currentForm['objects'][field]['features']['use_index'] &&\n                            currentForm['objects'][field]['features']['use_index'] == 'index1'\n                        ) {\n                            loopYearByYear.push(formname);\n                            formDateFields[formname] = field;\n                            break;\n                        }\n                    }\n                    // if there was not index-setting, push this form to array that doesn't need to be iterated year-by-year\n                    if (loopYearByYear.indexOf(formname) == -1) {\n                        loopOnce.push(formname);\n                    }\n                }\n            }\n\n            var promises = [];\n\n            // a bit of a haxxor, get user-info first from user-form\n            loopOnce.push('user');\n            formUserFields['user'] = 'id';\n\n            // the easy part\n            for (let formname of loopOnce) {\n                var promise = new EmberPromise((resolve) => {\n                    var params = {\n                        limit: 'all',\n                        sideload: true,\n                    };\n                    params[formUserFields[formname]] = userid;\n\n                    this.store\n                        .query(formname, params)\n                        .then((data) => this._setFormObject(data, collector, resolve));\n                });\n                promises.push(promise);\n            }\n\n            // now we need to get those index1-forms and iterate year by year\n            for (let formname of loopYearByYear) {\n                var outer_promise = new EmberPromise((resolve) => {\n                    var translatedColumns = [];\n                    //var formName = get(data, 'modelName');\n                    var columnsObject = collector.fields(formname);\n                    var columns = [];\n\n                    for (var columnName in columnsObject) {\n                        translatedColumns.push(\n                            collector.getTranslationForColumn(formname, columnName),\n                        );\n                        columns.push(columnName);\n                    }\n\n                    var formObject = {\n                        name: formname,\n                        columns: columns,\n                        translated_columns: translatedColumns,\n                    };\n                    var formData = [];\n                    for (var i = startYear; i <= endYear; i++) {\n                        var promise = new EmberPromise((resolve) => {\n                            var start = moment(i + '-01').format('YYYY-MM-DD');\n                            var end = moment(start).add(1, 'year').format('YYYY-MM-DD');\n\n                            var params = {\n                                limit: 'all',\n                                sideload: true,\n                            };\n                            params[formDateFields[formname]] = start + '_' + end;\n                            params[formUserFields[formname]] = userid;\n\n                            this.store.query(formname, params).then((data) => resolve(data));\n                        });\n                        formData.push(promise);\n                        //formObject\n                    }\n                    //console.log(formData);\n                    EmberPromise.all(formData).then((data) =>\n                        this._setFormObjectData(data, formObject, collector, resolve),\n                    );\n                    //\n                });\n                promises.push(outer_promise);\n            }\n            return EmberPromise.all(promises).then((data) => this._createCsv(data));\n        },\n    },\n\n    _setFormObject(data, collector, resolve) {\n        var translatedColumns = [];\n        var formName = get(data, 'modelName');\n        var columnsObject = collector.fields(formName);\n        var columns = [];\n\n        for (var columnName in columnsObject) {\n            translatedColumns.push(collector.getTranslationForColumn(formName, columnName));\n            columns.push(columnName);\n        }\n\n        var rows = [];\n        data.forEach((record) => {\n            var row = [];\n            for (var col of columns) {\n                row[col] = collector._format_(get(record, col), formName, col, 'csv');\n                //console.log(get(record, col));\n            }\n            rows.push(row);\n        });\n\n        var formObject = {\n            name: get(data, 'modelName'),\n            data: rows,\n            columns: columns,\n            translated_columns: translatedColumns,\n        };\n        resolve(formObject);\n    },\n\n    _setFormObjectData(data, formObject, collector, resolve) {\n        for (var recordArr of data) {\n            var rows = [];\n            recordArr.forEach((record) => {\n                var row = [];\n                for (var col of formObject['columns']) {\n                    row[col] = collector._format_(get(record, col), formObject['name'], col, 'csv');\n                    //console.log(get(record, col));\n                }\n                rows.push(row);\n            });\n        }\n        formObject['data'] = rows;\n        resolve(formObject);\n    },\n\n    _createCsv(data) {\n        var csvFull = [];\n        var csvHeaders = [];\n        var name = '';\n        for (var form of data) {\n            const key = 'form.' + form['name'];\n            if (get(this, 'intl').exists(key)) name = get(this, 'intl').t(key).toLowerCase();\n            else name = form['name'];\n\n            csvHeaders.push(name);\n            var element = this.createCsvElement(\n                form['columns'],\n                form['data'],\n                form['translated_columns'],\n            );\n            csvFull.push(element);\n        }\n        set(this.controller, 'loadingData', false);\n        this.createMultiTableCsv(\n            csvFull,\n            csvHeaders,\n            get(this.modelFor('users.edit'), 'firstname') +\n                ' ' +\n                get(this.modelFor('users.edit'), 'lastname'),\n        );\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"xkrPWvRP\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"savingText\\\",\\\"action\\\",\\\"classes\\\",\\\"saveButtonText\\\"],[[24,[\\\"loadingData\\\"]],[28,\\\"t\\\",[\\\"user.edit.fetching_user_data\\\"],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"send\\\"]],\\\"get_data\\\"],null],\\\"btn btn-block btn-warning btn-lg\\\",[28,\\\"t\\\",[\\\"user.add.builder\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger btn-block btn-lg save\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showUserDataRemover\\\"]]],null],true]],[8],[1,[28,\\\"t\\\",[\\\"users.terminate_data\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger btn-block btn-lg save\\\"],[12,\\\"data-anchor\\\",\\\"user-delete-modal-button\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showUserRemover\\\"]]],null],true]],[8],[1,[28,\\\"t\\\",[\\\"user.hard_delete_user\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showUserDataRemover\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"term-inator\\\",null,[[\\\"user\\\",\\\"close\\\"],[[24,[\\\"model\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showUserDataRemover\\\"]]],null],false],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showUserRemover\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"user-deletion\\\",[],[[\\\"@user\\\",\\\"@close\\\"],[[23,0,[\\\"model\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showUserRemover\\\"]]],null],false],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/userdata/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserHistoryRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nUserHistoryRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default UserHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"iqHNlTiZ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"user\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/history/template.hbs\"}});","import Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { action, set } from '@ember/object';\n\nexport default class UsersInactiveController extends Controller {\n    @service ttapi;\n\n    days = 7;\n\n    date = moment().subtract(this.days, 'days').format('YYYY-MM-DD');\n\n    constructor() {\n        super(...arguments);\n        this.endpoint = this.ttapi.host + '/inactive_users_v2';\n    }\n\n    @action\n    setDaysAndSendChange (field, sendAction, value) {\n        set(this, field, moment().diff(value, 'days'))\n        sendAction(this.days, field);\n    }\n\n}\n","import Route from '@ember/routing/route';\n\nexport default class UsersInactiveRoute extends Route {}\n","export default Ember.HTMLBars.template({\"id\":\"/4o0/syG\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\",\\\"sendChange\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"users.report.inactive_users_start\\\"],null],false],[0,\\\" \\\"],[1,[23,0,[\\\"days\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"users.report.inactive_users_end\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showFilters\\\",\\\"@blockFilters\\\",\\\"@filter\\\"],[\\\"user\\\",\\\"employer,userlevel,group,worktimegroup\\\",true,[28,\\\"hash\\\",null,[[\\\"days\\\",\\\"endpoint\\\"],[[23,0,[\\\"days\\\"]],[23,0,[\\\"endpoint\\\"]]]]]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"filters\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"filter-label\\\"],[10,\\\"data-anchor\\\",\\\"days-filter-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"users.report.inactive_users.days_filter\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[5,\\\"addon/fields/date\\\",[],[[\\\"@value\\\",\\\"@onChange\\\",\\\"@class\\\"],[[23,0,[\\\"date\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"setDaysAndSendChange\\\"]],\\\"days\\\",[23,5,[]]],null],\\\"form-control\\\"]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/inactive/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport config from '../../../config/environment';\n\nimport { htmlSafe } from '@ember/string';\n\nUsersIndexController = GeneralReportController.extend({\n    flags: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    cc: Ember.inject.service(),\n    error: Ember.inject.service(),\n    vastuuGroup: Ember.inject.service('vastuu-group'),\n    form: 'user',\n    showColumns: [\n        'lastname',\n        'firstname',\n        'username',\n        'taxnumber',\n        'id06kort',\n        'employer',\n        'userlevel',\n        'password',\n        'email',\n        'phone',\n    ],\n    queryParams: ['page', 'employer', 'q', 'group', 'userlevel'],\n    userStatuses: ['new', 'ok', 'blocked'],\n    employer: null,\n    group: null,\n    userlevel: null,\n    filters: Em.A([\n        Em.Object.create({\n            field: 'employer',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    settings: Em.Object.create({\n        rowActions: [],\n        massedit: true,\n        sortByColumn: 'lastname',\n    }),\n    showUserSmsModal: false,\n    showUserEmailModal: false,\n    userSmsValidPhones: Em.A([]),\n    userSmsNotValidPhones: Em.A([]),\n    userEmailValid: Em.A([]),\n    userEmailNotValid: Em.A([]),\n    showId06Checker: false,\n    // Card register backfill tool (impersonate/admin only). Holds the selected users to\n    // process, or null when the tool is closed; the <FetchCardsTool> component owns the\n    // modal, progress and the per-user fetching itself.\n    cardFetchUsers: null,\n    // Show internal-only tools when one of our staff is impersonating a customer (the\n    // session has an OAuth scope) or when dev mode is on. Mirrors settings `showAdminMode`.\n    showCardFetchTool: Em.computed('session.session.content.authenticated.scope', 'Ember.devModeOn', function () {\n        if (Ember.get(Ember, 'devModeOn')) return true;\n        return !!this.get('session.session.content.authenticated.scope');\n    }),\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                var empId = user.get('employer.id');\n                // skip users with no employer at all - querying employers?id= 400s\n                if (empId && (!user.get('employer.emp_id') || !user.get('employer.country'))) {\n                    return need_to_be_fetched.push(empId);\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        // Internal/admin tool (impersonate only): open the <FetchCardsTool> for the\n        // selected users; the component handles the per-user cardregister fetching,\n        // progress and results modal.\n        openCardFetcher: function (users) {\n            this.set('cardFetchUsers', users);\n        },\n        closeCardFetcher: function () {\n            this.set('cardFetchUsers', null);\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\":\"QE8GJqL9\",\"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,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"showCardFetchTool\\\"]],[28,\\\"needs\\\",[\\\"products.cardregister\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,20,[\\\"Row\\\"]],[],[[\\\"@action\\\",\\\"@dataAnchor\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"openCardFetcher\\\",[23,18,[\\\"selected\\\"]]],null],\\\"report-more-fetch-cards\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"user.action.fetch_cards\\\"],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,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"showCardFetchTool\\\"]],[28,\\\"needs\\\",[\\\"products.cardregister\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,15,[\\\"row\\\"]],[],[[\\\"@action\\\",\\\"@dataAnchor\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"openCardFetcher\\\",[23,12,[\\\"selected\\\"]]],null],\\\"report-more-fetch-cards\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"user.action.fetch_cards\\\"],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\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"cardFetchUsers\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"fetch-cards-tool\\\",[],[[\\\"@users\\\",\\\"@onClose\\\"],[[23,0,[\\\"cardFetchUsers\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeCardFetcher\\\"],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/linked/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar LinkedUsersController;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nLinkedUsersController = Ember.Controller.extend({\n    Collector: Em.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    rowActions: [\n        {\n            action: 'editRow',\n            icon: 'move move-Pencil',\n        },\n    ],\n    checkedActions: Ember.computed(function () {\n        return [\n            {\n                name: 'unlinkUsers',\n                func: function (users) {\n                    var callQueue, clearThese, data, form, queue;\n                    form = 'user';\n                    clearThese = ['project', 'user', 'employer'].filter((link_form) => {\n                        return this.get('Collector').testNeeds([link_form]);\n                    });\n                    data = {};\n                    data[form] = {};\n                    clearThese.forEach((link_form) => {\n                        return (data[form]['link.' + this.get('Collector').pluralize(link_form)] =\n                            'clear');\n                    });\n                    queue = users.map(function (user) {\n                        return Ember.get(user, 'id');\n                    });\n                    // requests must be done in queue .. or capi cache makes only first call to work\n                    callQueue = function (self, data, queue, caller) {\n                        return new Ember.RSVP.Promise((resolve) => {\n                            var promise, userid;\n                            userid = queue.pop();\n                            if (!userid) {\n                                resolve();\n                                return;\n                            }\n                            promise = self.get('Collector').ajax({\n                                method: 'put',\n                                url: 'users/' + userid,\n                                data: JSON.stringify(data),\n                            });\n                            return promise.then(function () {\n                                return caller(self, data, queue, caller).then(resolve);\n                            });\n                        });\n                    };\n                    return callQueue(this, data, queue, callQueue).then(() => {\n                        return this.initData();\n                    });\n                },\n            },\n        ];\n    }),\n    path: 'linked_users',\n    rows: 0,\n    getRows: Em.observer('filterValues', function () {\n        var c, promise, query, query_str_arr, url;\n        url = this.get('path');\n        query = this.get('filterValues');\n        if (query) {\n            query_str_arr = [];\n            $.each(query, (key, item) => {\n                if (!item.value) {\n                    return;\n                }\n                return query_str_arr.push(item.name + '=' + item.value);\n            });\n            if (query_str_arr.length === 0) {\n                this.set('rows', 0);\n            }\n            url += '?' + query_str_arr.join('&');\n        }\n        url += '&limit=1&out=(empty)';\n        c = this.get('Collector');\n        promise = c.ttapi({\n            url: url,\n        });\n        return promise.then((data) => {\n            return this.set('rows', data.count);\n        });\n    }),\n    actions: {\n        editRow: function (params) {\n            return this.transitionToRoute('users.edit', params.id).then(function (newRoute) {\n                return newRoute.controller.set('afterSave', 'users.linked');\n            });\n        },\n        removeRow: function (params) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    if (con) {\n                        return this.get('store')\n                            .findRecord('user', params.id)\n                            .then((record) => {\n                                return record.destroyRecord();\n                            });\n                    }\n                });\n        },\n    },\n});\n\nexport default LinkedUsersController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/linked/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar LinkedUsersRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nLinkedUsersRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default LinkedUsersRoute;\n","export default Ember.HTMLBars.template({\"id\":\"vOm8SwAC\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/filters-comp\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"values\\\"],[\\\"employer\\\",\\\"user\\\",[24,[\\\"filterValues\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[1,[28,\\\"api-report\\\",null,[[\\\"filters\\\",\\\"path\\\",\\\"translationPrefix\\\",\\\"pdfSubHeader\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"editRow\\\",\\\"removeRow\\\",\\\"hideExports\\\",\\\"checkable\\\",\\\"checkedActions\\\",\\\"checkedRowsAction_unlinkUsers\\\",\\\"noRowsText\\\"],[[24,[\\\"filterValues\\\"]],\\\"linked_users\\\",\\\"report.linked_users\\\",\\\"linked_users\\\",[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",\\\"editRow\\\",\\\"removeRow\\\",true,true,[24,[\\\"checkedActions\\\"]],\\\"unlinkUsers\\\",[28,\\\"t\\\",[\\\"report.no_rows\\\"],null]]]],false],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/linked/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"8aPFOgSb\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/removed/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersRemovedController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nUsersRemovedController = GeneralReportController.extend({\n    flags: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    form: 'user',\n    showColumns: [\n        'lastname',\n        'firstname',\n        'username',\n        'taxnumber',\n        'id06kort',\n        'employer',\n        'userlevel',\n        'password',\n        'email',\n        'phone',\n    ],\n    queryParams: ['page', 'employer', 'q', 'group'],\n    init_functions: function () {\n        if (\n            this.get('flags').test('form-report-users') ||\n            this.get('flags').test('ember-movenium-form-report-users')\n        ) {\n            return null;\n        } else {\n            return this._super();\n        }\n    },\n    filters: Em.A([\n        Em.Object.create({\n            field: 'employer',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    row_info_status: 'removed',\n    employer: null,\n    settings: Em.Object.create({\n        showStatus: 'removed',\n        rowActions: [],\n    }),\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n    },\n});\n\nexport default UsersRemovedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/removed/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersRemovedRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nUsersRemovedRoute = GeneralReportRoute.extend({\n    flags: Ember.inject.service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        if (\n            !this.get('flags').test('form-report-users') &&\n            !this.get('flags').test('ember-movenium-form-report-users')\n        ) {\n            params = this._super(params);\n            params.sideload = true;\n            return this.store.query('user', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('users.removed').set('qParams', params);\n        }\n    },\n});\n\nexport default UsersRemovedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"b5NM0JSD\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"tableAction\\\",\\\"more\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"settings\\\",\\\"showStatus\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"users.report.removed_users\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-users\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showRemoved\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@filterChangeAction\\\",\\\"@localStorageKey\\\"],[\\\"user\\\",true,[22,\\\"qParams\\\"],\\\"q,employer\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null],\\\"removed_user\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,5,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,8,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"form-report-users\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"collector/form-report\\\",[],[[\\\"@form\\\",\\\"@showRemoved\\\",\\\"@filterByValues\\\"],[\\\"user\\\",true,[22,\\\"qParams\\\"]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"filters\\\"]],[],[[\\\"@showColumns\\\",\\\"@filterChangeAction\\\"],[\\\"q,employer\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"more\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"qrCode\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"inlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"pdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"columnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"exportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"rowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"no-content\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"user\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",\\\"user\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/removed/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nUsersRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default UsersRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/saldocalendar/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditSaldoController;\n\nimport Ember from 'ember';\n\nconst { get, set } = Ember;\n\nUsersEditSaldoController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    queryParams: ['date', 'user', 'employer'],\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    user: null,\n    form: 'worktime',\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'date',\n                type: 'date',\n                form: 'worktime',\n                name: 'date',\n                value: this.get('date'),\n            }),\n            Em.Object.create(\n                {\n                    field: 'employer',\n                    type: 'database',\n                    form: 'user',\n                    name: 'employer',\n                },\n                {\n                    singleselect: true,\n                },\n            ),\n            Em.Object.create(\n                {\n                    field: 'user',\n                    type: 'database',\n                    form: 'worktime',\n                    name: 'user',\n                },\n                {\n                    singleselect: true,\n                },\n            ),\n        ]);\n    }),\n    saldos: Ember.computed.alias('model.list'),\n    currentSaldo: Ember.computed.alias('model.currentSaldo'),\n    modalTitle: Ember.computed('showDate', function () {\n        return moment(this.get('showDate')).format('dd L');\n    }),\n    observeFilters: Ember.observer('filters.@each.value', function () {\n        return this.get('filters').forEach((item) => {\n            return this.set(item.name, item.value);\n        });\n    }),\n    insightsData: Ember.computed('showDate', function () {\n        return this.get('Collector').ttapi({\n            url: 'saldo/insight?date=' + this.get('showDate') + '&user=' + this.get('model.user'),\n        });\n    }),\n    actions: {\n        dayClicked: function (date) {\n            if (this.get('model.list.' + date + '.saldo') !== 'not_started') {\n                return this.set('showDate', date);\n            }\n        },\n        closeModal: function () {\n            return this.set('showDate', null);\n        },\n    },\n});\n\nexport default UsersEditSaldoController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/saldocalendar/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditSaldoRoute;\n\nimport Ember from 'ember';\n\nUsersEditSaldoRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var enddate, promise, startdate, user;\n        if (!Ember.get(params, 'user') || !Ember.get(params, 'date')) {\n            return null;\n        }\n        user = Ember.get(params, 'user');\n        startdate = Ember.get(params, 'date').split('_')[0];\n        enddate = Ember.get(params, 'date').split('_')[1];\n        promise = new Ember.RSVP.Promise((resolve) => {\n            return this.get('Collector')\n                .ttapi({\n                    url: 'saldo/get_saldo?userid=' + user,\n                })\n                .then((back) => {\n                    return resolve({\n                        value: back['saldo'] / 60,\n                        from: back['from'],\n                        to: back['to'],\n                    });\n                });\n        });\n        return promise.then((currentSaldo) => {\n            return Ember.RSVP.hash({\n                currentSaldo: currentSaldo,\n                list: this.get('Collector').ttapi({\n                    url:\n                        'saldo/get_saldo_list?startdate=' +\n                        startdate +\n                        '&enddate=' +\n                        enddate +\n                        '&userid=' +\n                        user,\n                }),\n                user: user,\n                saldo_settings: this.get('Collector').ttapi({\n                    url: 'saldo/saldoSettings?userid=' + user,\n                }),\n            });\n        });\n    },\n    actions: {\n        refreshModel: function () {\n            return this.refresh();\n        },\n    },\n});\n\nexport default UsersEditSaldoRoute;\n","export default Ember.HTMLBars.template({\"id\":\"cbfYNB+A\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\",\\\"index\\\",\\\"specialDay\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\"],[[24,[\\\"filters\\\"]],\\\"worktime\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"user\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[8],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.usersaldo\\\"],null],false],[0,\\\":\\\\n        \\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"currentSaldo\\\",\\\"value\\\"]]],null],false],[0,\\\" (\\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"currentSaldo\\\",\\\"from\\\"]],\\\"L\\\"],null],false],[0,\\\"-\\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"currentSaldo\\\",\\\"to\\\"]],\\\"L\\\"],null],false],[0,\\\")\\\\n    \\\"],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"calendar-report\\\",null,[[\\\"hideDateRangePicker\\\",\\\"date\\\"],[true,[24,[\\\"date\\\"]]]],{\\\"statements\\\":[[4,\\\"calendar-report-day\\\",null,[[\\\"dateNonBlock\\\",\\\"day\\\",\\\"specialDay\\\"],[true,[23,1,[]],[23,3,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"saldos\\\"]],[23,1,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"users/edit/saldo/calendar-card\\\",null,[[\\\"saldo\\\",\\\"click\\\",\\\"saldo_settings\\\"],[[28,\\\"get\\\",[[24,[\\\"saldos\\\"]],[23,1,[]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"dayClicked\\\",[23,1,[]]],null],[24,[\\\"model\\\",\\\"saldo_settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2,3]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.select_user\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"showDate\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"modalTitle\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"saldo-insights\\\",[],[[\\\"@date\\\",\\\"@saldo\\\",\\\"@user\\\",\\\"@data\\\",\\\"@workday_list\\\",\\\"@saldo_settings\\\"],[[22,\\\"showDate\\\"],[28,\\\"get\\\",[[24,[\\\"saldos\\\"]],[24,[\\\"showDate\\\"]]],null],[24,[\\\"model\\\",\\\"user\\\"]],[23,0,[\\\"insightsData\\\"]],[24,[\\\"model\\\",\\\"list\\\"]],[24,[\\\"model\\\",\\\"saldo_settings\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/saldocalendar/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/saldohistory/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSaldohistoryController;\n\nimport Ember from 'ember';\n\nUsersSaldohistoryController = Ember.Controller.extend({\n    queryParams: ['date', 'user', 'employer'],\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'employer',\n                type: 'database',\n                form: 'user',\n                name: 'employer',\n                singleselect: true,\n            }),\n            Em.Object.create({\n                field: 'user',\n                type: 'database',\n                form: 'worktime',\n                name: 'user',\n                singleselect: true,\n            }),\n            Em.Object.create({\n                field: 'date',\n                type: 'date',\n                form: 'worktime',\n                name: 'date',\n            }),\n        ]);\n    }),\n    mappedFilters: Em.computed('filters.@each.value', function () {\n        var arr;\n        arr = [];\n        this.get('filters').forEach((filter) => {\n            if (filter.get('field') === 'employer') {\n                if (!this.get('filters').findBy('name', 'user').get('value')) {\n                    return arr.push({\n                        name: 'user.employer',\n                        value: filter.get('value'),\n                    });\n                }\n            } else {\n                return arr.push({\n                    name: filter.get('name'),\n                    value: filter.get('value'),\n                });\n            }\n        });\n        return arr;\n    }),\n    rowActions: [\n        {\n            action: 'rowHistory',\n            icon: 'move move-Search',\n        },\n        {\n            action: 'removeRow',\n            icon: 'move move-Delete',\n        },\n    ],\n});\n\nexport default UsersSaldohistoryController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/saldohistory/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSaldohistoryRoute;\n\nimport Ember from 'ember';\n\nUsersSaldohistoryRoute = Ember.Route.extend();\n\nexport default UsersSaldohistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"9FCqamL5\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"Report\\\",\\\"Table\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-users\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showFilters\\\",\\\"@additional\\\",\\\"@useMultiFilter\\\"],[\\\"saldodeducter\\\",\\\"date,user\\\",\\\"user.employer\\\",false]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"Table\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"history,remove\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"form-report-users\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"collector/form-report\\\",[],[[\\\"@form\\\"],[\\\"saldodeducter\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"filters\\\"]],[],[[\\\"@showColumns\\\",\\\"@additional\\\",\\\"@useMultiFilter\\\"],[\\\"user,date\\\",\\\"user.employer\\\",false]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"table\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"rowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"history,remove\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"no-content\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterChanged\\\"],[[24,[\\\"filters\\\"]],\\\"user\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row report-main-content\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"form\\\",\\\"rowActions\\\",\\\"query\\\",\\\"hideSumRow\\\"],[\\\"saldodeducter\\\",[24,[\\\"rowActions\\\"]],[24,[\\\"mappedFilters\\\"]],true]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/saldohistory/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/saldos/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSaldosController;\n\nimport Ember from 'ember';\n\nimport pdfExport from '../../../mixins/pdf-export';\n\nimport csvExport from '../../../mixins/csv-export';\n\nimport config from '../../../config/environment';\n\nimport { alias } from '@ember/object/computed';\n\nimport { computed } from '@ember/object';\n\nimport { Promise } from 'rsvp';\n\nconst { get, set } = Ember;\n\nUsersSaldosController = Ember.Controller.extend(pdfExport, csvExport, {\n    content: alias('model'),\n    queryParams: [\n        'page',\n        'all_users',\n        'employer',\n        'user',\n        'group',\n        'worktimegroup',\n        'superior',\n        'userlevel',\n        'date',\n    ],\n    all_users: true,\n    values: {},\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    fileExports: Ember.inject.service(),\n    filters: Em.computed(function () {\n        var ref;\n        return Em.A([\n            Em.Object.create({\n                field: 'date',\n                type: 'date',\n                form: 'worktime',\n                name: 'date',\n                defaultValue: null,\n                value: this.date,\n            }),\n            Em.Object.create({\n                field: 'employer',\n                type: 'database',\n                form: 'user',\n                name: 'employer',\n                value: this.employer,\n            }),\n            Em.Object.create({\n                field: 'worktimegroup',\n                type: 'database',\n                form: 'user',\n                name: 'worktimegroup',\n                value: this.worktimegroup,\n            }),\n            Em.Object.create({\n                field: 'user',\n                type: 'database',\n                form: 'worktime',\n                name: 'user',\n                value: this.user,\n            }),\n            Em.Object.create({\n                field: 'group',\n                type: 'database',\n                form: 'user',\n                name: 'group',\n                value: this.group,\n            }),\n            Em.Object.create({\n                field: 'superior',\n                type: 'database',\n                form: 'user',\n                name: 'superior',\n                value: this.superior,\n            }),\n            Em.Object.create({\n                field: 'userlevel',\n                form: 'user',\n                type: 'dropdown_userlevel',\n                options:\n                    (ref = this.Collector.field('user', 'userlevel')) != null\n                        ? ref.options\n                        : void 0,\n                prompt: 'user.all_userlevels',\n                value: this.userlevel,\n            }),\n        ]);\n    }),\n    //form: \"user\"\n    translations: {\n        twentyfive: 25,\n        fifty: 50,\n        hundred: 100,\n    },\n    yesterday: computed(function () {\n        return moment().subtract(1, 'day').format('YYYY-MM-DD');\n    }),\n    dateField: computed(function () {\n        var field;\n        field = this.get('Collector').field('saldodeducter', 'date');\n        field.value = this.get('yesterday');\n        return field;\n    }),\n    columnList: ['lastname', 'firstname', 'saldostart', 'saldo'],\n    translated_columns: Em.computed(function () {\n        return [\n            this.get('intl').t('report.user.lastname'),\n            this.get('intl').t('report.user.firstname'),\n            this.get('intl').t('saldo.calculation_start'),\n            this.get('intl').t('report.saldo.columns.saldo'),\n        ];\n    }),\n    allUserRows: Ember.computed('model.[]', 'saldos.[]', function () {\n        return this.get('model.users').map((user) => {\n            var saldostart;\n            if (\n                get(user, 'saldos.user_startdate') &&\n                get(user, 'saldos.user_startdate') > get(user, 'saldos.startdate')\n            ) {\n                saldostart = moment(get(user, 'saldos.user_startdate')).format('L');\n            } else {\n                saldostart = moment(get(user, 'saldos.startdate')).format('L');\n            }\n            if (!get(user, 'saldos')) {\n                return {\n                    userid: get(user, 'id'),\n                    firstname: get(user, 'firstname'),\n                    lastname: get(user, 'lastname'),\n                    saldo: this.get('intl').t('saldos.no_calculations_yet'),\n                    saldostart: this.get('intl').t('saldos.no_calculations_yet'),\n                };\n            }\n            return {\n                userid: get(user, 'id'),\n                firstname: get(user, 'firstname'),\n                lastname: get(user, 'lastname'),\n                saldostart: saldostart,\n                saldo: this.formatHours(get(user, 'saldos.saldo') / 60),\n                unformattedSaldo: get(user, 'saldos.saldo'),\n            };\n        });\n    }),\n    outOffLimitsUserRows: Ember.computed('model.[]', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                var userids;\n                // Get all userids from the model\n                userids = this.get('model.users').map(function (row) {\n                    if (row.saldos) {\n                        return get(row.saldos, 'userid');\n                    }\n                });\n\n                // Filter out any undefined or null userids\n                userids = userids.filter(function (row) {\n                    if (row) {\n                        return true;\n                    } else {\n                        return false;\n                    }\n                });\n\n                // If no userids, resolve with an empty array\n                if (userids.length < 1) {\n                    resolve({\n                        value: [],\n                    });\n                    return;\n                }\n\n                // Filter users based on the userids\n                let users = this.get('model.users');\n                users = users.filter((user) => {\n                    return userids.includes(get(user, \"saldos.userid\"))\n                });\n                \n                var filtered_users, rows;\n                // Filter users by status 'normal'\n                filtered_users = users.filterBy('row_info.status', 'normal');\n                // Generate rows from filtered users\n                rows = filtered_users.map((user) => {\n                    var model_user, saldostart;\n                    model_user = this.get('model.users').findBy(\n                        'saldos.userid',\n                        get(user, 'id'),\n                    );\n                    model_user = model_user.saldos;\n                    if (model_user['user_startdate']) {\n                        saldostart = moment(model_user['user_startdate']).format('L');\n                    } else {\n                        saldostart = moment(model_user['startdate']).format('L');\n                    }\n                    return {\n                        firstname: get(user, 'firstname'),\n                        lastname: get(user, 'lastname'),\n                        saldostart: saldostart,\n                        saldo: this.formatHours(model_user['saldo'] / 60),\n                        unformattedSaldo: model_user['saldo'] / 60,\n                    };\n                });\n                rows.sortBy('lastname');\n                return resolve({\n                        value: rows?.length > 0 ? rows : [],\n                });\n            }),\n        });\n    }),\n    getSaldoFor: function (userid) {\n        var saldos, saldostart;\n        saldos = this.get('saldos');\n        if (saldos.get('value')) {\n            saldos = saldos.get('value').findBy('userid', userid);\n            if (saldos) {\n                if (saldos.user_startdate && saldos.user_startdate > saldos.startdate) {\n                    saldostart = moment(saldos.user_startdate).format('L');\n                } else {\n                    saldostart = moment(saldos.startdate).format('L');\n                }\n                return {\n                    saldo: this.formatHours(saldos.saldo / 60),\n                    saldostart: saldostart,\n                    unformattedSaldo: saldos.saldo / 60,\n                };\n            } else {\n                return {\n                    saldo: this.get('intl').t('saldos.no_calculations_yet'),\n                    saldostart: this.get('intl').t('saldos.no_calculations_yet'),\n                };\n            }\n        } else {\n            return '';\n        }\n    },\n    formatHours: function (hours) {\n        var minutes, negative;\n        if (hours < 0) {\n            hours = hours * -1;\n            negative = true;\n        } else {\n            negative = false;\n        }\n        minutes = Math.round((hours - Math.floor(hours)) * 60);\n        return (\n            (negative ? '-' : '') +\n            Math.floor(hours) +\n            ':' +\n            (minutes < 10 ? '0' : '') +\n            minutes +\n            'h'\n        );\n    },\n    saldos: Ember.computed('model.[]', 'date', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                var enddate, startdate, url, userids;\n                userids = this.get('model').map(function (user) {\n                    return get(user, 'id');\n                });\n                userids = userids.filter(function (row) {\n                    if (row) {\n                        return true;\n                    } else {\n                        return false;\n                    }\n                });\n                if (userids.length < 1) {\n                    resolve({\n                        value: [],\n                    });\n                    return;\n                }\n                url = 'saldo/get_multiple_saldos?userids=' + userids.join(',');\n                if (this.get('date')) {\n                    startdate = this.get('date').split('_')[0];\n                    enddate = this.get('date').split('_')[1];\n                    url += '&startdate=' + startdate + '&enddate=' + enddate;\n                }\n                return this.get('Collector')\n                    .ttapi({\n                        url: url,\n                    })\n                    .then((back) => {\n                        return resolve({\n                            value: back,\n                        });\n                    });\n            }),\n        });\n    }),\n    pageCount: Ember.computed('content.count', function () {\n        var limit;\n        limit = this.get('limit') ? this.get('limit') : 25;\n        return Math.ceil(this.get('content.count') / limit);\n    }),\n    observeFilters: Ember.observer('filters.@each.value', function () {\n        return this.get('filters').forEach((item) => {\n            return this.set(item.name, item.value);\n        });\n    }),\n    make_pdf_export: function (data) {\n        var element, intl;\n        intl = this.get('intl');\n        element = this.createPdfTableElement(\n            this.get('columnList'),\n            data,\n            this.get('translated_columns'),\n        );\n        return this.createPdfFromElements([element], 'download', '', 16).then((file) => {\n            if (typeof cordova !== 'undefined' && cordova !== null) {\n                return this.get('cordova').openFile(file, 'application/pdf');\n            }\n        });\n    },\n    make_csv_export: function (data) {\n        var element;\n        element = this.createCsvElement(\n            this.get('columnList'),\n            data,\n            this.get('translated_columns'),\n        );\n        return this.createCsvFromElements(element);\n    },\n    make_excel_export: function (data) {\n        var excelHeaders;\n        excelHeaders = [];\n        this.get('translated_columns').forEach((col, index) => {\n            return excelHeaders.pushObject({\n                name: col,\n                key: this.get('columnList')[index],\n            });\n        });\n        return this.get('fileExports').createExcelFromJSON({\n            rows: data,\n            columns: excelHeaders,\n        });\n    },\n    checkedRows: computed('allUserRows.@each.checkedClass', function () {\n        return this.get('allUserRows').filterBy('checkedClass', 'checked');\n    }),\n    get_rows_to_export: function () {\n        return new Ember.RSVP.Promise((resolve) => {\n            var checked_data, data, use_checked_rows;\n            if (this.get('all_users')) {\n                data = this.get('allUserRows');\n            } else {\n                data = this.get('outOffLimitsUserRows.value');\n            }\n            use_checked_rows = false;\n            checked_data = Em.A([]);\n            data.forEach((row) => {\n                if (row.checkedClass === 'checked') {\n                    use_checked_rows = true;\n                    return checked_data.push(row);\n                }\n            });\n            if (use_checked_rows) {\n                return resolve(checked_data);\n            } else {\n                if (this.get('all_users')) {\n                    return this.get_all_users_with_saldos().then((data) => {\n                        return resolve(data);\n                    });\n                } else {\n                    return resolve(data);\n                }\n            }\n        });\n    },\n    // fetches data 100 entries at a time\n    get_all_users_with_saldos: function () {\n        return new Ember.RSVP.Promise((resolve) => {\n            var dataArray, fetchPage, page, params;\n            dataArray = [];\n            page = 0;\n            params = this.getQueryParamsForExport();\n            fetchPage = () => {\n                params.offset = page * 100;\n                return this.ttapi\n                    .request('saldo/usersWithSaldos', {\n                        data: params,\n                    })\n                    .then((data) => {\n                        dataArray = dataArray.concat(data.users);\n                        if (dataArray.length < data.count) {\n                            page++;\n                            return fetchPage();\n                        } else {\n                            dataArray = dataArray.map((el) => {\n                                var ret, saldostart, unformattedSaldo;\n                                if (el.saldos) {\n                                    saldostart = el.saldos.startdate;\n                                    unformattedSaldo = this.formatHours(el.saldos.saldo / 60);\n                                } else {\n                                    saldostart = this.get('intl').t('saldos.no_calculations_yet');\n                                    unformattedSaldo = this.get('intl').t(\n                                        'saldos.no_calculations_yet',\n                                    );\n                                }\n                                ret = {\n                                    firstname: el.firstname,\n                                    lastname: el.lastname,\n                                    saldostart: saldostart,\n                                    saldo: unformattedSaldo,\n                                };\n                                return ret;\n                            });\n                            return resolve(dataArray);\n                        }\n                    });\n            };\n            return fetchPage();\n        });\n    },\n    getQueryParamsForExport: function () {\n        var params;\n        params = {\n            limit: 100,\n            order: 'lastname',\n        };\n        if (this.user) {\n            params.id = this.user;\n        }\n        if (this.employer) {\n            params.employer = this.employer;\n        }\n        if (this.group) {\n            params.group = this.group;\n        }\n        if (this.worktimegroup) {\n            params.worktimegroup = this.worktimegroup;\n        }\n        if (this.superior) {\n            params.superior = this.superior;\n        }\n        if (this.userlevel) {\n            params.userlevel = this.userlevel;\n        }\n        if (this.date) {\n            params.startdate = this.date.split('_')[0];\n            params.enddate = this.date.split('_')[1];\n        }\n        return params;\n    },\n    actions: {\n        moreInfo: function () {\n            if (config.brand === 'otta') {\n                return window.open(\n                    'https://ohjeet.visma.fi/articles/#!otta/saldojen-seuranta',\n                    '_blank',\n                );\n            } else {\n                return window.open(\n                    'https://ohjeet.visma.fi/articles/#!visma-movenium/saldojen-seuranta',\n                    '_blank',\n                );\n            }\n        },\n        catchActions: function (action, params) {\n            return this.send(action, params);\n        },\n        all_users: function (is_on) {\n            this.set('all_users', is_on);\n            return false;\n        },\n        showSaldodeducter: function (type) {\n            this.set('modalHeader', type ? 'saldo.add_saldo_adder' : 'saldo.add_saldo_deduction');\n            this.set('showSaldodeducterType', type);\n            this.set('showSaldodeducter', true);\n            return false;\n        },\n        hideSaldodeducter: function () {\n            this.set('showSaldodeducter', false);\n            return false;\n        },\n        hideandreload: function () {\n            this.set('showSaldodeducter', false);\n            this.send('refreshModel');\n            return false;\n        },\n        changeValue: function (value, field) {\n            return this.set('values.' + field, value);\n        },\n        superMultiSaver: async function () {\n            this.set('saving', true);\n            const allUserRows = this.get('allUserRows');\n            for (const row of allUserRows) {\n                if (row.checkedClass === 'checked') {\n                    let user = this.get('store').peekRecord('user', row.userid);\n                    // first check if user has been loaded to store\n                    if (!user) {\n                        // if not, load user from server\n                        user = await this.get('store').findRecord('user', row.userid);\n                    }\n\n                    await this.get('store')\n                        .createRecord('saldodeducter', {\n                            hours: this.get('values.hours'),\n                            user: user,\n                            description: this.get('values.description'),\n                            date: this.get('values.date')\n                                ? this.get('values.date')\n                                : this.get('yesterday'),\n                            addhours: this.get('showSaldodeducterType'),\n                        })\n                        .save();\n                }\n            }\n            this.set('saving', false);\n            return this.send('hideandreload');\n        },\n        filterChanged: function (value, fieldName) {\n            if (fieldName === 'employer') {\n                if (value == null) {\n                    return this.set('employer', '');\n                } else {\n                    return this.set('employer', value.id);\n                }\n            } else if (fieldName === 'user') {\n                if (value == null) {\n                    return this.set('user', '');\n                } else {\n                    return this.set('user', value.id);\n                }\n            }\n        },\n        export_pdf: function () {\n            return this.get_rows_to_export().then((data) => {\n                return this.make_pdf_export(data);\n            });\n        },\n        export_csv: function (data) {\n            return this.get_rows_to_export().then((data) => {\n                return this.make_csv_export(data);\n            });\n        },\n        export_excel: function (data) {\n            return this.get_rows_to_export().then((data) => {\n                return this.make_excel_export(data);\n            });\n        },\n        setRowsPerPage: function (limit) {\n            this.set('page', 1);\n            this.set('limit', limit);\n            return this.get('localStorageWrapper').setUserSetting('saldo_defaultLimit', limit);\n        },\n    },\n});\n\nexport default UsersSaldosController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/saldos/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSaldosRoute;\n\nimport Ember from 'ember';\n\nUsersSaldosRoute = Ember.Route.extend({\n    localStorageWrapper: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        all_users: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        limit: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n        worktimegroup: {\n            refreshModel: true,\n        },\n        superior: {\n            refreshModel: true,\n        },\n        userlevel: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var defaultLimit, offset, param, param_value, qparams, rowsPerPage;\n        for (param in params) {\n            param_value = params[param];\n            if (param_value === null || param_value === 'null' || param_value === 'undefined') {\n                delete params[param];\n            }\n        }\n        if (params.limit > 100) {\n            params.limit = 100;\n        } else if (!params.limit) {\n            defaultLimit = this.get('localStorageWrapper').getUserSetting('saldo_defaultLimit');\n            if (Ember.isPresent(defaultLimit)) {\n                params.limit = defaultLimit;\n            } else {\n                params.limit = 25;\n            }\n        }\n        rowsPerPage = params.limit;\n        offset = params.page != null ? (params.page - 1) * rowsPerPage : 0;\n\n        qparams = {\n            offset: offset,\n            limit: rowsPerPage,\n            order: 'lastname',\n        };\n        if (params.user) {\n            qparams.id = params.user;\n        }\n        if (params.employer) {\n            qparams.employer = params.employer;\n        }\n        if (params.group) {\n            qparams.group = params.group;\n        }\n        if (params.worktimegroup) {\n            qparams.worktimegroup = params.worktimegroup;\n        }\n        if (params.superior) {\n            qparams.superior = params.superior;\n        }\n        if (params.userlevel) {\n            qparams.userlevel = params.userlevel;\n        }\n        if (params.date) {\n            qparams.startdate = params.date.split('_')[0];\n            qparams.enddate = params.date.split('_')[1];\n        }\n        if (params.all_users === false) {\n            qparams.use_limits = true;\n        }\n        //@store.query 'user', qparams\n        return this.ttapi.request('saldo/usersWithSaldos', {\n            data: qparams,\n        });\n    },\n    setupController: function (controller, model) {\n        var defaultLimit;\n        this._super(controller, model);\n        defaultLimit = this.get('localStorageWrapper').getUserSetting('saldo_defaultLimit');\n        if (Ember.isPresent(defaultLimit)) {\n            return controller.set('limit', defaultLimit);\n        }\n    },\n    actions: {\n        refreshModel: function () {\n            return this.refresh();\n        },\n    },\n});\n\nexport default UsersSaldosRoute;\n","export default Ember.HTMLBars.template({\"id\":\"4RzvegnL\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\"],[[24,[\\\"filters\\\"]],\\\"user\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row buttonsRow\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[10,\\\"role\\\",\\\"group\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-default \\\",[28,\\\"if\\\",[[24,[\\\"all_users\\\"]],\\\"btn-primary\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"all_users\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"saldo.list.all_users\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-default \\\",[28,\\\"unless\\\",[[24,[\\\"all_users\\\"]],\\\"btn-primary\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"all_users\\\",false]],[8],[1,[28,\\\"t\\\",[\\\"saldo.list.users_out_of_limits\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"company_info\\\",\\\"country\\\"]],\\\"fi\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"moreInfo\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moreInfo\\\"]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"info-button-md\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"infoText hidden-xs\\\"],[8],[1,[28,\\\"t\\\",[\\\"saldo.more_info_link\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row moreButtonsRow\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 saldoDeducterButtons\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"saldodeducter@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showSaldodeducter\\\",false]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"saldo.add_saldo_deduction\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showSaldodeducter\\\",true]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"saldo.add_saldo_adder\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 text-right\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more display-menu\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"saldo-page-limit\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.columns.limit\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"unless\\\",[[24,[\\\"limit\\\"]],\\\"selected-limit\\\"],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"is-almost-equal\\\",[[24,[\\\"limit\\\"]],\\\"25\\\",true],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",25]],[8],[1,[24,[\\\"translations\\\",\\\"twentyfive\\\"]],false],[9],[0,\\\" |\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"if\\\",[[28,\\\"is-almost-equal\\\",[[24,[\\\"limit\\\"]],\\\"50\\\",true],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",50]],[8],[1,[24,[\\\"translations\\\",\\\"fifty\\\"]],false],[9],[0,\\\" |\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"if\\\",[[28,\\\"is-almost-equal\\\",[[24,[\\\"limit\\\"]],\\\"100\\\",true],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",100]],[8],[1,[24,[\\\"translations\\\",\\\"hundred\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_csv\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_csv\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_excel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_excel\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\" row report-main-content\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"all_users\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"checkable\\\",\\\"hideSort\\\"],[[24,[\\\"columnList\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"allUserRows\\\"]],true,true]]],false],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"checkable\\\",\\\"hideSort\\\"],[[24,[\\\"columnList\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"outOffLimitsUserRows\\\",\\\"value\\\"]],true,true]]],false],[0,\\\"\\\\n        \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSaldodeducter\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[[24,[\\\"modalHeader\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"hideSaldodeducter\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"checkedRows\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"dateField\\\"]]],[[\\\"change\\\"],[\\\"changeValue\\\"]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"saldodeducter.hours\\\"],[[\\\"change\\\"],[\\\"changeValue\\\"]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"saldodeducter.description\\\"],[[\\\"change\\\"],[\\\"changeValue\\\"]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"strong\\\",true],[8],[1,[24,[\\\"checkedRows\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.users_selected\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row record-comp-buttons\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"superMultiSaver\\\",true]],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"hideSaldodeducter\\\"]],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"             \\\"],[1,[28,\\\"users/edit/saldo/saldo-deducter\\\",null,[[\\\"adding\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"showSaldodeducterType\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"hideandreload\\\"],null],\\\"hideSaldodeducter\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/saldos/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"WvLNwNRw\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"promo-ad\\\",[],[[\\\"@background\\\",\\\"@promoClass\\\",\\\"@product\\\",\\\"@buttonText\\\",\\\"@transitionTarget\\\"],[\\\"saldos\\\",\\\"left-align\\\",\\\"saldo\\\",\\\"ads.activate-saldos\\\",\\\"users.saldos\\\"]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/saldos_ad/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/saved/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSavedController;\n\nimport Ember from 'ember';\n\nimport savedController from '../../../controllers/saved';\n\nimport config from '../../../config/environment';\n\nUsersSavedController = savedController.extend({\n    intl: Ember.inject.service(),\n    //    needs: 'orientations/add'\n    orientationAddController: Ember.inject.controller('orientations/add'),\n    hideAddSame: true,\n    showAddOrientation: Ember.computed(function () {\n        return this.Collector.formExists('orientation');\n    }),\n    email: null,\n    email_send_status: null,\n    email_sent: false,\n    email_error: false,\n    phone_error: false,\n    sms_send_status: null,\n    sms_sent: false,\n    reset: function () {\n        this.set('sms_sent', false);\n        return this.set('email_sent', false);\n    },\n    actions: {\n        addOrientation: function () {\n            var controller, user;\n            user = this.get('model.id');\n            controller = this.get('orientationAddController');\n            controller.set('users', Em.A([parseInt(user, 10)]));\n            return this.transitionToRoute('orientations.add');\n        },\n        send_sms: function () {\n            var model, phone, promise, self;\n            model = this.get('model');\n            phone = model.get('phone');\n            if (!/^[+]?[0-9]{10,20}$/i.test(phone)) {\n                this.set('phone_error', this.get('intl').t('field.error.phone'));\n                return;\n            }\n            if (!/^[+]/i.test(phone)) {\n                this.set('phone_error', this.get('intl').t('field.error.country_code'));\n                return;\n            }\n            this.set('phone_error', false);\n            if (model.get('isDirty')) {\n                model.save();\n            }\n            this.set('sms_sent', true);\n            this.set('sms_send_status', this.get('intl').t('general.sending'));\n            self = this;\n            promise = this.Collector.ttapi({\n                url: 'sendSms',\n                data: {\n                    phone: model.get('phone'),\n                    messageid: 'new_user_added',\n                    values: {\n                        userid: model.get('id'),\n                        product: config.brand === 'otta' ? 'Otta' : 'Visma Movenium',\n                    },\n                    language: moment.locale(),\n                },\n                method: 'post',\n            });\n            return promise.then(\n                function (ret) {\n                    return self.set(\n                        'sms_send_status',\n                        self.get('intl').t('users.credentials_sent'),\n                    );\n                },\n                function (ret) {\n                    return self.set('sms_send_status', 'ERROR: ' + ret);\n                },\n            );\n        },\n        sendEmail: function () {\n            var content, email, model, promise;\n            model = this.get('model');\n            email = model.get('email');\n            if (\n                !/^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i.test(\n                    email,\n                )\n            ) {\n                this.set('email_error', this.get('intl').t('field.error.email'));\n                return;\n            }\n            this.set('email_error', false);\n            if (model.get('isDirty')) {\n                model.save();\n            }\n            this.set('email_sent', true);\n            this.set('email_send_status', this.get('intl').t('general.sending'));\n            content =\n                this.get('intl').t('user.action.email.email_content', {\n                    url: window.location.origin,\n                }) +\n                '<br><br>' +\n                this.get('intl').t('user.action.email.email_username') +\n                ': ' +\n                model.get('username') +\n                '<br>' +\n                this.get('intl').t('user.action.email.email_password') +\n                ': ' +\n                model.get('password') +\n                '<br>';\n            promise = this.Collector.ttapi({\n                url: 'sendEmail',\n                data: {\n                    email: email,\n                    title:\n                        this.get('session.currentUser.company') +\n                        ' - ' +\n                        this.get('intl').t('user.action.email.email_title'),\n                    content: content.replace(/<br ?\\/?>/g, '\\n'),\n                },\n                method: 'post',\n            });\n            return promise.then(() => {\n                return this.set('email_send_status', this.get('intl').t('users.credentials_sent'));\n            });\n        },\n    },\n});\n\nexport default UsersSavedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/saved/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSavedRoute;\n\nimport Ember from 'ember';\n\nimport SavedRoute from '../../../routes/saved';\n\nUsersSavedRoute = SavedRoute.extend({\n    templateName: 'users.saved',\n    actions: {\n        didTransition: function () {\n            var controller;\n            controller = this.get('controller');\n            if (!controller) {\n                return;\n            }\n            return controller.reset();\n        },\n    },\n});\n\nexport default UsersSavedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"uLauEAyY\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/saved\\\",[]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=4,5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n            \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"button\\\",\\\"btn btn-m-link btn-lg btn-block\\\",\\\"users.edit.permissions\\\",[24,[\\\"model\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"users.saved.add_restrictions\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddOrientation\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-lg btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addOrientation\\\"]],[8],[1,[28,\\\"t\\\",[\\\"orientations.add_to_user\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"email_sent\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-8\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[24,[\\\"email_error\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"users.send_email\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"email_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[22,\\\"email_error\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"placeholder\\\"],[\\\"text\\\",\\\"form-control\\\",[24,[\\\"model\\\",\\\"email\\\"]],\\\"Type E-mail address\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"email_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"type\\\",\\\"submit\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendEmail\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.send_sms\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"email_send_status\\\"],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"sms_sent\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-8\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[24,[\\\"phone_error\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"users.send_sms\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"phone_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[22,\\\"phone_error\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"placeholder\\\"],[\\\"text\\\",\\\"form-control\\\",[24,[\\\"model\\\",\\\"phone\\\"]],\\\"Type phone number\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"phone_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"type\\\",\\\"submit\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send_sms\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.send_sms\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"sms_send_status\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/users/saved/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/subcontractor/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSubcontractorController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport pdfExport from '../../../mixins/pdf-export';\n\nUsersSubcontractorController = GeneralReportController.extend(pdfExport, {\n    Collector: Ember.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    queryParams: ['project', 'page', 'employer'],\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n                type: 'database',\n                form: this.get('Collector').testNeedsOne('worktime.project')\n                    ? 'worktime'\n                    : 'presence',\n                name: 'project',\n            }),\n            Em.Object.create({\n                field: 'employer',\n                type: 'database',\n                form: 'user',\n                name: 'employer',\n            }),\n            Em.Object.create({\n                field: 'date',\n                type: 'date',\n                form: this.get('Collector').testNeedsOne('worktime.project')\n                    ? 'worktime'\n                    : 'presence',\n                name: 'date',\n            }),\n        ]);\n    }),\n    limit: 25,\n    page: 1,\n    editingRow: null,\n    project: [],\n    employer: [],\n    date:\n        moment().startOf('month').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('month').format('YYYY-MM-DD'),\n    showColumns: [\n        'firstname',\n        'lastname',\n        'birthdate',\n        'taxnumber',\n        'employer',\n        'startdate',\n        'enddate',\n        'sent_contact_person',\n        'sent_contact_address',\n        'workpass',\n    ],\n    rowActions: Ember.computed('intl', function () {\n        var arr;\n        arr = [\n            {\n                action: 'removeRow',\n                icon: 'move move-Delete',\n                text: this.get('intl').t('report.delete_rows'),\n            },\n            {\n                action: 'editRow',\n                icon: 'move move-Pencil',\n                text: this.get('intl').t('report.edit_rows'),\n            },\n        ];\n        return arr;\n    }),\n    init_functions: function () {\n        return this._super();\n    },\n    asPdfElement: Ember.computed('model', function () {\n        var params;\n        params = {};\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var data, filter, i, len, ref;\n            ref = this.get('filters');\n            for (i = 0, len = ref.length; i < len; i++) {\n                filter = ref[i];\n                if (filter.value) {\n                    params[filter.field] = filter.value;\n                }\n            }\n            data = this.get('Collector').ttapi({\n                url: 'subcontractor',\n                data: params,\n            });\n            return data.then((return_data) => {\n                var currentData;\n                if (return_data) {\n                    currentData = this.formatData(return_data);\n                    return resolve(\n                        this.createPdfTableElement(\n                            this.get('showColumns'),\n                            currentData,\n                            this.get('translated_columns'),\n                        ),\n                    );\n                } else {\n                    return resolve([]);\n                }\n            });\n        });\n    }),\n    // get translation for every column\n    translated_columns: Em.computed('showColumns', function () {\n        var c, columns, intl, translated_columns;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        columns = this.get('showColumns');\n        translated_columns = [];\n        $.each(columns, (key, item) => {\n            return translated_columns.push(intl.t('report.user.' + item));\n        });\n        return translated_columns;\n    }),\n    formatData: function (model) {\n        var formatted_rows;\n        if (!model) {\n            return;\n        }\n        formatted_rows = [];\n        model['worktimes'].forEach((row) => {\n            var tmp, tmpEmp, tmpuser, userData;\n            tmp = row;\n            tmpuser = model['users'].filterBy('id', tmp.user);\n            for (userData in tmpuser[0]) {\n                if (typeof tmpuser[0][userData] === 'boolean') {\n                    if (tmpuser[0][userData]) {\n                        tmpuser[0][userData] = this.get('intl').t('general.yes');\n                    } else {\n                        tmpuser[0][userData] = this.get('intl').t('general.no');\n                    }\n                }\n                if (userData !== 'id') {\n                    if (userData === 'birthdate') {\n                        Em.set(row, userData, moment(tmpuser[0][userData]).format('L'));\n                    } else {\n                        Em.set(row, userData, tmpuser[0][userData]);\n                    }\n                }\n            }\n            if (row.startdate) {\n                Em.set(row, 'startdate', moment(tmp.startdate).format('L'));\n            }\n            if (row.enddate) {\n                Em.set(row, 'enddate', moment(tmp.enddate).format('L'));\n            }\n            if (row.employer) {\n                tmpEmp = model['employers'].filterBy('id', tmp.employer);\n                if (tmpEmp[0]) {\n                    Em.set(row, 'employer', tmpEmp[0]['emp_id'] + ' ' + tmpEmp[0]['name']);\n                }\n            }\n            return formatted_rows.push(row);\n        });\n        return formatted_rows;\n    },\n    data: Em.computed('model', function () {\n        if (!this.get('model')) {\n            return;\n        }\n        return this.formatData(this.get('model'));\n    }),\n    pageCount: Ember.computed('model.count', function () {\n        return Math.ceil(this.get('model.count') / this.get('limit'));\n    }),\n    changeFormat: function (date) {\n        if (date.indexOf('/') > -1) {\n            return moment(date, 'MM/DD/YYYY').format('YYYY-MM-DD');\n        }\n        if (date.indexOf('.') > -1) {\n            return moment(date, 'DD.MM.YYYY').format('YYYY-MM-DD');\n        }\n        return date;\n    },\n    actions: {\n        catchActions: function (action, params) {\n            return this.send(action, params);\n        },\n        removeRow: function (obj) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    var promise;\n                    if (con) {\n                        promise = this.get('Collector').ttapi({\n                            method: 'post',\n                            data: {\n                                userid: obj.user,\n                                startdate: obj.startdate,\n                                enddate: obj.enddate,\n                                projectid: obj.project,\n                            },\n                            url: 'removeFirstWorkLog',\n                        });\n                        return promise.then((back) => {\n                            if (back.msg === 'ok') {\n                                return this.get('data').removeObject(obj);\n                            }\n                        });\n                    }\n                });\n        },\n        closeModal: function () {\n            return this.set('editingRow', null);\n        },\n        editRow: function (obj) {\n            var _enddate, _startdate, newDates;\n            _startdate = this.changeFormat(obj.startdate);\n            _enddate = this.changeFormat(obj.enddate);\n            newDates = {\n                startdate: _startdate,\n                enddate: _enddate,\n            };\n            this.set('editingRow', obj);\n            return this.set('editingRow.newDates', newDates);\n        },\n        newDates: function () {\n            var enddate, promise, startdate;\n            startdate = this.get('editingRow.newDates.startdate');\n            enddate = this.get('editingRow.newDates.enddate');\n            promise = this.get('Collector').ttapi({\n                method: 'post',\n                data: {\n                    userid: this.get('editingRow').user,\n                    newstartdate: startdate,\n                    newenddate: enddate,\n                    oldstartdate: this.changeFormat(this.get('editingRow').startdate),\n                    oldenddate: this.changeFormat(this.get('editingRow').enddate),\n                    projectid: this.get('editingRow').project,\n                },\n                url: 'editFirstWorkLog',\n            });\n            return promise.then((back) => {\n                this.set('editingRow.startdate', startdate);\n                this.set('editingRow.enddate', enddate);\n                return this.set('editingRow', null);\n            });\n        },\n        export_pdf: function () {\n            return this.get('asPdfElement').then((element) => {\n                var elements, pdf_filters_body;\n                elements = [element];\n                if (this.get('filters')) {\n                    pdf_filters_body = this.getPdfFilters(this.get('data'));\n                    if (pdf_filters_body.length > 0) {\n                        elements.unshift({\n                            table: {\n                                body: pdf_filters_body,\n                            },\n                            layout: 'noBorders',\n                        });\n                    }\n                }\n                return this.createPdfFromElements(elements).then((file) => {\n                    if (typeof cordova !== 'undefined' && cordova !== null) {\n                        return this.get('cordova').openFile(file, 'application/pdf');\n                    }\n                });\n            });\n        },\n    },\n});\n\nexport default UsersSubcontractorController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/subcontractor/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSubcontractorRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nimport config from '../../../config/environment';\n\nimport collector from '../../../classes/collector';\n\nUsersSubcontractorRoute = GeneralReportRoute.extend({\n    ttapi: Ember.inject.service(),\n    queryParams: {\n        project: {\n            refreshModel: true,\n            replace: true,\n        },\n        employer: {\n            refreshModel: true,\n            replace: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n            replace: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        return this.get('ttapi').request('/subcontractor', {\n            type: 'GET',\n            data: params,\n        });\n    },\n});\n\nexport default UsersSubcontractorRoute;\n","export default Ember.HTMLBars.template({\"id\":\"T6dmrGLJ\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 text-right\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[5,\\\"bs-dropdown\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\",[24,[\\\"data\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"data\\\",\\\"translationPrefix\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"filters\\\",\\\"skipLocked\\\"],[[24,[\\\"showColumns\\\"]],[24,[\\\"data\\\"]],\\\"report.user\\\",[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",[24,[\\\"filters\\\"]],true]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"editingRow\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null],[28,\\\"t\\\",[\\\"report.user.modal.changedates\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n          \\\"],[7,\\\"div\\\",true],[8],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.user.startdate\\\"],null],false],[9],[0,\\\"\\\\n              \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"type\\\"],[[23,0,[\\\"editingRow\\\",\\\"newDates\\\",\\\"startdate\\\"]],\\\"date\\\"]]],false],[0,\\\"\\\\n          \\\"],[9],[0,\\\"\\\\n          \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mt-4\\\"],[8],[0,\\\"\\\\n             \\\"],[7,\\\"label\\\",true],[8],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.user.enddate\\\"],null],false],[9],[0,\\\"\\\\n\\\\n              \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"type\\\"],[[23,0,[\\\"editingRow\\\",\\\"newDates\\\",\\\"enddate\\\"]],\\\"date\\\"]]],false],[0,\\\"\\\\n          \\\"],[9],[0,\\\"\\\\n\\\\n          \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"ember-movenium-form-button-group\\\"],[8],[0,\\\"\\\\n              \\\"],[7,\\\"button\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"newDates\\\"],null]],[10,\\\"class\\\",\\\"ember-movenium-button ember-movenium-save-button\\\"],[10,\\\"name\\\",\\\"save-button\\\"],[10,\\\"type\\\",\\\"button\\\"],[8],[0,\\\"\\\\n                  \\\"],[1,[28,\\\"t\\\",[\\\"save\\\"],null],false],[0,\\\"\\\\n              \\\"],[9],[0,\\\"\\\\n              \\\"],[7,\\\"button\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]],[10,\\\"class\\\",\\\"ember-movenium-button ember-movenium-cancel-button\\\"],[10,\\\"name\\\",\\\"cancel-button\\\"],[10,\\\"type\\\",\\\"button\\\"],[8],[0,\\\"   \\\"],[1,[28,\\\"t\\\",[\\\"cancel\\\"],null],false],[9],[0,\\\"\\\\n          \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/subcontractor/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"p2WdJqcM\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\"],[\\\"superiorreplacement\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Add\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Filters\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/superior_replacements/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"jufcVIfr\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/template.hbs\"}});","import { alias } from '@ember/object/computed';\nimport GeneralAddController from 'tt4/controllers/general-add';\nimport { typeOf } from '@ember/utils';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment';\nimport { set } from '@ember/object';\nimport config from 'tt4/config/environment';\n\nexport default class worktimegroupChangeController extends GeneralAddController {\n    @service store;\n    @service dialogs;\n    @service evented;\n    @service cdn;\n    @service intl;\n    @service('collector-service') Collector;\n\n    form = 'worktimegroupchange';\n    @tracked status = 'all';\n    @tracked dateSelector = true;\n    @tracked groupBy = null;\n    @tracked record;\n    @tracked worktypeMappings = {};\n    @tracked saving = false;\n    @tracked alertShown = false;\n    @tracked notification_user = null;\n\n    @alias('args.model') model;\n\n    @action\n    filterChangeAction(value, field) {\n        if (typeOf(value) === 'object' || typeOf(value) == 'instance') {\n            this[field] = value.id;\n        } else {\n            this[field] = value;\n        }\n    }\n\n    @action\n    closeModal() {\n        this.record.isNew ? this.record.deleteRecord() : this.record.rollbackAttributes();\n        this.record = null;\n    }\n\n    @action\n    addRecord() {\n        Notification.requestPermission();\n        let defaults = {};\n        this.record = this.store.createRecord('worktimegroupchange', defaults);\n    }\n\n    @action\n    removeRow(row) {\n        // if row.startdate is in the past, then we cannot delete it\n        if (row.startdate < moment().format('YYYY-MM-DD')) {\n            this.dialogs.alert(this.intl.t('report.worktimegroupchanges.cannot_delete'));\n        } else {\n            this.dialogs\n                .confirm(this.intl.t('report.confirm_delete'))\n                .then(this.removeOrNot.bind(this, row));\n        }\n    }\n\n    async removeOrNot(row, answer) {\n        if (!answer) return;\n        await row.destroyRecord();\n        this.evented.storeEvent('delete', 'worktimegroupchange', null);\n    }\n\n    @action\n    setDestinationWorktype(source, destination) {\n        set(this.worktypeMappings, source.id, destination);\n    }\n\n    showSlowAlert() {\n        this.clearStoredValues();\n        this.alertShown = true;\n        this.dialogs.alert(this.intl.t('report.worktimegroupchanges.saving-is-slow'));\n    }\n\n    showNotification() {\n        new Notification(this.intl.t('report.worktimegroupchanges.notification-header'), {\n            body: this.intl.t('report.worktimegroupchanges.notification-body', {\n                user: this.notification_user.firstname + ' ' + this.notification_user.lastname,\n            }),\n            icon: this.Collector.testNeedsOne('products.timetracker')\n                ? config.APP.CDN_URL + '/images/icons/movenium_filled.png'\n                : config.APP.CDN_URL + '/images/icons/entry_filled.png',\n        });\n    }\n\n    clearStoredValues() {\n        this.record = null;\n        this.alertShown = false;\n        this.saving = false;\n        this.evented.storeEvent('update', 'worktimegroupchange', null);\n    }\n\n    @action\n    async saveMappingsAndForm() {\n        let alertTimeout;\n        this.saving = true;\n        const transformedArray = Object.entries(this.worktypeMappings).map(([source, value]) => ({\n            source,\n            destination: value.id,\n        }));\n        this.record.mappings = JSON.stringify(transformedArray);\n        try {\n            // if request has taken too long, show alert that the changes are being saved and close the modal\n            alertTimeout = setTimeout(() => this.showSlowAlert(), 9000);\n            // store user for notification (cannot use this.record.user because we are clearing the record before the notification is shown)\n            this.notification_user = this.record.user;\n            await this.record.save();\n            clearTimeout(alertTimeout);\n            // if the alert has been shown, show notification\n            if (this.alertShown) {\n                this.showNotification();\n            }\n            this.clearStoredValues();\n        } catch (e) {\n            clearTimeout(alertTimeout);\n            if (e.errors && e.errors[0].status === 504) {\n                this.dialogs.alert(this.intl.t('report.worktimegroupchanges.timeout'));\n            }\n            this.clearStoredValues();\n        }\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"ErQMqZRV\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"M\\\",\\\"Report\\\",\\\"Table\\\",\\\"field\\\",\\\"value\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@filterChangeAction\\\",\\\"@showFilters\\\"],[\\\"worktimegroupchange\\\",[23,0,[\\\"qParams\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null],\\\"worktimegroup,destination,user,startdate,enddate\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,3,[\\\"Add\\\"]],[],[[\\\"@onClick\\\"],[[23,0,[\\\"addRecord\\\"]]]]],[0,\\\"\\\\n    \\\"],[6,[23,3,[\\\"Table\\\"]],[],[[\\\"@selectable\\\",\\\"@formatCells\\\"],[true,true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,4,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n            \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n        \\\"],[6,[23,4,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@removeOverrideAction\\\",\\\"@showActions\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"record\\\"]]],null]],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeRow\\\"],null],\\\"remove,history,overview,edit\\\"]]],[0,\\\"\\\\n        \\\"],[6,[23,4,[\\\"Cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[]],\\\"state\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,6,[]],\\\"running\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-primary\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"report.ccbuttonexecution.state.running\\\"],null]],[8],[0,\\\"\\\\n                        \\\"],[5,\\\"spinner\\\",[],[[\\\"@size\\\"],[18]]],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,6,[]],\\\"error\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger move move-Error report-icon\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"report.ccbuttonexecution.state.error\\\"],null]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,6,[]],\\\"done\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-success move move-Checkmark report-icon\\\"],[11,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"report.ccbuttonexecution.state.done\\\"],null]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,6,[]],\\\"\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-info move move-Time report-icon\\\"],[11,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"report.ccbuttonexecution.state.waiting\\\"],null]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,6,[]],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[23,6,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[5,6]}],[0,\\\"\\\\n        \\\"],[6,[23,4,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"record\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.add_worktimegroup_change\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"collector/form-add/forms/worktimegroupchange\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\",\\\"@setDestinationWorktype\\\",\\\"@worktypeMappings\\\",\\\"@saveMappingsAndForm\\\",\\\"@saving\\\"],[\\\"worktimegroupchange\\\",[23,0,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null],[23,0,[\\\"setDestinationWorktype\\\"]],[23,0,[\\\"worktypeMappings\\\"]],[23,0,[\\\"saveMappingsAndForm\\\"]],[23,0,[\\\"saving\\\"]]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,0,[\\\"cannotDelete\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[28,\\\"fn\\\",[[28,\\\"mut\\\",[[24,[\\\"cannotDelete\\\"]]],null],false],null],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.cannot_delete_worktimegroup_change\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-40\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Error\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-60\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktimegroupchange.cannot_delete\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary pull-right mb-5\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"cannotDelete\\\"]]],null],false],null]]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/worktimegroup_changes/template.hbs\"}});","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\n\nexport default Route.extend({\n    gui: service(),\n\n    queryParams: {\n        code: {\n            refreshModel: true,\n        },\n    },\n\n    model(params) {\n        set(this, 'gui.saveVismanetCode', params.code);\n        this.transitionTo('salary.export-salary', { queryParams: { wizard: 'vismanet-wizard' } });\n        return { code: params.code };\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"9EtojXCh\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/vismanetsignin/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Wx/S7afs\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[22,\\\"worksite-areas-report/logs\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksite-areas/log-report/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"1ssXYQVX\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[22,\\\"worksite-areas-report/passes\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksite-areas/report/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"jD3ZHCNA\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksite-areas/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryAddController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nimport collector from '../../../classes/collector';\n\nimport config from '../../../config/environment';\n\nWorksitediaryAddController = GeneralAddController.extend({\n    weather: Ember.inject.service(),\n    GpsLocator: Ember.inject.service(),\n    /*\n  GetGPSCoords: ->\n      self = @\n      tmp = Ember.A []\n      @get('GpsLocator').getLocation().then (position) ->\n          $.getJSON config.APP.WEATHER_API+\"?lat=\"+position.coords.latitude+\"&lon=\"+position.coords.longitude, (json) ->\n              dew_point = json.temperature-((100-json.humidity)/5)\n              json.dew_point = Math.round(dew_point * 100) / 100\n              self.set 'model.weather', json\n      , (error) ->\n          self.set 'currentPos', error\n\n  */\n    editNewLink: 'worksitediary.edit',\n    customization: Em.computed(function () {\n        return {\n            rating: {\n                template: 'worksitediary/add/rating',\n            },\n            weather: {\n                template: 'worksitediary/add/weather',\n            },\n        };\n    }),\n    actions: {\n        generalAddAction: function (type, field = null) {\n            switch (type) {\n                case 'giveThumbUp':\n                    return this.giveThumb('up');\n                case 'giveThumbDown':\n                    return this.giveThumb('down');\n            }\n        },\n    },\n    //if field == 'project'\n    //    @get('weather').fetchWeatherPosition(type).then (weather) =>\n    //        @set 'model.weather', weather\n    //    , (reason) ->\n    //        @set 'model.weather', reason\n    giveThumb: function (value) {\n        var model;\n        model = this.get('model');\n        return model.set('rating', value);\n    },\n});\n\nexport default WorksitediaryAddController;\n","export default Ember.HTMLBars.template({\"id\":\"oJ5Wdc45\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[\\\"move move-GoodQuality big-thumb \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"rating\\\"]],\\\"up\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"giveThumbUp\\\"]],[8],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"down\\\"],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[\\\"move move-PoorQuality big-thumb \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"rating\\\"]],\\\"down\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"giveThumbDown\\\"]],[8],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.worksitediary\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"query\\\"],[\\\"button\\\",\\\"btn btn-m-link\\\",[28,\\\"hash\\\",null,[[\\\"modal\\\"],[\\\"diaryreport_other_note\\\"]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"worksitediary.add_other_entry\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"query\\\"],[\\\"button\\\",\\\"btn btn-m-link\\\",[28,\\\"hash\\\",null,[[\\\"modal\\\"],[\\\"diaryreport_note\\\"]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"worksitediary.add_note\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/add/rating/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nWorksitediaryAddRoute = GeneralAddRoute.extend({\n    modelName: 'worksitediary',\n    afterSave: 'worksitediary.events',\n    controllerName: 'worksitediary.add',\n    savedRoute: 'saved',\n    Collector: Ember.inject.service('collector-service'),\n    weather: Ember.inject.service(),\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.set('model', model);\n    },\n    //@get('weather').fetchWeatherPosition().then (e) ->\n    //    controller.set('model.weather', e)\n    afterModel: function (model) {\n        var controller;\n        controller = this.controllerFor('worksitediary/add');\n        return controller.set('overrideWeather', false);\n    },\n    /*\n  if model.get 'isNew'\n      @get('weather').fetchWeatherPosition(model).then ((weather) ->\n          controller.set('model.weather', weather)\n      ), (reason) ->\n          controller.set('model.weather', reason)\n  else\n      try\n          controller.set 'weather', JSON.parse(model.get('weather'))\n      catch e\n          controller.set 'weather', null\n      controller.set 'editMode', true\n\n  controller = @controllerFor('worksitediary/add')\n  console.log model.get 'project.id'\n  @get('weather').fetchWeatherPosition(model).then ((weather) ->\n      controller.set('model.weather', weather)\n  ), (reason) ->\n      controller.set('model.weather', reason)\n\n  */\n    actions: {\n        save: function () {\n            var json_weather, row, self;\n            self = this;\n            row = this.get('controller.model');\n            if (row.get('weather')) {\n                json_weather = row.get('weather');\n                row.set('weather', JSON.stringify(json_weather));\n            }\n            if (this.get('Collector').formExists('diary')) {\n                this.set('afterSave', 'diary.events');\n            }\n            //hideFields = self.get 'controller.hideFromSaved'\n            this._super();\n        },\n    },\n});\n\n//            row.save().then (saved_row) ->\n//                self.transitionTo('saved').then (newRoute) ->\n//                    newRoute.controller.set 'model', saved_row\n//                    newRoute.controller.set 'afterSave',\n//                    newRoute.controller.set 'hideFields', self.get 'controller.hideFromSaved'\nexport default WorksitediaryAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"T/eqg2d0\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/add/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"KRDNuBaX\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"components/weather-component\\\",null,[[\\\"value\\\",\\\"project\\\",\\\"date\\\",\\\"isNew\\\"],[[24,[\\\"value\\\"]],[24,[\\\"model\\\",\\\"project\\\"]],[24,[\\\"model\\\",\\\"date\\\"]],[24,[\\\"model\\\",\\\"isNew\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/add/weather/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/automation/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryAutomationController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nWorksitediaryAutomationController = GeneralReportController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    projects: false,\n    addedProjects: Ember.A([]),\n    showTheseColumns: ['number', 'name', 'autodiary'],\n    project: Ember.computed(function () {\n        var project;\n        project = this.get('Collector').fieldArray('diaryreport', ['project'])[0];\n        project.value = void 0;\n        project.filterOptions = {\n            autodiary: 'off',\n        };\n        return project;\n    }),\n    filters: Em.A([\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideEdit: true,\n            hideRemove: true,\n            historyRoute: {\n                modal: true,\n            },\n        }),\n        localStorageKey: 'diaryautomation',\n    }),\n    saveItem: function (items) {\n        var item;\n        item = items.popObject();\n        if (item) {\n            item.set('autodiary', true);\n            return item.save().then(() => {\n                return this.saveItem(items);\n            });\n        } else {\n            this.set('loading', false);\n            this.send('close');\n            return this.send('refreshModel');\n        }\n    },\n    actions: {\n        addProjects: function () {\n            this.set('projects', true);\n            return false;\n        },\n        addProject: function (value) {\n            var projects;\n            projects = this.get('addedProjects');\n            if (projects.filterBy('id', value.get('id')).get('length') > 0) {\n                return;\n            }\n            return this.get('addedProjects').pushObject(value);\n        },\n        save: function () {\n            var add;\n            this.set('loading', true);\n            add = this.get('addedProjects');\n            return this.saveItem(add);\n        },\n        close: function () {\n            this.set('addedProjects', Ember.A([]));\n            return this.set('projects', false);\n        },\n    },\n});\n\nexport default WorksitediaryAutomationController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/automation/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryAutomationRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nWorksitediaryAutomationRoute = GeneralReportRoute.extend({\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        params.autodiary = 'on';\n        return this.store.query('project', params);\n    },\n    actions: {\n        refreshModel: function () {\n            return this.refresh();\n        },\n    },\n});\n\nexport default WorksitediaryAutomationRoute;\n","export default Ember.HTMLBars.template({\"id\":\"12uAPbRZ\",\"block\":\"{\\\"symbols\\\":[\\\"project\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"projects\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"worksitediary.modal.choose_projects\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"change\\\"],[[24,[\\\"project\\\"]],\\\"addProject\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"addedProjects\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.modal.select_projects\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.modal.add_these\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"addedProjects\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[23,1,[]],\\\"project\\\",\\\"diaryreport\\\"]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.modal.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addProjects\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.add_projects_automation\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.automation.added_projects\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\"],[[24,[\\\"filters\\\"]]]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",\\\"project\\\",[24,[\\\"model\\\"]],[24,[\\\"showTheseColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/automation/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/calendar/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryCalendarController;\n\nimport Ember from 'ember';\n\nWorksitediaryCalendarController = Ember.Controller.extend({\n    queryParams: ['diary_date', 'project'],\n    project: null,\n    diary_date:\n        moment().startOf('month').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('month').format('YYYY-MM-DD'),\n    actions: {\n        projectChanged: function (value) {\n            return this.set('project', value.get('id'));\n        },\n    },\n});\n\nexport default WorksitediaryCalendarController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/calendar/diaryreport-calendar-item/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryreportCalendarItemComponent;\n\nimport Ember from 'ember';\n\nDiaryreportCalendarItemComponent = Ember.Component.extend({\n    rows: Ember.computed('day', 'model.[]', function () {\n        return this.get('model').filterBy('diary_date', this.get('day'));\n    }),\n});\n\nexport default DiaryreportCalendarItemComponent;\n","export default Ember.HTMLBars.template({\"id\":\"6nEwvMPi\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"diaryreport-calendar-day-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"rows\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"diaryreport-calendar-item\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"project\\\",\\\"diaryreport\\\",[23,1,[\\\"project\\\"]]]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"image-and-status\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"calendar-item-status\\\"],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"status\\\",\\\"diaryreport\\\",[23,1,[\\\"status\\\"]]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"user-image img-circle\\\"],[11,\\\"title\\\",[29,[[23,1,[\\\"user\\\",\\\"firstname\\\"]],\\\" \\\",[23,1,[\\\"user\\\",\\\"lastname\\\"]]]]],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[28,\\\"if\\\",[[23,1,[\\\"user\\\",\\\"image\\\",\\\"firstObject\\\"]],[28,\\\"api-image\\\",[[23,1,[\\\"user\\\",\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],null],\\\"img/user-profile-lg-gray.png\\\"],null],\\\"')\\\"]]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.events_started\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.diaryreport.events_started\\\"],null],false],[0,\\\"\\\\n                    :\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"events_started\\\",\\\"diaryreport\\\",[23,1,[\\\"events_started\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.events_work_in_progress\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.diaryreport.events_work_in_progress\\\"],null],false],[0,\\\"\\\\n                    :\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"events_work_in_progress\\\",\\\"diaryreport\\\",[23,1,[\\\"events_work_in_progress\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.events_finished\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.diaryreport.events_finished\\\"],null],false],[0,\\\"\\\\n                    :\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"events_finished\\\",\\\"diaryreport\\\",[23,1,[\\\"events_finished\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.events_interrupted\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.diaryreport.events_interrupted\\\"],null],false],[0,\\\"\\\\n                    :\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"events_interrupted\\\",\\\"diaryreport\\\",[23,1,[\\\"events_interrupted\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.events_altered\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.diaryreport.events_altered\\\"],null],false],[0,\\\"\\\\n                    :\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"events_altered\\\",\\\"diaryreport\\\",[23,1,[\\\"events_altered\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"query\\\",\\\"route\\\",\\\"model\\\"],[\\\"calendar-plus-button\\\",[28,\\\"hash\\\",null,[[\\\"date\\\"],[[24,[\\\"day\\\"]]]]],\\\"worksitediary.report.add.basic-info\\\",\\\"add\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/calendar/diaryreport-calendar-item/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/calendar/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nWorksitediaryIndexRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    queryParams: {\n        project: {\n            refreshModel: true,\n        },\n        diary_date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params.sideload = ['user.image', 'user.firstname', 'user.lastname', 'project.name'];\n        return this.store.query('diaryreport', params);\n    },\n});\n\nexport default WorksitediaryIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"qRUIzZWz\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-md-3\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"diaryreport.project\\\"],[[\\\"change\\\"],[\\\"projectChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[4,\\\"calendar-report\\\",null,[[\\\"date\\\"],[[24,[\\\"diary_date\\\"]]]],{\\\"statements\\\":[[4,\\\"calendar-report-day\\\",null,[[\\\"day\\\"],[[23,1,[]]]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"worksitediary/calendar/diaryreport-calendar-item\\\",null,[[\\\"day\\\",\\\"model\\\"],[[23,1,[]],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"diaryreport.calendar.select_project\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/calendar/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nWorksitediaryEditController = GeneralAddController.extend({\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n    customization: Em.computed(function () {\n        return {\n            rating: {\n                template: 'worksitediary/add/rating',\n            },\n            weather: {\n                template: 'worksitediary/add/weather',\n            },\n        };\n    }),\n    weather: null,\n    editNewLink: 'worksitediary.edit',\n    updateRatingVisualization: Em.on('didRender', function () {\n        var model, rating, tmp_weather;\n        model = this.get('model');\n        if (model) {\n            rating = model.get('rating');\n            if (rating) {\n                this.giveThumb(rating);\n            }\n            if (this.get('weather')) {\n                tmp_weather = model.get('weather');\n                if (tmp_weather) {\n                    return this.set('weather', JSON.parse(tmp_weather));\n                }\n            }\n        }\n    }),\n    actions: {\n        generalAddAction: function (type) {\n            switch (type) {\n                case 'giveThumbUp':\n                    return this.giveThumb('up');\n                case 'giveThumbDown':\n                    return this.giveThumb('down');\n            }\n        },\n    },\n    giveThumb: function (value) {\n        var model;\n        model = this.get('model');\n        return model.set('rating', value);\n    },\n});\n\nexport default WorksitediaryEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nWorksitediaryEditRoute = GeneralAddRoute.extend({\n    modelName: 'worksitediary',\n    controllerName: 'worksitediary/edit',\n    edit: true,\n    afterSave: 'worksitediary',\n    hideFromSaved: 'weather',\n    actions: {\n        save: function (row) {\n            var json_weather;\n            row = this.get('controller.model');\n            json_weather = row.get('weather');\n            row.set('weather', JSON.stringify(json_weather));\n            if (this.get('Collector').formExists('diary')) {\n                this.set('afterSave', 'diary.events');\n            }\n            return this._super();\n        },\n    },\n});\n\nexport default WorksitediaryEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"bROu8Sjo\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/events/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport localization from '../../../classes/localization';\n\nWorksitediaryIndexController = GeneralReportController.extend({\n    form: 'worksitediary',\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: 'worksitediary.edit',\n            historyRoute: 'worksitediary.history',\n            hideHistory: true,\n        }),\n        sortByColumn: 'date-',\n    }),\n    showColumns: ['date', 'project', 'title', 'description', 'images', 'rating', 'weather'],\n    queryParams: ['project', 'date', 'page', 'status'],\n    status: 'all',\n    date: moment().subtract(1, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'date',\n        }),\n        Em.Object.create({\n            field: 'project',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    formatter: function (column, value, self) {\n        if (column === 'rating' && value) {\n            if (value === 'up') {\n                value = new Ember.String.htmlSafe(\n                    \"<span class='move move-GoodQuality big-thumb report-thumb-up'></span>\",\n                );\n            } else {\n                value = new Ember.String.htmlSafe(\n                    \"<span class='move move-PoorQuality big-thumb report-thumb-down'></span>\",\n                );\n            }\n            return value;\n        }\n    },\n    actions: {\n        catchActions: function (action, params) {\n            return this.send(action, params);\n        },\n        transitionToWizard: function () {\n            return this.transitionToRoute('worksitediary.report.add.basic-info', 'add');\n        },\n        transitionToEvents: function () {\n            return this.transitionToRoute('worksitediary.events');\n        },\n    },\n});\n\nexport default WorksitediaryIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/events/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nWorksitediaryIndexRoute = GeneralReportRoute.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('worksitediary', params);\n    },\n});\n\nexport default WorksitediaryIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"2Swxf0V1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"formatter\\\"],[\\\"bubbleTransition\\\",\\\"worksitediary\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"formatter\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionToWizard\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.link\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/events/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport localization from '../../../classes/localization';\n\nimport pdfmixin from '../../../mixins/worksitediary_pdf';\n\nWorksitediaryIndexController = GeneralReportController.extend(pdfmixin, {\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    cordova: Ember.inject.service('own-cordova-service'),\n    store: Ember.inject.service(),\n    form: 'diaryreport',\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: 'worksitediary.report.add.basic-info',\n        }),\n        hideColumns: [\n            'diaryreport_given_offer',\n            'diaryreport_misc',\n            'diaryreport_other_entrie',\n            'diaryreport_required_extra',\n            'diaryreport_supervisor_note',\n            'events_altered',\n            'events_finished',\n            'events_interrupted',\n            'events_started',\n            'events_work_in_progress',\n            'orders_ordered',\n            'orders_received',\n            'notes',\n        ],\n        rowActions: [],\n    }),\n    pdfReport: null,\n    addRowActions: function () {\n        var columns, fields, intl, pdf_output, self2, title_row, widths;\n        self2 = this;\n        intl = this.get('intl');\n        if (this.Collector == null) {\n            return;\n        }\n        pdf_output = [];\n        title_row = [];\n        columns = [];\n        widths = [];\n        widths.push('auto');\n        pdf_output.push(title_row);\n        fields = this.Collector.fields('diaryreport');\n        if ('status' in fields) {\n            columns = fields;\n            return this.set('settings.rowActions', [\n                {\n                    text: 'status.journal_pdf',\n                    action: (self, items) => {\n                        return this.createWorksitediaryPdf(items);\n                    },\n                },\n            ]);\n        }\n    }.on('init'),\n    showColumns: [\n        'project',\n        'status',\n        'diary_date',\n        'work_week',\n        'worksite_number',\n        'supervisor',\n        'overseer',\n    ],\n    status: 'all',\n    //    hideColumns: Em.on('init', ->\n    //        @set('settings.hideColumns', [\n\n    //        ])\n\n    //    )\n    queryParams: ['project', 'diary_date', 'page', 'user'],\n    diary_date:\n        moment().subtract(1, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'diary_date',\n        }),\n        Em.Object.create({\n            field: 'project',\n        }),\n        Em.Object.create({\n            field: 'user',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    actions: {\n        catchActions: function (action, params) {\n            return this.send(action, params);\n        },\n        transitionToWizard: function () {\n            return this.transitionToRoute('worksitediary.report.first');\n        },\n        transitionToEvents: function () {\n            return this.transitionToRoute('worksitediary.events');\n        },\n    },\n});\n\nexport default WorksitediaryIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nWorksitediaryIndexRoute = GeneralReportRoute.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        diary_date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('diaryreport', params);\n    },\n});\n\nexport default WorksitediaryIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"78rr/tcR\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"filterValueChanged\\\",\\\"status\\\"],[[24,[\\\"filters\\\"]],\\\"filterChanged\\\",[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"formatter\\\"],[\\\"bubbleTransition\\\",\\\"diaryreport\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"formatter\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionToWizard\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.link\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/notes/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryNotesController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nWorksitediaryNotesController = GeneralReportController.extend({\n    form: 'diaryreport_note',\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n        }),\n    }),\n    //    showColumns: [\"date\", \"project\", \"title\", \"description\", \"images\", \"rating\", \"weather\"]\n    queryParams: ['type', 'responsible'],\n    filters: Em.A([\n        //        Em.Object.create({field: \"date\"})\n        Em.Object.create({\n            field: 'type',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n});\n\nexport default WorksitediaryNotesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/notes/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryNotesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nWorksitediaryNotesRoute = GeneralReportRoute.extend({\n    form: 'diaryreport_note',\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        type: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('diaryreport-note', params);\n    },\n});\n\nexport default WorksitediaryNotesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"79fTeF6F\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"formatter\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"status\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"formatter\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/notes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/offering-report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OtherEntriesReportController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nOtherEntriesReportController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    form: 'diaryreport_given_offer',\n    showColumns: ['phase', 'status', 'date', 'description'],\n    queryParams: ['date', 'page'],\n    date: moment().subtract(1, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'date',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n        }),\n    }),\n    status: 'all',\n});\n\nexport default OtherEntriesReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/offering-report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OtherEntriesReportRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nOtherEntriesReportRoute = GeneralReportRoute.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('diaryreport_given_offer', params);\n    },\n});\n\nexport default OtherEntriesReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"fDGmcUZn\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"status\\\"],[[24,[\\\"filters\\\"]],\\\"diaryreport_given_offer\\\",[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"limit\\\",\\\"offset\\\"],[\\\"bubbleTransition\\\",\\\"diaryreport_given_offer\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/offering-report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/other-entries-report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OtherEntriesReportController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nOtherEntriesReportController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    form: 'diaryreport_other_note',\n    showColumns: ['phase', 'date', 'status', 'description', 'image', 'responsible'],\n    queryParams: ['date', 'page'],\n    filters: Em.A([\n        Em.Object.create({\n            field: 'date',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    date: moment().subtract(1, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    //status: 'all'\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n        }),\n    }),\n});\n\nexport default OtherEntriesReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/other-entries-report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OtherEntriesReportRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nOtherEntriesReportRoute = GeneralReportRoute.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('diaryreport_other_note', params);\n    },\n});\n\nexport default OtherEntriesReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"eHwny5Sf\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"status\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"diaryreport_other_note\\\",[24,[\\\"status\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"limit\\\",\\\"offset\\\"],[\\\"bubbleTransition\\\",\\\"diaryreport_other_note\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/other-entries-report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/at-site/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryAtSiteController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryAtSiteController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    fields: [\n        'diaryreport.foremans_at_site',\n        'diaryreport.workers_at_site',\n        'diaryreport.subcontractors_at_site',\n        'diaryreport.side_contractors_at_site',\n        'diaryreport.other_contractors_at_site',\n        'diaryreport.stock_changes_at_site',\n    ],\n    total_workforce: Ember.computed('work_force', function () {\n        return this.get('work_force.firstObject');\n    }),\n    work_force: Em.computed('model.work_force', function () {\n        var splitted, workforce, workforce_arr;\n        if (this.get('Collector').fieldExists('diaryreport', 'work_force')) {\n            workforce_arr = Em.A([]);\n            workforce = this.get('model.work_force');\n            if (workforce) {\n                splitted = workforce.split(',');\n                splitted.forEach(function (item) {\n                    var splitted_item, this_field;\n                    if (item === '') {\n                        return;\n                    }\n                    splitted_item = item.split(':');\n                    this_field = Ember.Object.create({\n                        name: '',\n                        amount_own: 0,\n                        amount_ue: 0,\n                        input: false,\n                    });\n                    splitted_item.forEach((field) => {\n                        var field_values;\n                        if (field.indexOf('/') !== -1) {\n                            field_values = field.split('/');\n                            this_field.set('amount_own', parseInt(field_values[0], 10));\n                            return this_field.set('amount_ue', parseInt(field_values[1], 10));\n                        } else {\n                            return this_field.set('name', field.trim(' '));\n                        }\n                    });\n                    return workforce_arr.pushObject(this_field);\n                });\n            } else {\n                workforce_arr.pushObject(\n                    Em.Object.create({\n                        name: 'Total',\n                        amount_own: 0,\n                        amount_ue: 0,\n                        input: true,\n                    }),\n                );\n            }\n            return workforce_arr;\n        }\n    }),\n    work_force_rest: Ember.computed('work_force.[]', function () {\n        return this.get('work_force').slice(1);\n    }),\n    actions: {\n        updateField: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n        setValue: function (obj) {\n            return obj.set('input', false);\n        },\n        openEdit: function (obj) {\n            obj.set('input', true);\n        },\n        addWorkforceRow: function () {\n            return this.get('work_force').pushObject(\n                Ember.Object.create({\n                    name: '',\n                    amount_own: 0,\n                    amount_ue: 0,\n                    input: true,\n                }),\n            );\n        },\n    },\n});\n\n//        calculateWorkforce: (field) ->\n//            total = 0\n//            @get('work_force').forEach (item) ->\n//                total += parseInt(item[field], 10)\n\n//            @set('total_workforce.'+field, total)\n//            workforce = @get('total_workforce')\n//            if (workforce.get(field) - total) < 0\n//                workforce.set(field, 0)\n//            else\n//                workforce.set(field, workforce.get(field) - total)\n//            @set('total_workforce', workforce)\nexport default WorksiteDiaryAtSiteController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/at-site/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddAtSiteRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddAtSiteRoute = baseRoute.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    model: function (params) {\n        var c, model;\n        model = this._super(params);\n        c = this.get('Collector');\n        if (\n            c.testNeedsOne('diaryreport.work_force') &&\n            model.get('isNew') &&\n            c.testNeedsOne('employer')\n        ) {\n            return this.get('store')\n                .query('employer', {\n                    main: 'on',\n                })\n                .then((emps) => {\n                    var emp, promises;\n                    if (emps.get('length') === 0) {\n                        return model;\n                    }\n                    emp = emps.get('firstObject');\n                    promises = [];\n                    if (c.testNeedsOne('presence')) {\n                        promises.push(\n                            this.get('store').query('presence', {\n                                project: model.get('project.id'),\n                                date: model.get('diary_date'),\n                                employer: emp.get('id'),\n                                groupBy: 'user',\n                                limit: 1,\n                            }),\n                        );\n                        promises.push(\n                            this.get('store').query('presence', {\n                                project: model.get('project.id'),\n                                date: model.get('diary_date'),\n                                employer: '!' + emp.get('id'),\n                                groupBy: 'user',\n                                limit: 1,\n                            }),\n                        );\n                    }\n                    if (c.testNeedsOne('worktime')) {\n                        promises.push(\n                            this.get('store').query('worktime', {\n                                project: model.get('project.id'),\n                                date: model.get('diary_date'),\n                                employer: emp.get('id'),\n                                groupBy: 'user',\n                                limit: 1,\n                            }),\n                        );\n                        promises.push(\n                            this.get('store').query('worktime', {\n                                project: model.get('project.id'),\n                                date: model.get('diary_date'),\n                                employer: '!' + emp.get('id'),\n                                groupBy: 'user',\n                                limit: 1,\n                            }),\n                        );\n                    }\n                    return Ember.RSVP.Promise.all(promises).then((data) => {\n                        var own, ue;\n                        own = 0;\n                        ue = 0;\n                        if (data[0]) {\n                            if (data[0].get('length') > 0) {\n                                own += data[0].get('meta.count');\n                            }\n                        }\n                        if (data[2]) {\n                            if (data[2].get('length') > 0) {\n                                own += data[2].get('meta.count');\n                            }\n                        }\n                        if (data[1]) {\n                            if (data[1].get('length') > 0) {\n                                ue += data[1].get('meta.count');\n                            }\n                        }\n                        if (data[3]) {\n                            if (data[3].get('length') > 0) {\n                                ue += data[3].get('meta.count');\n                            }\n                        }\n                        model.set('work_force', 'Total: ' + own + '/' + ue);\n                        return model;\n                    });\n                });\n        } else {\n            return model;\n        }\n    },\n    actions: {\n        willTransition: function (transition) {\n            var c, string, workforce;\n            c = this.get('Collector');\n            if (c.fieldExists('diaryreport', 'work_force')) {\n                workforce = this.get('controller.work_force');\n                string = '';\n                workforce.forEach(function (item) {\n                    if (item.get('amount_own') !== 0 || item.get('amount_ue') !== 0) {\n                        return (string +=\n                            item.get('name') +\n                            ': ' +\n                            item.get('amount_own') +\n                            '/' +\n                            item.get('amount_ue') +\n                            ', ');\n                    }\n                });\n                string = string.slice(0, -2);\n                this.set('controller.model.work_force', string);\n            }\n            return this._super(transition);\n        },\n    },\n});\n\nexport default WorksitediaryReportAddAtSiteRoute;\n","export default Ember.HTMLBars.template({\"id\":\"YkzRv717\",\"block\":\"{\\\"symbols\\\":[\\\"obj\\\",\\\"field\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.workforce\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[[23,2,[]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/field-container\\\",[[23,2,[]]],[[\\\"model\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],\\\"updateField\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.work_force\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.report.add.work_force.description\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-inline\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.report.add.total_workforce\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"number\\\",[24,[\\\"total_workforce\\\",\\\"amount_own\\\"]],\\\"add-fields diary_workforce\\\"]]],false],[0,\\\"\\\\n            /\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"number\\\",[24,[\\\"total_workforce\\\",\\\"amount_ue\\\"]],\\\"add-fields diary_workforce\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"add-workforce-row\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addWorkforceRow\\\"]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"work_force_rest\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-2 col-sm-4 col-xs-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-inline\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"input\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"disabled\\\",\\\"placeholder\\\",\\\"focusOut\\\"],[\\\"text\\\",[23,1,[\\\"name\\\"]],\\\"add-fields\\\",[24,[\\\"disabled\\\"]],[28,\\\"t\\\",[\\\"diaryreport.workforce.write_title\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",[23,1,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h4\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"openEdit\\\",[23,1,[]]]],[8],[1,[23,1,[\\\"name\\\"]],false],[0,\\\": \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"disabled\\\"],[\\\"number\\\",[23,1,[\\\"amount_own\\\"]],\\\"add-fields diary_workforce\\\",[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                        /\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"disabled\\\"],[\\\"number\\\",[23,1,[\\\"amount_ue\\\"]],\\\"add-fields diary_workforce\\\",[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/at-site/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/base-route/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddBaseRoute;\n\nimport Ember from 'ember';\n\nWorksitediaryReportAddBaseRoute = Ember.Route.extend({\n    model: function (params) {\n        var model;\n        model = this.modelFor('worksitediary.report.add');\n        if (model.get('project')) {\n            return model;\n        }\n        return this.transitionTo('worksitediary.report.add.basic-info');\n    },\n});\n\nexport default WorksitediaryReportAddBaseRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/basic-info/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryAddBasicInfoController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryAddBasicInfoController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    store: Ember.inject.service(),\n    page: 1,\n    changeThings: function () {\n        var c, i, item, len, link_from_last, model, project;\n        model = this.get('model');\n        project = model.get('project');\n        c = this.get('Collector');\n        link_from_last = [\n            'review_and_inspection',\n            'completion_rate',\n            'orders_ordered',\n            'events_started',\n            'events_interrupted',\n            'events_work_in_progress',\n        ];\n        if (project == null) {\n            this.set('model.worksite_number', null);\n            this.set('model.work_week', null);\n            this.set('model.status', 'open');\n            for (i = 0, len = link_from_last.length; i < len; i++) {\n                item = link_from_last[i];\n                if (c.fieldExists('diaryreport', item)) {\n                    model.set(item, []);\n                }\n            }\n            return;\n        }\n        return this.get('store')\n            .findRecord('project', project.get('id'), {\n                reload: true,\n            })\n            .then(() => {\n                if (this.get('model.isNew')) {\n                    this.get('store')\n                        .query('diaryreport', {\n                            order: 'diary_date-',\n                            limit: 1,\n                            project: project.get('id'),\n                        })\n                        .then((ret) => {\n                            var j, last, last_day, len1, values;\n                            last = ret.get('firstObject');\n                            if (last) {\n                                for (j = 0, len1 = link_from_last.length; j < len1; j++) {\n                                    item = link_from_last[j];\n                                    if (!c.fieldExists('diaryreport', item)) {\n                                        continue;\n                                    }\n                                    values = last.get(item);\n                                    if (values) {\n                                        model.set(item, values);\n                                    } else {\n                                        model.set(item, []);\n                                    }\n                                }\n                                if (\n                                    c.fieldExists('diaryreport', 'work_day') &&\n                                    last.get('work_day')\n                                ) {\n                                    last_day = parseInt(last.get('work_day'), 10);\n                                    model.set('work_day', ++last_day);\n                                }\n                            }\n                            // If we want this done also when editing we can move it to diary-events route\n                            return this.store\n                                .query('worksitediary', {\n                                    sideload: true,\n                                    project: project.get('id'),\n                                    date: model.get('diary_date'),\n                                })\n                                .then(function (events) {\n                                    model\n                                        .get('events_started')\n                                        .pushObjects(events.filterBy('state', 'initiated'));\n                                    if (c.testNeedsOne('diaryreport.events_work_in_progress')) {\n                                        model\n                                            .get('events_work_in_progress')\n                                            .pushObjects(events.filterBy('state', 'started'));\n                                    }\n                                    model\n                                        .get('events_finished')\n                                        .pushObjects(events.filterBy('state', 'finished'));\n                                    model\n                                        .get('events_interrupted')\n                                        .pushObjects(events.filterBy('state', 'interrupted'));\n                                    return model\n                                        .get('events_altered')\n                                        .pushObjects(events.filterBy('state', 'altered'));\n                                });\n                        });\n                }\n                if (project.get('presence_project') && c.testNeeds(['diaryreport.isID06'])) {\n                    model.set('isID06', true);\n                }\n                if (project.get('number')) {\n                    this.set('model.worksite_number', project.get('number'));\n                }\n                this.set('model.work_week', project.get('work_week'));\n                if (!this.get('model.work_week')) {\n                    this.set('model.work_week', 1);\n                }\n                if (project.get('hasDirtyAttributes')) {\n                    return project.save();\n                }\n            });\n    },\n    actions: {\n        updateField: function (value, field) {\n            var project;\n            project = this.get('model.project');\n            if (field === 'project') {\n                this.changeThings();\n            }\n            if (project) {\n                if (field === 'work_week') {\n                    project.set('work_week', value);\n                }\n                if (field === 'diary_date') {\n                    project.set('diary_date', value);\n                }\n                if (project.get('hasDirtyAttributes')) {\n                    return project.save();\n                }\n            }\n        },\n    },\n});\n\nexport default WorksiteDiaryAddBasicInfoController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/basic-info/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddBasicInfoRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nWorksitediaryReportAddBasicInfoRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    model: function () {\n        return this.modelFor('worksitediary.report.add');\n    },\n    afterModel: function (model, transition) {\n        var firstController;\n        firstController = this.controllerFor('worksitediary.report.first');\n        if (firstController.project) {\n            model.set('project', firstController.project);\n        }\n        if (firstController.diary_date) {\n            return model.set('diary_date', firstController.diary_date);\n        }\n    },\n    actions: {\n        didTransition: function () {\n            var basicController;\n            basicController = this.controllerFor('worksitediary.report.add.basic-info');\n            return basicController.changeThings();\n        },\n    },\n});\n\nexport default WorksitediaryReportAddBasicInfoRoute;\n","export default Ember.HTMLBars.template({\"id\":\"cFGd7nnp\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.diaryreport.project\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-control add-fields\\\"],[8],[1,[24,[\\\"model\\\",\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.diaryreport.diary_date\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-control add-fields\\\"],[8],[1,[28,\\\"moment-format\\\",[[24,[\\\"model\\\",\\\"diary_date\\\"]],\\\"L\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"diaryreport.worksite_number\\\"],[[\\\"model\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],\\\"updateField\\\"]]],false],[0,\\\"\\\\n        \\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.work_day\\\"],null]],null,{\\\"statements\\\":[[1,[28,\\\"collector/field-container\\\",[\\\"diaryreport.work_day\\\"],[[\\\"model\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],\\\"updateField\\\"]]],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"diaryreport.work_week\\\"],[[\\\"model\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],\\\"updateField\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/basic-info/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/completion-page/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryCompletionController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryCompletionController = Ember.Controller.extend({\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    added_completions: Ember.computed.alias('addController.model.completion_rate'),\n    review_options: Ember.computed(function () {\n        var field;\n        field = this.get('Collector').field('completion_rate', 'type');\n        field = Ember.Object.create(field);\n        field.get('options').forEach((item) => {\n            return (item.name = this.get('intl').t('completion_rate.type.' + item.value));\n        });\n        return field.get('options');\n    }),\n    record: Em.computed(function () {\n        return this.get('store').createRecord('completion_rate');\n    }),\n    ratefield: Em.computed('record', function () {\n        var c, field;\n        c = this.get('Collector');\n        field = c.field('completion_rate', 'rate');\n        return field;\n    }),\n    phaseField: Ember.computed('record', function () {\n        var c, field;\n        c = this.get('Collector');\n        field = c.field('completion_rate', 'phasetitle');\n        return field;\n    }),\n    title: '',\n    actions: {\n        update_reviews: function (title) {\n            return this.set('record.title', title);\n        },\n        update_rate: function (rate) {\n            return this.set('record.rate', rate);\n        },\n        setField: function (value, field) {\n            return this.set('record.' + field, value);\n        },\n        add_item: function () {\n            var record;\n            record = this.get('record');\n            this.set('record', record);\n            this.get('added_completions').pushObject(record);\n            record.save();\n            this.set('record', this.get('store').createRecord('completion_rate'));\n            return this.set('title', '');\n        },\n        remove_item: function (record) {\n            this.set('record', null);\n            this.get('added_completions').removeObject(record);\n            record.destroyRecord();\n            return this.set('record', this.get('store').createRecord('completion_rate'));\n        },\n    },\n});\n\nexport default WorksiteDiaryCompletionController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/completion-page/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddReviewPageRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddReviewPageRoute = baseRoute.extend();\n\nexport default WorksitediaryReportAddReviewPageRoute;\n","export default Ember.HTMLBars.template({\"id\":\"oPBmbYW7\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.completion-page\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"completion_rate@add\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"completion_rate.phasetitle\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"phaseField\\\"]],\\\"completion_rate.phasetitle\\\"],[[\\\"change\\\",\\\"model\\\"],[\\\"setField\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"completion_rate.title\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"drop-down-search-input\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"classes\\\",\\\"change\\\"],[[24,[\\\"review_options\\\"]],[24,[\\\"title\\\"]],\\\"form-control add-fields\\\",\\\"update_reviews\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"ratefield\\\"]]],[[\\\"value\\\",\\\"change\\\",\\\"model\\\"],[[24,[\\\"rate\\\"]],\\\"update_rate\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add_item\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.completion_rate\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"added_completions\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-8\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"completion_rate.phasetitle\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[23,1,[\\\"phasetitle\\\"]],\\\"phasetitle\\\",\\\"completion_rate\\\"]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[23,1,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-3\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[23,1,[\\\"rate\\\"]],false],[0,\\\" %\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-1 pull-right\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success trash-icon-size \\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove_item\\\",[23,1,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/completion-page/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryAddController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryAddController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    queryParams: ['date'],\n    page: 1,\n    display_previous: false,\n    router: Ember.inject.service(),\n    enable_next: Ember.computed.alias('model.project.id'),\n    applicationController: Ember.inject.controller('application'),\n    pages: [\n        {\n            link: 'worksitediary.report.add.basic-info',\n            needs: [],\n        },\n        {\n            link: 'worksitediary.report.add.at-site',\n            needs: [],\n        },\n        {\n            link: 'worksitediary.report.add.diary-events',\n            needs: [],\n        },\n        {\n            link: 'worksitediary.report.add.extra',\n            needs: ['diaryreport.egen_kontrol'],\n        },\n        {\n            link: 'worksitediary.report.add.notes-direktiv',\n            needs: ['diaryreport_note'],\n        },\n        {\n            link: 'worksitediary.report.add.notes-anmalan',\n            needs: ['diaryreport_note'],\n        },\n        {\n            link: 'worksitediary.report.add.notes-besiktningar',\n            needs: ['diaryreport_note'],\n        },\n        {\n            link: 'worksitediary.report.add.notes-ritningar',\n            needs: ['diaryreport_note'],\n        },\n        {\n            link: 'worksitediary.report.add.material',\n            needs: ['material'],\n        },\n        {\n            link: 'worksitediary.report.add.review-page',\n            needs: ['review_and_inspection'],\n        },\n        {\n            link: 'worksitediary.report.add.ordered-changes',\n            needs: ['diaryreport_misc'],\n        },\n        {\n            link: 'worksitediary.report.add.offering',\n            needs: ['diaryreport_given_offer'],\n        },\n        {\n            link: 'worksitediary.report.add.required-extra',\n            needs: ['diaryreport_required_extra'],\n        },\n        {\n            link: 'worksitediary.report.add.supervisor-note',\n            needs: ['diaryreport_supervisor_note'],\n        },\n        {\n            link: 'worksitediary.report.add.other-entries',\n            needs: ['diaryreport_other_note'],\n        },\n        {\n            link: 'worksitediary.report.add.signature',\n            string: 'orientations.breadcrumb.signatures',\n            icon: 'move move-Signature',\n            needs: [],\n        },\n        {\n            link: 'worksitediary.report.add.completion-page',\n            needs: ['completion_rate'],\n        },\n        {\n            link: 'worksitediary.report.add.summary-page',\n            needs: [],\n        },\n    ],\n    filteredPages: Ember.computed(function () {\n        var c;\n        c = this.get('Collector');\n        return this.get('pages').filter(function (item) {\n            if (item.needs && c.testNeeds(item.needs)) {\n                return item;\n            }\n        });\n    }),\n    hide_previous: Em.computed.equal(\n        'router.currentRouteName',\n        'worksitediary.report.add.basic-info',\n    ),\n    hide_next: Em.computed.equal(\n        'router.currentRouteName',\n        'worksitediary.report.add.summary-page',\n    ),\n    actions: {\n        next: function () {\n            var page, pages;\n            this.set('model.status', 'saved');\n            if (this.get('model.isNew')) {\n                this.set('model.user', this.get('session.currentUser'));\n            }\n            pages = this.get('filteredPages').mapBy('link');\n            page = pages.indexOf(this.get('router.currentRouteName'));\n            return this.transitionToRoute(pages[page + 1]);\n        },\n        previous: function () {\n            var page, pages;\n            this.set('model.status', 'saved');\n            if (this.get('model.isNew')) {\n                this.set('model.user', this.get('session.currentUser'));\n            }\n            pages = this.get('filteredPages').mapBy('link');\n            page = pages.indexOf(this.get('router.currentRouteName'));\n            return this.transitionToRoute(pages[page - 1]);\n        },\n        updateField: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n    },\n});\n\nexport default WorksiteDiaryAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/diary-events/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryEventsController;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nWorksiteDiaryEventsController = Ember.Controller.extend(AuthenticatedRouteMixin, {\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    show_modal: false,\n    started_event_list: Ember.computed.alias('model.parent.events_started'),\n    current_event_list: Ember.computed.alias('model.parent.events_work_in_progress'),\n    completed_event_list: Ember.computed.alias('model.parent.events_finished'),\n    interrupted_event_list: Ember.computed.alias('model.parent.events_interrupted'),\n    additional_event_list: Ember.computed.alias('model.parent.events_altered'),\n    project: Ember.computed.alias('model.parent.project'),\n    event_type: 'event',\n    filteredEvents: Ember.computed('model.events.[]', function () {\n        return this.get('model.events').filterBy('project', this.get('model.parent.project'));\n    }),\n    actions: {\n        addStatusToRecord: function (status, event_id) {\n            var diary;\n            diary = this.get('store').peekRecord('worksitediary', event_id);\n            this.get('started_event_list').removeObject(\n                this.get('started_event_list').findBy('id', diary.get('id')),\n            );\n            if (this.get('Collector').fieldExists('diaryreport', 'events_work_in_progress')) {\n                this.get('current_event_list').removeObject(\n                    this.get('current_event_list').findBy('id', diary.get('id')),\n                );\n            }\n            this.get('completed_event_list').removeObject(\n                this.get('completed_event_list').findBy('id', diary.get('id')),\n            );\n            this.get('interrupted_event_list').removeObject(\n                this.get('interrupted_event_list').findBy('id', diary.get('id')),\n            );\n            this.get('additional_event_list').removeObject(\n                this.get('additional_event_list').findBy('id', diary.get('id')),\n            );\n            if (status !== 'returnToStore') {\n                diary.set('state', status);\n                diary.save();\n                if (status === 'initiated') {\n                    return this.get('started_event_list').pushObject(diary);\n                } else if (status === 'started') {\n                    return this.get('current_event_list').pushObject(diary);\n                } else if (status === 'finished') {\n                    return this.get('completed_event_list').pushObject(diary);\n                } else if (status === 'interrupted') {\n                    return this.get('interrupted_event_list').pushObject(diary);\n                } else if (status === 'altered') {\n                    return this.get('additional_event_list').pushObject(diary);\n                }\n            } else {\n                return diary.set('state', null);\n            }\n        },\n        updateField: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n        edit_event: function (event) {\n            this.set('record', event);\n            this.set('show_modal', true);\n            return false;\n        },\n        show_add_event_popup: function () {\n            this.set('show_modal', true);\n            return false;\n        },\n        closeModal: function (settings, record) {\n            this.set('show_modal', false);\n            return this.send('addStatusToRecord', record.get('state'), record.get('id'));\n        },\n        removeField: function (id) {\n            var event, record;\n            this.set('show_modal', false);\n            record = this.get('record');\n            this.set('record', null);\n            event = this.store.peekRecord('worksitediary', id);\n            if (event) {\n                return event.destroyRecord();\n            }\n        },\n        closeModalNotes: function (settings, record) {\n            var list;\n            list = this.get('addController.model.diaryreport_other_note');\n            list.pushObject(record);\n            return this.set('show_modal', false);\n        },\n    },\n});\n\nexport default WorksiteDiaryEventsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/diary-events/event-component/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddEventComponentComponent;\n\nimport Ember from 'ember';\n\nimport collectorField from '../../../../../collector/record-comp/component';\n\nimport config from '../../../../../../config/environment';\n\nimport $ from 'jquery';\n\nWorksitediaryReportAddEventComponentComponent = collectorField.extend({\n    intl: Ember.inject.service(),\n    store: Ember.inject.service(),\n    GpsLocator: Ember.inject.service(),\n    setup: Em.on('init', function () {\n        var model;\n        model = this.get('record');\n        if (model !== null) {\n            if (!model.get('id')) {\n                this.GetGPSCoords();\n            }\n            model.set('date', moment().format('YYYY-MM-DD'));\n            return model.set('project', this.get('project'));\n        }\n    }),\n    weather: null,\n    skip: ['rating', 'project', 'weather'],\n    updateRatingVisualization: Em.on('didRender', function () {\n        var model, rating, tmp_weather;\n        model = this.get('record');\n        if (model) {\n            rating = model.get('rating');\n            if (rating) {\n                this.giveThumb(rating);\n            }\n            if (this.get('weather') === null) {\n                tmp_weather = model.get('weather');\n                if (tmp_weather) {\n                    return this.set('weather', JSON.parse(tmp_weather));\n                }\n            }\n        }\n    }),\n    actions: {\n        giveThumbUp: function () {\n            return this.giveThumb('up');\n        },\n        giveThumbDown: function () {\n            return this.giveThumb('down');\n        },\n        save: function () {\n            if (!this.get('record.project')) {\n                this.set('record.project', this.get('project'));\n            }\n            return this._super();\n        },\n    },\n    GetGPSCoords: function () {\n        var self, tmp;\n        self = this;\n        tmp = Ember.A([]);\n        return this.get('GpsLocator')\n            .getLocation()\n            .then(\n                function (position) {\n                    return $.getJSON(\n                        config.APP.WEATHER_API +\n                            '?lat=' +\n                            position.coords.latitude +\n                            '&lon=' +\n                            position.coords.longitude,\n                        function (json) {\n                            var dew_point;\n                            dew_point = json.temperature - (100 - json.humidity) / 5;\n                            json.dew_point = Math.round(dew_point * 100) / 100;\n                            if (self.get('weather')) {\n                                self.set('weather', json);\n                            }\n                            json = JSON.stringify(json);\n                            if (self.get('record')) {\n                                return self.set('record.weather', json);\n                            }\n                        },\n                    );\n                },\n                function (error) {\n                    return self.set('currentPos', error);\n                },\n            );\n    },\n    giveThumb: function (value) {\n        var model;\n        model = this.get('record');\n        model.set('rating', value);\n        if (value === 'up') {\n            $('.thumbs span:eq(0)').addClass('active');\n            return $('.thumbs span:eq(1)').removeClass('active');\n        } else {\n            $('.thumbs span:eq(1)').addClass('active');\n            return $('.thumbs span:eq(0)').removeClass('active');\n        }\n    },\n});\n\nexport default WorksitediaryReportAddEventComponentComponent;\n","export default Ember.HTMLBars.template({\"id\":\"lQIxuTsG\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"showFields\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,1,[\\\"name\\\"]],[24,[\\\"skip\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-container\\\",[[23,1,[]]],[[\\\"change\\\",\\\"model\\\"],[\\\"setValue\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"rating\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-GoodQuality big-thumb\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"giveThumbUp\\\"]],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"down\\\"],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-PoorQuality big-thumb\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"giveThumbDown\\\"]],[8],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"weather\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"record\\\",\\\"weather\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"weather-info\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move move-\\\",[24,[\\\"weather\\\",\\\"weather\\\"]],\\\" weather-icon\\\"]]],[8],[9],[0,\\\"\\\\n                                    \\\"],[1,[24,[\\\"weather\\\",\\\"temperature\\\"]],false],[0,\\\"°C, \\\"],[1,[24,[\\\"weather\\\",\\\"windspeed\\\"]],false],[0,\\\"m/s, \\\"],[1,[24,[\\\"weather\\\",\\\"humidity\\\"]],false],[0,\\\"\\\\n                                %, \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.abbr_dew_point\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"weather\\\",\\\"dew_point\\\"]],false],[0,\\\"°C\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"weather-brand pull-right\\\"],[8],[0,\\\"—\\\"],[1,[28,\\\"t\\\",[\\\"general.weather_provider\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.getting_weather_info\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/diary-events/event-component/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/diary-events/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddDiaryEventsRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddDiaryEventsRoute = baseRoute.extend({\n    model: function () {\n        var model;\n        model = this._super();\n        this.store.query('worksitediary', {\n            sideload: true,\n            project: model.get('project.id'),\n        });\n        return Ember.RSVP.hash({\n            events: this.store.peekAll('worksitediary'),\n            parent: model,\n        });\n    },\n});\n\nexport default WorksitediaryReportAddDiaryEventsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"/ieLDZTA\",\"block\":\"{\\\"symbols\\\":[\\\"event\\\",\\\"event\\\",\\\"event\\\",\\\"event\\\",\\\"event\\\",\\\"event\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worksitediary@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_add_event_popup\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksite.add_event\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-danger pull-left\\\"],[10,\\\"onclick\\\",\\\"alert('Don\\\\\\\\'t click this. Drag fields here')\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksite.remove_field\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"scrollable-worksitediary\\\"],[8],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-4 worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.events\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\",\\\"classNames\\\",\\\"data-field\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"addStatusToRecord\\\",\\\"returnToStore\\\"],null],\\\"outlined\\\",[24,[\\\"event\\\"]]]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row draggable-event-library\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"filteredEvents\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,6,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[23,6,[\\\"state\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,6,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,6,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,6,[]]]],[8],[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb-pic\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[28,\\\"api-image\\\",[[23,6,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n\\\\n\\\\n                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,6,[]]]],[8],[0,\\\"\\\\n                                                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,6,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,6,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,6,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,6,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,6,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,6,[]]]],[8],[0,\\\"\\\\n                                                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,6,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,6,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,6,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,6,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,6,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[6]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-8\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default panel-size worksitediary-state-box\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.operation\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"value\\\"],[\\\"4\\\",[24,[\\\"model\\\",\\\"parent\\\",\\\"events_started_freetext\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\",\\\"classNames\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"addStatusToRecord\\\",\\\"initiated\\\"],null],\\\"outlined\\\"]],{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"started_event_list\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.drag_event_here\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"started_event_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,5,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,5,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,5,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,5,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb-pic\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[28,\\\"api-image\\\",[[23,5,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n\\\\n\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,5,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,5,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,5,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,5,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,5,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,5,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,5,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,5,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[5]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.events_work_in_progress\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default panel-size worksitediary-state-box\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.started_operations\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"value\\\"],[\\\"4\\\",[24,[\\\"model\\\",\\\"parent\\\",\\\"events_work_in_progress_freetext\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"classNames\\\",\\\"dropped\\\",\\\"data-field\\\"],[\\\"outlined\\\",[28,\\\"action\\\",[[23,0,[]],\\\"addStatusToRecord\\\",\\\"started\\\"],null],[24,[\\\"event\\\"]]]],{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"current_event_list\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.drag_event_here\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"current_event_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,4,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,4,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,4,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,4,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb-pic\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[28,\\\"api-image\\\",[[23,4,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n\\\\n\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,4,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,4,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,4,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,4,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,4,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,4,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,4,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,4,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default panel-size worksitediary-state-box\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.finished_operations\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"value\\\"],[\\\"4\\\",[24,[\\\"model\\\",\\\"parent\\\",\\\"events_finished_freetext\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"classNames\\\",\\\"dropped\\\",\\\"data-field\\\"],[\\\"outlined\\\",[28,\\\"action\\\",[[23,0,[]],\\\"addStatusToRecord\\\",\\\"finished\\\"],null],[24,[\\\"event\\\"]]]],{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"completed_event_list\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.drag_event_here\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"completed_event_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,3,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,3,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb-pic\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[28,\\\"api-image\\\",[[23,3,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n\\\\n\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,3,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,3,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default panel-size worksitediary-state-box\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.interrupted_operations\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"value\\\"],[\\\"4\\\",[24,[\\\"model\\\",\\\"parent\\\",\\\"events_interrupted_freetext\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"classNames\\\",\\\"dropped\\\",\\\"data-field\\\"],[\\\"outlined\\\",[28,\\\"action\\\",[[23,0,[]],\\\"addStatusToRecord\\\",\\\"interrupted\\\"],null],[24,[\\\"event\\\"]]]],{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"interrupted_event_list\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.drag_event_here\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"interrupted_event_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,2,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb-pic\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[28,\\\"api-image\\\",[[23,2,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n\\\\n\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default panel-size worksitediary-state-box\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.alteration_operations\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"value\\\"],[\\\"4\\\",[24,[\\\"model\\\",\\\"parent\\\",\\\"events_altered_freetext\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"classNames\\\",\\\"dropped\\\",\\\"data-field\\\"],[\\\"outlined\\\",[28,\\\"action\\\",[[23,0,[]],\\\"addStatusToRecord\\\",\\\"altered\\\"],null],[24,[\\\"event\\\"]]]],{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"additional_event_list\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.drag_event_here\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"additional_event_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,1,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb-pic\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[28,\\\"api-image\\\",[[23,1,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n\\\\n\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"menu.add_worksitediary\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"worksitediary/report/add/diary-events/event-component\\\",null,[[\\\"form\\\",\\\"recordSaved\\\",\\\"record_id\\\",\\\"cancelClicked\\\",\\\"project\\\"],[\\\"worksitediary\\\",[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null],[24,[\\\"record\\\",\\\"id\\\"]],\\\"removeField\\\",[24,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/diary-events/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/diary-modal/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MyModalComponent;\n\nimport Ember from 'ember';\n\nMyModalComponent = Ember.Component.extend({\n    hideCloseButtons: false,\n    okButtonText: null,\n    backdrop: 'static',\n    actions: {\n        ok: function () {\n            $('.modal', this.element).modal('hide');\n            return this.sendAction('ok');\n        },\n        clear: function () {\n            return this.sendAction('clear');\n        },\n    },\n    show: function () {\n        this.sendAction('didinsert');\n        return $('.modal', this.element)\n            .modal()\n            .on(\n                'hidden.bs.modal',\n                function () {\n                    return this.sendAction('close');\n                }.bind(this),\n            );\n    }.on('didInsertElement'),\n    hide: Em.on('willDestroyElement', function () {\n        return $('.modal', this.element).modal('hide');\n    }),\n});\n\nexport default MyModalComponent;\n","export default Ember.HTMLBars.template({\"id\":\"7vPKZ2Hy\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal fade\\\"],[11,\\\"data-backdrop\\\",[29,[[22,\\\"backdrop\\\"]]]],[8],[0,\\\"\\\\n  \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-dialog\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-content\\\"],[8],[0,\\\"\\\\n      \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-header\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hideCloseButtons\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"close\\\"],[12,\\\"data-dismiss\\\",\\\"modal\\\"],[12,\\\"aria-hidden\\\",\\\"true\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"test\\\"]],[8],[0,\\\"×\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"modal-title\\\"],[8],[1,[22,\\\"title\\\"],false],[9],[0,\\\"\\\\n      \\\"],[9],[0,\\\"\\\\n      \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-body\\\"],[8],[0,\\\"\\\\n        \\\"],[14,1],[0,\\\"\\\\n      \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hide_buttons\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-footer\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hideCloseButtons\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clear\\\"]],[8],[1,[28,\\\"t\\\",[\\\"modal.clear\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"ok\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"okButtonText\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"okButtonText\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"modal.ok\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n      \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n  \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/diary-modal/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/extra/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddExtraRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddExtraRoute = baseRoute.extend();\n\nexport default WorksitediaryReportAddExtraRoute;\n","export default Ember.HTMLBars.template({\"id\":\"So05ijLD\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"collector/field-container\\\",[\\\"diaryreport.egen_kontrol\\\"],[[\\\"model\\\"],[[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"collector/field-container\\\",[\\\"diaryreport.files\\\"],[[\\\"model\\\"],[[24,[\\\"model\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/extra/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/material/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryAddMaterialInfoController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryAddMaterialInfoController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    show_modal: false,\n    ordered_material_list: Ember.computed.alias('addController.model.orders_ordered'),\n    received_material_list: Ember.computed.alias('addController.model.orders_received'),\n    event_type_options: null,\n    material_settings: Ember.computed(function () {\n        return {\n            form: 'material',\n            defaultValues: {\n                order_date: moment().format('YYYY-MM-DD'),\n            },\n        };\n    }),\n    actions: {\n        addMaterialToRecord: function (status, event_id) {\n            var material;\n            material = this.get('store').peekRecord('material', event_id);\n            this.get('ordered_material_list').removeObject(\n                this.get('ordered_material_list').findBy('id', material.get('id')),\n            );\n            this.get('received_material_list').removeObject(\n                this.get('received_material_list').findBy('id', material.get('id')),\n            );\n            if (status !== 'returnToStore') {\n                material.set('order_state', status);\n                material.save();\n                //console.log status\n                if (status === 'ordered') {\n                    return this.get('ordered_material_list').pushObject(material);\n                } else if (status === 'received') {\n                    return this.get('received_material_list').pushObject(material);\n                }\n            } else {\n                return material.set('order_state', null);\n            }\n        },\n        edit_event: function (event) {\n            event.set('order_date', moment().format('YYYY-MM-DD'));\n            this.set('record', event);\n            this.set('show_modal', true);\n            return false;\n        },\n        show_add_event_popup: function () {\n            this.set('show_modal', true);\n            return false;\n        },\n        closeModal: function (settings, record) {\n            this.set('show_modal', false);\n            return this.send('addMaterialToRecord', record.get('order_state'), record.get('id'));\n        },\n        removeField: function (id) {\n            var mat;\n            this.set('show_modal', false);\n            this.set('record', null);\n            mat = this.store.peekRecord('material', id);\n            if (mat) {\n                return mat.destroyRecord();\n            }\n        },\n    },\n});\n\nexport default WorksiteDiaryAddMaterialInfoController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/material/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddMaterialRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddMaterialRoute = baseRoute.extend({\n    Collector: Em.inject.service('collector-service'),\n    session: Em.inject.service(),\n    model: function () {\n        return this.store.findAll('material');\n    },\n});\n\nexport default WorksitediaryReportAddMaterialRoute;\n","export default Ember.HTMLBars.template({\"id\":\"G6Y0mqOM\",\"block\":\"{\\\"symbols\\\":[\\\"material\\\",\\\"material\\\",\\\"material\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"material@add\\\"],null]],null,{\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_add_event_popup\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksite.material.add\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-danger\\\"],[10,\\\"onclick\\\",\\\"alert('Don\\\\\\\\'t click this!!! Drag fields here')\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"form_editor.remove_field\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-8\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default panel-size\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.ordered.materials\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\",\\\"classNames\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"addMaterialToRecord\\\",\\\"ordered\\\"],null],\\\"outlined\\\"]],{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"ordered_material_list\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.drag_event_here\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"ordered_material_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,3,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[\\\"image\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,3,[]]]],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb-pic\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[28,\\\"api-image\\\",[[23,3,[\\\"image\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n\\\\n\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,3,[]]]],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"arrival_date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n\\\\n                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,3,[]]]],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"arrival_date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.arrived.materials\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"classNames\\\",\\\"classNames\\\",\\\"dropped\\\",\\\"data-field\\\"],[\\\"list-wrapper\\\",\\\"outlined\\\",[28,\\\"action\\\",[[23,0,[]],\\\"addMaterialToRecord\\\",\\\"received\\\"],null],[24,[\\\"material\\\"]]]],{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"received_material_list\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.drag_event_here\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"received_material_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,2,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[\\\"image\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb-pic\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[28,\\\"api-image\\\",[[23,2,[\\\"image\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n\\\\n\\\\n                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                                                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"arrival_date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n\\\\n                                            \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                                                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"arrival_date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 uncategorized-div-size\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.materials\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\",\\\"classNames\\\",\\\"data-field\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"addMaterialToRecord\\\",\\\"returnToStore\\\"],null],\\\"outlined\\\",[24,[\\\"material\\\"]]]],{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[23,1,[\\\"order_state\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,1,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"image\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb-pic\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[28,\\\"api-image\\\",[[23,1,[\\\"image\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n\\\\n\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"arrival_date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n\\\\n                                        \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"arrival_date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"title\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"worksite.material.add\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"settings\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"material_settings\\\"]],[24,[\\\"record\\\",\\\"id\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null],\\\"removeField\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\" \\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/material/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/notes-anmalan/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryNotesAnmalanController;\n\nimport Ember from 'ember';\n\nimport direktivController from '../notes-direktiv/controller';\n\nWorksiteDiaryNotesAnmalanController = direktivController.extend({\n    type: 'anmalan',\n});\n\nexport default WorksiteDiaryNotesAnmalanController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/notes-anmalan/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddNotesAnmalanRoute;\n\nimport Ember from 'ember';\n\nimport direktivRoute from '../notes-direktiv/route';\n\nWorksitediaryReportAddNotesAnmalanRoute = direktivRoute.extend();\n\nexport default WorksitediaryReportAddNotesAnmalanRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/notes-besiktningar/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryNotesBesiktningarController;\n\nimport Ember from 'ember';\n\nimport direktivController from '../notes-direktiv/controller';\n\nWorksiteDiaryNotesBesiktningarController = direktivController.extend({\n    type: 'besiktningar',\n    intl: Ember.inject.service(),\n    options: Ember.computed(function () {\n        var intl;\n        intl = this.get('intl');\n        return [\n            intl.t('diaryreport.notes.options.byggnadsnamnd'),\n            intl.t('diaryreport.notes.options.arbetsmiljo'),\n            intl.t('diaryreport.notes.options.elinspektion'),\n            intl.t('diaryreport.notes.options.anlaggnprovning'),\n            intl.t('diaryreport.notes.options.miljo'),\n        ];\n    }),\n});\n\nexport default WorksiteDiaryNotesBesiktningarController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/notes-besiktningar/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddNotesBesiktningarRoute;\n\nimport Ember from 'ember';\n\nimport direktivRoute from '../notes-direktiv/route';\n\nWorksitediaryReportAddNotesBesiktningarRoute = direktivRoute.extend();\n\nexport default WorksitediaryReportAddNotesBesiktningarRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/notes-direktiv/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryNotesDirektivController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryNotesDirektivController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    type: 'direktiv',\n    records: Ember.computed('model.notes.[]', function () {\n        return this.get('model.notes').filterBy('type', this.get('type'));\n    }),\n    fields: Ember.computed(function () {\n        var c;\n        c = this.get('Collector');\n        return [\n            c.field('diaryreport_note', 'title'),\n            c.field('diaryreport_note', 'desc'),\n            c.field('diaryreport_note', 'responsible'),\n        ];\n    }),\n    options: Ember.computed(function () {\n        var intl;\n        intl = this.get('intl');\n        return [\n            intl.t('diaryreport.notes.options.bestallare'),\n            intl.t('diaryreport.notes.options.kontrollant'),\n            intl.t('diaryreport.notes.options.byggnadsnamnd'),\n            intl.t('diaryreport.notes.options.miljo'),\n        ];\n    }),\n    actions: {\n        pushToModel: function (form, record) {\n            return this.get('model.notes').pushObject(record);\n        },\n        removeFromModel: function (record) {\n            return this.get('model.notes').removeObject(record);\n        },\n    },\n});\n\nexport default WorksiteDiaryNotesDirektivController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/notes-direktiv/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddNotesDirektivRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddNotesDirektivRoute = baseRoute.extend({\n    templateName: 'worksitediary/report/add/notes-direktiv',\n});\n\nexport default WorksitediaryReportAddNotesDirektivRoute;\n","export default Ember.HTMLBars.template({\"id\":\"eqYMxz79\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"worksitediary/report/add/notes-page-component\\\",null,[[\\\"form\\\",\\\"type\\\",\\\"recordAdded\\\",\\\"recordDeleted\\\",\\\"fields\\\",\\\"records\\\",\\\"options\\\"],[\\\"diaryreport_note\\\",[24,[\\\"type\\\"]],\\\"pushToModel\\\",\\\"removeFromModel\\\",[24,[\\\"fields\\\"]],[24,[\\\"records\\\"]],[24,[\\\"options\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/notes-direktiv/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/notes-page-component/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddNotesPageComponent;\n\nimport Ember from 'ember';\n\nWorksitediaryReportAddNotesPageComponent = Ember.Component.extend({\n    session: Ember.inject.service(),\n    store: Ember.inject.service(),\n    setField: function (field) {\n        if (field.name === 'type') {\n            field.features.hide = true;\n        }\n        return field;\n    },\n    show_modal: false,\n    actions: {\n        updateField: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n        edit_record: function (record) {\n            this.set('record', record);\n            this.set('show_modal', true);\n            return false;\n        },\n        removeRecord: function (id) {\n            var record;\n            record = this.get('store').peekRecord(this.get('form'), id);\n            this.sendAction('recordDeleted', record);\n            return record.destroyRecord();\n        },\n        add_record: function () {\n            var record;\n            record = this.get('store').createRecord(this.get('form').dasherize(), {\n                type: this.get('type'),\n            });\n            this.set('record', record);\n            return this.set('show_modal', true);\n        },\n        closeModal: function () {\n            this.set('show_modal', false);\n            return this.set('record', null);\n        },\n        recordAdded: function (settings, record) {\n            this.sendAction('recordAdded', this.get('form'), record);\n            this.set('show_modal', false);\n            return this.set('record', null);\n        },\n        setSearchOption: function (option) {\n            return this.set('record.title', option.string);\n        },\n    },\n});\n\nexport default WorksitediaryReportAddNotesPageComponent;\n","export default Ember.HTMLBars.template({\"id\":\"a5HBPfSi\",\"block\":\"{\\\"symbols\\\":[\\\"component\\\",\\\"field\\\",\\\"record\\\",\\\"containerComp\\\",\\\"field\\\",\\\"model\\\",\\\"record\\\",\\\"field\\\",\\\"field\\\"],\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add_record\\\"]],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"diaryreport.add.\\\",[24,[\\\"form\\\"]],\\\".\\\",[24,[\\\"type\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"removeRecord\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-danger\\\"],[11,\\\"onclick\\\",[29,[\\\"alert(\\\",[28,\\\"t\\\",[\\\"diaryreport.dumpster.drag_alert\\\"],null],\\\")\\\"]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"diaryreport.dumpster.drag_here\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-offset-2 col-md-8\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"diaryreport.header.\\\",[24,[\\\"form\\\"]],\\\".\\\",[24,[\\\"type\\\"]]],null]],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-striped\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"report.\\\",[24,[\\\"form\\\"]],\\\".\\\",[23,9,[\\\"name\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[9]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"records\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"tagName\\\",\\\"onClick\\\"],[[23,7,[\\\"id\\\"]],\\\"tr\\\",[28,\\\"action\\\",[[23,0,[]],\\\"edit_record\\\",[23,7,[]]],null]]],{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[[23,8,[]],[24,[\\\"form\\\"]],[23,7,[]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[7]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"worksitediary/report/add/diary-modal\\\",null,[[\\\"title\\\",\\\"hideCloseButtons\\\",\\\"hide_buttons\\\"],[[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"diaryreport.modal.title.\\\",[24,[\\\"form\\\"]],\\\".\\\",[24,[\\\"type\\\"]]],null]],null],true,true]],{\\\"statements\\\":[[4,\\\"collector/record-custom-comp\\\",null,[[\\\"record\\\",\\\"form\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\",\\\"returnField\\\"],[[24,[\\\"record\\\"]],[24,[\\\"form\\\"]],\\\"recordAdded\\\",\\\"closeModal\\\",[24,[\\\"setField\\\"]]]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"name\\\"]],\\\"title\\\"],null]],null,{\\\"statements\\\":[[4,\\\"collector/field-container\\\",[[23,2,[]]],[[\\\"change\\\",\\\"model\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\"],[[\\\"target\\\"],[[23,1,[]]]]],[23,3,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"drop-down-search-input\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"bubbleChange\\\"],[[24,[\\\"options\\\"]],\\\"add-fields form-control\\\",[28,\\\"mut\\\",[[28,\\\"get\\\",[[23,6,[]],[23,5,[\\\"name\\\"]]],null]],null],[28,\\\"action\\\",[[23,0,[]],\\\"setSearchOption\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4,5,6]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/field-container\\\",[[23,2,[]]],[[\\\"change\\\",\\\"model\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\"],[[\\\"target\\\"],[[23,1,[]]]]],[23,3,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1,2,3]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/notes-page-component/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/notes-ritningar/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryReportAddNotesRitningarController;\n\nimport Ember from 'ember';\n\nimport direktivController from '../notes-direktiv/controller';\n\nWorksiteDiaryReportAddNotesRitningarController = direktivController.extend({\n    type: 'ritningar',\n    intl: Ember.inject.service(),\n    options: Ember.computed(function () {\n        var intl;\n        intl = this.get('intl');\n        return [\n            intl.t('diaryreport.notes.options.arkitekt'),\n            intl.t('diaryreport.notes.options.konstruktor'),\n            intl.t('diaryreport.notes.options.ror'),\n            intl.t('diaryreport.notes.options.ventilation'),\n            intl.t('diaryreport.notes.options.el'),\n            intl.t('diaryreport.notes.options.nyritning'),\n        ];\n    }),\n});\n\nexport default WorksiteDiaryReportAddNotesRitningarController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/notes-ritningar/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddNotesRitningarRoute;\n\nimport Ember from 'ember';\n\nimport direktivRoute from '../notes-direktiv/route';\n\nWorksitediaryReportAddNotesRitningarRoute = direktivRoute.extend();\n\nexport default WorksitediaryReportAddNotesRitningarRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/offering/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryOfferController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryOfferController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    given_offers_list: Ember.computed.alias('addController.model.diaryreport_given_offer'),\n    show_modal: false,\n    actions: {\n        updateField: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n        edit_event: function (event) {\n            this.set('record', event);\n            this.set('show_modal', true);\n            return false;\n        },\n        removeField: function (id) {\n            var mat;\n            this.set('show_modal', false);\n            this.set('record', null);\n            mat = this.store.peekRecord('diaryreport_given_offer', id);\n            if (mat) {\n                return mat.destroyRecord();\n            }\n        },\n        show_add_event_popup: function () {\n            var record;\n            record = this.get('store').createRecord('diaryreport_given_offer');\n            this.set('record', record);\n            this.set('show_modal', true);\n            return false;\n        },\n        closeModal: function (settings, record) {\n            this.get('given_offers_list').pushObject(record);\n            return this.set('show_modal', false);\n        },\n    },\n});\n\nexport default WorksiteDiaryOfferController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/offering/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddOffersRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddOffersRoute = baseRoute.extend();\n\nexport default WorksitediaryReportAddOffersRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Lw00XCID\",\"block\":\"{\\\"symbols\\\":[\\\"event\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport_given_offer@add\\\"],null]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_add_event_popup\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksite.offers\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-danger\\\"],[10,\\\"onclick\\\",\\\"alert('Don\\\\\\\\'t click this!!! Drag fields here')\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"form_editor.remove_field\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.offers\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"given_offers_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,1,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\\n                                    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[1,[23,1,[\\\"phase\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"title\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"worksite.offers\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"diaryreport_given_offer\\\",[24,[\\\"record\\\",\\\"id\\\"]],\\\"closeModal\\\",\\\"removeField\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/offering/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/ordered-changes/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryReviewController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryReviewController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    store: Ember.inject.service(),\n    ordered_changes_list: Ember.computed.alias('addController.model.diaryreport_misc'),\n    show_modal: false,\n    actions: {\n        updateField: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n        edit_event: function (event) {\n            this.set('record', event);\n            this.set('show_modal', true);\n            return false;\n        },\n        removeField: function (id) {\n            var mat;\n            this.set('show_modal', false);\n            this.set('record', null);\n            mat = this.store.peekRecord('diaryreport_misc', id);\n            if (mat) {\n                return mat.destroyRecord();\n            }\n        },\n        show_add_event_popup: function () {\n            var record;\n            record = this.store.createRecord('diaryreport_misc');\n            this.set('record', record);\n            this.set('show_modal', true);\n            return false;\n        },\n        closeModal: function (settings, record) {\n            this.get('ordered_changes_list').pushObject(record);\n            return this.set('show_modal', false);\n        },\n    },\n});\n\nexport default WorksiteDiaryReviewController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/ordered-changes/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddOrderedChangesRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddOrderedChangesRoute = baseRoute.extend();\n\nexport default WorksitediaryReportAddOrderedChangesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"du403Q93\",\"block\":\"{\\\"symbols\\\":[\\\"event\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport_misc@add\\\"],null]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_add_event_popup\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksite.ordered-changes\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-danger\\\"],[10,\\\"onclick\\\",\\\"alert('Don\\\\\\\\'t click this!!! Drag fields here')\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"form_editor.remove_field\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.ordered_changes\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"ordered_changes_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,1,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\\n                                    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[1,[23,1,[\\\"phase\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                               \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"title\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"worksite.ordered-changes\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"diaryreport_misc\\\",[24,[\\\"record\\\",\\\"id\\\"]],\\\"closeModal\\\",\\\"removeField\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/ordered-changes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/other-entries/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryExtraController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryExtraController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    other_entries_list: Ember.computed.alias('addController.model.diaryreport_other_note'),\n    show_modal: false,\n    actions: {\n        updateField: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n        edit_event: function (event) {\n            this.set('record', event);\n            this.set('show_modal', true);\n            return false;\n        },\n        removeField: function (id) {\n            var mat;\n            this.set('show_modal', false);\n            this.set('record', null);\n            mat = this.store.peekRecord('diaryreport_other_note', id);\n            if (mat) {\n                return mat.destroyRecord();\n            }\n        },\n        show_add_event_popup: function () {\n            var record;\n            record = this.get('store').createRecord('diaryreport_other_note');\n            this.set('record', record);\n            this.set('show_modal', true);\n            return false;\n        },\n        closeModal: function (settings, record) {\n            this.get('other_entries_list').pushObject(record);\n            return this.set('show_modal', false);\n        },\n    },\n});\n\nexport default WorksiteDiaryExtraController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/other-entries/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddExtrasRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddExtrasRoute = baseRoute.extend();\n\nexport default WorksitediaryReportAddExtrasRoute;\n","export default Ember.HTMLBars.template({\"id\":\"0HhWEqa6\",\"block\":\"{\\\"symbols\\\":[\\\"event\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport_other_note@add\\\"],null]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_add_event_popup\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksite.other_entries\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-danger\\\"],[10,\\\"onclick\\\",\\\"alert('Don\\\\\\\\'t click this!!! Drag fields here')\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"form_editor.remove_field\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.other_entries\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"other_entries_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,1,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"image\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-2 worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb\\\"],[11,\\\"style\\\",[29,[\\\"background: url(\\\",[28,\\\"api-image\\\",[[23,1,[\\\"image\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"phase\\\"]],false],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n\\\\n                                        \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"phase\\\"]],false],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"title\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"worksite.other_entries\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"diaryreport_other_note\\\",[24,[\\\"record\\\",\\\"id\\\"]],\\\"closeModal\\\",\\\"removeField\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/other-entries/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/required-extra/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryRequiredExtraController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryRequiredExtraController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    required_extra_list: Ember.computed.alias('addController.model.diaryreport_required_extra'),\n    show_modal: false,\n    actions: {\n        updateField: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n        edit_event: function (event) {\n            this.set('record', event);\n            this.set('show_modal', true);\n            return false;\n        },\n        removeField: function (id) {\n            var mat;\n            this.set('show_modal', false);\n            this.set('record', null);\n            mat = this.store.peekRecord('diaryreport_required_extra', id);\n            if (mat) {\n                return mat.destroyRecord();\n            }\n        },\n        show_add_event_popup: function () {\n            var record;\n            record = this.get('store').createRecord('diaryreport_required_extra');\n            this.set('record', record);\n            this.set('show_modal', true);\n            return false;\n        },\n        closeModal: function (settings, record) {\n            this.get('required_extra_list').pushObject(record);\n            return this.set('show_modal', false);\n        },\n    },\n});\n\nexport default WorksiteDiaryRequiredExtraController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/required-extra/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportRequiredAddExtrasRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportRequiredAddExtrasRoute = baseRoute.extend({\n    Collector: Em.inject.service('collector-service'),\n    session: Em.inject.service(),\n});\n\nexport default WorksitediaryReportRequiredAddExtrasRoute;\n","export default Ember.HTMLBars.template({\"id\":\"95UyyZnj\",\"block\":\"{\\\"symbols\\\":[\\\"event\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport_required_extra@add\\\"],null]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_add_event_popup\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksite.required_extras\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-danger\\\"],[10,\\\"onclick\\\",\\\"alert('Don\\\\\\\\'t click this!!! Drag fields here')\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"form_editor.remove_field\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.required_extras\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"required_extra_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,1,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\\n                                    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[1,[23,1,[\\\"phase\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"worksitediary/report/add/diary-modal\\\",null,[[\\\"title\\\",\\\"hideCloseButtons\\\",\\\"hide_buttons\\\"],[[24,[\\\"event_modal_title\\\"]],true,true]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"diaryreport_required_extra\\\",[24,[\\\"record\\\",\\\"id\\\"]],\\\"closeModal\\\",\\\"removeField\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/required-extra/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/review-page/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryReviewController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryReviewController = Ember.Controller.extend({\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    review_options: Ember.computed(function () {\n        var field;\n        field = this.get('Collector').field('review_and_inspection', 'type');\n        field = Ember.Object.create(field);\n        field.get('options').forEach((item) => {\n            return (item.name = this.get('intl').t('review_and_inspection.type.' + item.value));\n        });\n        return field.get('options');\n    }),\n    currentdate: Em.computed(function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n    datefield: Em.computed(function () {\n        var c, field;\n        c = this.get('Collector');\n        field = c.field('review_and_inspection', 'date');\n        field.value = this.get('date');\n        return field;\n    }),\n    initData: Ember.on('init', function () {\n        var currentdate;\n        currentdate = moment().format('YYYY-MM-DD');\n        return this.set('date', currentdate);\n    }),\n    date: '',\n    title: '',\n    added_reviews_and_inspections: Ember.computed.alias(\n        'addController.model.review_and_inspection',\n    ),\n    actions: {\n        update_reviews: function (title) {\n            return this.set('title', title);\n        },\n        update_date: function (date) {\n            return this.set('date', date);\n        },\n        add_item: function () {\n            var date, record;\n            if (this.get('title') === '' && this.get('value') === void 0) {\n                return;\n            }\n            record = this.get('store').createRecord('review_and_inspection');\n            if (this.get('title') !== '') {\n                record.set('title', this.get('title'));\n            } else {\n                record.set('title', this.get('value.string'));\n            }\n            date = this.get('date') || this.get('currentdate');\n            record.set('date', date);\n            this.set('record', record);\n            this.get('added_reviews_and_inspections').pushObject(record);\n            record.save();\n            return this.set('value', '');\n        },\n        remove_item: function (record) {\n            this.set('record', null);\n            this.get('added_reviews_and_inspections').removeObject(record);\n            return record.destroyRecord();\n        },\n    },\n});\n\nexport default WorksiteDiaryReviewController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/review-page/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddReviewPageRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddReviewPageRoute = baseRoute.extend();\n\nexport default WorksitediaryReportAddReviewPageRoute;\n","export default Ember.HTMLBars.template({\"id\":\"9srmT6Hb\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.review-page\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"review_and_inspection@add\\\"],null]],null,{\\\"statements\\\":[[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"review_and_inspection.reviews\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"drop-down-search-input\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"classes\\\",\\\"change\\\"],[[24,[\\\"review_options\\\"]],[24,[\\\"value\\\"]],\\\"form-control add-fields\\\",\\\"update_reviews\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"datefield\\\"]]],[[\\\"change\\\"],[\\\"update_date\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add_item\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.related_reviews_and_inspections\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"added_reviews_and_inspections\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-8\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[23,1,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-3\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"date\\\"]],\\\"MM/DD/YYYY\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-1 pull-right\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success trash-icon-size \\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove_item\\\",[23,1,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/review-page/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddRoute;\n\nimport Ember from 'ember';\n\nWorksitediaryReportAddRoute = Ember.Route.extend({\n    store: Ember.inject.service(),\n    model: function (params) {\n        var date;\n        date = moment().format('YYYY-MM-DD');\n        if (params.date && moment(params.date).isValid()) {\n            date = params.date;\n        }\n        if (params.id === 'add') {\n            return this.get('store').createRecord('diaryreport', {\n                diary_date: date,\n            });\n        } else {\n            return this.get('store').findRecord('diaryreport', params.id, {\n                include: true,\n            });\n        }\n    },\n    actions: {\n        willTransition: function (transition) {\n            if (transition.targetName.substring(0, 25) === 'worksitediary.report.add.') {\n                return this.get('controller.model').save();\n            }\n        },\n    },\n});\n\nexport default WorksitediaryReportAddRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/signature/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiarySignatureController;\n\nimport Ember from 'ember';\n\nWorksiteDiarySignatureController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    actions: {\n        changeOverseerSignature: function (sig) {\n            this.set('addController.model.overseer', sig);\n            return this.set('addController.model.status', 'Approved');\n        },\n        changeSupervisorSignature: function (sig) {\n            this.set('addController.model.supervisor', sig);\n            return this.set('addController.model.status', 'Approved');\n        },\n    },\n});\n\nexport default WorksiteDiarySignatureController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/signature/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddSignatureRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddSignatureRoute = baseRoute.extend();\n\nexport default WorksitediaryReportAddSignatureRoute;\n","export default Ember.HTMLBars.template({\"id\":\"LEt4jYb/\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"diaryreport.supervisor\\\"],[[\\\"model\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],\\\"changeSupervisorSignature\\\"]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"diaryreport.overseer\\\"],[[\\\"model\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],\\\"changeOverseerSignature\\\"]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/signature/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/summary-page/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteSummaryController;\n\nimport Ember from 'ember';\n\nWorksiteSummaryController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    work_force: Ember.computed('model.work_force', function () {\n        if (this.get('model.work_force')) {\n            return this.get('model.work_force').split(',');\n        }\n    }),\n    user: Ember.computed(function () {\n        var tmp_user, user;\n        tmp_user = this.get('addController.model.user');\n        if (tmp_user) {\n            user = this.store.peekRecord('user', tmp_user.id);\n            return user.get('firstname') + ' ' + user.get('lastname');\n        } else {\n            return '';\n        }\n    }),\n});\n\nexport default WorksiteSummaryController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/summary-page/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediarySummaryReviewPageRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediarySummaryReviewPageRoute = baseRoute.extend();\n\nexport default WorksitediarySummaryReviewPageRoute;\n","export default Ember.HTMLBars.template({\"id\":\"ltDnJbMi\",\"block\":\"{\\\"symbols\\\":[\\\"force\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.user\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"user\\\",\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"user\\\",\\\"firstname\\\"]],false],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.work_day\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.diaryreport.work_day\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"work_day\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.week\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"work_week\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.foremans_at_site\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.foremans_at_site\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"foremans_at_site\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.workers_at_site\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"workers_at_site\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.subcontractors_at_site\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"subcontractors_at_site\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.side_contractors_at_site\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"side_contractors_at_site\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.other_contractors_at_site\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"other_contractors_at_site\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.stock_changes_at_site\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"stock_changes_at_site\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.work_force\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.diaryreport.work_force\\\"],null],false],[0,\\\":\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"work_force\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"br\\\",true],[8],[9],[1,[23,1,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.events_started\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"events_started\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n            \\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.events_work_in_progress\\\"],null]],null,{\\\"statements\\\":[[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.events_work_in_progress\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"events_work_in_progress\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.events_finished\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"events_finished\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.events_interrupted\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"events_interrupted\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.events_altered\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"events_altered\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/summary-page/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/supervisor-note/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryExtraController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryExtraController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    supervisor_note_list: Ember.computed.alias('addController.model.diaryreport_supervisor_note'),\n    show_modal: false,\n    actions: {\n        updateField: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n        edit_event: function (event) {\n            this.set('record', event);\n            this.set('show_modal', true);\n            return false;\n        },\n        removeField: function (id) {\n            var mat;\n            this.set('show_modal', false);\n            this.set('record', null);\n            mat = this.store.peekRecord('diaryreport_supervisor_note', id);\n            if (mat) {\n                return mat.destroyRecord();\n            }\n        },\n        show_add_event_popup: function () {\n            var record;\n            record = this.get('store').createRecord('diaryreport_supervisor_note');\n            this.set('record', record);\n            this.set('show_modal', true);\n            return false;\n        },\n        closeModal: function (settings, record) {\n            this.get('supervisor_note_list').pushObject(record);\n            return this.set('show_modal', false);\n        },\n    },\n});\n\nexport default WorksiteDiaryExtraController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/supervisor-note/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddExtrasRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddExtrasRoute = Ember.Route.extend();\n\nexport default WorksitediaryReportAddExtrasRoute;\n","export default Ember.HTMLBars.template({\"id\":\"1Ztm6a2r\",\"block\":\"{\\\"symbols\\\":[\\\"event\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport_supervisor_note@add\\\"],null]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_add_event_popup\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksite.supervisor_notes\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-danger\\\"],[10,\\\"onclick\\\",\\\"alert('Don\\\\\\\\'t click this!!! Drag fields here')\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"form_editor.remove_field\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.supervisor_notes\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"supervisor_note_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,1,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\\n                                    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[1,[23,1,[\\\"phase\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"title\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"worksite.supervisor_notes\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"diaryreport_supervisor_note\\\",[24,[\\\"record\\\",\\\"id\\\"]],\\\"closeModal\\\",\\\"removeField\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/supervisor-note/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"dgvQJ3z7\",\"block\":\"{\\\"symbols\\\":[\\\"page\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.diaryreport\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"worksitediary.index\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row hidden-xs hidden-sm\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ol\\\",true],[10,\\\"class\\\",\\\"breadcrumb\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"filteredPages\\\"]]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"disabled\\\",\\\"route\\\"],[\\\"li\\\",\\\"link\\\",[28,\\\"if\\\",[[24,[\\\"enable_next\\\"]],false,true],null],[23,1,[\\\"link\\\"]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"i\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[23,1,[\\\"icon\\\"]],[23,1,[\\\"icon\\\"]],\\\"move move-Note\\\"],null]]]],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[[28,\\\"if\\\",[[23,1,[\\\"string\\\"]],[23,1,[\\\"string\\\"]],[23,1,[\\\"link\\\"]]],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hide_previous\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"previous\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-left\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"previous\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"enable_next\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"router\\\",\\\"currentRouteName\\\"]],\\\"worksitediary.report.add.summary-page\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"next\\\"]],[8],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"next\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/first/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportFirstController;\n\nimport Ember from 'ember';\n\nWorksitediaryReportFirstController = Ember.Controller.extend({\n    dateField: Ember.computed(function () {\n        var field;\n        field = this.get('Collector').fieldArray('diaryreport', ['diary_date'])[0];\n        field.value = moment().format('YYYY-MM-DD');\n        this.send('updateField', field.value, 'diary_date');\n        return field;\n    }),\n    projectField: Ember.computed(function () {\n        var field;\n        field = this.get('Collector').fieldArray('diaryreport', ['project'])[0];\n        this.send('updateField', field.value, 'project');\n        return field;\n    }),\n    actions: {\n        updateField: function (value, fieldname) {\n            var params;\n            if (fieldname === 'diary_date') {\n                this.set('diary_date', value);\n            }\n            if (fieldname === 'project') {\n                this.set('project', value);\n            }\n            if (Em.isEmpty(this.get('project'))) {\n                return;\n            }\n            if (Em.isEmpty(this.get('diary_date'))) {\n                return;\n            }\n            //check if there is already journal for this day\n            params = {};\n            params.diary_date = this.get('diary_date');\n            params.project = this.get('project.id');\n            this.get('store')\n                .query('diaryreport', params)\n                .then((data) => {\n                    if (data.content.length > 0) {\n                        this.set('diaryFound', true);\n                        this.set('diaryRow', data.content[0]);\n                    } else {\n                        this.set('diaryFound', false);\n                    }\n                    return this.set('showNextButton', true);\n                });\n        },\n        goToNext: function () {\n            var id;\n            if (this.get('diaryFound')) {\n                id = this.get('diaryRow.id');\n            } else {\n                id = 'add';\n            }\n            this.set('dateField.value', this.get('diary_date'));\n            this.set('projectField.value', this.get('project'));\n            this.set('showNextButton', false);\n            return this.transitionToRoute('worksitediary.report.add.basic-info', id);\n        },\n    },\n});\n\nexport default WorksitediaryReportFirstController;\n","export default Ember.HTMLBars.template({\"id\":\"bamPoLR+\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.report.add.new_journal_entry\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[24,[\\\"dateField\\\",\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"change\\\"],[[24,[\\\"dateField\\\"]],\\\"form-control add-fields\\\",\\\"updateField\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[24,[\\\"projectField\\\",\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"change\\\"],[[24,[\\\"projectField\\\"]],\\\"form-control add-fields\\\",\\\"updateField\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showNextButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"goToNext\\\"]],[8],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"next\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/first/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportRoute;\n\nimport Ember from 'ember';\n\nWorksitediaryReportRoute = Ember.Route.extend();\n\nexport default WorksitediaryReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"iMHSWANm\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nWorksitediaryRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default WorksitediaryRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/supervisor-notes-report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SupervisorNotesIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nSupervisorNotesIndexController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    form: 'diaryreport_supervisor_note',\n    showColumns: ['phase', 'date', 'status', 'description', 'image', 'responsible'],\n    status: 'all',\n    queryParams: ['date', 'page'],\n    date: moment().subtract(1, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'date',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n        }),\n    }),\n});\n\nexport default SupervisorNotesIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/supervisor-notes-report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SupervisorNotesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nSupervisorNotesRoute = GeneralReportRoute.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('diaryreport_supervisor_note', params);\n    },\n});\n\nexport default SupervisorNotesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"0cnNM2NW\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"status\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"diaryreport_supervisor_note\\\",[24,[\\\"status\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"limit\\\",\\\"offset\\\"],[\\\"bubbleTransition\\\",\\\"diaryreport_supervisor_note\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/supervisor-notes-report/template.hbs\"}});","import EmberObject from '@ember/object';\nimport GeneralReportController from 'tt4/controllers/general-report';\nimport filterModel from 'tt4/mixins/filter-model';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport { A } from '@ember/array';\n\nconst WorktaskCalendarController = GeneralReportController.extend(filterModel, {\n    Collector: service('collector-service'),\n    store: service(),\n    localStorageWrapper: service(),\n    intl: service(),\n    dialogs: service(),\n    queryParams: ['project', 'user', 'date', 'q', 'customer'],\n    skip_params: null,\n    date: null, // Route defines default date if not set\n    localStorageKey: 'worktaskcalendar_defaultColumns',\n    form: 'worktask',\n\n    user: null,\n    project: null,\n    // do not use limiting with calender\n    limit: null,\n\n    colorFrom: null,\n    absenceColorFrom: null,\n\n    init() {\n        this._super();\n        this.skip_params = ['page', 'order', 'date'];\n        this.colorFrom = ['project.id', 'user.firstname', 'user.lastname'];\n        this.absenceColorFrom = ['abcensetype.id', 'user.firstname', 'user.lastname'];\n    },\n\n    modelAlias: alias('model'),\n\n    settings: EmberObject.create({\n        sortByColumn: 'user,date',\n    }),\n\n    calFields: computed(function () {\n        const c = this.Collector;\n        const col_arr = ['name', 'project', 'user', 'est_hours', 'hours'];\n        const fields = c.fieldArray(this.form, col_arr);\n        return fields;\n    }),\n\n    multiDayFields: computed(function () {\n        return this.Collector.fieldArray(this.form, ['project', 'name', 'user']);\n    }),\n\n    multiDayAbsenceFields: computed(function () {\n        return this.Collector.fieldArray('abcense', ['user', 'abcensetype', 'description']);\n    }),\n\n    oneDayAbsenceFields: computed(function () {\n        const c = this.Collector;\n        const col_arr = ['abcensetype', 'starttime', 'endtime', 'absence_hours', 'description'];\n        const fields = c.fieldArray('abcense', col_arr);\n        return fields;\n    }),\n\n    filters: computed(function () {\n        return A([\n            EmberObject.create({ field: 'date' }),\n            EmberObject.create({ field: 'project' }),\n            EmberObject.create({ field: 'user', singleselect: true }),\n            EmberObject.create({ field: 'customer' }),\n        ]);\n    }),\n\n    filteredModelOneDay: computed(\n        'filteredModel.{@each.date,filteredModel.@each.enddate}',\n        function () {\n            const c = this.Collector;\n            const model = this.filteredModel;\n            if (!c.fieldExists('worktask', 'enddate')) {\n                return model;\n            }\n\n            return model.filter(function (item) {\n                if (\n                    get(item, 'enddate') === null ||\n                    get(item, 'enddate') === get(item, 'startdate')\n                ) {\n                    return true;\n                }\n                return false;\n            });\n        },\n    ),\n\n    filteredModelManyDays: computed('filteredModel.{@each.date,@each.enddate}', function () {\n        const c = this.Collector;\n        const model = this.filteredModel;\n        if (!c.fieldExists('worktask', 'enddate')) {\n            return;\n        }\n\n        return model.filterBy('enddate').sortBy('date');\n    }),\n\n    allAbsences: computed(function () {\n        return this.store.peekAll('abcense');\n    }),\n\n    filteredAbsences: computed('allAbsences.[]', 'filters.@each.value', function () {\n        return this._filterThese(this.allAbsences, ['page', 'order', 'date', 'project']);\n    }),\n\n    filteredAbsencesOneDay: computed(\n        'filteredAbsences.{[],@each.startdate,@each.enddate}',\n        function () {\n            const model = this.filteredAbsences;\n\n            return model.filter(function (item) {\n                if (\n                    get(item, 'enddate') === null ||\n                    get(item, 'enddate') === get(item, 'startdate')\n                ) {\n                    return true;\n                }\n                return false;\n            });\n        },\n    ),\n\n    filteredAbsencesManyDays: computed(\n        'filteredAbsences.{[],@each.startdate,@each.enddate}',\n        function () {\n            const model = this.filteredAbsences;\n            return model.filter(function (item) {\n                if (\n                    get(item, 'enddate') !== null &&\n                    get(item, 'enddate') !== get(item, 'startdate')\n                ) {\n                    return true;\n                }\n                return false;\n            });\n        },\n    ),\n\n    actions: {\n        openWorktaskModal(day) {\n            const params = { date: day };\n\n            // next two lines is added to make sure new record will be shown on calendar right away\n            // even when filters are used\n            if (this.user) {\n                params.user = this.store.peekRecord('user', this.user);\n            }\n            if (this.project) {\n                params.project = this.store.peekRecord('project', this.project);\n            }\n\n            this.store.createRecord('worktask', params);\n            return this.transitionToRoute({ queryParams: { modal: ['worktask', 'new'] } });\n        },\n\n        openEditor(row) {\n            return this.transitionToRoute({ queryParams: { modal: ['worktask', get(row, 'id')] } });\n        },\n\n        openEditorAbsence(row) {\n            return this.transitionToRoute({ queryParams: { modal: ['abcense', get(row, 'id')] } });\n        },\n\n        catchActions(action, params) {\n            if (action === 'fieldsUpdate') {\n                const c = this.Collector;\n                const cols = [];\n                params.forEach((col) => {\n                    return cols.push(col.ext);\n                });\n                const fields = c.fieldArray(this.form, cols);\n                return set(this, 'calFields', fields);\n            }\n        },\n\n        remove(record) {\n            /* eslint-disable ember/named-functions-in-promises */\n            return this.dialogs.confirm(this.intl.t('general.remove_row')).then(function (con) {\n                if (con) {\n                    return record.destroyRecord();\n                }\n            });\n        },\n\n        eventDropped(day, event) {\n            const c = this.Collector;\n            const [id, model] = Array.from(event.split(':'));\n            const dropped_record = this.store.peekRecord(model, id);\n            if (get(dropped_record, 'date') === day || get(dropped_record, 'startdate') === day) {\n                return;\n            }\n\n            const record = c.copyRecord(dropped_record);\n            if (model === 'abcense') {\n                set(record, 'startdate', day);\n                set(record, 'enddate', day);\n            } else {\n                set(record, 'date', day);\n            }\n            /* eslint-disable ember/named-functions-in-promises */\n            return record\n                .save()\n                .then((row) => {\n                    return row.reload();\n                })\n                .catch((row) => {\n                    let msg = '<h4>' + this.intl.t('worktime.calendar.error') + '</h4><br>';\n                    if (this.intl.exists('worktime.calendar.error_type.' + row.errors.error)) {\n                        msg += this.intl.t('worktime.calendar.error_type.' + row.errors.error);\n                    } else if (this.intl.exists('errors.' + row.errors.error)) {\n                        msg += this.intl.t('errors.' + row.errors.error);\n                    } else {\n                        msg += row.errors.error_msg;\n                    }\n                    record.destroyRecord();\n                    return this.dialogs.alert(msg);\n                });\n        },\n    },\n});\n\nexport default WorktaskCalendarController;\n","import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport Route from '@ember/routing/route';\nimport initRoute from 'tt4/mixins/init-route';\nimport { isEmpty, isPresent } from '@ember/utils';\nimport { inject as service } from '@ember/service';\nimport { set, get } from '@ember/object';\nimport moment from 'moment';\n\nconst WorktaskCalendarRoute = Route.extend(AuthenticatedRouteMixin, initRoute, {\n    tools: service(),\n\n    Collector: service('collector-service'),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        customer: {\n            refreshModel: true,\n        },\n        more: {\n            refreshModel: true,\n        },\n    },\n\n    form: 'worktask',\n    more: null,\n\n    model(params) {\n        if (!params.date) params.date = this._defaultDateRange();\n\n        let split_date = params.date.split('_');\n\n        params.sideload = [\n            'project.name',\n            'project.id',\n            'user.firstname',\n            'user.lastname',\n            'user.image',\n        ];\n\n        delete params.page;\n        // check if more-param is present, parse it correctly and finally remove it from params\n        if (params.more != null) {\n            params.more.split('|').forEach(function (param) {\n                const splitted = param.split(':');\n                if (splitted[0].includes('-')) {\n                    if (isPresent(splitted[1])) {\n                        const split = splitted[0].split('-');\n                        if (isEmpty(params[split[0]])) {\n                            return (params[split[0]] = { [split[1]]: splitted[1] });\n                        }\n                    }\n                } else {\n                    return (params[splitted[0]] = splitted[1]);\n                }\n            });\n            set(this, 'more', params.more);\n        } else {\n            set(this, 'more', null);\n        }\n\n        if (params != null && params['more']) {\n            delete params['more'];\n        }\n\n        params.limit = \"all\";\n\n        this.store.query('worktask', params);\n        if (this.Collector.testNeedsOne('abcense')) {\n            const absenceParams = Object.assign({}, params);\n            if (absenceParams.order != null && absenceParams.order.indexOf('date') > -1) {\n                absenceParams.order = absenceParams.order.replace('date', 'startdate');\n            }\n            delete absenceParams.project;\n            delete absenceParams.customer;\n            for (let param in absenceParams) {\n                if (!this.Collector.fieldExists('abcense', param)) {\n                    delete absenceParams[param];\n                }\n            }\n            absenceParams.sideload = [\n                'user.firstname',\n                'user.lastname',\n                'user.image',\n                'abcensetype.name',\n            ];\n            delete absenceParams.date;\n            absenceParams.startdate =\n                moment(split_date[0]).subtract(36, 'days').format('YYYY-MM-DD') +\n                '_' +\n                split_date[1];\n            this.store.query('abcense', absenceParams);\n        }\n\n        return this.store.peekAll('worktask');\n    },\n\n    setupController(controller, model) {\n        this._super(controller, model);\n\n        // Sync controller.date\n        if (!get(controller, 'date')) {\n                set(controller, 'date', this._defaultDateRange());\n        }\n\n\n        if (get(this, 'more')) {\n            return get(this, 'more')\n                .split('|')\n                .forEach(function (param) {\n                    const splitted = param.split(':');\n                    return set(controller, splitted[0], splitted[1]);\n                });\n        }\n    },\n\n    _defaultDateRange() {\n        const start = moment().startOf('week').format('YYYY-MM-DD');\n        const end = moment().endOf('week').format('YYYY-MM-DD');\n        // two weeks range (Previous week + current week)\n        const previousWeekStart = moment(start).subtract(7, 'days').format('YYYY-MM-DD');\n        return `${previousWeekStart}_${end}`;\n    },\n});\n\nexport default WorktaskCalendarRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Kuk1cYGR\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\",\\\"index\\\",\\\"specialDay\\\",\\\"row\\\",\\\"row\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"form-column-selector\\\",null,[[\\\"form\\\",\\\"shownColumns\\\",\\\"localStorageKey\\\",\\\"bubbleActions\\\"],[[24,[\\\"form\\\"]],[24,[\\\"shownColumns\\\"]],\\\"worktaskcalendar_defaultColumns\\\",\\\"catchActions\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"calendar-report\\\",null,[[\\\"hideDateRangePicker\\\",\\\"date\\\",\\\"user\\\"],[true,[24,[\\\"date\\\"]],[24,[\\\"user\\\"]]]],{\\\"statements\\\":[[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\",\\\"class\\\",\\\"tagName\\\",\\\"data-field\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"eventDropped\\\",[23,1,[]]],null],\\\"draggable-calendar-day\\\",\\\"div\\\",[23,1,[\\\"date\\\"]]]],{\\\"statements\\\":[[4,\\\"calendar-report-day\\\",null,[[\\\"day\\\",\\\"specialDay\\\"],[[23,1,[]],[23,3,[]]]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"calendar-report-add\\\",null,[[\\\"click\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"openWorktaskModal\\\",[23,1,[]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"calendar-card-multi-day\\\",null,[[\\\"index\\\",\\\"date\\\",\\\"data\\\",\\\"day\\\",\\\"fields\\\",\\\"date_field\\\",\\\"classNames\\\",\\\"randomColor\\\",\\\"onclick\\\"],[[23,2,[]],[24,[\\\"date\\\"]],[24,[\\\"filteredModelManyDays\\\"]],[23,1,[]],[24,[\\\"multiDayFields\\\"]],\\\"date\\\",\\\"worktask-calendar-card\\\",[24,[\\\"colorFrom\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"openEditor\\\"],null]]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[4,\\\"calendar-card-multi-day\\\",null,[[\\\"index\\\",\\\"date\\\",\\\"data\\\",\\\"day\\\",\\\"fields\\\",\\\"date_field\\\",\\\"classNames\\\",\\\"randomColor\\\",\\\"onclick\\\"],[[23,2,[]],[24,[\\\"date\\\"]],[24,[\\\"filteredAbsencesManyDays\\\"]],[23,1,[]],[24,[\\\"multiDayAbsenceFields\\\"]],\\\"startdate\\\",\\\"worktask-calendar-card\\\",[24,[\\\"absenceColorFrom\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"openEditorAbsence\\\"],null]]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"calendar-card-v2\\\",null,[[\\\"data\\\",\\\"day\\\",\\\"fields\\\",\\\"date_field\\\",\\\"classNames\\\",\\\"topImage\\\",\\\"onclick\\\",\\\"remove\\\"],[[24,[\\\"filteredModelOneDay\\\"]],[23,1,[]],[24,[\\\"calFields\\\"]],\\\"date\\\",\\\"worktask-calendar-card\\\",\\\"user-image\\\",[28,\\\"action\\\",[[23,0,[]],\\\"openEditor\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"remove\\\"],null]]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[28,\\\"concat\\\",[[23,5,[\\\"id\\\"]],\\\":\\\",[23,5,[\\\"_internalModel\\\",\\\"modelName\\\"]]],null],\\\"draggable-calendar-day-item\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,5,[\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[23,5,[]],\\\"status\\\"],null],\\\"fixed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worktask-calendar-status\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CheckedCircle\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[4,\\\"calendar-card-v2\\\",null,[[\\\"data\\\",\\\"day\\\",\\\"fields\\\",\\\"date_field\\\",\\\"classNames\\\",\\\"topImage\\\",\\\"onclick\\\",\\\"remove\\\"],[[24,[\\\"filteredAbsencesOneDay\\\"]],[23,1,[]],[24,[\\\"oneDayAbsenceFields\\\"]],\\\"startdate\\\",\\\"worktask-calendar-card\\\",\\\"user-image\\\",[28,\\\"action\\\",[[23,0,[]],\\\"openEditorAbsence\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"remove\\\"],null]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[28,\\\"concat\\\",[[23,4,[\\\"id\\\"]],\\\":\\\",[23,4,[\\\"_internalModel\\\",\\\"modelName\\\"]]],null],\\\"draggable-calendar-day-item\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,4,[\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[23,4,[]],\\\"status\\\"],null],\\\"fixed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worktask-calendar-status\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CheckedCircle\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2,3]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worktasks/calendar/template.hbs\"}});","import { computed, set } from '@ember/object';\nimport { copy } from 'ember-copy';\nimport { isEmpty } from '@ember/utils';\nimport Controller from '@ember/controller';\nimport { later } from '@ember/runloop';\nimport { inject as service } from '@ember/service';\n\nconst WorktasksConfirmController = Controller.extend({\n    Collector: service('collector-service'),\n    gui: service(),\n\n    imagesField: computed('model.photos.[]', function () {\n        const field = this.Collector.field('worktask', 'photos');\n        field.value = this.model.photos;\n        return field;\n    }),\n\n    commentsField: computed(function () {\n        return this.Collector.field('worktask', 'comments');\n    }),\n\n    signatureField: computed(function () {\n        return this.Collector.field('worktask', 'signature');\n    }),\n\n    hoursField: computed('hours', function () {\n        /* eslint-disable ember/no-side-effects */\n        set(this, 'model.hours', this.model.est_hours);\n        const field = this.Collector.field('worktask', 'hours');\n        //field['value'] = @get 'hours'\n        return field;\n    }),\n\n    hasSignature: computed('model.signature', 'signature', function () {\n        if (!isEmpty(this.model.signature) || this.signature) {\n            return true;\n        }\n        return false;\n    }),\n\n    ownFields: computed(function () {\n        const c = this.Collector;\n        return c.fieldArray('worktask').filter((field) => {\n            return field.name.substring(0, 6) === 'addon_';\n        });\n    }),\n\n    actions: {\n        close() {\n            set(this, 'showModal', false);\n            return set(this, 'model.status', 'open');\n        },\n\n        setFixed() {\n            const model = this.model;\n            //model.set 'hours', @get('hours')\n            set(model, 'status', 'fixed');\n            if (this.ownFields.length > 0) {\n                set(this, 'showModal', true);\n                return false;\n            } else {\n                /* eslint-disable */\n                return model.save().then(() => {\n                    return this.send('cleanAndMoveOn');\n                });\n            }\n        },\n\n        cleanAndMoveOn() {\n            set(this, 'showModal', false);\n            set(this, 'comments', false);\n            set(this, 'signature', false);\n            return this.transitionToRoute('worktasks.list');\n        },\n\n        setImages(images) {\n            return set(this, 'model.photos', images);\n        },\n\n        toggleComment() {\n            this.toggleProperty('comments');\n            later(\n                this,\n                () => document.getElementsByClassName('confirm-extra-comments-textarea')[0].focus(),\n                500,\n            );\n            return false;\n        },\n        toggleSignature() {\n            this.toggleProperty('signature');\n            return false;\n        },\n\n        setComment(value) {\n            return set(this, 'model.comments', value);\n        },\n\n        setSignature(value) {\n            return set(this, 'model.signature', value);\n        },\n    },\n    filterOwnFields(field) {\n        if (field.name.substring(0, 6) !== 'addon_') {\n            const features = copy(field.features);\n            features.hide = true;\n            field.features = features;\n        }\n        return field;\n    },\n});\n\nexport default WorktasksConfirmController;\n","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst WorktasksConfirmRoute = Route.extend(AuthenticatedRouteMixin, {\n    model(params) {\n        if (params.id) {\n            return this.store.findRecord('worktask', params.id, { include: true });\n        } else {\n            return this.transitionTo('worktask.list');\n        }\n    },\n});\n\nexport default WorktasksConfirmRoute;\n","export default Ember.HTMLBars.template({\"id\":\"BdrYj00M\",\"block\":\"{\\\"symbols\\\":[\\\"component\\\",\\\"type\\\",\\\"photo\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"task-confirm-container \\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"isSafari\\\"]],\\\"isMobileSafari\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-circle-button\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"confirm-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktask.confirm.congratulations\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"hours-input\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worktask.confirm.hours_input\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[0,\\\"        \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"hoursField\\\"]]],[[\\\"class\\\",\\\"model\\\"],[\\\"add-fields\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra-photos\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"photos\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra-photo\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url('\\\",[28,\\\"if\\\",[[23,3,[\\\"thumb\\\"]],[28,\\\"api-image\\\",[[23,3,[\\\"thumb\\\"]]],null],[23,3,[\\\"preview\\\"]]],null],\\\"')\\\"]]],[8],[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra-buttons\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"collector/fields/fileupload-field-ver3\\\",null,[[\\\"field\\\",\\\"bubbleChange\\\",\\\"model\\\"],[[24,[\\\"imagesField\\\"]],\\\"setImages\\\",[24,[\\\"model\\\"]]]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[]],\\\"preview\\\"],null]],null,{\\\"statements\\\":[],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Camera\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addFile\\\"],[[\\\"target\\\"],[[23,1,[]]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1,2]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Comments\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleComment\\\"]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktask.signature\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Signature\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleSignature\\\"]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"comments\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra-comments\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/fields/textarea-field\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"bubbleChange\\\",\\\"model\\\"],[[24,[\\\"commentsField\\\"]],\\\"add-fields confirm-extra-comments-textarea\\\",\\\"setComment\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasSignature\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra-signature\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/fields/signature-field\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"bubbleChange\\\",\\\"model\\\",\\\"showModal\\\"],[[24,[\\\"signatureField\\\"]],\\\"add-fields\\\",\\\"setSignature\\\",[24,[\\\"model\\\"]],[24,[\\\"signature\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-buttons\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setFixed\\\"]],[8],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"worktask.confirm.continue\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"route\\\"],[\\\"div\\\",\\\"worktasks.list\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-UndoReturn\\\"],[8],[9],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worktask.confirm.undo\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"worktasks.modal.header\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"cancelClicked\\\",\\\"recordSaved\\\",\\\"returnField\\\"],[\\\"worktask\\\",[24,[\\\"model\\\",\\\"id\\\"]],\\\"close\\\",\\\"cleanAndMoveOn\\\",[24,[\\\"filterOwnFields\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worktasks/confirm/template.hbs\"}});","import GeneralAddController from 'tt4/controllers/general-add';\nimport { A } from '@ember/array';\n\nconst WorktasksEditController = GeneralAddController.extend({\n    edit: true,\n    fieldSettings: A({\n        edit: true,\n    }),\n});\n\nexport default WorktasksEditController;\n","import GeneralAddRoute from 'tt4/routes/general-add';\n\nconst WorktasksEditRoute = GeneralAddRoute.extend({\n    controllerName: 'worktasks.edit',\n    modelName: 'worktask',\n    edit: true,\n    afterSave: 'worktasks.index',\n});\n\nexport default WorktasksEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"U4jClvqx\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/worktasks/edit/template.hbs\"}});","import Controller from '@ember/controller';\nimport { set, computed, get } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport moment from 'moment';\nimport EmberObject from '@ember/object';\nimport { A } from '@ember/array';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    gui: service(),\n    queryParams: ['date', 'user', 'page', 'group', 'employer', 'worktimegroup', 'project'],\n    form: 'worktask',\n    user: null,\n    limit: 25,\n    page: 1,\n    group: null,\n    employer: null,\n    worktimegroup: null,\n    project: null,\n    localStorageKey: 'worktaskganttcalendar_defaultColumns',\n    users: alias('model.users'),\n    unFilteredModel: alias('model.worktasks'),\n    calendarRows: computed('model.worktasks.@each.{date,est_hours,project}', function () {\n        if (get(this, 'model.users') && get(this, 'model.users').length !== 0) {\n            let mapped = this.mapTasks(get(this, 'model.worktasks'), get(this, 'model.users'));\n            return mapped.tasks;\n        }\n        return null;\n    }),\n    pageCount: computed('users', 'limit', function () {\n        return Math.ceil(get(this, 'users.meta.count') / get(this, 'limit'));\n    }),\n\n    filters: computed(function () {\n        return A([\n            EmberObject.create({\n                field: 'date',\n                type: 'date',\n                form: 'worktask',\n                name: 'date',\n                value: get(this, 'date'),\n            }),\n            EmberObject.create({\n                field: 'user',\n                type: 'database',\n                form: 'worktask',\n                name: 'user',\n                value: get(this, 'user'),\n            }),\n            EmberObject.create({\n                field: 'project',\n                type: 'database',\n                form: 'worktask',\n                name: 'project',\n                value: get(this, 'project'),\n            }),\n\n            EmberObject.create({\n                field: 'group',\n                type: 'database',\n                form: 'user',\n                name: 'group',\n                value: get(this, 'group'),\n                extra: true,\n            }),\n            EmberObject.create({\n                field: 'employer',\n                type: 'database',\n                form: 'user',\n                name: 'employer',\n                value: get(this, 'employer'),\n                extra: true,\n            }),\n            EmberObject.create({\n                field: 'worktimegroup',\n                type: 'database',\n                form: 'user',\n                name: 'worktimegroup',\n                value: get(this, 'worktimegroup'),\n                extra: true,\n            }),\n        ]);\n    }),\n    actions: {\n        filterChanged(value, field) {\n            if (['group', 'employer', 'worktimegroup'].includes(field)) {\n                if (value) {\n                    value = get(value, 'id');\n                } else {\n                    value = null;\n                }\n            }\n            set(this, field, value);\n        },\n\n        catchActions(action, params) {\n            var c, cols, fields;\n            if (action === 'fieldsUpdate') {\n                c = get(this, 'Collector');\n                cols = [];\n                params.forEach(function (col) {\n                    return cols.push(col.ext);\n                });\n                fields = c.fieldArray(get(this, 'form'), cols);\n                return set(this, 'ganttFields', fields);\n            }\n        },\n\n        openWorktaskModal(day, user) {\n            let params = { date: day, user: user };\n            this.store.createRecord('worktask', params);\n            this.transitionToRoute({ queryParams: { modal: ['worktask', 'new'] } });\n        },\n\n        openEditor(row) {\n            this.transitionToRoute({ queryParams: { modal: ['worktask', get(row, 'id')] } });\n        },\n    },\n\n    mapTasks(tasks, users) {\n        let ret = A([]);\n        users.forEach((user) => {\n            //console.log(user);\n            let rows = this.perDate(tasks.filterBy('user.id', get(user, 'id')));\n            ret.push(\n                EmberObject.create({\n                    main: user,\n                    rows: rows,\n                }),\n            );\n        });\n        return { tasks: ret, users: users };\n    },\n\n    perDate(rows) {\n        let perDate = {};\n        rows.forEach((item) => {\n            const date = get(item, 'date');\n            if (!perDate[date]) {\n                perDate[date] = [];\n            }\n            if (get(item, 'enddate')) {\n                let i = 1;\n                const moment_date = moment(date);\n                const diff = moment(get(item, 'enddate')).diff(moment_date, 'day');\n                perDate[date].push(item);\n                while (i <= diff) {\n                    const new_date = moment_date.add(1, 'day').format('YYYY-MM-DD');\n                    if (!perDate[new_date]) {\n                        perDate[new_date] = [];\n                    }\n                    perDate[new_date].push(item);\n                    i++;\n                }\n            } else {\n                perDate[date].push(item);\n            }\n        });\n        return perDate;\n    },\n\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().startOf('week').add(8, 'weeks').format('YYYY-MM-DD'),\n});\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport RSVP from 'rsvp';\n\nexport default Route.extend({\n    store: service(),\n    collector: service('collector-service'),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        worktimegroup: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n    },\n    model(params) {\n        const c = get(this, 'collector');\n        const userParams = { offset: params.page === 1 ? 0 : 25 * (params.page - 1) };\n        Object.keys(params).forEach((item) => {\n            if (item === 'user' && params.user) {\n                userParams.id = params.user;\n            } else if (c.testNeedsOne('user.' + item)) {\n                userParams[item] = params[item];\n            }\n        });\n        let users = [];\n        let userPromise = get(this, 'store').query(\n            'user',\n            Object.assign({ limit: 25 }, userParams),\n        );\n\n        userPromise.then((queryUsers) => {\n            users = queryUsers;\n        });\n        //.then((tasks) => resolve(this.mapTasks(tasks, users)));\n\n        return RSVP.hash({\n            users: userPromise,\n            worktasks: this.fetchWorktasks(users, params),\n        });\n    },\n    fetchWorktasks(users, params) {\n        return get(this, 'store').query('worktask', {\n            user: users.mapBy('id').join(','),\n            date: params.date,\n            project: params.project,\n            order: 'date',\n        });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"XF6z3Off\",\"block\":\"{\\\"symbols\\\":[\\\"calendar\\\",\\\"row\\\",\\\"cell\\\",\\\"title\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"customFullScreen\\\"]],\\\"report-main-zoomed\\\"],null],\\\" gantt-calendar\\\"]]],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"form-column-selector\\\",null,[[\\\"form\\\",\\\"shownColumns\\\",\\\"localStorageKey\\\",\\\"fullscreenmode\\\",\\\"bubbleActions\\\"],[[24,[\\\"form\\\"]],[24,[\\\"shownColumns\\\"]],\\\"worktaskganttcalendar_defaultColumns\\\",\\\"custom\\\",\\\"catchActions\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"calendar-compact\\\",null,[[\\\"data\\\",\\\"range\\\"],[[24,[\\\"calendarRows\\\"]],[24,[\\\"date\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[23,1,[\\\"months-header\\\"]],false],[0,\\\"\\\\n        \\\"],[1,[23,1,[\\\"weeks-header\\\"]],false],[0,\\\"\\\\n        \\\"],[1,[23,1,[\\\"days-header\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"row\\\"]],\\\"expected `calendar.row` to be a contextual component but found a string. Did you mean `(component calendar.row)`? ('tt4/pods/worktasks/gantt/template.hbs' @ L9:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"title\\\"]],\\\"expected `row.title` to be a contextual component but found a string. Did you mean `(component row.title)`? ('tt4/pods/worktasks/gantt/template.hbs' @ L10:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"user-icon\\\",[[23,4,[\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],[[\\\"size\\\",\\\"inline\\\"],[\\\"sm\\\",true]]],false],[0,\\\" \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"user\\\",\\\"worktask\\\",[23,4,[]]]]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"cell\\\"]],\\\"expected `row.cell` to be a contextual component but found a string. Did you mean `(component row.cell)`? ('tt4/pods/worktasks/gantt/template.hbs' @ L13:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"bar\\\"]],\\\"expected `cell.bar` to be a contextual component but found a string. Did you mean `(component cell.bar)`? ('tt4/pods/worktasks/gantt/template.hbs' @ L14:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[4,\\\"if\\\",[[23,3,[\\\"rows\\\",\\\"firstObject\\\",\\\"est_hours\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"format-hours\\\",[[28,\\\"sum-field\\\",null,[[\\\"field\\\",\\\"rows\\\"],[[28,\\\"hash\\\",null,[[\\\"type\\\",\\\"name\\\"],[\\\"hours\\\",\\\"est_hours\\\"]]],[23,3,[\\\"rows\\\"]]]]]],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"popover-content-fields\\\"]],\\\"expected `cell.popover-content-fields` to be a contextual component but found a string. Did you mean `(component cell.popover-content-fields)`? ('tt4/pods/worktasks/gantt/template.hbs' @ L17:C18) \\\"],null]],[[\\\"fields\\\",\\\"onEdit\\\",\\\"form\\\"],[[24,[\\\"ganttFields\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"openEditor\\\"],null],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"plus-button\\\"]],\\\"expected `cell.plus-button` to be a contextual component but found a string. Did you mean `(component cell.plus-button)`? ('tt4/pods/worktasks/gantt/template.hbs' @ L18:C18) \\\"],null]],[[\\\"onAdd\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"openWorktaskModal\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n    \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worktasks/gantt/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"gHf8XzVh\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"worktasks\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worktasks/history/template.hbs\"}});","import Controller from '@ember/controller';\nimport { computed, get } from '@ember/object';\n\nconst WorktaskListController = Controller.extend({\n    queryParams: ['date'],\n    today_show: true,\n\n    overdueTasks: computed('model', function () {\n        return this.model.filter((task) => {\n            return (\n                get(task, 'date') < moment().format('YYYY-MM-DD') && get(task, 'status') === 'open'\n            );\n        });\n    }),\n\n    todayTasks: computed('model', function () {\n        return this.model.filter((task) => {\n            return get(task, 'date') === moment().format('YYYY-MM-DD');\n        });\n    }),\n\n    futureTasks: computed('model', function () {\n        return this.model.filter((task) => {\n            return get(task, 'date') > moment().format('YYYY-MM-DD');\n        });\n    }),\n\n    actions: {\n        toggle(panel) {\n            if (panel === 'future') {\n                this.toggleProperty('future_show');\n            } else {\n                this.toggleProperty('today_show');\n            }\n            return false;\n        },\n    },\n    date:\n        moment().subtract(1, 'month').format('YYYY-MM-DD') +\n        '_' +\n        moment().add(1, 'month').format('YYYY-MM-DD'),\n});\n\nexport default WorktaskListController;\n","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport { inject as service } from '@ember/service';\n\nconst WorktaskIndexRoute = Route.extend(AuthenticatedRouteMixin, {\n    session: service(),\n    model(params) {\n        params.sideload = true;\n        params.user = this.session.currentUser.id;\n        params.order = 'date';\n        if (this.Collector.fieldExists('worktask', 'starttime')) {\n            params.order = 'date,starttime';\n        }\n        return this.store.query('worktask', params);\n    },\n});\n\nexport default WorktaskIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"zbSazL7e\",\"block\":\"{\\\"symbols\\\":[\\\"task\\\",\\\"task\\\",\\\"task\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"task-list-container\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"task-list-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktasks.list.today\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"overdueTasks\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"task-list-item\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"span\\\",[28,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"status\\\"]],\\\"open\\\"],null],\\\"circle-accepted task-list-item-circle-button\\\",\\\"task-list-item-circle-button overdue\\\"],null],\\\"worktasks.confirm\\\",[23,3,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark big-icon\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"div\\\",\\\"task-list-item-content\\\",\\\"worktasks.view\\\",[23,3,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"header\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[23,3,[\\\"name\\\"]],false],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"date\\\",\\\"worktask\\\",[23,3,[\\\"date\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"starttime\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"starttime\\\",\\\"worktask\\\",[23,3,[\\\"starttime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[23,3,[\\\"project\\\"]],\\\"project\\\",\\\"worktask\\\"]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[23,3,[\\\"est_hours\\\"]],\\\"est_hours\\\",\\\"worktask\\\"]]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"task-list-item-info\\\",\\\"worktasks.view\\\",[23,3,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[4,\\\"each\\\",[[24,[\\\"todayTasks\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"task-list-item\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"span\\\",[28,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"status\\\"]],\\\"open\\\"],null],\\\"circle-accepted task-list-item-circle-button\\\",\\\"task-list-item-circle-button\\\"],null],\\\"worktasks.confirm\\\",[23,2,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark big-icon\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"div\\\",\\\"task-list-item-content\\\",\\\"worktasks.view\\\",[23,2,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"header\\\"],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"starttime\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"starttime\\\",\\\"worktask\\\",[23,2,[\\\"starttime\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[23,2,[\\\"project\\\"]],\\\"project\\\",\\\"worktask\\\"]]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[23,2,[\\\"est_hours\\\"]],\\\"est_hours\\\",\\\"worktask\\\"]]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"task-list-item-info\\\",\\\"worktasks.view\\\",[23,2,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"task-list-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktasks.list.future\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"futureTasks\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"task-list-item\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"span\\\",[28,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"status\\\"]],\\\"open\\\"],null],\\\"circle-accepted task-list-item-circle-button\\\",\\\"task-list-item-circle-button\\\"],null],\\\"worktasks.confirm\\\",[23,1,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark big-icon\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"div\\\",\\\"task-list-item-content\\\",\\\"worktasks.view\\\",[23,1,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"header\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"date\\\",\\\"worktask\\\",[23,1,[\\\"date\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"starttime\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"starttime\\\",\\\"worktask\\\",[23,1,[\\\"starttime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[23,1,[\\\"project\\\"]],\\\"project\\\",\\\"worktask\\\"]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[23,1,[\\\"est_hours\\\"]],\\\"est_hours\\\",\\\"worktask\\\"]]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"task-list-item-info\\\",\\\"worktasks.view\\\",[23,1,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worktasks/list/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"4IpXncZ0\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worktasks/loading/template.hbs\"}});","import { typeOf } from '@ember/utils';\nimport GeneralReportController from 'tt4/controllers/general-report';\nimport EmberObject from '@ember/object';\nimport { computed, set } from '@ember/object';\nimport { A } from '@ember/array';\n\nconst WorktaskReportController = GeneralReportController.extend({\n    queryParams: ['project', 'user', 'date', 'q'],\n\n    form: 'worktask',\n    status: 'all',\n    showColumns: null,\n\n    init() {\n        this._super(...arguments);\n        this.showColumns = ['date', 'project', 'user', 'est_hours', 'hours', 'notes', 'files'];\n    },\n\n    settings: EmberObject.create({\n        rowSettings: EmberObject.create({\n            //            hideActions: true\n            editRoute: {\n                modal: true,\n            },\n        }),\n        massedit: true,\n        sortByColumn: 'date-',\n    }),\n\n    filters: computed(function () {\n        return A([\n            EmberObject.create({ field: 'date' }),\n            EmberObject.create({ field: 'project' }),\n            EmberObject.create({ field: 'user' }),\n            EmberObject.create({ type: 'searchbox', bindto: 'q' }),\n        ]);\n    }),\n\n    actions: {\n        filterChangeAction(value, field) {\n            if (typeOf(value) === 'object' || typeOf(value) === 'instance') {\n                return set(this, field, value.id);\n            } else {\n                return set(this, field, value);\n            }\n        },\n    },\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n});\n\nexport default WorktaskReportController;\n","import GeneralReportRoute from 'tt4/routes/general-report';\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\n\nconst WorktaskReportRoute = GeneralReportRoute.extend({\n    flags: service(),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    form: 'worktask',\n\n    model(params) {\n        params = this._super(params);\n\n        if (!this.flags.test('ember-movenium-form-report-worktasks')) {\n            params.sideload = true;\n            return this.store.query('worktask', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return set(this.controllerFor('worktasks.report'), 'qParams', params);\n        }\n    },\n});\n\nexport default WorktaskReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"T5P9/i6V\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-worktasks\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"worktask\\\",[23,0,[\\\"qParams\\\"]],\\\"user.worktimegroup,user.employer\\\",[28,\\\"hash\\\",null,[[\\\"date\\\"],[[23,0,[\\\"date\\\"]]]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/worktasks/report?modal=worktask%2C\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worktasks/report/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Route.extend({\n    gui: service(),\n    AuthenticatedRouteMixin,\n\n    beforeModel(transition) {\n        if (transition.targetName === 'worktask.list' && !get(this, 'gui.isBelowMd')) {\n            transition.abort();\n            this.transitionTo('worktask.calendar');\n        }\n    },\n});\n","import Controller from '@ember/controller';\nimport localization from 'tt4/classes/localization';\nimport { inject as service } from '@ember/service';\nimport { computed, set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nconst WorktasksViewController = Controller.extend({\n    Collector: service('collector-service'),\n    gui: service(),\n    manualFormat: null,\n    editable: null,\n    icons: null,\n\n    init() {\n        this._super(...arguments);\n        this.manualFormat = ['date', 'est_hours'];\n        this.editable = ['signature'];\n        this.icons = {\n            date: 'Date',\n            project: 'Project',\n            est_hours: 'Timespan',\n            notes: 'Notes',\n            files: 'Pictures',\n            signature: 'Signature',\n            starttime: 'Time',\n        };\n    },\n\n    modelAlias: alias('model'),\n\n    date_formatted: computed('model.date', function () {\n        return moment(this.modelAlias.date).format('DD MMMM, YYYY');\n    }),\n\n    est_hours_formatted: computed('model.est_hours', function () {\n        return localization.formatHours(this.modelAlias.est_hours);\n    }),\n\n    fields: computed(function () {\n        const c = this.Collector;\n        const fields = c.fieldArray('worktask');\n\n        return fields.reject(\n            (field) =>\n                field.name === 'name' ||\n                field.name === 'user' ||\n                field.name === 'hours' ||\n                (field.features.hide &&\n                    typeof field.features.hide !== 'object' &&\n                    field.features.hide.condition !== 'editing'),\n        );\n    }),\n\n    actions: {\n        setFixed() {\n            set(this.modelAlias, 'status', 'fixed');\n            /* eslint-disable ember/named-functions-in-promises */\n            return this.modelAlias.save().then(() => {\n                return this.transitionToRoute('worktasks.list');\n            });\n        },\n\n        saveField(value, field) {\n            if (field.name !== 'involved') {\n                set(this, 'modelAlias.' + field.name, value);\n            }\n\n            return this.modelAlias.save();\n        },\n    },\n});\n\nexport default WorktasksViewController;\n","import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport Route from '@ember/routing/route';\nconst WorktasksViewRoute = Route.extend(AuthenticatedRouteMixin, {\n    model(params) {\n        if (params.id) {\n            params.sideload = true;\n            return this.store.findRecord('worktask', params.id, { include: true });\n        } else {\n            return this.transitionTo('worktask.list');\n        }\n    },\n});\n\nexport default WorktasksViewRoute;\n","export default Ember.HTMLBars.template({\"id\":\"cmPsrfgM\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"task-edit-container \\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"isSafari\\\"]],\\\"isMobileSafari\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"header-container\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"header-picture\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url(\\\",[28,\\\"api-image\\\",[[24,[\\\"model\\\",\\\"files\\\",\\\"firstObject\\\",\\\"url\\\"]]],null],\\\")\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"back-arrow\\\",\\\"worktasks.list\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Back\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"header-text\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"worktask\\\",\\\"name\\\",[28,\\\"get\\\",[[24,[\\\"model\\\"]],\\\"name\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overlay\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"field-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"icons\\\"]],[23,1,[\\\"name\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"task-icon\\\"],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move move-\\\",[28,\\\"get\\\",[[23,0,[]],[28,\\\"concat\\\",[\\\"icons.\\\",[23,1,[\\\"name\\\"]]],null]],null]]]],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title task-label\\\"],[8],[1,[23,1,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[[23,1,[\\\"name\\\"]],[24,[\\\"manualFormat\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"get\\\",[[23,0,[]],[28,\\\"concat\\\",[[23,1,[\\\"name\\\"]],\\\"_formatted\\\"],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"in-array\\\",[[23,1,[\\\"name\\\"]],[24,[\\\"editable\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,1,[]]],[[\\\"model\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],\\\"saveField\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"databasearray\\\",[23,1,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"worktask\\\",[23,1,[\\\"name\\\"]],[28,\\\"get\\\",[[24,[\\\"model\\\"]],[23,1,[\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\",\\\"formatter\\\"],[\\\"worktask\\\",[23,1,[\\\"name\\\"]],[28,\\\"get\\\",[[24,[\\\"model\\\"]],[23,1,[\\\"name\\\"]]],null],[24,[\\\"formatter\\\"]]]]],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"button\\\",\\\"btn btn-block btn-m-link\\\",\\\"worktasks.confirm\\\",[24,[\\\"model\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"worktask.view.set_fixed\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worktasks/view/template.hbs\"}});","import EmberRouter from '@ember/routing/router';\nimport config from './config/environment';\n\nconst Router = EmberRouter.extend({\n    location: config.locationType,\n    rootURL: config.rootURL,\n});\n\nRouter.map(function () {\n    this.route('show', { path: 'show/:form/:id' });\n    this.route('protected');\n    this.route('login');\n    this.route('logout');\n\n    this.route('register', function () {\n        this.route('service', function () {\n            this.route('adddetails');\n            this.route('products');\n            this.route('amounts');\n            this.route('done');\n        });\n\n        this.route('user', function () {\n            this.route('code');\n            this.route('company');\n            this.route('sign-in');\n            this.route('confirm');\n            this.route('id06');\n            this.route('done');\n            this.route('info');\n        });\n    });\n\n    this.route('timetracker', function () {\n        this.route('add');\n        this.route('addsaved');\n        this.route('comp-report');\n        this.route('employer-sums');\n        this.route('timecard', function () {\n            this.route('add');\n            this.route('additional');\n        });\n        this.route('saved');\n        this.route('approval', { path: '/approve' }, function () {\n            this.route('site', { path: '/:project' }, function () {\n                this.route('user', { path: '/:user' });\n            });\n        });\n        this.route('realtime');\n        this.route('worktime-list', { path: '/list' });\n        this.route('anomalies');\n        this.route('edit', { path: 'edit/:id' });\n        this.route('history', { path: 'history/:id' });\n        this.route('week-report');\n        this.route('avi');\n        this.route('calendar');\n        this.route('bank');\n        this.route('bank_ad');\n        this.route('aggregated', function () {\n            this.route('rows', { path: '/:date' });\n        });\n        this.route('salary-category');\n    });\n\n    this.route('taxman', function () {\n        this.route('contract-list', function () {\n            this.route('add');\n            this.route('edit', { path: 'edit/:id' });\n            this.route('history', { path: 'history/:id' });\n        });\n        this.route('taxreport', function () {\n            this.route('add', { path: 'add/:month' });\n        });\n        this.route('archive');\n\n        this.route('taxreport-contract', function () {\n            this.route('add', { path: 'add/:month' });\n        });\n    });\n\n    this.route('presences', function () {\n        this.route('add');\n        this.route('accident');\n        this.route('report');\n        this.route('edit', { path: 'edit/:id' });\n        this.route('history', { path: 'history/:id' });\n        this.route('employer-sums');\n        this.route('location');\n        this.route('locationtree');\n        this.route('avi');\n    });\n\n    this.route('users', function () {\n        this.route('add', function () {\n            this.route('builder');\n            this.route('id06');\n        });\n        this.route('edit', { path: 'edit/:id' }, function () {\n            this.route('competence');\n            this.route('id06competence');\n            this.route('orientations');\n            this.route('changeusername');\n            this.route('changepassword');\n            this.route('permissions');\n            this.route('saldo');\n            this.route('saldos_ad');\n            this.route('saldohistory');\n            this.route('userdata');\n            this.route('activity');\n            this.route('superior_replacements');\n        });\n        this.route('saved');\n        this.route('history', { path: 'history/:id' });\n        this.route('card');\n        this.route('subcontractor');\n        this.route('linked');\n        this.route('inactive');\n        this.route('removed');\n        this.route('saldos');\n        this.route('saldos_ad');\n        this.route('saldohistory');\n        this.route('saldocalendar');\n        this.route('cardregister');\n        this.route('superior_replacements');\n        this.route('worktimegroup_changes');\n    });\n\n    this.route('projects', function () {\n        this.route('add');\n        this.route('saved');\n        this.route('edit', { path: 'edit/:id' }, function () {\n            this.route('project-files');\n            this.route('project-users');\n            this.route('add-file');\n            this.route('working-now');\n            this.route('tasks');\n            this.route('linked-users');\n            this.route('overview');\n            this.route('notices');\n            this.route('trnotices');\n            this.route('open_worktimes');\n            this.route('passes');\n            this.route('taxmanerrors');\n            this.route('subprojects');\n            this.route('rollocks');\n            this.route('greenboxes');\n            this.route('tv-status');\n            this.route('contract_report');\n            this.route('card-list');\n        });\n        this.route('history', { path: 'history/:id' });\n        this.route('magickey');\n        this.route('removed');\n        this.route('inactive');\n        this.route('rfiddevices');\n        this.route('report');\n        this.route('tasks');\n    });\n\n    this.route('employers', function () {\n        this.route('add');\n        this.route('edit', { path: 'edit/:id' }, function () {\n            this.route('employer-files');\n            this.route('add-file');\n            this.route('zeckit');\n        });\n\n        this.route('history', { path: 'history/:id' });\n        this.route('saved');\n        this.route('tree');\n        this.route('check');\n        this.route('removed');\n        this.route('inactive');\n    });\n\n    this.route('orientations', function () {\n        this.route('add', function () {\n            this.route('checkboxes', { path: '/checkboxes/:group' });\n            this.route('parent');\n            this.route('confirm');\n            this.route('signatures');\n            this.route('saved');\n            this.route('add-passes');\n        });\n        this.route('reports');\n        this.route('passes');\n        this.route('inactive-passes');\n        this.route('edit', { path: 'edit/:id' });\n        this.route('history', { path: 'history/:id' });\n        this.route('withoutori');\n        this.route('own-orientation', { path: '/own-orientation/:id' });\n        this.route('employeetree');\n    });\n\n    this.route('site_safety', function () {\n        this.route('report', function () {\n            this.route('tr', function () {\n                this.route('graphs');\n                this.route('data');\n                this.route('notices');\n            });\n            this.route('mvr', function () {\n                this.route('graphs');\n                this.route('data');\n                this.route('notices');\n            });\n            this.route('observation');\n            this.route('event');\n        });\n\n        this.route('measurement', { path: 'measurement/:measurement' }, function () {\n            this.route('graphs');\n            this.route('data');\n            this.route('notices');\n            this.route('edit', { path: 'edit/:id' });\n            this.route('history', { path: 'history/:id' });\n        });\n\n        this.route('measurement.add', { path: '/measurement/:id/:measurement' }, function () {\n            this.route('measurement', { path: 'measure/:project' });\n        });\n\n        this.route('addnotice', function () {\n            this.route('tr');\n            this.route('mvr');\n        });\n\n        this.route('saved', { path: '/saved/:type/:id' });\n        this.route('observation', function () {\n            this.route('add');\n            this.route('edit', { path: 'edit/:id' });\n        });\n    });\n\n    this.route('skyddsronds', function () {\n        this.route('add');\n        this.route('report');\n        this.route('edit', { path: 'edit/:id' });\n        this.route('history', { path: 'history/:id' });\n        this.route('notices');\n        this.route('dashboard');\n        this.route('saved', { path: 'saved/:id' });\n    });\n\n    this.route('trnotices', { path: '/notices' }, function () {\n        this.route('edit', { path: '/edit/:id' });\n        this.route('history', { path: '/history/:id' });\n    });\n\n    this.route('abcenses', function () {\n        this.route('holidays');\n        this.route('holidaypays');\n        this.route('gantt');\n        this.route('add');\n        this.route('add-multiple', { path: '/addmultiple' });\n        this.route('edit', { path: 'edit/:id' });\n        this.route('history', { path: 'history/:id' });\n    });\n\n    this.route('changepassword');\n\n    this.route('saved');\n\n    this.route('forms', function () {\n        this.route('customer', function () {\n            this.route('edit', { path: 'edit/:id' });\n        });\n        this.route('form-add', { path: ':form/add' });\n        this.route('form-edit', { path: ':form/edit/:id' });\n        this.route('form-report', { path: ':form/report' });\n        this.route('form-history', { path: ':form/history/:id' });\n        this.route('form-view', { path: ':form/view/:id' });\n        this.route('custom-report', { path: ':form/custom-report' });\n        this.route('information');\n        this.route('report', { path: ':form' });\n    });\n\n    this.route('worksitediary', function () {\n        this.route('add');\n        this.route('events');\n        this.route('edit', { path: 'edit/:id' }, function () {\n            this.route('basic-info');\n        });\n        this.route('supervisor-notes-report');\n        this.route('other-entries-report');\n        this.route('offering-report');\n        this.route('calendar');\n        this.route('notes');\n\n        this.route('history', { path: 'history/:id' });\n        this.route('report', function () {\n            this.route('first');\n            this.route('add', { path: '/:id' }, function () {\n                this.route('basic-info');\n                this.route('at-site');\n                this.route('diary-events');\n                this.route('material');\n                this.route('review-page');\n                this.route('ordered-changes');\n                this.route('offering');\n                this.route('required-extra');\n                this.route('supervisor-note');\n                this.route('other-entries');\n                this.route('signature');\n                this.route('completion-page');\n                this.route('summary-page');\n                this.route('notes-direktiv', { path: 'direktiv' });\n                this.route('notes-anmalan', { path: 'anmalan' });\n                this.route('notes-besiktningar', { path: 'besiktningar' });\n                this.route('notes-ritningar', { path: 'ritningar' });\n                this.route('extra');\n            });\n        });\n        this.route('automation');\n    });\n\n    this.route('diary', function () {\n        this.route('report', function () {\n            this.route('date', { path: ':date' }, function () {\n                this.route('project', { path: ':project' });\n            });\n        });\n        this.route('events');\n        this.route('calendar');\n        this.route('combo');\n    });\n\n    this.route('messageboard', function () {\n        this.route('add');\n        this.route('history', { path: 'history/:id' });\n    });\n\n    this.route('pass', function () {\n        this.route('add');\n    });\n\n    this.route('token', { path: 'token/:token' });\n\n    this.route('settings', function () {\n        this.route('general');\n        this.route('general-v2');\n        this.route('measurement_custom');\n        this.route('forms', function () {\n            this.route('form', { path: ':form' }, function () {\n                this.route('field', { path: ':field' });\n                this.route('removed-fields');\n            });\n        });\n        this.route('products');\n        this.route('notificationpanel');\n        this.route('billing');\n        this.route('company-profile');\n        this.route('integrations');\n        this.route('orientations');\n        this.route('history');\n        this.route('activitylog');\n    });\n\n    this.route('thereport', { path: 'comboreport' }, function () {\n        this.route('page', { path: 'page/:page' });\n        this.route('settings');\n    });\n\n    this.route('invite-users');\n\n    // this.route('invalid', { path: \"/*path\" });\n\n    this.route('my-sites', function () {\n        this.route('add-image-component');\n    });\n    this.route('dashboard');\n    this.route('massedit', { path: '/massedit/:form/:ids' });\n\n    this.route('send_skatteverket');\n\n    this.route('development', function () {\n        this.route('servicevalidator');\n        this.route('cron');\n        this.route('integrations');\n        this.route('datacreator');\n        this.route('react');\n        this.route('ownreports');\n        this.route('notifications');\n        this.route('smslogs');\n        this.route('functions');\n        this.route('products');\n        this.route('rollock');\n        this.route('activitylog');\n        this.route('ownroles', function () {\n            this.route('role', { path: '/:id' });\n        });\n        this.route('import', function () {\n            this.route('index');\n            this.route('map');\n            this.route('create');\n            this.route('save');\n        });\n    });\n\n    this.route('password', function () {\n        this.route('recovery');\n    });\n\n    this.route('services');\n\n    this.route('admintool', function () {\n        this.route('reports', function () {\n            this.route('bi', function () {\n                this.route('timecleanlog');\n                this.route('findtimeclean');\n            });\n            this.route('featureflags');\n        });\n        this.route('customer', { path: '/customer/:id' }, function () {\n            this.route('overview');\n            this.route('details');\n            this.route('reports', function () {\n                this.route('bills');\n                this.route('users');\n            });\n            this.route('devices', function () {\n                this.route('edit');\n            });\n            this.route('tt3tott4');\n            this.route('charts');\n            this.route('history');\n        });\n        this.route('createservice');\n        this.route('billing');\n    });\n\n    this.route('groups');\n\n    this.route('worktasks', function () {\n        this.route('list');\n        this.route('edit', { path: 'edit/:id' });\n        this.route('history', { path: 'history/:id' });\n        this.route('view', { path: 'view/:id' });\n        this.route('confirm', { path: 'confirm/:id' });\n        this.route('calendar');\n        this.route('report');\n        this.route('gantt');\n    });\n\n    this.route('messages', function () {\n        this.route('add', function () {\n            this.route('message');\n        });\n        this.route('list');\n        this.route('email-approvals');\n    });\n\n    this.route('mapon');\n\n    this.route('drivinglog', function () {\n        this.route('toggle', function () {\n            this.route('confirm');\n        });\n        this.route('edit', { path: 'edit/:id' });\n    });\n\n    this.route('materiallog', function () {\n        this.route('report');\n        this.route('list');\n        this.route('groups');\n    });\n\n    this.route('multitask', function () {\n        this.route('report');\n    });\n\n    this.route('gpslocation');\n\n    this.route('machines', function () {\n        this.route('transactions');\n        this.route('transactions-history');\n        this.route('transaction', function () {\n            this.route('add');\n            this.route('tooltype', function () {\n                this.route('selected', { path: ':tooltype' });\n            }),\n                this.route('project', function () {\n                    this.route('selected', { path: ':project' });\n                }),\n                this.route('move', { path: 'move/:tooltype/:project' });\n        });\n        this.route('machine');\n        this.route('map');\n        this.route('prices');\n    });\n\n    this.route('salary', function () {\n        this.route('workday-calendar', { path: 'workday' });\n        this.route('export-salary', function () {\n            this.route('add');\n        });\n\n        this.route('custom-export', function () {\n            this.route('edit', { path: ':id' });\n        });\n\n        this.route('custom-export-ad');\n        this.route('salarytypes');\n        this.route('salaryperiods');\n        this.route('export-abcense', function () {\n            this.route('add');\n        });\n    });\n\n    this.route('firecards', function () {\n        this.route('add');\n        this.route('edit', { path: 'edit/:id' });\n    });\n    this.route('test');\n    this.route('vismanetsignin');\n\n    this.route('worksite-areas', function () {\n        this.route('report');\n        this.route('log-report');\n    });\n\n    this.route('nova_costcenters');\n\n    this.route('integrations', function () {\n        this.route('list');\n        this.route('report');\n        this.route('fondionerrors');\n    });\n    this.route('resource-planning', function () {\n        this.route('gantt');\n        this.route('week');\n    });\n    this.route('shift-planning', function () {\n        this.route('gantt');\n        this.route('week');\n    });\n});\n\nexport default Router;\n","import { allSettled } from 'rsvp';\nimport { inject as service } from '@ember/service';\nimport { run } from '@ember/runloop';\nimport Route from '@ember/routing/route';\nimport ApplicationRouteMixin from 'ember-simple-auth/mixins/application-route-mixin';\nimport config from '../config';\nimport { get, set } from '@ember/object';\n\nexport default Route.extend(ApplicationRouteMixin, {\n    analytics: service(),\n    initapp: service(),\n    session: service(),\n    tools: service(),\n    loadTranslations: service(),\n    Collector: service('collector-service'),\n    moment: service(),\n    intl: service(),\n    gps: service(),\n    cordova: service('own-cordova-service'),\n    customerSettings: service(),\n    PushNotification: service(),\n    localStorageWrapper: service(),\n    router: service(),\n    metaService: service('meta'),\n\n    queryParams: {\n        modal: {\n            replace: true,\n        },\n    },\n\n    alldone: false,\n\n    init() {\n        this._super(...arguments);\n\n        //set last used page to ls on transition\n        this.router.on('routeWillChange', (transition) => {\n            if (!get(this, 'session.currentUser.id')) return;\n            let { to: toRouteInfo } = transition;\n            if (toRouteInfo) {\n                if (!get(this, 'session.currentUser.id')) return;\n                let page = toRouteInfo.name;\n                if (Object.keys(toRouteInfo.params).length > 0) {\n                    page = { page: page, param: Object.values(toRouteInfo.params).firstObject };\n                }\n                if (page && config.possibleFirstPages.indexOf(toRouteInfo.name) !== -1) {\n                    get(this, 'localStorageWrapper').setUserSetting('last_page', page);\n                }\n                if (transition.targetName == 'forms.form-report') {\n                    const self = this;\n                    transition.finally(function () {\n                        get(self, 'controller').notifyPropertyChange('path');\n                    });\n                }\n            }\n        });\n\n        this.router.on('routeDidChange', () => {\n            if (this.router.currentRouteName) {\n                // Current route is redirecting from index and will be null on first load\n                if (this.router.currentRouteName === 'login') {\n                    // Translate the meta title and description in login route\n                    get(this, 'metaService').translateMetaTags();\n                } else {\n                    // Overwrite Meta Description to empty and set title to brand name\n                    get(this, 'metaService').updateDescription();\n                    get(this, 'metaService').updateTitle();\n                }\n            }\n        });\n    },\n\n    beforeModel: function (transition) {\n        let cordova = get(this, 'cordova').setup();\n\n        if (!Modernizr.localstorage) {\n            this.transitionTo('error');\n        }\n\n        if (get(this, 'alldone') === false) {\n            transition.abort();\n\n            get(this, 'initapp')\n                .start()\n                .then(() => this._returnAllSettled(transition, cordova))\n                .then(() => this._setThings(transition));\n        }\n    },\n\n    afterModel: function () {\n        if (document.querySelector('#first-time-loader') !== null) {\n            document.querySelector('#first-time-loader').remove();\n        }\n        return set(this, 'intl.locale', moment.locale());\n    },\n\n    actions: {\n        changeLanguage: function (lang) {\n            var self = this;\n            moment.locale(lang);\n            localStorage['lang'] = lang;\n            return get(this, 'loadTranslations')\n                .fetch()\n                .then(() => this._setLang(lang, self));\n        },\n        showModal: function (name, model, variable) {\n            return this.render(name, {\n                into: 'application',\n                outlet: 'modal',\n                model: {\n                    object: model,\n                    variable: variable,\n                },\n            });\n        },\n        removeModal: function () {\n            return run(() =>\n                this.disconnectOutlet({\n                    outlet: 'modal',\n                    parentView: 'application',\n                }),\n            );\n        },\n        bubbleTransition: function (to, params) {\n            this.transitionTo(to, params);\n        },\n    },\n\n    save_first_time_loader_text: function (firstname, lastname) {\n        // while we are here let's save greetings for loading page\n\n        let name = firstname || lastname;\n\n        let str = get(this, 'intl').t('general.welcome');\n        let aphorisms = get(this, 'intl').t('general.aphorisms');\n        if (!str || !aphorisms || !name) {\n            return;\n        }\n        let greeting_arr = str.split('\\n');\n        let aphorisms_arr = aphorisms.split('\\n');\n\n        localStorage['first-time-loader-greeting'] = JSON.stringify({\n            greetings: greeting_arr,\n            name: name,\n            aphorism: aphorisms_arr,\n        });\n    },\n\n    getUserServices: function () {\n        let self = this;\n        let c = get(this, 'Collector');\n        let promise = c.ajax({\n            url: 'me?linkings',\n            headers: {\n                Authorization: 'Bearer ' + get(self, 'session.session.authenticated.access_token'),\n            },\n        });\n        promise.then(function (data) {\n            set(self, 'session.currentUser.services', data);\n        });\n        return promise;\n    },\n\n    sessionInvalidated: function () {\n        if (get(this, 'router.currentRouteName') === 'register.user.confirm') {\n            this.transitionTo('register.user.sign-in');\n        } else {\n            this._super();\n        }\n    },\n    sessionAuthenticated: function () {\n        if (get(this, 'router.currentRouteName') === 'register.user.sign-in') {\n            this.transitionTo('register.user.confirm');\n        } else if (get(this, 'session.modelscreated')) {\n            this._super();\n        } else {\n            this.transitionTo('index');\n        }\n    },\n\n    _returnAllSettled(transition, cordova) {\n        this._super(transition);\n\n        return allSettled([cordova]);\n    },\n    _setThings(transition) {\n        get(this, 'tools').initCurrentMySite();\n        set(this, 'alldone', true);\n        set(this, 'intl.locale', moment.locale());\n\n        if (get(this, 'session.session.authenticated.access_token')) {\n            this.save_first_time_loader_text(\n                get(this, 'session.currentUser.firstname'),\n                get(this, 'session.currentUser.lastname'),\n            );\n            //get(this, \"initapp\").firstPageTransition();\n        }\n        //else\n        transition.retry();\n    },\n    _setLang(lang, self) {\n        return set(get(self, 'intl'), 'locale', lang);\n    },\n});\n\n//export default ApplicationRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/changepassword.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ChangepasswordRoute;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport configurations from '../config';\n\nChangepasswordRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    mySites: Ember.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    welcomeTour: Ember.inject.service(),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    resetController: function (controller, isExiting, transition) {\n        controller.set('showModal', true);\n\n        if (isExiting) {\n            controller.set('password_changed', false);\n            controller.set('currentPassword', null);\n            controller.set('password', null);\n            controller.set('passwordAgain', null);\n        }\n\n        return this._super;\n    },\n    startTour: function () {\n        if (!Em.isEmpty(this.get('localStorageWrapper').getUserSetting('tourShown'))) {\n            return;\n        }\n        if (this.get('session.currentUser.password') === 'secured') {\n            return;\n        }\n        return this.get('welcomeTour').start();\n    },\n    actions: {\n        changePassword: function () {\n            var again, c, currentPassword, model, password, promise, userid;\n            currentPassword = this.get('controller.securedPassword')\n                ? this.get('controller.currentPassword')\n                : this.get('session.currentUser.password');\n            password = this.get('controller.password');\n            again = this.get('controller.passwordAgain');\n            if (!currentPassword) {\n                this.set(\n                    'controller.validation_error',\n                    this.get('intl').t('validation.currentpasswordempty'),\n                );\n                return;\n            }\n            if (!password || !again) {\n                this.set(\n                    'controller.validation_error',\n                    this.get('intl').t('validation.passwordempty'),\n                );\n                return;\n            }\n            if (password.length < 8) {\n                this.set(\n                    'controller.validation_error',\n                    this.get('intl').t('validation.passwordlength'),\n                );\n                return;\n            }\n            if (password !== again) {\n                this.set(\n                    'controller.validation_error',\n                    this.get('intl').t('validation.passwordagain'),\n                );\n                return;\n            }\n            this.set('controller.validation_error', null);\n            //everything is ok so let's change the password over api\n            userid = this.get('session.saveUserId');\n            if (userid == null) {\n                alert('changePassword: current user not found');\n                return;\n            }\n            model = this.get('controller.user');\n            model.set('password', password);\n            c = this.get('Collector');\n            this.set('controller.password_changed', true);\n            promise = c.ajax({\n                method: 'POST',\n                url: 'changePassword',\n                data: {\n                    currentPassword: currentPassword,\n                    newPassword: password,\n                },\n            });\n            promise.then(() => {\n                this.set('controller.password_changed', false);\n                this.set('controller.securedPassword', true);\n                model.set('password', 'secured');\n                return this.transitionTo('my-sites').then(() => {\n                    return this.startTour();\n                });\n            });\n            return promise.catch((err) => {\n                this.set('controller.password_changed', false);\n                if (err.payload.error_msg) {\n                    return this.set('controller.validation_error', 'general.error.passwordchanged');\n                } else {\n                    return alert('changePassword: fail ' + err);\n                }\n            });\n        },\n        change: function (value, field) {\n            var model;\n            model = this.get('controller.user');\n            model.set(field, value);\n            return Ember.run.debounce(\n                this,\n                function () {\n                    return model.validate([field]).then(() => {\n                        return this.set(\n                            'controller.' + field + 'Errors',\n                            model.get('errors').errorsFor(field),\n                        );\n                    });\n                },\n                150,\n            );\n        },\n    },\n});\n\nexport default ChangepasswordRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/general-add.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GeneralAddRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport config from '../config/environment';\n\nimport collector from '../classes/collector';\n\nimport toTop from '../mixins/reset-scroll';\n\nimport jQuery from 'jquery';\n\nGeneralAddRoute = Ember.Route.extend(AuthenticatedRouteMixin, toTop, {\n    dialogs: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    controllerName: 'general-add',\n    savedRoute: 'saved',\n    additional_fields: Em.A([]),\n    CollectorService: Ember.inject.service('collector-service'),\n    scroller: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    beforeModel: function () {\n        this._super(...arguments);\n        return this.set('gui.hideMobileHeader', true);\n    },\n    model: function (params) {\n        var records;\n        if (!this.get('modelName')) {\n            return Ember.Object.create({\n                objects: this.get('objects'),\n                values: {},\n                saveAction: this.get('saveAction'),\n            });\n        }\n        if (this.get('edit')) {\n            return this.store.findRecord(this.get('modelName'), params.id, {\n                include: true,\n            });\n        } else {\n            records = this.store.peekAll(this.get('modelName')).filterBy('isNew', true);\n            if (records.get('length') > 0) {\n                return records.get('firstObject');\n            }\n            return this.store.createRecord(this.get('modelName'));\n        }\n    },\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        // Reset controller properties'\n        controller.set('errors', Em.A([]));\n        controller.set('spinIsLoading', false);\n        return controller.set('submitted', false);\n    },\n    //        controller.set('fieldSettings.title', true)\n    rowSaved: function (row) {},\n    save_record: function (row) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var children, field, fields, name, obj, promises;\n            promises = [];\n            fields = this.get('Collector').fields(this.get('controller.form'));\n            children = [];\n            for (name in fields) {\n                field = fields[name];\n                if (field.type === 'databasearray' || field.type === 'work_permit_attachment') {\n                    obj = Ember.Object.extend({\n                        fieldsInCommon: Ember.computed.intersect('parentFields', 'childFields'),\n                    }).create({\n                        parentFields: Object.keys(fields),\n                        childFields: Object.keys(this.get('Collector').fields(field.options.form)),\n                    });\n                    row.get(name).forEach((child) => {\n                        obj.get('fieldsInCommon').forEach(function (commonfield) {\n                            return child.set(commonfield, row.get(commonfield));\n                        });\n                        return children.push(child);\n                    });\n                }\n            }\n            if (children.length > 0) {\n                return this.get('CollectorService')\n                    .checkRowValidation(this.get('controller.form'), row, this.get('edit'))\n                    .then(\n                        (resp) => {\n                            promises = children.map(function (child) {\n                                return child.save();\n                            });\n                            return Ember.RSVP.Promise.all(promises).then(() => {\n                                return row.save().then(resolve, reject);\n                            }, reject);\n                        },\n                        (e) => {\n                            this.set('controller.validationMessageData', e.payload);\n                            return reject(e);\n                        },\n                    );\n            } else {\n                return row.save().then(resolve, reject);\n            }\n        });\n    },\n    scrollIfErrors: function () {\n        return Em.run.next(this, function () {\n            if (document.querySelector('.has-error')) {\n                return this.get('scroller').scrollVertical(document.querySelector('.has-error'), {\n                    offset: -70,\n                });\n            }\n        });\n    },\n    actions: {\n        save: function () {\n            var promise, row, self;\n            this.scrollIfErrors();\n            row = this.get('controller.model');\n            if (collector.hasErrors(row.get('constructor.modelName'))) {\n                this.set('controller.spinIsLoading', false);\n                return;\n            }\n            //            if row.saveAction?\n            //                row.saveAction @, row\n            //#                @transitionTo('index')\n            //                return\n            this.set('controller.submitted', false);\n            self = this;\n            if (!this.get('controller.errors') || this.get('controller.errors.length') < 1) {\n                this.set('controller.submitted', true);\n                if (row.saveAction != null) {\n                    row.saveAction(this, row);\n                    return;\n                }\n                //                @transitionTo('index')\n                promise = this.save_record(row);\n                return promise.then(\n                    function () {\n                        var after_save;\n                        self.set('controller.validationMessage', null);\n                        self.rowSaved(row);\n                        after_save = self.get('controller.afterSave');\n                        if (!after_save) {\n                            after_save = self.get('afterSave');\n                        }\n                        if (config.APP.KIOSK) {\n                            after_save = self.get('sharedAfterSave');\n                        }\n                        self.set('controller.spinIsLoading', false);\n                        //savedController = self.get 'savedController'\n\n                        //savedController.set 'model', row\n                        //savedController.set 'afterSave', after_save\n                        return self.transitionTo(self.get('savedRoute')).then(function (newRoute) {\n                            if (self.get('hideFromSaved')) {\n                                newRoute.controller.set('hideFields', self.get('hideFromSaved'));\n                            }\n                            newRoute.controller.set('model', row);\n                            newRoute.controller.set(\n                                'additional_fields',\n                                self.get('additional_fields'),\n                            );\n                            newRoute.controller.set('afterSave', after_save);\n                            if (self.get('controller.addNewLink')) {\n                                newRoute.controller.set(\n                                    'addPageLink',\n                                    self.get('controller.addNewLink'),\n                                );\n                            }\n                            if (self.get('controller.editNewLink')) {\n                                newRoute.controller.set(\n                                    'editPageLink',\n                                    self.get('controller.editNewLink'),\n                                );\n                            }\n                            if (self.get('controller.hideSavedAddLinks')) {\n                                return newRoute.controller.set('hideAddLinks', true);\n                            }\n                        });\n                    },\n                    (back) => {\n                        this.set('controller.submitted', true);\n                        this.set('controller.spinIsLoading', false);\n                        return this.set('controller.validationMessageData', back.errors);\n                    },\n                );\n            } else {\n                self.set('controller.submitted', true);\n                //put button to normal state after error\n                return self.set('controller.spinIsLoading', false);\n            }\n        },\n        cancel: function () {\n            var self;\n            self = this;\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('general.confirm.cancel'))\n                .then((con) => {\n                    if (con) {\n                        this.get('controller.model').rollbackAttributes();\n                        return window.history.back(-1);\n                    }\n                });\n        },\n        //                if self.get('afterSave') then self.transitionTo(self.get('afterSave')) else self.transitionTo('index')\n        willTransition: function (transition) {\n            if (\n                transition.targetName !== 'users.add.index' &&\n                transition.targetName !== 'register.service.products' &&\n                transition.targetName.substring(0, 9) !== 'users.add'\n            ) {\n                if (\n                    this.get('controller.model') &&\n                    typeof this.get('controller.model').rollbackAttributes === 'function'\n                ) {\n                    this.get('controller.model').rollbackAttributes();\n                }\n                return true;\n            }\n        },\n    },\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting) {\n            controller.set('message', null);\n            controller.set('validationMessage', null);\n            controller.set('showMessageButton', false);\n            this.set('gui.hideMobileHeader', false);\n        }\n        return this._super(controller, isExiting, transition);\n    },\n});\n\nexport default GeneralAddRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/general-report.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GeneralReportRoute,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport collector from '../classes/collector';\n\nimport initRoute from '../mixins/init-route';\n\nGeneralReportRoute = Ember.Route.extend(AuthenticatedRouteMixin, initRoute, {\n    localStorageWrapper: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    init: function () {\n        var queryParams;\n        this._super();\n        queryParams = this.get('queryParams');\n        queryParams.page = {\n            refreshModel: true,\n        };\n        queryParams.order = {\n            refreshModel: true,\n        };\n        queryParams.limit = {\n            refreshModel: true,\n        };\n        queryParams.row_info_status = {\n            refreshModel: true,\n        };\n        queryParams.more = {\n            refreshModel: true,\n        };\n        return this.set('queryParams', queryParams);\n    },\n    offset: 0,\n    //    renderTemplate: ->\n    //        @render 'general-report', {controller: @get('parentController')}\n    paramsSet: false,\n    more: null,\n    model: function (params) {\n        var c, fields, form, ls_key_name, page, param, queryParams, split, v, valuefromLS;\n        if (params.limit > 100) {\n            params.limit = 100;\n        } else if (!params.limit) {\n            params.limit = 25;\n        }\n        if (this.get('localStorageKey')) {\n            ls_key_name = this.get('localStorageKey') + '_defaultLimit';\n        } else {\n            ls_key_name = this.get('form') + '_defaultLimit';\n        }\n        valuefromLS = this.get('localStorageWrapper').getUserSetting(ls_key_name);\n        if (!Em.isEmpty(valuefromLS)) {\n            params.limit = valuefromLS;\n        }\n        if (!this.get('paramsSet')) {\n            queryParams = this.get('queryParams');\n            c = this.get('Collector');\n            form = this.get('form');\n            fields = c.fieldArray(form);\n            fields.forEach(function (field) {\n                var ref;\n                if (\n                    (ref = field.type) === 'date' ||\n                    ref === 'database' ||\n                    ref === 'option_values'\n                ) {\n                    return (queryParams[field.name] = {\n                        refreshModel: true,\n                    });\n                }\n            });\n            this.set('queryParams', queryParams);\n            this.set('paramsSet', true);\n        }\n        page = params.page;\n        page = isNaN(page) || page <= 0 ? 1 : Math.floor(page);\n        //        if @get('controller.content.meta.count') > @get('limit')\n        this.set('offset', (page - 1) * params.limit);\n        params.offset = this.get('offset');\n        delete params.page;\n        if (params.status === 'all') {\n            delete params.status;\n        }\n        for (param in params) {\n            v = params[param];\n            if (param.includes('-')) {\n                if (Ember.isPresent(v)) {\n                    split = param.split('-');\n                    if (Ember.isEmpty(params[split[0]])) {\n                        params[split[0]] = {\n                            [`${split[1]}`]: v,\n                        };\n                    }\n                }\n                delete params[param];\n            }\n            if (v === 'null' || v === null || v === 'undefined') {\n                delete params[param];\n            }\n        }\n        if (params.more != null) {\n            params.more.split('|').forEach(function (param) {\n                var splitted;\n                splitted = param.split(':');\n                if (splitted[0].includes('-')) {\n                    if (Ember.isPresent(splitted[1])) {\n                        split = splitted[0].split('-');\n                        if (Ember.isEmpty(params[split[0]])) {\n                            return (params[split[0]] = {\n                                [`${split[1]}`]: splitted[1],\n                            });\n                        }\n                    }\n                } else {\n                    return (params[splitted[0]] = splitted[1]);\n                }\n            });\n            this.set('more', params.more);\n        } else {\n            this.set('more', null);\n        }\n        delete params.more; // just to make sure this doesn't bleed into capi\n        return params;\n    },\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        this.set('localStorageKey', controller.localStorageKey);\n        if (this.get('more')) {\n            this.get('more')\n                .split('|')\n                .forEach(function (param) {\n                    var splitted;\n                    splitted = param.split(':');\n                    return controller.set(splitted[0], splitted[1]);\n                });\n        }\n        // there is a high probability that this doesn't work on some report/s\n        /*\n    if controller.get('filters') && Ember.typeOf(controller.get('filters')) is \"array\"\n        for filter in controller.get 'filters'\n            if filter.type != \"searchbox\" && (!controller.get(filter.field) || controller.get(filter.field) == \"null\")\n                if controller.get(filter.field) != null\n                    controller.set filter.field, undefined\n\n    */\n        return controller.setProperties({\n            offset: this.get('offset'),\n        });\n    },\n    actions: {\n        next_date: function () {\n            return this.set(\n                'controller.date',\n                moment(this.get('controller.date')).add(1, 'days').format('YYYY-MM-DD'),\n            );\n        },\n        prev_date: function () {\n            return this.set(\n                'controller.date',\n                moment(this.get('controller.date')).subtract(1, 'days').format('YYYY-MM-DD'),\n            );\n        },\n        showColumn: function (col) {\n            var arr, field, i, key, len, ref, ref1;\n            key = this.get('controller.model').type + '_defaultColumns';\n            this.get('controller.defaultColumns').pushObject(col);\n            this.get('controller.extraColumns').removeObject(col);\n            if (localStorage) {\n                if (localStorage[key]) {\n                    arr = JSON.parse(localStorage[key]);\n                    if (((ref = col.ext), indexOf.call(arr, ref) < 0)) {\n                        arr.push(col.ext);\n                    }\n                    return (localStorage[key] = JSON.stringify(arr));\n                } else {\n                    arr = [];\n                    ref1 = this.get('controller.defaultColumns');\n                    for (i = 0, len = ref1.length; i < len; i++) {\n                        field = ref1[i];\n                        arr.push(field.ext);\n                    }\n                    return (localStorage[key] = JSON.stringify(arr));\n                }\n            }\n        },\n        hideColumn: function (col) {\n            var arr, field, i, key, len, ref;\n            key = this.get('controller.model').type + '_defaultColumns';\n            this.get('controller.defaultColumns').removeObject(col);\n            this.get('controller.extraColumns').pushObject(col);\n            if (localStorage) {\n                arr = [];\n                ref = this.get('controller.defaultColumns');\n                for (i = 0, len = ref.length; i < len; i++) {\n                    field = ref[i];\n                    arr.push(field.ext);\n                }\n                return (localStorage[key] = JSON.stringify(arr));\n            }\n        },\n        status: function (status) {\n            return this.set('controller.status', status);\n        },\n        toggleCalender: function () {\n            return this.toggleProperty('controller.showCalender');\n        },\n    },\n});\n\n//        willTransition: (transition)->\n//            @get('controller.model').every (row) =>\n//                if !row.get('isValid') || row.get('isError') || row.get('hasDirtyAttributes')\n//                    transition.abort()\n//                    @get('dialogs').alert(@get('intl').t('report.alert_unsaved'))\n//                    return\n//            return true\nexport default GeneralReportRoute;\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nimport { typeOf, isEmpty } from '@ember/utils';\n\nimport Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport configurations from '../config';\nimport menu from 'tt4/mixins/menu';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport Ember from 'ember';\n\nconst indexRoute = Route.extend(menu, AuthenticatedRouteMixin, {\n    session: service(),\n    initapp: service(),\n    router: service('router'),\n    localStorageWrapper: service(),\n    PushNotification: service(),\n\n    beforeModel() {\n        get(this, 'PushNotification').setupPermission();\n\n        const isLogged = get(this, 'session.isAuthenticated') ? true : false;\n\n        if (!isLogged) {\n            get(this, 'router').transitionTo('login');\n            return;\n        }\n\n        get(this, 'PushNotification').register();\n\n        // right after login tt4 is logged but not ready .. then we wait that appReady is triggered\n        if (!get(this, 'initapp.appReady')) {\n            return get(this, 'initapp').on('appReady', () => {\n                //console.log(\"ok app now ready .. lets transit\")\n                return this.firstPageTransition();\n            });\n        } else {\n            return this.firstPageTransition();\n        }\n    },\n\n    firstPageTransition() {\n        this.initapp.clearInit();\n\n        if (\n            get(this, 'session.currentUser.password') &&\n            get(this, 'session.currentUser.password') !== 'secured' &&\n            !this.session.session.content.authenticated.scope\n        ) {\n            get(this, 'router').transitionTo('changepassword');\n            return;\n        }\n\n        const firstPage = get(this, 'localStorageWrapper').getUserSetting('last_page');\n        if (Ember.testing && (isEmpty(firstPage) || firstPage === 'dashboard'))\n            return get(this, 'router').transitionTo('my-sites');\n        if (\n            firstPage &&\n            firstPage.length !== 0 &&\n            firstPage !== 'index' &&\n            this.pageInPossibleFirstPages(firstPage)\n        ) {\n            if (typeOf(firstPage) === 'object') {\n                return get(this, 'router').transitionTo(firstPage.page, firstPage.param);\n            } else {\n                return get(this, 'router').transitionTo(firstPage);\n            }\n        } else {\n            return get(this, 'router').transitionTo(this.getMenus()[0].link[0]);\n        }\n    },\n\n    pageInPossibleFirstPages(page) {\n        const searchPage = typeOf(page) === 'object' ? page.page : page;\n        return configurations.possibleFirstPages.indexOf(searchPage) !== -1;\n    },\n});\n\nexport default indexRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/invalid.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar InvalidRoute;\n\nimport Ember from 'ember';\n\nInvalidRoute = Ember.Route.extend({\n    redirect: function () {\n        console.warn('No route for given URL found, redirecting to index route.');\n        return this.transitionTo('index');\n    },\n});\n\nexport default InvalidRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/login/register.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar LoginRegisterRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../general-add';\n\nLoginRegisterRoute = GeneralAddRoute.extend({\n    controllerName: 'login/register',\n    beforeModel: function () {},\n    // overriding beforeModel so authenticatedMixin doesn't move as to /login\n    objects: {\n        firstname: {\n            translation: 'register.firstname',\n            type: 'textbox',\n            features: {},\n        },\n        lastname: {\n            translation: 'register.lastname',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        email: {\n            translation: 'register.email',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n                validate_check: ['email', 'remote:username'],\n            },\n        },\n        password: {\n            translation: 'register.password',\n            type: 'password',\n            features: {\n                mandatory: true,\n                validate_check: ['minLength:8'],\n            },\n        },\n        password_confirm: {\n            translation: 'register.password_confirmation',\n            type: 'password',\n            features: {\n                mandatory: true,\n                validate_check: ['minLength:8', 'match:password'],\n            },\n        },\n        text1: {\n            translation: 'register.company_name',\n            type: 'textbox',\n            features: {},\n        },\n        company: {\n            translation: 'register.company_name',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        vatin: {\n            translation: 'register.company_id',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        phone: {\n            translation: 'register.telephone',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n    },\n    saveAction: function (self, values) {\n        var controller;\n        controller = self.get('controller');\n        return controller.createService(values);\n    },\n    actions: {\n        cancel: function () {\n            return this.transitionTo('index');\n        },\n        willTransition: function () {\n            return true;\n        },\n    },\n});\n\nexport default LoginRegisterRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/massedit.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MasseditRoute;\n\nimport Ember from 'ember';\n\nimport getBack from '../mixins/get-back';\n\nMasseditRoute = Ember.Route.extend(getBack, {\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default MasseditRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/my-sites.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar mySitesRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport collector from '../classes/collector';\n\nimport config from '../config/environment';\n\nmySitesRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    beforeModel: function (transition) {\n        this._super(transition);\n        if (config.APP.KIOSK) {\n            return this.transitionTo('my-sites');\n        }\n    },\n});\n\nexport default mySitesRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/register/service.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterServiceRoute;\n\nimport Ember from 'ember';\n\nimport initmixin from 'tt4/mixins/init-route';\n\nRegisterServiceRoute = Ember.Route.extend(initmixin, {\n    beforeModel: function () {\n        return this.transitionTo('register.service.adddetails');\n    },\n});\n\nexport default RegisterServiceRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/register/service/adddetails.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterAdddetailsRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../general-add';\n\nRegisterAdddetailsRoute = GeneralAddRoute.extend({\n    controllerName: 'register/service/adddetails',\n    session: Em.inject.service(),\n    beforeModel: function () {\n        // overriding beforeModel so authenticatedMixin doesn't move as to /login\n        if (this.get('session.isAuthenticated')) {\n            this.get('session').invalidate();\n        }\n    },\n    objects: {\n        firstname: {\n            translation: 'register.firstname',\n            type: 'textbox',\n            features: {},\n        },\n        lastname: {\n            translation: 'register.lastname',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        email: {\n            translation: 'register.email',\n            type: 'username',\n            features: {\n                mandatory: true,\n                validate_check: ['email', 'remote:username'],\n            },\n            validateOnInit: true,\n        },\n        domain: {\n            translation: 'register.domain',\n            type: 'textbox',\n            features: {},\n            validateOnInit: true,\n        },\n        text1: {\n            translation: 'register.company_name',\n            type: 'textbox',\n            features: {},\n        },\n        company: {\n            translation: 'register.company_name',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        vatin: {\n            translation: 'register.company_id',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        phone: {\n            translation: 'register.telephone',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        country: {\n            name: '',\n            translation: 'register.country',\n            type: 'dropdown_values',\n            features: {\n                mandatory: true,\n            },\n            options: [\n                {\n                    id: 'fi',\n                    value: 'Finland',\n                },\n                {\n                    id: 'se',\n                    value: 'Sweden',\n                },\n                {\n                    id: 'no',\n                    value: 'Norway',\n                },\n                {\n                    id: 'dk',\n                    value: 'Denmark',\n                },\n                {\n                    id: 'uk',\n                    value: 'UK',\n                },\n                {\n                    id: 'us',\n                    value: 'US',\n                },\n            ],\n        },\n        text2: {\n            translation: 'register.promo_title',\n            type: 'textbox',\n            features: {},\n        },\n        promocode: {\n            translation: 'register.promocode',\n            type: 'textbox',\n            features: {},\n        },\n    },\n    saveAction: function (self, values) {\n        var controller;\n        controller = self.get('controller');\n        controller.convertZohoLead(values);\n        return controller.next(values);\n    },\n    resetController: function (controller, transition) {\n        return controller.set('validationstate', Em.Object.create());\n    },\n});\n\nexport default RegisterAdddetailsRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/register/service/amounts.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterAmountsRoute;\n\nimport Ember from 'ember';\n\nRegisterAmountsRoute = Ember.Route.extend();\n\nexport default RegisterAmountsRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/register/service/done.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterDoneRoute;\n\nimport Ember from 'ember';\n\nRegisterDoneRoute = Ember.Route.extend();\n\nexport default RegisterDoneRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/register/service/products.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterProductsRoute;\n\nimport Ember from 'ember';\n\nRegisterProductsRoute = Ember.Route.extend();\n\nexport default RegisterProductsRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/saved.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SavedRoute;\n\nimport Ember from 'ember';\n\nimport toTop from '../mixins/reset-scroll';\n\nSavedRoute = Ember.Route.extend(toTop, {\n    //setupController: (controller, model) ->\n    //    unless controller.get('model')\n    //        @transitionTo('index')\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting) {\n            return controller.set('hideAddLinks', false);\n        }\n    },\n});\n\n//controller.set 'afterSave', false\nexport default SavedRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/send-skatteverket.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SendSkatteverketRoute;\n\nimport Ember from 'ember';\n\nimport pdfExport from '../mixins/pdf-export';\n\nimport formReport from '../pods/collector/report-comp/component';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSendSkatteverketRoute = Ember.Route.extend(pdfExport, AuthenticatedRouteMixin, {\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    afterModel: function () {\n        return this.sendReport();\n    },\n    sendReport: function () {\n        var c;\n        c = this.get('Collector');\n        return this.getReport().then((report) => {\n            var header, promise;\n            header = this.get('intl').t('pl.skatteverket_emailheader');\n            promise = c.ttapi({\n                url: 'sendReportAsEmail',\n                data: {\n                    to_address: this.get('session.currentUser.email'),\n                    email: report,\n                    header: header.toString(),\n                },\n                method: 'post',\n            });\n            return promise.then(function (ret) {\n                return console.log('done', ret);\n            });\n        });\n    },\n    getReport: function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var report;\n            report = formReport.create({\n                store: this.get('store'),\n                Collector: this.get('Collector'),\n                intl: this.get('intl'),\n                rowsPerPage: 'all',\n                form: 'presence',\n                query: [\n                    {\n                        name: 'date',\n                        value:\n                            moment().subtract(3, 'months').format('YYYY-MM-DD') +\n                            '_' +\n                            moment().format('YYYY-MM-DD'),\n                    },\n                ],\n                order: 'date-,out',\n                show_columns:\n                    'date,employer.name,project.name,user.lastname,user.firstname,user.personid,in,out',\n            });\n            return report.get('asPdfElement').then((pdf) => {\n                return this.createPdfFromElements([pdf], 'base64').then((report) => {\n                    return resolve(report);\n                });\n            });\n        });\n    },\n});\n\nexport default SendSkatteverketRoute;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\n\nexport default Route.extend({\n    router: service(),\n    store: service(),\n\n    async model(params) {\n        let data = await get(this, 'store').query(params.form, {\n            id: params.id,\n            sideload: true,\n            'row_info.status': 'all',\n        });\n        return get(data, 'firstObject');\n    },\n\n    setupController(controller, model) {\n        set(controller, 'model', model);\n    },\n\n    actions: {\n        cancel() {\n            window.history.back();\n        },\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/token.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TokenRoute;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nTokenRoute = Ember.Route.extend({\n    queryParams: {\n        url: true,\n    },\n    session: Em.inject.service(),\n    initapp: Em.inject.service(),\n    model: function (params) {\n        var secure;\n        this.get('initapp').clearInit();\n        secure = {\n            authenticated: {\n                authenticator: 'authenticator:collector-auth',\n                access_token: params.token,\n                expires_in: 3600,\n                token_type: 'Bearer',\n                scope: null,\n                expires_at: new Date(new Date().getTime()).getTime(),\n                refresh_token: params.token,\n            },\n        };\n        localStorage['ember_simple_auth-session'] = JSON.stringify(secure);\n        this.transitionTo('loading');\n        // HÄX for refreshing page after we refreshed correct auth in localstorage\n        return Em.run.later(\n            this,\n            function () {\n                this.get('initapp').clearInit();\n                if (params.url) {\n                    location.href = params.url;\n                    return location.reload();\n                } else {\n                    return (location.href = config.rootURL);\n                }\n            },\n            1000,\n        );\n    },\n});\n\nexport default TokenRoute;\n","import { init, BrowserTracing } from '@sentry/browser';\nimport { Ember as EmberIntegration } from '@sentry/integrations/esm/ember';\nimport config from 'tt4/config/environment';\nimport { isArray } from '@ember/array';\n\nexport function startSentry() {\n    if (config.environment !== 'development') {\n        init({\n            ...config.sentry,\n\n            release: config.APP.version,\n\n            integrations: [\n                new EmberIntegration({\n                    onerror: true,\n                    onunhandledrejection: true,\n                }),\n                new BrowserTracing(),\n            ],\n\n            tracesSampleRate: 0.2,\n\n            beforeSend(event, hint) {\n                /*\n                 * if flag sentry-enabled is false, don't send events to sentry\n                 * this is done through event.extra because we cannot access the services/flags from the sentry.js\n                 */\n                if (event && event.extra && !event.extra.sentryIsEnabled) {\n                    return null;\n                }\n\n                const error = hint.originalException;\n                if (error && error.errors && error.errors.error === 'overlap') {\n                    return null;\n                }\n                // https://github.com/emberjs/ember.js/issues/5566\n                if (error && error.message === 'TransitionAborted') {\n                    return null;\n                }\n                if (error && error.error === 'invalid_grant') {\n                    return null;\n                }\n                if (\n                    error &&\n                    error.message ===\n                        'a glimmer transaction was begun, but one already exists. You may have a nested transaction'\n                ) {\n                    return null;\n                }\n                if (\n                    error &&\n                    hint.originalException.payload &&\n                    hint.originalException.payload.error === 'username_in_use'\n                ) {\n                    return null;\n                }\n                if (\n                    error &&\n                    hint.originalException.payload &&\n                    hint.originalException.payload.error === 'username_contains_illegal_characters'\n                ) {\n                    return null;\n                }\n\n                const normalize = (filename) =>\n                    config.sentry.publicUrl + '/assets/' + filename.split('/www/', 2)[1];\n\n                if (\n                    event.exception &&\n                    event.exception.values &&\n                    event.exception.values[0] &&\n                    event.exception.values[0].stacktrace &&\n                    isArray(event.exception.values[0].stacktrace.frames)\n                ) {\n                    event.exception.values[0].stacktrace.frames.forEach((frame) => {\n                        if (frame.filename.includes('/www/')) {\n                            frame.filename = normalize(frame.filename);\n                        }\n                    });\n                    event.culprit = event.exception.values[0].stacktrace.frames[0].filename;\n                }\n\n                return event;\n            },\n        });\n    }\n}\n","define(\"tt4/serializers/-default\", [\"exports\", \"@ember-data/serializer/json\"], function (_exports, _json) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _json.default;\n    }\n  });\n});\n","define(\"tt4/serializers/-json-api\", [\"exports\", \"@ember-data/serializer/json-api\"], function (_exports, _jsonApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _jsonApi.default;\n    }\n  });\n});\n","define(\"tt4/serializers/-rest\", [\"exports\", \"@ember-data/serializer/rest\"], function (_exports, _rest) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _rest.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/serializers/application.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ApplicationSerializer;\n\nimport RESTSerializer from 'ember-data/serializers/rest';\n\nimport DS from 'ember-data';\n\nimport { pluralize } from 'ember-inflector';\n\nApplicationSerializer = RESTSerializer.extend(DS.EmbeddedRecordsMixin, {\n    attrs: {\n        row_info: {\n            embedded: 'always',\n            serialize: false,\n            deserialize: 'records',\n        },\n    },\n    isNewSerializerAPI: true,\n    extractMeta: function (store, type, payload) {\n        payload.meta = {\n            count: payload.count,\n            additional_meta: payload.meta,\n        };\n        delete payload.count;\n        return this._super(store, type, payload);\n    },\n    serializeIntoHash: function (hash, type, snapshot, options) {\n        var record;\n        this._super(hash, type, snapshot, options);\n        record = snapshot.record;\n        if (record.get('validation') === 'off') {\n            Ember.assign(hash, {\n                validation: record.get('validation'),\n            });\n        }\n        if (record.get('metadata')) {\n            Ember.assign(hash, {\n                meta: record.get('metadata'),\n            });\n            record.set('metadata', null);\n        }\n    },\n    serialize: function (snapshot, options) {\n        var json;\n        json = this._super(snapshot, options);\n        return json;\n    },\n    normalizeQueryResponse: function (store, primaryModelClass, payload, id, requestType) {\n        var camelized, data, i, inPayload, item, len, main, r, record, value;\n        camelized = Ember.String.camelize(primaryModelClass.modelName);\n        main = pluralize(camelized);\n        inPayload = payload[Object.keys(payload)[0]];\n        if (\n            inPayload &&\n            inPayload.length > 0 &&\n            inPayload[0].values &&\n            Object.keys(payload).length === 2\n        ) {\n            data = {};\n            for (item in payload) {\n                value = payload[item];\n                if (item === 'count') {\n                    data[item] = value;\n                    continue;\n                }\n                data[main] = [];\n                for (i = 0, len = value.length; i < len; i++) {\n                    record = value[i];\n                    r = record.values;\n                    r.id = record.id;\n                    data[main].push(r);\n                }\n            }\n            return this._super(store, primaryModelClass, data, id, requestType);\n        } else if (!payload[main]) {\n            data = {};\n            data[main] = [];\n            return this._super(store, primaryModelClass, data, id, requestType);\n        }\n        return this._super(...arguments);\n    },\n});\n\nexport default ApplicationSerializer;\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import RESTSerializer from 'ember-data/serializers/rest';\n\nexport default RESTSerializer.extend();\n","import RESTSerializer from 'ember-data/serializers/rest';\n\nexport default RESTSerializer.extend();\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({\n    keyForAttribute(key) {\n        return key;\n    },\n});\n","import RESTSerializer from 'ember-data/serializers/rest';\n\nexport default RESTSerializer.extend();\n","import RESTSerializer from 'ember-data/serializers/rest';\n\nexport default RESTSerializer.extend();\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\nimport { camelize } from '@ember/string';\n\nexport default DS.JSONAPISerializer.extend({\n    keyForAttribute(key) {\n        return camelize(key);\n    },\n});\n","import DS from 'ember-data';\n\nexport default DS.RESTSerializer.extend();\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","define(\"tt4/services/-ensure-registered\", [\"exports\", \"@embroider/util/services/ensure-registered\"], function (_exports, _ensureRegistered) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _ensureRegistered.default;\n    }\n  });\n});\n","import { merge, assign as _assign } from '@ember/polyfills';\nimport config from '../config/environment';\nimport Service from 'ember-gestures/services/-gestures';\n\nconst assign = _assign || merge;\n\nlet gestures = assign({}, {\n  useCapture: false\n});\ngestures = assign(gestures, config.gestures);\n\nexport default Service.extend({\n  useCapture: gestures.useCapture\n});\n","import Service, { inject as service } from '@ember/service';\nimport FormsService from 'tt4/services/forms';\nimport DS from 'ember-data';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport { assert } from '@ember/debug';\nimport { isEmpty } from '@ember/utils';\nimport { get } from '@ember/object';\n\nexport default class CollectorService extends Service {\n    @service private intl!: any;\n    @service private forms!: FormsService;\n    @service private store!: DS.Store;\n\n    constructor() {\n        super(...arguments);\n    }\n\n    public getTranslationForColumn(form: string, fieldName: string, removed: boolean = false) {\n        if (fieldName === 'id') return 'id';\n\n        if (fieldName.substring(0, 9) === 'row_info.') return this.intl.t('general.' + fieldName);\n\n        if (removed) return this.getBestTranslation(form, fieldName);\n\n        const field = this.forms.fields(form)[fieldName];\n\n        if (!field) assert(\"Field '\" + fieldName + \"' not found for form '\" + form + \"'\");\n\n        if (field.hasOwnProperty('name')) return field.name;\n        else return this.getBestTranslation(form, fieldName);\n    }\n\n    public getBestTranslation(form: string, fieldName: string) {\n        const testKeys: string[] = [\n            'report.' + form + '.' + fieldName,\n            'defaults.field.' + fieldName,\n        ];\n\n        const foundKey: string | undefined = testKeys.find((key) => {\n            return this.intl.exists(key);\n        });\n\n        if (foundKey) return this.intl.t(foundKey);\n        else return testKeys[0];\n    }\n\n    public copyRecord(record: IRecord) {\n        const form = get(record, 'constructor.modelName');\n        const jsonRecord: any = record.toJSON();\n        for (const field of ['status']) {\n            if (!isEmpty(jsonRecord[field])) {\n                jsonRecord[field] = null;\n            }\n        }\n\n        record.eachRelationship((key: string, relationship: { kind: string }) => {\n            const relKind = relationship.kind;\n            if (\n                (relKind === 'belongsTo' || relKind === 'hasMany') &&\n                !['export_salary', 'export_absence', 'row_info'].includes(key)\n            ) {\n                if (this.forms.field(form, key).type === 'databasearray') {\n                    const hasManyArr: any = [];\n                    record[key].forEach((hasManyRecord: IRecord) => {\n                        hasManyArr.push(this.copyRecord(hasManyRecord));\n                    });\n                    jsonRecord[key] = hasManyArr;\n                } else {\n                    jsonRecord[key] = record[key];\n                }\n            }\n        });\n\n        return this.store.createRecord(form, jsonRecord);\n    }\n}\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/admintool.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolService;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport $ from 'jquery';\n\nAdmintoolService = Ember.Service.extend({\n    session: Ember.inject.service(),\n    ajax: function (params) {\n        var self;\n        params.url = config.APP.ADMINTOOLURL + params.url;\n        self = this;\n        params.beforeSend = function (request) {\n            if (Ember.get(self, 'session.session.authenticated.access_token')) {\n                return request.setRequestHeader(\n                    'Authorization',\n                    'Bearer ' + Ember.get(self, 'session.session.authenticated.access_token'),\n                );\n            }\n        };\n        return $.ajax(params);\n    },\n    get: function (path, params) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise;\n            if (!params) {\n                params = {};\n            }\n            params.url = path;\n            promise = this.ajax(params);\n            return promise.then(\n                function (data) {\n                    return resolve(data[path] != null ? Em.A(data[path]) : Em.A(data));\n                },\n                function (reason) {\n                    return reject(reason);\n                },\n            );\n        });\n    },\n});\n\nexport default AdmintoolService;\n","define(\"tt4/services/ajax\", [\"exports\", \"ember-ajax/services/ajax\"], function (_exports, _ajax) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _ajax.default;\n    }\n  });\n});\n","import Service, { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nexport default class AnalyticsService extends Service {\n    @service private flags: any;\n    @tracked customData: any[] = [];\n\n    public trackEvent(event: TrackingEvent) {\n        if (typeof window.snowplow === 'function' && this.flags.test('use-snowplow')) {\n            window.snowplow('trackStructEvent', event);\n            // empty customData after tracking\n            this.customData = [];\n        }\n    }\n    // function to init customData (so we can call it from components)\n    public initCustomData() {\n        this.customData = [];\n    }\n}\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment';\n\n/**\n * Service for handling Android device camera and file operations\n * Provides methods to capture images from camera or gallery and process them\n */\nexport default class AndroidFileService extends Service {\n    @service intl;\n    @service notifications;\n\n    /**\n     * Captures an image from camera or gallery and processes it\n     * @param {string|null} source - 'gallery' for photo library, null for camera\n     * @returns {Promise<Object>} Processed file object ready for upload\n     */\n    async captureImage(source = null) {\n        const options = this.buildCameraOptions(source);\n\n        try {\n            const imageData = await this.getCameraImage(options);\n            return await this.processImageFile(imageData);\n        } catch (error) {\n            // Show error notification to user\n            this.notifications.error(this.intl.t('field.fileupload.camera_error'), {\n                autoClear: true,\n            });\n            throw error;\n        }\n    }\n\n    /**\n     * Builds camera configuration options for Cordova camera plugin\n     * @param {string|null} source - Source type for image capture\n     * @returns {Object} Camera options object\n     * @private\n     */\n    buildCameraOptions(source) {\n        return {\n            allowEdit: false,\n            targetWidth: 1600,\n            targetHeight: 1600,\n            quality: 70, // Image quality 0-100\n            destinationType: window.Camera.DestinationType.FILE_URI,\n            sourceType: source === 'gallery'\n                ? window.Camera.PictureSourceType.PHOTOLIBRARY\n                : window.Camera.PictureSourceType.CAMERA,\n            mediaType: window.Camera.MediaType.PICTURE,\n            correctOrientation: true, // Auto-rotate based on device orientation\n            encodingType: 0, // JPEG format\n        };\n    }\n\n    /**\n     * Captures image using Cordova camera plugin\n     * Wraps callback-based API into Promise for async/await usage\n     * @param {Object} options - Camera configuration options\n     * @returns {Promise<string>} File URI of captured image\n     * @private\n     */\n    async getCameraImage(options) {\n        return new Promise((resolve, reject) => {\n            navigator.camera.getPicture(resolve, reject, options);\n        });\n    }\n\n    /**\n     * Processes the captured image file and prepares it for upload\n     * @param {string} imageData - File URI from camera\n     * @returns {Promise<Object>} File object with blob, name, and type\n     * @private\n     */\n    async processImageFile(imageData) {\n        const fileEntry = await this.resolveFileSystemURL(imageData);\n        const file = await this.getFileFromEntry(fileEntry);\n\n        // Set proper MIME type and generate unique filename\n        file.type = 'image/jpeg';\n        file.name = file.name.replace(\n            'image.',\n            'image' + moment().format('YYYY-MM-DD-HH-mm-ss') + '.'\n        );\n\n        return {\n            blob: file,\n            name: file.name,\n            type: file.type,\n        };\n    }\n\n    /**\n     * Resolves file system URL to file entry\n     * Wraps callback-based API into Promise\n     * @param {string} url - File system URL\n     * @returns {Promise<Object>} File entry object\n     * @private\n     */\n    async resolveFileSystemURL(url) {\n        return new Promise((resolve, reject) => {\n            window.resolveLocalFileSystemURL(url, resolve, reject);\n        });\n    }\n\n    /**\n     * Gets file object from file entry\n     * Wraps callback-based API into Promise\n     * @param {Object} fileEntry - File entry from file system\n     * @returns {Promise<Object>} File object with metadata\n     * @private\n     */\n    async getFileFromEntry(fileEntry) {\n        return new Promise((resolve, reject) => {\n            fileEntry.file(resolve, reject);\n        });\n    }\n}\n\n","// noinspection TypeScriptValidateTypes\n\nimport Service, { inject as service } from '@ember/service';\nimport { assert } from '@ember/debug';\n\n/**\n * Handles all operations that have to do with calling different apis\n *\n * ```js\n * @service apiservice;\n * this.apiservice.request(<backendName>, <url>, <method>, <body>)\n * ```\n *\n * @class ApiserviceService\n * @constructor\n * @public\n */\n\nexport default class ApiserviceService extends Service {\n    @service private session!: any;\n    @service private ttapi!: any;\n    @service private capi!: any;\n\n    /**\n     * Make api request using backendName, url, body and method given\n     * EXAMPLE: await this.apiservice.request('capi', '/worktime/:id', 'PUT', {worktime: {locked: true}})\n     * EXAMPLE2: await this.apiservice.request('ttapi', '/sendReportAsEmail', 'POST', {to: 'test@mail.com', lang: 'fi'})\n     * @method request\n     * @param {String} backendName\n     * @param {String} url\n     * @param {object} data\n     * @param {string} method\n     */\n    public async request(\n        backendName: string,\n        url: string,\n        method: string = 'GET',\n        data: object = {},\n    ) {\n        let callUrl: unknown = '';\n        switch (backendName) {\n            case 'ttapi':\n                callUrl = this.ttapi.host;\n                break;\n            case 'capi':\n                callUrl = this.capi.host;\n                break;\n            default:\n                assert('Invalid backend name (options ttapi, capi)');\n        }\n\n        assert('You need to pass url to request method', url);\n\n        try {\n            const requestData: any = {\n                headers: {\n                    Authorization: 'Bearer ' + this.session.data.authenticated.access_token,\n                    'Content-Type': 'application/json',\n                },\n                method,\n            };\n            if (Object.keys(data).length > 0) requestData.body = JSON.stringify(data);\n            // @ts-ignore: Ignore import of compiled template\n            callUrl = callUrl.slice(-1) === '/' ? callUrl.slice(0, -1) : callUrl;\n            return await fetch(callUrl + url, requestData);\n        } catch (e) {\n            throw new Error(e);\n        }\n    }\n}\n","/* eslint-disable */\nimport Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Service.extend({\n  store: service(),\n  session: service(),\n  Collector: service('collector-service'),\n  ttapi: service(),\n  capi: service(),\n\n  async checkAndSetAutopause() {\n    if (!this.get('Collector').testNeedsOne('products.worktimegroup')) {\n        if (this.get('Collector').testNeedsOne('products.autopause')) {\n            let settings = await this.getSetting(null);\n            if (settings) {\n                settings.set('value', 0);\n                await settings.save();\n            }\n        } else {\n            return;\n        }\n        return;\n    }\n\n    try {\n      // Fetch all worktime groups\n      let response = await get(this, 'capi').request('user/worktimegroups');\n\n      // Extract the worktimegroups array from the response\n      let worktimeGroups = response.worktimegroups;\n\n      // Check if worktimeGroups is an array\n      if (!Array.isArray(worktimeGroups)) {\n        throw new Error('Invalid worktimeGroups format');\n      }\n\n      // Loop through each worktime group\n      for (let worktimeGroup of worktimeGroups) {\n        let worktimeGroupId = worktimeGroup.id;\n\n        // Check if autopause is on for the worktime group\n        const isAutopauseOn = await this.checkIfAutopauseIsOnForWorktimeGroup(worktimeGroupId);\n\n        if (isAutopauseOn) {\n          // Fetch the settings for the current worktime group\n          let settings = await this.getSetting(worktimeGroupId);\n\n          if (settings) {\n            // Set the pause value to 0 if autopause is on\n            settings.set('value', 0);\n            await settings.save();\n          }\n        }\n      }\n\n      // Handle the default case where worktimegroup is not set\n      const isAutopauseOn = await this.checkIfAutopauseIsOnForWorktimeGroup(null);\n      if (isAutopauseOn) {\n        let settings = await this.getSetting(null);\n        if (settings) {\n          settings.set('value', 0);\n          await settings.save();\n        }\n      }\n\n    } catch (error) {\n      console.error('Error checking autopause status:', error);\n    }\n  },\n\n  async checkIfAutopauseIsOnForWorktimeGroup(worktimegroupId) {\n    const url = worktimegroupId ? `forms?user.worktimegroup=${worktimegroupId}` : 'forms?user';\n    const response = await get(this, 'Collector').ajax({ url });\n    return response.updater && Array.isArray(response.updater.products) && response.updater.products.includes('autopause');\n  },\n\n  async getSetting(worktimegroupId) {\n    let condition = worktimegroupId ? `$userProfile->worktimegroup==${worktimegroupId}` : '';\n    let settingParams = {\n      name: 'default_value',\n      value: 0, // Ensure the value is set to 0 by default\n      condition: condition\n    };\n\n\n    if (!worktimegroupId) {\n      settingParams.condition = '';\n    }\n\n    const configs = {\n      form: 'worktime',\n      field: 'pause',\n      setting: settingParams\n    };\n\n    const forms = await this.store.findAll('form', { reload: true });\n    const form = forms.filterBy('external_type', configs.form).get('firstObject');\n    if (form) {\n      const field = form.fields.filterBy('external_type', configs.field).get('firstObject');\n      if (field) {\n        const setting = field.settings.filterBy('name', configs.setting.name).find(item => {\n          if (worktimegroupId) {\n            const arr = item.condition ? item.condition.split('==') : [];\n            return arr.length > 1 && arr[1] == worktimegroupId;\n          } else {\n            return item.condition === '';\n          }\n        });\n\n        return setting || this.store.createRecord('form-field-setting', configs.setting);\n      }\n    }\n    return null;\n  }\n});\n\n\n","import { Promise as EmberPromise } from 'rsvp';\nimport Service, { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Service.extend({\n    ajax: service(),\n    capi: service(),\n\n    sendFile(filename, contentType, content) {\n        return new EmberPromise((resolve) => {\n            get(this, 'capi')\n                .request('/awsurl?filename=' + filename + '&contentType=' + contentType)\n                .then((url) => this._ajaxRequest(url, contentType, content))\n                .then(() => resolve());\n        });\n    },\n\n    _ajaxRequest(url, contentType, content) {\n        get(this, 'ajax').request(url, {\n            type: 'put',\n            // Content type must much with the parameter you signed your URL with\n            contentType: contentType,\n            // this flag is important, if not set, it will try to send data as a form\n            processData: false,\n            // the actual file is sent raw\n            data: content,\n            dataType: 'text',\n            beforeSend: function (jqXHR) {\n                jqXHR.overrideMimeType('text/csv;charset=iso-8859-1');\n            },\n        });\n    },\n});\n","import { computed, get } from '@ember/object';\nimport AjaxService from 'ember-ajax/services/ajax';\nimport { inject } from '@ember/service';\nimport config from 'tt4/config/environment';\n\nexport default AjaxService.extend({\n    session: inject(),\n    headers: computed('session.session.authenticated.access_token', {\n        get() {\n            let headers = {};\n            const authToken = get(this, 'session.session.authenticated.access_token');\n            if (authToken) {\n                headers['Authorization'] = 'Bearer ' + authToken;\n            }\n            return headers;\n        },\n    }),\n    host: config.APP.BLOCKS_URL,\n});\n","import { A } from '@ember/array';\nimport { isPresent } from '@ember/utils';\nimport PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\nimport ObjectProxy from '@ember/object/proxy';\nimport EmberObject, { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport AjaxService from 'ember-ajax/services/ajax';\nimport config from 'tt4/config/environment';\n\n// const {inject: {service}, get, Object, ObjectProxy, PromiseProxyMixin, isPresent, A} = Ember;\n\nexport default AjaxService.extend({\n    flags: service(),\n    collector: service('collector-service'),\n    session: service(),\n\n    host: computed('session.currentUser.partnerid', function () {\n        if (config.environment !== 'development' && get(this, 'flags').test('capi_url'))\n            return get(this, 'flags').test('capi_url');\n        else return config.APP.COLLECTOR_API_URL;\n    }),\n\n    headers: computed('session.session.authenticated.access_token', {\n        get() {\n            let headers = {};\n            let token = get(this, 'session.session.authenticated.access_token');\n            headers['Authorization'] = 'Bearer ' + token;\n            return headers;\n        },\n    }),\n    findAll(form, params = {}) {\n        const promiseObject = ObjectProxy.extend(PromiseProxyMixin);\n        const c = get(this, 'collector');\n        const pluralForm = c.pluralize(form);\n        return promiseObject.create({\n            promise: this.request(pluralForm, { data: params }).then((data) =>\n                this._returnData(form, data, params, c, pluralForm),\n            ),\n        });\n    },\n    _returnData(form, data, params, c, pluralForm) {\n        let rows = [];\n        if (isPresent(params.sideload)) {\n            rows = c.injectSideload(pluralForm, data);\n        } else if (isPresent(data[form])) {\n            rows = A(data[form]);\n        } else {\n            rows = A(data[pluralForm]);\n        }\n        const EmberRows = A([]);\n\n        rows.forEach((row) => EmberRows.pushObject(EmberObject.create(row)));\n\n        return {\n            content: EmberRows,\n            meta: { count: get(data, 'count') },\n        };\n    },\n});\n","import Service, { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\n/**\n * Card register fetching.\n *\n * Wraps the cardregister `card` endpoint (the same query the competence tab uses):\n * it registers a user in cardUpdaters and pulls their cards from VastuuGroup, so the\n * nightly update keeps them fresh afterwards. Kept UI-agnostic on purpose — callers map\n * the normalized result to their own intl/markup.\n */\nexport default class CardregisterService extends Service {\n    @service store;\n\n    /**\n     * Ensure each user's employer has emp_id / country loaded before fetching, in a\n     * single query. Skips users with no employer at all (querying `employers?id=` 400s).\n     */\n    async loadEmployers(users) {\n        const ids = [];\n        users.forEach((user) => {\n            const empId = get(user, 'employer.id');\n            if (empId && (!get(user, 'employer.emp_id') || !get(user, 'employer.country'))) {\n                ids.push(empId);\n            }\n        });\n        if (ids.length === 0) return;\n        await this.store.query('employer', { id: ids.join(',') });\n    }\n\n    /**\n     * Fetch (and register) one user's cards. Returns a normalized outcome:\n     *   { status: 'ok', count }            cards fetched\n     *   { status: 'error', errorKey }      backend signalled meta.cardFetchError\n     *   { status: 'error', error }         the request threw\n     *   { status: 'skipped', reason }      cannot be fetched (no taxnumber / no employer)\n     *\n     * Run one user per request (callers loop sequentially) so we never hit the API\n     * gateway timeout.\n     */\n    async fetchForUser(user) {\n        const taxnumber = get(user, 'taxnumber');\n        // we can only fetch for users that have both a taxnumber and an employer (vatin) —\n        // skip the rest instead of issuing a doomed request\n        if (!taxnumber) return { status: 'skipped', reason: 'no_taxnumber' };\n\n        const vatin = get(user, 'employer.emp_id');\n        if (!vatin) return { status: 'skipped', reason: 'no_employer' };\n\n        try {\n            const resp = await this.store.query('card', {\n                taxnumber,\n                userCountry: get(user, 'homecountry') || 'FI',\n                vatin,\n                empCountry: get(user, 'employer.emp_country') || 'FI',\n            });\n            const cardFetchError = get(resp, 'meta')?.cardFetchError;\n            if (cardFetchError) {\n                return { status: 'error', errorKey: cardFetchError };\n            }\n            return { status: 'ok', count: get(resp, 'length') };\n        } catch (error) {\n            return { status: 'error', error };\n        }\n    }\n}\n","import { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport AjaxService from 'ember-ajax/services/ajax';\nimport config from 'tt4/config/environment';\n\n// const {inject: {service}, get, Object, ObjectProxy, PromiseProxyMixin, isPresent, A} = Ember;\n\nexport default AjaxService.extend({\n    session: service(),\n    flags: service(),\n\n    host: computed(function () {\n        if (config.environment !== 'development' && get(this, 'flags').test('cc-url'))\n            return get(this, 'flags').test('cc-url') + '/trigger';\n        return config.APP.CC_URL;\n    }),\n\n    headers: computed('session.session.authenticated.access_token', {\n        get() {\n            let headers = {};\n            let token = get(this, 'session.session.authenticated.access_token');\n            headers['Authorization'] = 'Bearer ' + token;\n            return headers;\n        },\n    }),\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/cdn.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CdnService;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nCdnService = Ember.Service.extend({\n    url: function (url) {\n        var base;\n        base = config.APP.CDN_URL;\n        if (\n            base.substring(base.length - 1, base.length) !== '/' &&\n            url.substring(url.length - 1, url.length) !== '/'\n        ) {\n            base += '/';\n        }\n        return base + url;\n    },\n});\n\nexport default CdnService;\n","define(\"tt4/services/clock\", [\"exports\", \"ember-cli-clock/services/clock\"], function (_exports, _clock) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _clock.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/collector-service.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar collectorService,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport localization from '../classes/localization';\n\nimport config from '../config/environment';\n\nimport DS from 'ember-data';\n\nimport validator from '../classes/validations';\n\nimport { get } from '@ember/object';\n\nimport { sanitize } from 'dom-purify';\n\nimport { isArray } from '@ember/array';\n\nimport { getImageFromUrl, resizeImage } from 'tt4/utils/file-util';\n\nimport $ from 'jquery';\n\nimport { singularize, pluralize } from 'ember-inflector';\n\nimport { decamelize } from '@ember/string';\n\ncollectorService = Ember.Service.extend({\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    admintool: Ember.inject.service(),\n    routing: Ember.inject.service('-routing'),\n    customerSettings: Ember.inject.service(),\n    userSettings: Ember.inject.service(),\n    capi: Ember.inject.service(),\n    ttapiService: Ember.inject.service('ttapi'),\n    flags: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    addProducts: function (products, worktimegroup = null, is_addition_type = false) {\n        var d, params, ret;\n        //if products.get(\"firstObject\") is \"rfid\"\n        //company_name = @get('session.currentUser.company_info.company_name')\n        //email_country = @get('session.currentUser.company_info.country')\n        //email_content = @get('intl').t(\"general.\"+email_country+\"_nfc_content\")+\"<br><br/>\"+@get('intl').t(\"general.\"+email_country+\"_nfc_customer_info\")+\":<br/>\"+@get('session.currentUser.company_info.company_contact_person')+\"<br>\"+@get('session.currentUser.company_info.company_email')+\"<br>\"+@get('session.currentUser.company_info.company_phone');\n        //email_header = @get('intl').t(\"general.\"+email_country+\"_nfc_header\")\n        //promise = @ttapi\n        //    url: \"sendNfcEmail\"\n        //    data:\n        //        content: email_content.replace(\"{customer}\",company_name)\n        //        header: email_header.string.replace(\"{customer}\",company_name)\n        //        country: email_country\n        //    method: 'post'\n        d = $.Deferred();\n        params = {\n            url: 'service/products',\n            data: JSON.stringify({\n                'service/product': {\n                    products: products,\n                },\n                worktimegroup: worktimegroup,\n                is_addition_type: is_addition_type,\n            }),\n            type: 'POST',\n            contentType: 'application/json',\n            headers: {\n                Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n            },\n        };\n        ret = this.ajax(params);\n        ret.then(\n            function (ret) {\n                var j, len, prods, product;\n                console.info('Adding products succeeded with content', ret);\n                if (collector.products) {\n                    prods = collector.products;\n                } else {\n                    prods = [];\n                }\n                for (j = 0, len = products.length; j < len; j++) {\n                    product = products[j];\n                    prods.push(product);\n                }\n                collector.products = prods;\n                return d.resolve(ret);\n            },\n            function (e) {\n                console.error('Adding products failed', e);\n                return d.reject(e);\n            },\n        );\n        return d;\n    },\n    addProduct: function (product, worktimegroup = null, is_addition_type = false) {\n        return this.addProducts([product], worktimegroup, is_addition_type);\n    },\n    removeProduct: function (product, worktimegroup = null, is_addition_type = false) {\n        var d, params, ret;\n        d = $.Deferred();\n        // when removing product without worktimegroup we add ?safe=true param so backend will prevent removing if it is on for some specific worktimegroup\n        params = {\n            url:\n                'service/products/' +\n                product +\n                (worktimegroup ? '?worktimegroup=' + worktimegroup : '?safe=true') +\n                (is_addition_type ? '&is_addition_type=true' : ''),\n            type: 'DELETE',\n            contentType: 'application/json',\n            headers: {\n                Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n            },\n        };\n        ret = this.ajax(params);\n        ret.then(\n            function (ret) {\n                var j, len, old_prod, prods, prods_now;\n                console.info('Removing product succeeded with content', ret);\n                d.resolve(ret);\n                prods = collector.products;\n                prods_now = [];\n                for (j = 0, len = prods.length; j < len; j++) {\n                    old_prod = prods[j];\n                    if (old_prod !== product) {\n                        prods_now.push(old_prod);\n                    }\n                }\n                return (collector.products = prods_now);\n            },\n            function (e) {\n                return console.error('Removing product failed', e);\n            },\n        );\n        return d;\n    },\n    setProducts: function (\n        products,\n        worktimegroup = null,\n        force = false,\n        is_addition_type = false,\n    ) {\n        var j, len, p, product, ret;\n        console.log('setProducts: ', products, worktimegroup, force);\n        ret = [];\n        for (j = 0, len = products.length; j < len; j++) {\n            product = products[j];\n            if (product.substring(0, 1) === '!') {\n                product = product.substring(1);\n                if (this.productExists(product) || force) {\n                    p = this.removeProduct(product.substring(9), worktimegroup, is_addition_type);\n                    ret.push(p);\n                }\n            } else {\n                if (!this.productExists(product) || force) {\n                    console.log('add');\n                    p = this.addProduct(product.substring(9), worktimegroup, is_addition_type);\n                    ret.push(p);\n                }\n            }\n        }\n        return ret;\n    },\n    products: Em.computed(function () {\n        return collector.products;\n    }),\n    fields: function (form) {\n        if (!form) {\n            return;\n        }\n        form = form.decamelize();\n        form = form.underscore();\n        if (collector.forms == null) {\n            return null;\n        }\n        if (!(form in collector.forms)) {\n            throw new Ember.Error(\"collectorService fields: form '\" + form + \"' not found\");\n        }\n        return collector.forms[form].objects;\n    },\n    fieldArray: function (form, filter = false) {\n        var field, fields, j, len, name, ret;\n        fields = this.fields(form);\n        ret = [];\n        if (filter) {\n            for (j = 0, len = filter.length; j < len; j++) {\n                name = filter[j];\n                if (fields[name] == null) {\n                    continue;\n                }\n                field = fields[name];\n                ret.push({\n                    form: form,\n                    name: name,\n                    translated_name: this.getTranslationForColumn(form, name),\n                    type: field.type,\n                    options: field.options,\n                    features: field.features,\n                });\n            }\n        } else {\n            for (name in fields) {\n                field = fields[name];\n                ret.push({\n                    form: form,\n                    name: name,\n                    translated_name: this.getTranslationForColumn(form, name),\n                    type: field.type,\n                    options: field.options,\n                    features: field.features,\n                });\n            }\n        }\n        return ret;\n    },\n    field: function (form, fieldName) {\n        var field, ret;\n        field = this.formField(form, fieldName);\n        ret = {\n            form: form,\n            name: fieldName,\n            translated_name: this.getTranslationForColumn(form, fieldName),\n            type: field.type,\n            options: field.options,\n            features: field.features,\n        };\n        return ret;\n    },\n    formField: function (form, field) {\n        return this.fields(form)[field];\n    },\n    uses_mongo: function (form) {\n        if (!form) {\n            return;\n        }\n        form = form.decamelize();\n        form = form.underscore();\n        if (collector.forms == null) {\n            return null;\n        }\n        if (!(form in collector.forms)) {\n            throw new Ember.Error(\"collectorService fields: form '\" + form + \"' not found\");\n        }\n        return collector.forms[form].uses_mongo;\n    },\n    forms: function () {\n        return collector.forms;\n    },\n    productExists: function (product) {\n        var products, ref, split;\n        products = collector.products;\n        if (products) {\n            if (product === 'products') {\n                return true;\n            }\n            split = product.split('.');\n            return (ref = split[1]), indexOf.call(products, ref) >= 0;\n        }\n        return false;\n    },\n    getProducts: function () {\n        return collector.products;\n    },\n    moduleExists: function (module) {\n        var modules, ref, split;\n        modules = collector.modules;\n        if (modules) {\n            if (module === 'modules') {\n                return true;\n            }\n            split = module.split('.');\n            return (ref = split[1]), indexOf.call(modules, ref) >= 0;\n        }\n        return false;\n    },\n    formExists: function (name) {\n        if (!collector.forms) {\n            return;\n        }\n        return name in collector.forms;\n    },\n    fieldExists: function (form, name) {\n        if (!this.formExists(form)) {\n            return false;\n        }\n        return name in collector.forms[form].objects;\n    },\n    hasErrors: function (form) {\n        if (!this.formExists(form)) {\n            return false;\n        }\n        if (collector.forms[form].errors) {\n            return true;\n        }\n    },\n    feature: function (form, field, name) {\n        var features, fields;\n        if (!this.formExists(form)) {\n            return null;\n        }\n        fields = this.fields(form);\n        if (fields[field] == null) {\n            return false;\n        }\n        if (fields[field].features == null) {\n            return false;\n        }\n        features = fields[field].features;\n        if (!(name in features)) {\n            return false;\n        }\n        return features[name];\n    },\n    privilege: function (form, privilege) {\n        if (!this.formExists(form)) {\n            return null;\n        }\n        return collector.forms[form].privileges[privilege];\n    },\n    inverseNeeds: function (array) {\n        var item, item_arr, j, l, len, len1, need, ret, split_need;\n        ret = [];\n        for (j = 0, len = array.length; j < len; j++) {\n            need = array[j];\n            split_need = need.split('||');\n            item_arr = [];\n            for (l = 0, len1 = split_need.length; l < len1; l++) {\n                item = split_need[l];\n                if (item.substring(0, 1) === '!') {\n                    item = item.substring(1);\n                } else {\n                    item = '!' + item;\n                }\n                item_arr.push(item);\n            }\n            need = item_arr.join('||');\n            ret.push(need);\n        }\n        return ret;\n    },\n    needsOfArray: function (array) {\n        return Em.A(array).filter((item) => {\n            if (!('needs' in item)) {\n                return true;\n            }\n            return this.testNeeds(item.needs);\n        });\n    },\n    testNeeds: function (need_array) {\n        var all_ok, debug, debugText, inverse, j, l, len, len1, need, ok, split_need;\n        if (!Em.isArray(need_array)) {\n            Ember.assert('You need to provide an array to testNeeds function');\n        }\n        // Property for setting the main OK. This is false if atleast ONE need fails.\n        all_ok = true;\n        // If we don't have anything to test then just return all_ok\n        if (Em.isEmpty(need_array)) {\n            return all_ok;\n        }\n        debugText = '';\n        debug = Em.A(need_array).find(function (item) {\n            return item === 'debug';\n        });\n        // Test every need in the array\n        for (j = 0, len = need_array.length; j < len; j++) {\n            need = need_array[j];\n            // We try to split needs because we might have OR (||) needs.\n            // This works because split always returns array.\n            split_need = typeof need === 'string' ? need.split('||') : [need];\n            // We set the initial OK value to false before we start testing the need.\n            // When we loop OR needs we can just check if OK is true and skip checking the rest.\n            ok = false;\n            if (need === 'debug') {\n                continue;\n            }\n            for (l = 0, len1 = split_need.length; l < len1; l++) {\n                need = split_need[l];\n                // If ok is true we don't need to test splitted values anymore\n                if (ok) {\n                    continue;\n                }\n                if (typeof need === 'string') {\n                    // See if we have inverse, ie. the string starts with \"!\" character\n                    inverse = need.substring(0, 1) === '!';\n                    if (inverse) {\n                        // If we have inverse we need to cut the \"!\" from the start of the string\n                        need = need.substring(1);\n                    }\n                }\n                // Test the need\n                ok = this.testNeedsOne(need);\n                if (inverse) {\n                    // If we have inverse (!) we switch the OK statement\n                    ok = !ok;\n                }\n                if (debug) {\n                    debugText += (inverse ? '!' : '') + need + '=' + ok + '||';\n                }\n            }\n            if (debug) {\n                debugText = debugText.substring(0, debugText.length - 2);\n                if (!ok) {\n                    debugText += ' => all_ok to false';\n                }\n                if (debug) {\n                    debugText += '\\n';\n                }\n            }\n            if (!ok) {\n                // Set the main OK to false if THIS need check fails.\n                all_ok = false;\n            }\n        }\n        if (debug) {\n            debugText = debugText + '\\nall_ok => ' + all_ok;\n            console.debug(debugText);\n        }\n        return all_ok;\n    },\n    testNeedsOne: function (need) {\n        var field, fieldandsetting, form, ok, ref, setting, split, userlevels, values;\n        if (need === 'hide') {\n            ok = false;\n        } else if (typeof need === 'function') {\n            ok = need();\n        } else if (need === 'mobileView') {\n            ok = window.innerWidth <= 768;\n        } else if (need.substring(0, 9) === 'userlevel') {\n            split = need.split('=');\n            userlevels = this.addLoadProfilesForUserlevels(split[1].split(','));\n            if (!this.get('session.currentUser')) {\n                console.info(\n                    \"Needs cannot be tested for 'userlevel' because current user isn't loaded\",\n                );\n                ok = indexOf.call(userlevels, '1') >= 0;\n            } else {\n                ok = ((ref = '' + this.getUserlevel()), indexOf.call(userlevels, ref) >= 0);\n            }\n        } else if (need === 'devMode') {\n            ok = config.APP.devMode;\n            // check if we are in devmode\n        } else if (need === 'development') {\n            ok = Ember.devModeOn === true;\n        } else if (need.includes('formFeature')) {\n            values = need.split('.');\n            ok = this.testFormFeature(values[0], values[2]);\n            // check if service has product\n        } else if (need.substring(0, 8) === 'products') {\n            ok = this.productExists(need);\n            // check if service has module\n        } else if (need.substring(0, 7) === 'modules') {\n            ok = this.moduleExists(need);\n            // modulecontrol check\n        } else if (need.substring(0, 14) === 'modulecontrol.') {\n            ok = this.testModuleControl(need.split('.')[1]);\n            // modulecontrol check\n        } else if (need.startsWith('flag.')) {\n            ok = this.testFlag(need.split('.')[1]);\n            // check for session.currentUser.field\n        } else if (need.substring(0, 15) === 'userfieldcheck.') {\n            ok = this.testCurrentUserField(need.split('.')[1]);\n        } else if (need.substring(0, 14) === 'serviceCountry') {\n            ok = this.testServiceCountry(need.split('@')[1]);\n            // customer settings check\n        } else if (need.substring(0, 15) === 'customersetting') {\n            ok = this.get('customerSettings').checkSetting(need.split('.')[1]);\n            // check form field privilege\n        } else if (need.indexOf('@') !== -1 && need.indexOf('.') !== -1) {\n            [form, fieldandsetting] = need.split('.');\n            [field, setting] = fieldandsetting.split('@');\n            ok = this.feature(form, field, setting);\n            // check form privilege\n        } else if (need.indexOf('@') !== -1) {\n            split = need.split('@');\n            split[0] = decamelize(split[0]);\n            if (split[1] === 'errors') {\n                ok = this.hasErrors(split[0]);\n            } else {\n                ok = this.privilege(split[0], split[1]);\n            }\n            // check form field existance\n        } else if (need.indexOf('.') !== -1) {\n            split = need.split('.');\n            ok = this.fieldExists(split[0], split[1]);\n        } else if (need === 'tt3') {\n            return collector.get('tt3flag');\n        } else if (need === 'userHasSaldos') {\n            ok = this.get('userSettings.hasSaldos');\n        } else if (need === 'passwordDisabled') {\n            ok = this.session.currentUser?.disable_login;\n        } else {\n            ok = this.formExists(need);\n        }\n        return ok;\n    },\n    addLoadProfilesForUserlevels: function (userlevels) {\n        var addThese, ret;\n        addThese = [];\n        ret = userlevels.map(function (userlevel) {\n            var trimmed;\n            if (userlevel.substring(userlevel.length - 1, userlevel.length) === '?') {\n                trimmed = userlevel.substring(0, userlevel.length - 1);\n                addThese = trimmed;\n                return trimmed;\n            } else {\n                return userlevel;\n            }\n        });\n        if (addThese.length > 0) {\n            // this should be maybe loaded somehow from other forms also .. but this works for clockcard\n            // which is the only thing using this userlevel=1? syntax for now\n            if (\n                this.feature('worktime', 'user', 'load_profile') ||\n                this.privilege('worktime', 'limited_access')\n            ) {\n                ret.push('' + this.getUserlevel());\n            }\n        }\n        return ret;\n    },\n    testCurrentUserField: function (value) {\n        var session, user_field;\n        if (this.getUserlevel() === 5) {\n            return true;\n        }\n        if (!this.get('session.currentUser')) {\n            Ember.assert(\n                \"Needs cannot be tested for 'userfieldcheck' because current user isn't loaded\",\n            );\n            return false;\n        }\n        session = this.get('session');\n        user_field = session.get('currentUser.' + value);\n        if (user_field) {\n            return true;\n        } else if (!this.fieldExists('user', value)) {\n            return true;\n        }\n    },\n    testModuleControl: function (needed_module) {\n        var module_controls;\n        if (this.getUserlevel() === 5) {\n            return true;\n        }\n        if (!this.fieldExists('user', 'module_controls')) {\n            return true;\n        }\n        module_controls = this.get('session.currentUser.module_controls');\n        if (!module_controls) {\n            return false;\n        }\n        return indexOf.call(module_controls, needed_module) >= 0;\n    },\n    testFlag: function (name) {\n        return this.get('flags').test(name);\n    },\n    testServiceCountry: function (country) {\n        var company_country;\n        company_country = this.get('session.currentUser.company_info.country');\n        if (!company_country) {\n            return false;\n        }\n        return country === company_country;\n    },\n    testFormFeature: function (form, feature) {\n        var arr, formFeatures, invertNeeds;\n        arr = [];\n        invertNeeds = form.includes('!');\n        form = invertNeeds ? form.substr(1) : form;\n        if (!this.forms()[form]) {\n            return false;\n        }\n        formFeatures = this.forms()[form].features;\n        if (!formFeatures) {\n            return false;\n        }\n        Object.values(formFeatures).forEach((values) => {\n            if (!isArray(values)) {\n                return arr.push(values);\n            } else {\n                return values.forEach((value) => {\n                    return arr.push(value);\n                });\n            }\n        });\n        if (invertNeeds) {\n            return !arr.includes(feature);\n        } else {\n            return arr.includes(feature);\n        }\n    },\n    /*\n  Get array of records.\n\n  Returns promise and when resolved array of records.\n\n  form: record type\n  ids: array of row ids\n  preLoad: if you can assume there isn't usually over 100 records this will reduce needed request count\n\n  */\n    getRecordArray: function (form, ids, preLoad = false) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var getRecords, store;\n            store = this.get('store');\n            getRecords = function () {\n                var id, j, len, promise, promises, record, records;\n                promises = [];\n                records = [];\n                for (j = 0, len = ids.length; j < len; j++) {\n                    id = ids[j];\n                    record = store.peekRecord(form, id);\n                    if (record) {\n                        records.push(record);\n                    } else {\n                        promise = store.findRecord(form, id);\n                        promise.then(function (record) {\n                            return records.push(record);\n                        });\n                    }\n                    promises.push(promise);\n                }\n                return Ember.RSVP.Promise.all(promises).then(function () {\n                    return resolve(records);\n                });\n            };\n            // call for preload only if first object is not found from store\n            // (prevents calling server every time this funciton called)\n            if (preLoad && !store.peekRecord(form, ids[0])) {\n                return store.findAll(form).then(() => {\n                    return getRecords();\n                });\n            } else {\n                return getRecords();\n            }\n        });\n    },\n    getProductByName: function (product) {\n        var params, promise;\n        if (this.get('product_list')) {\n            return this.get('product_list').findBy('name', product);\n        }\n        if (this.get('product_list_fetcher')) {\n            return this.get('product_list_fetcher');\n        }\n        params = {\n            data: {\n                country: this.get('session.currentUser.company_info.country'),\n                lang: moment.locale(),\n            },\n        };\n        promise = this.get('admintool')\n            .get('products', params)\n            .then((products) => {\n                this.set('product_list', products);\n                return console.log(products);\n            });\n        return this.set('product_list_fetcher', promise);\n    },\n    database_value: function (record, form, fields) {\n        var field, j, len, val;\n        val = '';\n        if (!record) {\n            return '';\n        }\n        for (j = 0, len = fields.length; j < len; j++) {\n            field = fields[j];\n            if (record.get(field)) {\n                val += this._format_(record.get(field), form, field) + ' ';\n            }\n        }\n        return val;\n    },\n    _format_: function (\n        value,\n        form,\n        fieldName,\n        format = 'html',\n        record = null,\n        isImageModal = false,\n    ) {\n        var field, first, second, values;\n        if (!value && value !== false) {\n            return '';\n        }\n        field = this.formField(form, fieldName);\n        if (fieldName === 'row_info.created') {\n            field = Ember.Object.create();\n            Ember.set(field, 'type', 'row_info');\n        }\n        if (fieldName === 'row_info.modified') {\n            field = Ember.Object.create();\n            Ember.set(field, 'type', 'row_info');\n        }\n        Ember.set(field, 'ext', fieldName);\n        if (fieldName === 'location' || fieldName === 'end_location') {\n            Ember.set(field, 'type', 'gpslocation');\n        }\n        if (field.type === 'database' && Ember.typeOf(value) === 'number') {\n            value = this.get('store').peekRecord(field.options.form, value);\n        }\n        if (field.type === 'date' && value.indexOf('_') !== -1) {\n            values = value.split('_');\n            first = this.format(values[0], field, null, record, format !== 'html', form);\n            second = this.format(values[1], field, null, record, format !== 'html', form);\n            return first + ' - ' + second;\n        } else {\n            return this.format(\n                value,\n                field,\n                null,\n                record,\n                format === 'html' ? false : format,\n                form,\n                true,\n                isImageModal,\n            );\n        }\n    },\n    format: function (\n        value,\n        field,\n        controller,\n        content = null,\n        donotaddHTML = false,\n        form = null,\n        fuckTheseEmptyDivs = false,\n        fuckTheseImageModals = false,\n    ) {\n        var allRecords,\n            base,\n            child_ext,\n            classes,\n            correctFields,\n            d,\n            dew_point,\n            dist_txt,\n            div,\n            e,\n            endHTML,\n            exe_types,\n            ext,\n            fields,\n            file,\n            filethumb,\n            fileurl,\n            formattedHours,\n            formattedStatus,\n            gps,\n            group_by_materialgroup,\n            hours,\n            html,\n            humidity,\n            image_types,\n            item,\n            j,\n            json,\n            l,\n            len,\n            len1,\n            len2,\n            len3,\n            len4,\n            len5,\n            length,\n            minus,\n            minutes,\n            ms,\n            n,\n            name,\n            names,\n            new_val,\n            o,\n            object,\n            plus,\n            q,\n            r,\n            ref,\n            ref1,\n            ref2,\n            ref3,\n            ref4,\n            ref5,\n            ref6,\n            ref7,\n            ret,\n            return_str,\n            right_ext,\n            self,\n            startHTML,\n            statusIcon,\n            storeData,\n            string,\n            target,\n            target_field,\n            temp,\n            temperature,\n            thisIsSignature,\n            thumburl,\n            tmp,\n            tmpFields,\n            translatedStatus,\n            type,\n            unit,\n            url,\n            val,\n            value_arr,\n            weather,\n            windspeed;\n        self = this;\n        if (typeof field === 'string') {\n            field = collector.getFormObject(field);\n        }\n        field = Em.Object.create(field);\n        ext = field.get('ext') || field.get('name');\n        type = field.get('type');\n        if (ext === 'weather') {\n            type = 'weather';\n        }\n        if (ext === 'location' || ext === 'end_location') {\n            type = 'gpslocation';\n        }\n        if (ext === 'location_map') {\n            type = 'gpslocationmap';\n        }\n        if (ext === 'km') {\n            type = 'km';\n        }\n        if (this.unit(field)) {\n            unit = ' ' + this.unit(field);\n        } else {\n            unit = '';\n        }\n        if (!['csv', 'excel', 'serverlessexcel'].includes(donotaddHTML)) {\n            // Don't show tr measurement minus fields, they are formatted into plus rows\n            if (ext.indexOf('_minus', ext.length - 6) !== -1) {\n                return;\n            }\n            // Format measurements plus fields to also show minus value\n            if (ext.indexOf('_plus', ext.length - 5) !== -1) {\n                name = ext.substring(0, ext.length - 5);\n                if (content) {\n                    minus = content.get(name + '_minus');\n                    plus = content.get(name + '_plus');\n                } else if (controller) {\n                    minus = controller.get('content.' + name + '_minus');\n                    plus = controller.get('content.' + name + '_plus');\n                }\n                // If either one has value, we want to show it in report and force 0 if empty (bugfix EP-9036)\n                if (plus != null || minus != null) {\n                    plus = plus ? plus : '0';\n                    minus = minus ? minus : '0';\n                    val = plus + ' / ' + minus;\n                } else {\n                    val = '';\n                }\n                return val;\n            }\n        }\n        if (\n            !fuckTheseEmptyDivs &&\n            !value &&\n            field.get('type') !== 'checkbox' &&\n            field.get('type') !== 'object' &&\n            type !== 'gpslocation' &&\n            value !== false &&\n            value !== 0\n        ) {\n            if (donotaddHTML) {\n                return '';\n            }\n            //put some empty spaces so we can edit empty cells\n            div = document.createElement('div');\n            div.innerHTML = '&nbsp;';\n            div.setAttribute('style', 'width: 100%;cursor:text');\n            return div;\n        }\n        switch (type) {\n            case 'secure_attachment':\n                return this.intl.t('general.attachments_count', { count: value.length });\n            case 'databasearray':\n            case 'work_permit_attachment':\n                // this is to get report databasearray-filters to show correctly when exporting\n                if (Ember.typeOf(value) === 'string') {\n                    tmpFields = this.fields(field.get('options.form'));\n                    correctFields = tmpFields[field.get('options.fields.0')];\n                    allRecords = this.get('store').peekAll(correctFields['options']['form']);\n                    tmp = allRecords.findBy('id', value);\n                    return tmp.get(correctFields['options']['fields'][0]);\n                }\n                // first only testing with worktime materials .. maybe could be used in other databasearrays also later\n                if (\n                    ext === 'material' &&\n                    (donotaddHTML === false ||\n                        donotaddHTML === 'pdf' ||\n                        donotaddHTML === 'excel' ||\n                        donotaddHTML === 'serverlessexcel')\n                ) {\n                    value_arr = [];\n                    if (this.testNeeds(['materialgroup'])) {\n                        group_by_materialgroup = {};\n                        value.forEach((row) => {\n                            if (Ember.typeOf(row.get) !== 'function') {\n                                return;\n                            }\n                            if (group_by_materialgroup[row.get('materialgroup.name')] == null) {\n                                group_by_materialgroup[row.get('materialgroup.name')] = [];\n                            }\n                            return group_by_materialgroup[row.get('materialgroup.name')].push(row);\n                        });\n                        Object.keys(group_by_materialgroup).forEach((materialgroup) => {\n                            if (materialgroup !== 'undefined') {\n                                if (donotaddHTML) {\n                                    value_arr.push(materialgroup);\n                                } else {\n                                    value_arr.push('<b>' + materialgroup + '</b>');\n                                }\n                            }\n                            return group_by_materialgroup[materialgroup].forEach((row) => {\n                                val =\n                                    row.get('type.name') +\n                                    ': ' +\n                                    row.get('amount') +\n                                    ' ' +\n                                    (row.get('type.unit') || '');\n                                if (\n                                    donotaddHTML === 'pdf' ||\n                                    donotaddHTML === 'excel' ||\n                                    donotaddHTML === 'serverlessexcel'\n                                ) {\n                                    return value_arr.push(val);\n                                } else {\n                                    return value_arr.push('&nbsp;&nbsp;&nbsp;' + val);\n                                }\n                            });\n                        });\n                    } else {\n                        value.forEach((row) => {\n                            if (row.get == null) {\n                                return;\n                            }\n                            if (\n                                row.get('type.name') &&\n                                Ember.typeOf(row.get('amount')) !== 'undefined'\n                            ) {\n                                return value_arr.push(\n                                    row.get('type.name') +\n                                        ': ' +\n                                        row.get('amount') +\n                                        ' ' +\n                                        (row.get('type.unit') || ''),\n                                );\n                            }\n                        });\n                    }\n                    if (donotaddHTML) {\n                        return value_arr.join(' / ');\n                    } else {\n                        return new Ember.String.htmlSafe(\n                            '<span class=\"small text-nowrap\">' + value_arr.join('<br>') + '</span>',\n                        );\n                    }\n                } else if (\n                    ext === 'multitask' &&\n                    (donotaddHTML === false ||\n                        donotaddHTML === 'pdf' ||\n                        donotaddHTML === 'excel' ||\n                        donotaddHTML === 'serverlessexcel')\n                ) {\n                    value_arr = [];\n                    value.forEach((row) => {\n                        var formattedHours, hoursWithClock;\n                        if (row.get == null) {\n                            return;\n                        }\n                        if (\n                            row.get('taskname.name') &&\n                            Ember.typeOf(row.get('hours')) !== 'undefined'\n                        ) {\n                            formattedHours = localization.formatHours(row.get('hours'));\n                            hoursWithClock =\n                                '<span class=\"move move-Time\"></span> ' + formattedHours;\n\n                            // if subtask is added to the task, add it to the string also,\n                            // so it can be seen in the report/pdf/csv\n                            const subTask = row.get('subtaskname.name') ?? '';\n\n                            return value_arr.push(\n                                row.get('taskname.name') +\n                                    ': ' +\n                                    (donotaddHTML ? formattedHours : hoursWithClock) +\n                                    ' ' +\n                                    subTask,\n                            );\n                        }\n                    });\n                    if (donotaddHTML) {\n                        return value_arr.join(' / ');\n                    } else {\n                        return new Ember.String.htmlSafe(\n                            '<span class=\"small text-nowrap\">' + value_arr.join('<br>') + '</span>',\n                        );\n                    }\n                } else if (\n                    ext === 'workpermit' &&\n                    (donotaddHTML === false ||\n                        ['pdf', 'csv', 'excel', 'serverlessexcel'].includes(donotaddHTML))\n                ) {\n                    value_arr = [];\n\n                    value.forEach((row) => {\n                        //format attachments\n                        const attachments = this.intl.t('general.attachments_count', {\n                            count: row.attachments.length,\n                        });\n                        // format type\n                        const typeValue = row.id_type || row.type;\n                        const typeKey = row.id_type ? 'id_type' : 'type';\n                        const Type = this.intl.t(`workpermit.${typeKey}.${typeValue}`);\n                        // format valid_until\n                        const formattedValidUntilDate = moment(row.valid_until).format(\n                            'DD.MM.YYYY',\n                        );\n                        const validUntil = this.intl.t('general.expires', {\n                            date: formattedValidUntilDate,\n                        });\n\n                        value_arr.push(`${attachments} ${Type} ${validUntil}`);\n                    });\n\n                    if (donotaddHTML) {\n                        return value_arr.join(' / ');\n                    } else {\n                        return new Ember.String.htmlSafe(\n                            '<span class=\"small text-nowrap\">' + value_arr.join('<br>') + '</span>',\n                        );\n                    }\n                } else {\n                    return value.get('length');\n                }\n                break;\n            case 'hours':\n                // this is some ugly code!!!!\n                if (\n                    donotaddHTML === 'pdf' ||\n                    donotaddHTML === 'sumrow' ||\n                    donotaddHTML === 'calendar' ||\n                    donotaddHTML === 'excel' ||\n                    donotaddHTML === 'serverlessexcel' ||\n                    donotaddHTML === 'salarycategory'\n                ) {\n                    return localization.formatHours(value, donotaddHTML);\n                } else if (donotaddHTML) {\n                    return value;\n                } else {\n                    if (!isNaN(value)) {\n                        if (Ember.typeOf(value) === 'string') {\n                            value = parseFloat(value);\n                        }\n                        value = value.toFixed(2);\n                    }\n                    formattedHours = localization.formatHours(value);\n                    if (field.features.custom === 'format_also_days') {\n                        formattedHours = localization.formatDaysAndHours(value);\n                    }\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"move move-Time\"></span> ' + formattedHours,\n                    );\n                }\n                break;\n            case 'minutes':\n                if (value > 60) {\n                    hours = value / 60;\n                    minutes = Math.round((hours - Math.floor(hours)) * 60);\n                    return Math.floor(hours) + 'h:' + (minutes < 10 ? '0' : '') + minutes + 'min';\n                }\n                return value + 'min';\n            case 'status':\n                translatedStatus = this.get('intl').exists('status.' + value + '_text');\n                if (translatedStatus) {\n                    formattedStatus = this.get('intl').t('status.' + value + '_text');\n                }\n                if (donotaddHTML) {\n                    if (translatedStatus) {\n                        return formattedStatus;\n                    } else {\n                        return value;\n                    }\n                } else {\n                    if (translatedStatus) {\n                        if (value === 'error_in' || value === 'error_out') {\n                            formattedStatus = this.get('intl').t('status.system_edited_text');\n                        }\n                        statusIcon = (function () {\n                            switch (value) {\n                                case 'open':\n                                    return 'Circle';\n                                case 'approved':\n                                case 'ok':\n                                    return 'CheckedCircle';\n                                case 'closed':\n                                case 'invoiced':\n                                    return 'DoubleTick';\n                                case 'saved':\n                                    return 'SaveDisk';\n                                case 'fixed':\n                                    return 'Maintenance';\n                                case 'new':\n                                    return 'Error';\n                                case 'not_verified':\n                                case 'blocked':\n                                    return 'DoNotDisturb';\n                                case 'error_in':\n                                case 'error_out':\n                                case 'system_edited':\n                                    return 'SystemReport';\n                                case 'rejected':\n                                    return 'Rejected';\n                                default:\n                                    return false;\n                            }\n                        })();\n                        if (statusIcon) {\n                            return new Ember.String.htmlSafe(\n                                '<span class=\"' +\n                                    value +\n                                    ' report-status-icon\" title=\"' +\n                                    formattedStatus +\n                                    '\"><span class=\"move move-' +\n                                    statusIcon +\n                                    '\"></span></span>',\n                            );\n                        } else {\n                            string = this.shortFormat(formattedStatus);\n                            return new Ember.String.htmlSafe(\n                                '<span class=\"report-status-icon ' +\n                                    value +\n                                    '\" title=\"' +\n                                    formattedStatus +\n                                    '\">' +\n                                    string.toUpperCase() +\n                                    '</span>',\n                            );\n                        }\n                    } else {\n                        string = this.shortFormat(value);\n                        return new Ember.String.htmlSafe(\n                            '<span class=\"report-status-icon own-status\" title=\"' +\n                                value +\n                                '\">' +\n                                string.toUpperCase() +\n                                '</span>',\n                        );\n                    }\n                }\n                break;\n            case 'dropdown_userlevel':\n                // own userrole\n                if (parseInt(value) > 9) {\n                    field.get('options').forEach(function (option) {\n                        if (option.indexOf(value) === 0) {\n                            return (name = option.substring(2));\n                        }\n                    });\n                    return name;\n                } else {\n                    if (!content && !form) {\n                        if (controller.get('content.length') > 1) {\n                            content = controller.get('content.firstObject');\n                        } else {\n                            content = controller.get('content');\n                        }\n                        form = content.get('constructor.modelName');\n                    } else if (content) {\n                        form = content.get('constructor.modelName');\n                    }\n                    return this.get('intl').t(form + '.' + ext + '.' + value);\n                }\n                break;\n            case 'dropdown_options':\n            case 'dropdown_values':\n            case 'dropdown_language':\n                if (Ember.isArray(value)) {\n                    return this.formatDropdownSums(value, field, form, donotaddHTML);\n                }\n                if (form) {\n                    return this.getDropdownValue(null, value, field, form);\n                }\n                if (!content) {\n                    if (controller.get('content.length') > 1) {\n                        content = controller.get('content.firstObject');\n                    } else {\n                        content = controller.get('content');\n                    }\n                }\n                return this.getDropdownValue(content, value, field);\n            case 'dropdown_country':\n                return value.toUpperCase();\n            case 'timerlink':\n                if (!value) {\n                    return value;\n                }\n                if (value.get == null) {\n                    return value;\n                }\n                if (\n                    Ember.isEmpty(Ember.get(value, 'endtime')) &&\n                    Ember.isEmpty(Ember.get(value, 'starttime'))\n                ) {\n                    return;\n                }\n                if (Ember.isEmpty(Ember.get(value, 'endtime'))) {\n                    return this.get('intl').t('general.timerlink.started');\n                }\n                ms = moment(Ember.get(value, 'endtime')).diff(\n                    moment(Ember.get(value, 'starttime')),\n                );\n                d = moment.duration(ms);\n                hours = Math.floor(d.asHours());\n                if (hours < 10) {\n                    hours = '0' + hours;\n                }\n                return hours + moment.utc(ms).format(':mm:ss');\n            case 'database':\n                val = '';\n                if (!value) {\n                    return value;\n                }\n                if (value.get == null) {\n                    return value;\n                }\n                fields = this.fields(field.get('options.form'));\n                ref = field.get('options.fields');\n                for (j = 0, len = ref.length; j < len; j++) {\n                    field = ref[j];\n                    if (fields[field]) {\n                        type = fields[field].type;\n                    } else {\n                        type = null;\n                    }\n                    if (type === 'hdfile') {\n                        continue;\n                    }\n                    if (value.get(field)) {\n                        temp = value.get(field);\n                        if (type === 'date') {\n                            temp = moment(temp).format('L');\n                        }\n                        val += temp + ' ';\n                    }\n                }\n                return val.trim();\n            case 'month_dropdown':\n                if (value === '0000-00-00') {\n                    return '';\n                }\n                return moment(value).format('MMMM YYYY');\n            case 'date':\n                if (ext === 'valid_until') {\n                    const formattedValidUntilDate = moment(value).format('DD.MM.YYYY');\n                    return this.intl.t('general.expires', { date: formattedValidUntilDate });\n                }\n\n                if (Ember.typeOf(value) === 'string' && value.substring(0, 6) === 'count:') {\n                    return value.substring(6);\n                }\n                if (Ember.typeOf(value) !== 'string') {\n                    return value;\n                }\n                if (value === '0000-00-00') {\n                    return '';\n                }\n                if (donotaddHTML === 'csv' || donotaddHTML === 'serverlessexcel') {\n                    return moment(value).format('L');\n                }\n                return moment(value).format('dd') + ', ' + moment(value).format('L');\n            case 'datetime':\n                if (Ember.typeOf(value) !== 'string') {\n                    return value;\n                }\n                return moment(value).format('L LT');\n            case 'checkbox':\n                if (donotaddHTML === 'salarycategory') {\n                    return value + ' ' + this.get('intl').t('general.pieces');\n                }\n                if (Ember.typeOf(value) === 'string' && value.includes(':')) {\n                    return this.formatCheckboxSums(value);\n                }\n                ret = function () {\n                    switch (value) {\n                        case '1':\n                        case true:\n                        case 'on':\n                            return this.get('intl').t('general.yes');\n                        default:\n                            return this.get('intl').t('general.no');\n                    }\n                }.call(this);\n                return ret;\n            case 'hdfile':\n            case 'fileupload':\n                image_types = ['image/png', 'image/jpeg', 'image/jpg', 'image/gif', 'image/pjpeg'];\n                exe_types = [\n                    'application/octet-stream',\n                    'application/x-msdownload',\n                    'application/exe',\n                    'application/x-exe',\n                    'application/dos-exe',\n                    'vms/exe',\n                    'application/x-winexe',\n                    'application/msdos-windows',\n                    'application/x-msdos-program',\n                ];\n                if (value.length >= 1) {\n                    return_str = '';\n                    for (l = 0, len1 = value.length; l < len1; l++) {\n                        file = value[l];\n                        if (((ref1 = file.type), indexOf.call(exe_types, ref1) >= 0)) {\n                            return file.name;\n                        }\n                        if (((ref2 = file.type), indexOf.call(image_types, ref2) >= 0)) {\n                            if (donotaddHTML) {\n                                return '';\n                            }\n                            // Always prefer signed URLs over traditional URLs\n                            // Fallback to traditional URLs maintains application stability when:\n                            // - S3 service is temporarily unavailable\n                            // - Signed URL generation fails due to configuration issues\n                            // - Network connectivity issues prevent S3 API calls\n                            // Note: Traditional URLs will return 403 errors due to blocked public S3 access,\n                            // but this prevents complete application crashes and maintains UI functionality\n                            fileurl = file.s3url || file.url;\n                            filethumb = file.s3thumb || file.thumb;\n                            if (file.name === 'signature.png') {\n                                file.thumb = fileurl;\n                            }\n                            if (file.name === 'naama.png') {\n                                file.thumb = fileurl;\n                            }\n                            if (filethumb == null) {\n                                return null;\n                            }\n                            url = this.makeFileUrl(collector.api_url() + '/', filethumb);\n                            // super cool way to render signatures differently .. :+1:\n                            thisIsSignature = false;\n                            if (field.ext) {\n                                thisIsSignature = field.ext.search('sign') !== -1;\n                            }\n                            classes = 'img-thumb' + (thisIsSignature ? ' img-thumb-sign' : '');\n                            if (fuckTheseImageModals) {\n                                return {\n                                    isImage: true,\n                                    src: filethumb || fileurl,\n                                    fullSrc: fileurl,\n                                    classes,\n                                };\n                            }\n                            // This is bit ugly to inject router here but what can you do\n                            base = this.getModalUrl('modal=showImage,' + fileurl);\n                            startHTML =\n                                '<a class=\"hidden-print\" href=\"' +\n                                base +\n                                '\"><div class=\"' +\n                                classes +\n                                '\" style=\"background-image:url(\\'';\n                            endHTML =\n                                '\\');\"></div></a><div class=\"visible-print ' +\n                                classes +\n                                '\" style=\"content:url(\\'' +\n                                url +\n                                '\\');\"></div>';\n                            return_str += ' ' + startHTML + url + endHTML;\n                        } else if (file.url || file.s3url) {\n                            if (donotaddHTML) {\n                                return_str += file.name + ' ';\n                            } else {\n                                // Always prefer signed URLs over traditional URLs\n                                // Fallback maintains application stability - see comment above for details\n                                url = this.makeFileUrl(\n                                    collector.api_url() + '/',\n                                    file.s3url || file.url,\n                                );\n                                target = this.get('gui').isIOS\n                                    ? ' target=\"_system\"'\n                                    : ' target=\"_blank\"';\n                                return_str +=\n                                    ' ' +\n                                    '<a href=\"' +\n                                    url +\n                                    '\" ' +\n                                    target +\n                                    '>' +\n                                    file.name +\n                                    '</a>';\n                            }\n                        }\n                    }\n                    if (donotaddHTML) {\n                        return return_str;\n                    }\n                    return new Ember.String.htmlSafe(return_str);\n                } else {\n                    if (((ref3 = value.type), indexOf.call(image_types, ref3) >= 0)) {\n                        if (donotaddHTML) {\n                            return '';\n                        }\n                        // Always prefer signed URLs over traditional URLs\n                        // Fallback maintains application stability - see comment above for details\n                        const thumbUrl = value.s3thumb || value.thumb;\n                        const fileUrl = value.s3url || value.url;\n\n                        if (thumbUrl == null) {\n                            return null;\n                        }\n                        url = this.makeFileUrl(collector.api_url() + '/', thumbUrl);\n                        // super cool way to render signatures differently .. :+1:\n                        thisIsSignature = field.ext.search('sign') !== -1;\n                        classes = 'img-thumb' + (thisIsSignature ? ' img-thumb-sign' : '');\n                        // This is bit ugly to inject router here but what can you do\n                        base = this.getModalUrl('modal=showImage,' + fileUrl);\n                        startHTML =\n                            '<a class=\"hidden-print\" href=\"' +\n                            base +\n                            '\"><div class=\"' +\n                            classes +\n                            '\" style=\"background-image:url(\\'';\n                        endHTML =\n                            '\\');\"></div></a><div class=\"visible-print ' +\n                            classes +\n                            '\" style=\"content:url(\\'' +\n                            url +\n                            '\\');\"></div>';\n                        return new Ember.String.htmlSafe(startHTML + url + endHTML);\n                    } else if (value.s3url || value.url) {\n                        if (donotaddHTML) {\n                            return value.name + ' ';\n                        }\n                        // Always prefer signed URLs over traditional URLs\n                        // Fallback maintains application stability - see comment above for details\n                        url = this.makeFileUrl(collector.api_url() + '/', value.s3url || value.url);\n                        return new Ember.String.htmlSafe(\n                            '<a href=\"' + url + '\" target=\"_blank \">' + value.name + '</a>',\n                        );\n                    } else {\n                        return null;\n                    }\n                }\n                break;\n            case 'signature':\n                if (donotaddHTML) {\n                    return '';\n                }\n                image_types = ['image/png', 'image/jpeg', 'image/jpg', 'image/gif', 'image/pjpeg'];\n                if (value.length > 0 && typeof value !== 'string') {\n                    value = value[0];\n                }\n                if (((ref4 = value.type), indexOf.call(image_types, ref4) >= 0)) {\n                    url = value.s3url ? value.s3url : collector.api_url() + '/' + value.url;\n                    thumburl = value.s3thumb ? value.s3thumb : url;\n                    classes = 'img-thumb img-thumb-sign';\n                    startHTML =\n                        '<a href=\"' +\n                        url +\n                        '\" target=\"_blank \"><div class=\"' +\n                        classes +\n                        '\" style=\"background-image:url(\\'';\n                    endHTML =\n                        '\\');\"></div><style>@media print{div.img-thumb::after{content:url(\"' +\n                        thumburl +\n                        '\");}}</style></a>';\n                    return new Ember.String.htmlSafe(startHTML + thumburl + endHTML);\n                }\n                if (typeof value === 'string') {\n                    //for mongo, signatures are stored directly as a base64 string\n                    type = value.substr(0, value.indexOf(';')).substr(5); //extract image type from \"data:image/png;base64here\"\n                    if (indexOf.call(image_types, type) >= 0) {\n                        classes = 'img-thumb img-thumb-sign';\n                        html =\n                            '<div class=\"' +\n                            classes +\n                            '\" style=\"background-image:url(\\'' +\n                            value +\n                            '\\')\"</div></a>';\n                        return new Ember.String.htmlSafe(html);\n                    } else {\n                        return null;\n                    }\n                } else {\n                    return null;\n                }\n                break;\n            case 'object':\n                if (content != null) {\n                    right_ext = ext.split('_');\n                    object = content[right_ext[0]];\n                    right_ext.shift();\n                    child_ext = right_ext.join('_');\n                    if (object != null) {\n                        target_field = {\n                            type: field.get('target_type'),\n                            ext: child_ext,\n                            features: {},\n                        };\n                        return this.format(\n                            object[child_ext],\n                            target_field,\n                            null,\n                            Em.Object.create(object),\n                            donotaddHTML,\n                        );\n                    }\n                }\n                return '';\n            case 'multiselect':\n                if (Ember.typeOf(value) === 'number') {\n                    value = this.get('store').peekRecord(field.get('options.form'), value);\n                    val = '';\n                    if (!value) {\n                        return value;\n                    }\n                    if (value.get == null) {\n                        return value;\n                    }\n                    fields = this.fields(field.get('options.form'));\n                    ref5 = field.get('options.fields');\n                    for (n = 0, len2 = ref5.length; n < len2; n++) {\n                        field = ref5[n];\n                        if (value.get(field)) {\n                            val += value.get(field);\n                        }\n                    }\n                    return val;\n                }\n                if (ext.includes('_notices') && value.length > 0) {\n                    length = new Set(value).size;\n                    return length;\n                }\n                if (Ember.typeOf(value) === 'array') {\n                    storeData =\n                        (ref6 = this.get('store').peekAll(field.get('options.form'))) != null\n                            ? ref6.map((rec) => {\n                                  return parseInt(rec.id);\n                              })\n                            : void 0;\n                    value = storeData.length\n                        ? value.filter((v) => {\n                              return storeData.includes(v);\n                          })\n                        : value;\n                }\n                if (value.length > 0) {\n                    return value.length + ' ' + this.get('intl').t('report.items_checked');\n                }\n                break;\n            case 'password':\n                if (value === 'secured') {\n                    if (donotaddHTML) {\n                        return '';\n                    }\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"label-m label-m-approved\">' +\n                            this.get('intl').t('status.secured') +\n                            '</span>',\n                    );\n                } else {\n                    if (donotaddHTML) {\n                        return value;\n                    }\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"label-m label-m-open lowercase\">' + value + '</span>',\n                    );\n                }\n                break;\n            case 'embedded':\n                new_val = '';\n                ref7 = field.get('options');\n                for (o = 0, len3 = ref7.length; o < len3; o++) {\n                    field = ref7[o];\n                    if (value[field]) {\n                        new_val += value[field] + ', ';\n                    }\n                }\n                return (value = new_val.slice(0, -2));\n            case 'checkboxgroup':\n                names = [];\n                self = this;\n                value.forEach((sub_value) => {\n                    var addthis;\n                    if (field.options[sub_value] == null) {\n                        return;\n                    }\n                    if (field.options[sub_value].substring(0, 1) !== '$') {\n                        addthis = field.options[sub_value];\n                    } else {\n                        ext = field.ext ? field.ext : field.external_type;\n                        addthis = self.get('intl').t('orientations.' + ext + '.' + sub_value); // need to find better solution for this (works for orientations only now)\n                    }\n                    if (\n                        addthis === field.options[sub_value] &&\n                        this.get('intl').exists(field.options[sub_value])\n                    ) {\n                        addthis = this.get('intl').t(field.options[sub_value]);\n                    }\n                    return names.push(donotaddHTML ? addthis : this.minifyLong(addthis));\n                });\n                if (donotaddHTML) {\n                    return names.join(', ');\n                } else {\n                    return new Ember.String.htmlSafe(names.join('<br>'));\n                }\n                break;\n            case 'gpslocation':\n                if (value) {\n                    try {\n                        gps = JSON.parse(value);\n                    } catch (error1) {\n                        e = error1;\n                        return '';\n                    }\n                    if (gps.distance) {\n                        if (gps.distance > 1000) {\n                            dist_txt = Math.round(gps.distance / 1000) + 'km';\n                        } else {\n                            dist_txt = Math.round(gps.distance) + 'm';\n                        }\n                        if (donotaddHTML) {\n                            return dist_txt;\n                        }\n                        return new Ember.String.htmlSafe(\n                            '<span class=\"label-m label-m-approved\" title=\"Lat: ' +\n                                gps.latitude +\n                                ', Long: ' +\n                                gps.longitude +\n                                ', Dist ' +\n                                dist_txt +\n                                '\">' +\n                                dist_txt +\n                                '</span>',\n                        );\n                    } else {\n                        if (donotaddHTML) {\n                            return this.get('intl').t('general.yes');\n                        }\n                        return new Ember.String.htmlSafe(\n                            '<span class=\"label-m label-m-approved\" title=\"Lat: ' +\n                                gps.latitude +\n                                ', Long: ' +\n                                gps.longitude +\n                                '\"><span class=\"glyphicon glyphicon-ok\"></span></span>',\n                        );\n                    }\n                } else {\n                    if (donotaddHTML) {\n                        return this.get('intl').t('general.no');\n                    }\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"label-m label-m-open\" title=\"' +\n                            this.get('intl').t('field.gps.no_value') +\n                            '\"><span class=\"glyphicon glyphicon-remove\"></span></span>',\n                    );\n                }\n                break;\n            case 'gpslocationmap':\n                if (value) {\n                    let gps = null;\n                    try {\n                        gps = JSON.parse(value);\n                    } catch (e) {\n                        return 'broken coordinates';\n                    }\n\n                    if (donotaddHTML) {\n                        return this.get('intl').t('general.yes');\n                    }\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"label-m label-m-approved\" title=\"Lat: ' +\n                            gps.latitude +\n                            ', Long: ' +\n                            gps.longitude +\n                            '\"><span class=\"glyphicon glyphicon-ok\"></span></span>',\n                    );\n                }\n                break;\n            case 'timeclean_imei':\n                if (!value) {\n                    return '';\n                }\n                try {\n                    value = JSON.parse(value);\n                } catch (error1) {\n                    e = error1;\n                    value = [value];\n                }\n                if (donotaddHTML) {\n                    string = '';\n                    for (q = 0, len4 = value.length; q < len4; q++) {\n                        item = value[q];\n                        string += item + ', ';\n                    }\n                    return string.slice(0, -2);\n                } else {\n                    string = '';\n                    for (r = 0, len5 = value.length; r < len5; r++) {\n                        item = value[r];\n                        string += '<code>' + item + '</code><br>';\n                    }\n                    return new Ember.String.htmlSafe(string.slice(0, -4));\n                }\n                break;\n            case 'password':\n                if (value === 'secured') {\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"label-m label-m-approved\">' + value.toUpperCase() + '</span>',\n                    );\n                } else {\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"label-m label-m-open\">' + value + '</span>',\n                    );\n                }\n                break;\n            case 'weather':\n                if (value === 'null') {\n                    return '';\n                }\n                if (Em.isBlank(value)) {\n                    return '';\n                }\n                if (value && value !== '') {\n                    if (Ember.typeOf(value) === 'string') {\n                        if (value.slice(0, 1) === '\"' && value.slice(-1) === '\"') {\n                            value = value.slice(1, -1);\n                        }\n                        try {\n                            json = JSON.parse(value);\n                        } catch (error1) {\n                            e = error1;\n                            return '';\n                        }\n                    } else {\n                        json = value;\n                    }\n                    if (donotaddHTML) {\n                        temperature = json.temperature ? json.temperature : '-';\n                        windspeed = json.windspeed ? json.windspeed : '-';\n                        humidity = json.humidity ? json.humidity : '-';\n                        dew_point = json.dew_point ? json.dew_point : '-';\n                        weather = temperature + ' °C, ' + windspeed + ' m/s ' + humidity + ' % ';\n                        weather +=\n                            this.get('intl').t('worksitediary.abbr_rel_hum') +\n                            ', ' +\n                            this.get('intl').t('worksitediary.abbr_dew_point') +\n                            ': ' +\n                            dew_point +\n                            ' °C';\n                        return weather;\n                    } else {\n                        string =\n                            \"<span class='weather-icon move move-\" + json.weather + \"'></span> \";\n                        if (json.temperature) {\n                            string += json.temperature + '&deg;C, ';\n                        } else {\n                            string += '- &deg;C, ';\n                        }\n                        if (json.windspeed) {\n                            string += json.windspeed + ' m/s, ';\n                        } else {\n                            string += '- m/s, ';\n                        }\n                        if (json.humidity) {\n                            string +=\n                                json.humidity +\n                                '% ' +\n                                this.get('intl').t('worksitediary.abbr_rel_hum') +\n                                ', ';\n                        } else {\n                            string +=\n                                '- % ' + this.get('intl').t('worksitediary.abbr_rel_hum') + ', ';\n                        }\n                        string += this.get('intl').t('worksitediary.abbr_dew_point') + ': ';\n                        if (json.dew_point) {\n                            string += json.dew_point;\n                        } else {\n                            string += '- &deg;C';\n                        }\n                        return new Ember.String.htmlSafe(string);\n                    }\n                } else {\n                    return '';\n                }\n                break;\n            case 'radio':\n                if (!value) {\n                    return value;\n                }\n                if (value.substring(0, 1) === '$') {\n                    return this.get('intl').t(form + '.option.' + value.substring(1));\n                } else {\n                    return this.get('intl').t(form + '.' + ext + '.' + value);\n                }\n                break;\n            case 'row_info':\n                if ((ext = 'row_info.created' && donotaddHTML !== 'serverlessexcel')) {\n                    return moment(value, 'L LT').format('L LT');\n                } else {\n                    return value;\n                }\n                break;\n            case 'textarea':\n                if (donotaddHTML === 'serverlessexcel') {\n                    return value.replace(/(\\r\\n\\t|\\n|\\r\\t)/gm, ' ');\n                } else if (donotaddHTML) {\n                    return sanitize(value);\n                } else {\n                    return Ember.String.htmlSafe(\n                        \"<span style='white-space: pre-line;'>\" + sanitize(value) + '</span>',\n                    );\n                }\n                break;\n            case 'price':\n                if (!value) {\n                    return value;\n                }\n                return Math.round((value + 0.00001) * 100) / 100;\n            case 'km':\n                if (!['csv', 'excel', 'serverlessexcel'].includes(donotaddHTML)) {\n                    return value + ' km';\n                }\n                return value;\n            default:\n                if (controller && controller.get('parentController')) {\n                    value = controller.get('parentController').formatter(ext, value + unit);\n                }\n                if (donotaddHTML === 'pdf') {\n                    return '' + value;\n                }\n                return value;\n        }\n    },\n    formatDropdownSums: function (values, field, form, donotaddHTML) {\n        var formattedSums, pdfSums;\n        formattedSums = '';\n        pdfSums = '';\n        Object.entries(values).forEach((data) => {\n            var option, translatedValue;\n            if (this.get('intl').exists(form + '.' + field.ext + '.' + data[0])) {\n                translatedValue = this.get('intl').t(form + '.' + field.ext + '.' + data[0]);\n            } else if (this.get('intl').exists(form + '.' + field.external_type + '.' + data[0])) {\n                translatedValue = this.get('intl').t(\n                    form + '.' + field.external_type + '.' + data[0],\n                );\n            } else {\n                option = field.options.find((v) => {\n                    return v.id === data[0];\n                });\n                translatedValue = option && Ember.typeOf(option) === 'object' ? option.value : null;\n            }\n            if (translatedValue) {\n                formattedSums += '<div>' + translatedValue + ': ' + data[1] + '</div>';\n                return (pdfSums += translatedValue + ': ' + data[1] + '\\n');\n            }\n        });\n        if (donotaddHTML === 'sumrow') {\n            return pdfSums;\n        }\n        return Ember.String.htmlSafe(formattedSums);\n    },\n    makeFileUrl: function (url, str) {\n        if (str.startsWith('http')) {\n            return str;\n        } else {\n            return url + str;\n        }\n    },\n    formatCheckboxSums: function (value) {\n        var onoff, ret;\n        onoff = value.split(',');\n        ret = [];\n        onoff.forEach((item) => {\n            var v;\n            v = item.split(':');\n            // If just on or off and value is 1 don't show amounts as capi someone returs these as false/true or on:1 / off:1\n            // trying to be cohesive like this\n            if (onoff.length === 1 && v[1] === '1') {\n                return ret.push(\n                    v[0] === 'on'\n                        ? this.get('intl').t('general.yes')\n                        : this.get('intl').t('general.no'),\n                );\n            } else {\n                return ret.push(\n                    v[0] === 'on'\n                        ? this.get('intl').t('general.yes') + ': ' + v[1]\n                        : this.get('intl').t('general.no') + ': ' + v[1],\n                );\n            }\n        });\n        // Reverse so we have yes first as in report sums\n        return ret.reverse().join(' / ');\n    },\n    minifyLong: function (str, length = 20) {\n        if (str.string != null) {\n            str = str.string;\n        }\n        if (str.length <= length) {\n            return str;\n        }\n        return '<span title=\"' + str + '\">' + str.substring(0, length) + '...</span>';\n    },\n    getModalUrl: function (url) {\n        var base, split;\n        base = this.get('routing.router.location.location.href');\n        split = base.split('?');\n        if (split[1] != null && split[1].substr(0, 6) === 'modal=') {\n            delete split[1];\n        }\n        url = encodeURIComponent(url);\n        url = url.replace('%3D', '=');\n        if (url.startsWith('http')) {\n            console.log('here');\n            return url;\n        }\n        return split[0] + '?' + (split[1] != null ? split[1] + '&' + url : url);\n    },\n    getDropdownValue: function (content, value, field, form = null) {\n        var ext, option, options, ret;\n        ext = Ember.get(field, 'ext');\n        if (Ember.get(field, 'name')) {\n            options = Ember.get(field, 'options');\n            if (form) {\n                ret = this.parseDropdownSums(form, field, value);\n                if (ret) {\n                    return ret;\n                }\n            }\n            option = options.findBy('id', value);\n            if (!option) {\n                return value;\n            }\n            return option.value;\n        } else if (form) {\n            ret = this.parseDropdownSums(form, field, value);\n            if (!ret) {\n                options = Ember.get(field, 'options');\n                option = options.findBy('id', value);\n                if (!option) {\n                    return value;\n                }\n                return option.value;\n            }\n            return ret;\n        } else {\n            return this.get('intl').t(\n                content.get('constructor.modelName') + '.' + ext + '.' + value,\n            );\n        }\n    },\n    parseDropdownSums: function (form, field, value) {\n        var arr, ext, index, is_summing, j, len, m, option, options, str, summing_object, temp_arr;\n        ext = Ember.get(field, 'ext') ? Ember.get(field, 'ext') : Ember.get(field, 'external_type');\n        // test for summing\n        is_summing = true;\n        summing_object = {};\n        if (Ember.typeOf(value) === 'string') {\n            arr = value.split(',');\n            for (j = 0, len = arr.length; j < len; j++) {\n                str = arr[j];\n                m = /(.+):(\\d*)/i.exec(str);\n                if (m === null) {\n                    is_summing = false;\n                } else {\n                    summing_object[m[1]] = m[2];\n                }\n            }\n        }\n        if (is_summing) {\n            options = Ember.get(field, 'options');\n            temp_arr = [];\n            for (index in summing_object) {\n                option = options.findBy('id', index);\n                if (this.get('intl').exists(form + '.' + ext + '.' + index)) {\n                    temp_arr.push(\n                        this.get('intl').t(form + '.' + ext + '.' + index) +\n                            ':' +\n                            summing_object[index],\n                    );\n                } else if (option) {\n                    temp_arr.push(option.value + ':' + summing_object[index]);\n                } else {\n                    temp_arr.push(index + ':' + summing_object[index]);\n                }\n            }\n            return temp_arr.join(', ');\n        } else if (this.get('intl').exists(form + '.' + ext + '.' + value)) {\n            return this.get('intl').t(form + '.' + ext + '.' + value);\n        } else {\n            return false;\n        }\n    },\n    format_export: function (value) {\n        if (value != null && /<[a-z][\\s\\S]*>|{[\\s\\S]*}/i.test(value.string)) {\n            value = '';\n        }\n        if (\n            value instanceof HTMLElement ||\n            value == null ||\n            /<[a-z][\\s\\S]*>|{[\\s\\S]*}/i.test(value)\n        ) {\n            value = '';\n        }\n        return value.toString();\n    },\n    unit: function (field) {\n        switch (field.get('type')) {\n            case 'minutes':\n                return 'min';\n            case 'price':\n                return '€';\n            case 'big_price':\n                return '€';\n            default:\n                return field.get('options');\n        }\n    },\n    isMandatory: function (field, model) {\n        if (field && typeof field.features.mandatory === 'object') {\n            return validator._is_visible(model, field.features.mandatory);\n        } else if (field.features.mandatory) {\n            return true;\n        }\n        return false;\n    },\n    isHidden: function (field, model) {\n        if (field && typeof field.features.hide === 'object') {\n            return !validator._is_visible(model, field.features.hide);\n        } else if (field.features.hide) {\n            return true;\n        }\n        return false;\n    },\n    getFieldName: function (form, field) {\n        var name;\n        if (field.get('translation')) {\n            return this.get('intl').t(field.get('translation'));\n        }\n        form = form.underscore();\n        if (field.get('type') === 'checkboxgroup') {\n            name = field.get('name')\n                ? field.get('name')\n                : this.get('intl').t(form + 's.' + field.get('ext'));\n            return name;\n        }\n        if (form.startsWith('measurement_custom')) {\n            form = 'report.measurement_custom1';\n        }\n        return field.get('name') || this.get('intl').t(form + '.' + field.get('ext'));\n    },\n    getLogo: function () {\n        var d, imageTypes;\n        d = new $.Deferred();\n        imageTypes = ['image/gif', 'image/png', 'image/jpg', 'image/jpeg'];\n        this.get('store')\n            .findAll('logo')\n            .then(function (logo) {\n                var img, url;\n                if (logo.get('length') > 0 && !Ember.isEmpty(logo)) {\n                    logo = logo.get('firstObject.logo');\n                    if (logo.length === 0) {\n                        url = 'img/brand/logo_with_text.png';\n                        return getImageFromUrl(url).then((file) => {\n                            return resizeImage(file, 600, 300, 60).then((resized) => {\n                                return d.resolve(resized);\n                            });\n                        });\n                    } else {\n                        if (logo.length > 0) {\n                            logo = logo[0];\n                        }\n                        if (!imageTypes.includes(logo.type)) {\n                            url = 'img/brand/logo_with_text.png';\n                            getImageFromUrl(url).then((file) => {\n                                return resizeImage(file, 600, 300, 60).then((resized) => {\n                                    return d.resolve(resized);\n                                });\n                            });\n                        }\n                        img = new Image();\n                        img.crossOrigin = 'Anonymous';\n                        img.onload = function () {\n                            var canvas, ctx, dataURL;\n                            canvas = document.createElement('CANVAS');\n                            ctx = canvas.getContext('2d');\n                            canvas.height = this.height;\n                            canvas.width = this.width;\n                            ctx.drawImage(this, 0, 0);\n                            dataURL = canvas.toDataURL();\n                            canvas = null;\n                            return d.resolve(dataURL);\n                        };\n                        return (img.src = config.APP.COLLECTOR_API_URL + '/' + logo.url);\n                    }\n                } else {\n                    url = 'img/brand/logo_with_text.png';\n                    return getImageFromUrl(url).then((file) => {\n                        return resizeImage(file, 600, 300, 60).then((resized) => {\n                            return d.resolve(resized);\n                        });\n                    });\n                }\n            });\n        return d.promise();\n    },\n    getUserlevel: function (session) {\n        var user;\n        if (session == null) {\n            session = this.get('session');\n        }\n        user = session.get('currentUser');\n        if (user != null) {\n            if (typeof user.userlevel === 'string') {\n                return parseInt(user.userlevel);\n            } else {\n                return parseInt(user.get('userlevel'));\n            }\n        }\n    },\n    ttapi: function (params) {\n        return this.get('ttapiService').request(params.url, params);\n    },\n    ttapi_url: function () {\n        return this.get('ttapiService').host;\n    },\n    ccapi: function (params) {\n        if (config.environment !== 'development' && this.get('flags').test('cc-url')) {\n            params.url = this.get('flags').test('cc-url') + '/trigger/' + params.url;\n        } else {\n            params.url = config.APP.CC_URL + '/' + params.url;\n        }\n        if (params.data == null) {\n            params.data = {};\n        }\n        if (config.environment === 'development') {\n            params.data.capi_url = 'http://capi/';\n            params.data.ttapi_url = 'http://ttapi/';\n        } else {\n            params.data.capi_url = config.APP.COLLECTOR_API_URL + '/';\n            params.data.ttapi_url = this.get('ttapiService').host + '/';\n        }\n        params.data.token = this.get('session.session.authenticated.access_token');\n        params.headers = {\n            Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n        };\n        //console.log \"params\", params\n        return $.ajax(params);\n    },\n    getApiUrl: function () {\n        return config.APP.COLLECTOR_API_URL + '/';\n    },\n    ajax: function (params) {\n        return this.get('capi').request(params.url, params);\n    },\n    cget: function (form, params = {}, sideload = false) {\n        var self;\n        self = this;\n        if (sideload && !params.sideload) {\n            params.sideload = true;\n        }\n        return new Ember.RSVP.Promise(function (resolve, reject) {\n            var paramStr, pluralForm, promise, url;\n            pluralForm = self.pluralize(form);\n            url = pluralForm;\n            //paramArr = []\n            //$.each params, (key, value) ->\n            //    paramArr.push key + \"=\" + value\n            //paramStr = paramArr.join '&'\n\n            // remove undefined params\n            Object.keys(params).forEach(function (key) {\n                if (Ember.typeOf(params[key]) === 'undefined') {\n                    return delete params[key];\n                }\n            });\n            paramStr = $.param(params);\n            if (paramStr !== '') {\n                url += '?' + paramStr;\n            }\n            promise = self.ajax({\n                url: url,\n                method: 'get',\n            });\n            promise.then(function (response) {\n                var EmberRows, rows;\n                if (sideload) {\n                    rows = self.injectSideload(pluralForm, response, sideload === 'obj');\n                } else if (response[form]) {\n                    rows = Em.A(response[form]);\n                } else {\n                    rows = Em.A(response[pluralForm]);\n                }\n                EmberRows = Em.A([]);\n                rows.forEach(function (row) {\n                    return EmberRows.pushObject(Ember.Object.create(row));\n                });\n                return Ember.run(null, resolve, EmberRows);\n            });\n            return promise.catch(function (response) {\n                response.then = null;\n                return Ember.run(null, reject, response);\n            });\n        });\n    },\n    injectSideload: function (form, data, asObj = false) {\n        var cell,\n            column,\n            column_name,\n            field,\n            id,\n            item,\n            j,\n            key,\n            l,\n            len,\n            len1,\n            name,\n            row,\n            rows,\n            self,\n            str,\n            subset,\n            subsets;\n        self = this;\n        rows = data[form];\n        subsets = {};\n        for (name in data) {\n            subset = data[name];\n            if (name === form || name === 'count') {\n                continue;\n            }\n            subsets[name] = {};\n            for (j = 0, len = subset.length; j < len; j++) {\n                item = subset[j];\n                if (asObj) {\n                    subsets[name][item.id] = item;\n                } else {\n                    str = '';\n                    for (key in item) {\n                        cell = item[key];\n                        if (key !== 'id' && cell !== null) {\n                            str += cell + ' ';\n                        }\n                    }\n                    subsets[name][item.id] = str.substring(0, str.length - 1);\n                }\n            }\n        }\n        for (id = l = 0, len1 = rows.length; l < len1; id = ++l) {\n            row = rows[id];\n            for (column in row) {\n                cell = row[column];\n                // lets check this fields options.form to match it to sideloaded forms\n                if (column !== 'id') {\n                    field = self.fieldExists(singularize(form), column)\n                        ? self.field(singularize(form), column)\n                        : {};\n                    if (field.options != null) {\n                        column_name = self.pluralize(field.options.form);\n                    } else {\n                        column_name = self.pluralize(column);\n                    }\n                } else {\n                    column_name = self.pluralize(column);\n                }\n                if (column_name in subsets) {\n                    rows[id][column] = subsets[column_name][cell];\n                }\n            }\n        }\n        return rows;\n    },\n    // used for filter dropdowns. ie. when employer is changed reload user dropdown\n    getDropdownDepency: function (field) {\n        if (field === 'employer') {\n            return [\n                {\n                    field: 'user',\n                    filter: 'employer',\n                },\n            ];\n        } else if (\n            field === 'project' &&\n            this.testNeedsOne('task') &&\n            collector.forms['task'].features != null &&\n            collector.forms['task'].features.link === 'project'\n        ) {\n            return [\n                {\n                    field: 'task',\n                    filter: 'project',\n                },\n            ];\n        } else if (field === 'worktimegroup' && this.testNeedsOne('products.salarytype_v2')) {\n            // salarytypesv2 is a special case\n            return [\n                {\n                    field: 'abcensetype',\n                    filter: 'worktimegroup',\n                },\n                {\n                    field: 'worktype',\n                    filter: 'worktimegroup',\n                },\n            ];\n        }\n        return [];\n    },\n    findFormRelations: function (form, type, params = {}) {\n        var pluralForm, self, url;\n        self = this;\n        pluralForm = pluralize(form).camelize();\n        url = pluralForm + '/' + type;\n        return DS.PromiseArray.create({\n            promise: new Ember.RSVP.Promise(function (resolve, reject) {\n                return self\n                    .ajax({\n                        url: url,\n                        method: 'GET',\n                        data: params,\n                    })\n                    .then(\n                        function (data) {\n                            var formattedData;\n                            formattedData = self.formatParentFormResponse(data, form, type);\n                            return Ember.run(null, resolve, formattedData);\n                        },\n                        function (jqXHR) {\n                            jqXHR.then = null;\n                            return Ember.run(null, reject, jqXHR);\n                        },\n                    );\n            }),\n        });\n    },\n    formatParentFormResponse: function (response, form, type) {\n        var index, j, key, len, modelName, row, rows, self;\n        self = this;\n        modelName = collector.getFormObject(form + '.' + type).options.form;\n        for (key in response) {\n            rows = response[key];\n            if (!(key !== 'count')) {\n                continue;\n            }\n            // If model isn't same as gotten type name we have to set response content to right name\n            // Like in orientation projects are named ori_sites and fetched from /orinentations/ori_sites\n            // but model name is still project and needs to be renamed\n            response[modelName] = [];\n            // Convert from the {id: id, values: {field1: value, field2: value} format that\n            // /:form/:field fetch returns to ember format for pushing to store\n            for (index = j = 0, len = rows.length; j < len; index = ++j) {\n                row = rows[index];\n                row.attributes = row.values;\n                delete row.values;\n                row.type = modelName;\n                response[modelName][index] = row;\n            }\n            response[modelName] = self.get('store').push({\n                data: response[modelName],\n            });\n        }\n        return response[modelName];\n    },\n    pushToStore: function (response) {\n        delete response.count;\n        return this.get('store').pushPayload(response);\n    },\n    pluralize: function (str) {\n        return pluralize(str);\n    },\n    get_greeting: function () {\n        var greeting_arr, str, time;\n        time = parseInt(moment().format('HH'), 10);\n        str = this.get('intl').t('general.welcome');\n        if (str == null) {\n            return '...';\n        }\n        greeting_arr = str.split('\\n');\n        if (time < 2) {\n            return greeting_arr[0];\n        } else if (time >= 2 && time < 5) {\n            return greeting_arr[1];\n        } else if (time >= 5 && time < 10) {\n            return greeting_arr[2];\n        } else if (time >= 10 && time < 12) {\n            return greeting_arr[3];\n        } else if (time >= 12 && time < 17) {\n            return greeting_arr[4];\n        } else if (time >= 17 && time < 19) {\n            return greeting_arr[5];\n        } else if (time >= 19 && time < 22) {\n            return greeting_arr[6];\n        } else if (time >= 22) {\n            return greeting_arr[7];\n        }\n    },\n    parseFormErrors: function (errors) {\n        var error, error_name, error_types, j, len, ref, type;\n        error_types = [];\n        for (j = 0, len = errors.length; j < len; j++) {\n            error = errors[j];\n            error_name = error.substring(30);\n            type = (function () {\n                switch (error_name) {\n                    case 'calculate_saldo_worktime':\n                    case 'remove_saldorow':\n                    case 'calculate_new_saldo':\n                    case 'update_saldo_group':\n                        return 'saldo';\n                    default:\n                        return false;\n                }\n            })();\n            if (\n                type &&\n                ((ref = this.get('intl').t('form.errors.type.' + type)),\n                indexOf.call(error_types, ref) < 0)\n            ) {\n                error_types.push(this.get('intl').t('form.errors.type.' + type));\n            }\n        }\n        return error_types;\n    },\n    // get translation for one column\n    getTranslationForColumn: function (form, fieldName, removed = false) {\n        var field, intl;\n        if (fieldName === 'id') {\n            return 'id';\n        }\n        intl = this.get('intl');\n        if (fieldName.substring(0, 9) === 'row_info.') {\n            return intl.t('general.' + fieldName);\n        }\n        if (removed) {\n            return this.getBestTranslation(form, fieldName);\n        }\n        field = this.fields(form)[fieldName];\n        if (!field) {\n            Ember.assert(\"Field '\" + fieldName + \"' not found for form '\" + form + \"'\");\n        }\n        if ('name' in field) {\n            return field.name;\n        } else {\n            return this.getBestTranslation(form, fieldName);\n        }\n    },\n    getBestTranslation: function (form, fieldName) {\n        var found_key, intl, test_keys;\n        intl = this.get('intl');\n        test_keys = ['report.' + form + '.' + fieldName, 'defaults.field.' + fieldName];\n        found_key = null;\n        test_keys.some((key) => {\n            if (intl.exists(key)) {\n                found_key = key;\n                return true;\n            }\n        });\n        if (found_key) {\n            return intl.t(found_key);\n        } else {\n            return test_keys[0];\n        }\n    },\n    customizeField: function (field, custom) {\n        var feature, item, k, value;\n        for (k in custom) {\n            item = custom[k];\n            if (typeof item === 'object') {\n                for (feature in item) {\n                    value = item[feature];\n                    if (typeof value === 'object') {\n                        // TODO Make better so we can merge unlimited\n                        if (!field[k][feature]) {\n                            field[k][feature] = value;\n                        }\n                    } else {\n                        field[k][feature] = value;\n                    }\n                }\n            } else {\n                field[k] = item;\n            }\n        }\n        return field;\n    },\n\n    // Get row linker links\n    //   ex. kohdekohtaset tehtävät\n\n    //   id: id of record to fetch links to, ex project record id\n    //   form: form name to get the links for, ex \"project\"\n    //   link: name of the link target, ex \"task\"\n    getLinks: function (id, form, link) {\n        var params;\n        params = {\n            url: this.pluralize(form) + '/' + id + '/' + this.pluralize(link),\n        };\n        return this.ajax(params);\n    },\n\n    //   Save row linker links\n    //   ex. kohdekohtaset tehtävät\n\n    //   id: id of record to fetch links to, ex project record id\n    //   form: form name to get the links for, ex \"project\"\n    //   link: name of the link target, ex \"task\"\n    //   links: array of record ids that should be linked to this id\n    saveLinks: function (id, form, link, links) {\n        var data, params;\n        data = {};\n        data[form] = {};\n        data[form]['link.' + this.pluralize(link)] = links;\n        params = {\n            url: this.pluralize(form) + '/' + id + '?validation=off',\n            data: JSON.stringify(data),\n            type: 'PUT',\n        };\n        return this.ajax(params);\n    },\n    canAddWorktime: function (date) {\n        var date_interval, interval_arr;\n        date_interval = this.field('worktime', 'date')['features']['date_interval'];\n        if (date_interval && date_interval === 'locked') {\n            //allow today\n            if (moment().format('YYYY-MM-DD') === date) {\n                return true;\n            }\n            return false;\n        } else if (date_interval) {\n            if (typeof date_interval === 'string') {\n                interval_arr = date_interval.split(',');\n                if (interval_arr.length > 1) {\n                    return (\n                        moment()\n                            .startOf('day')\n                            .subtract(interval_arr[0], 'days')\n                            .isBefore(moment(date, 'YYYY-MM-DD')) &&\n                        moment()\n                            .startOf('day')\n                            .add(interval_arr[1], 'days')\n                            .isAfter(moment(date, 'YYYY-MM-DD'))\n                    );\n                }\n            } else {\n                return (\n                    moment()\n                        .startOf('day')\n                        .subtract(date_interval, 'days')\n                        .isBefore(moment(date, 'YYYY-MM-DD')) &&\n                    moment().startOf('day').add(1, 'days').isAfter(moment(date, 'YYYY-MM-DD'))\n                );\n            }\n        } else {\n            return true;\n        }\n    },\n    shortFormat: function (value, length = 2) {\n        var j, key, len, split, string, val;\n        split = value.split(' ');\n        string = '';\n        if (split.length > 1) {\n            for (key = j = 0, len = split.length; j < len; key = ++j) {\n                val = split[key];\n                if (key + 1 > length) {\n                    continue;\n                }\n                string += val.slice(0, 1);\n            }\n        } else {\n            string = value.slice(0, length);\n        }\n        return string.toUpperCase();\n    },\n    // returns all userlevels in neat array with ids and names\n    // input: array skip_levels - skip these levels\n    getUserlevels: function (skip_levels) {\n        var j, len, lvl, ref, ret, userlevels;\n        userlevels = this.field('user', 'userlevel');\n        ret = [];\n        if (!skip_levels) {\n            skip_levels = [];\n        }\n        ref = userlevels.options;\n        for (j = 0, len = ref.length; j < len; j++) {\n            lvl = ref[j];\n            if (skip_levels.indexOf(parseInt(lvl)) < 0) {\n                if (lvl < 9) {\n                    ret.push({\n                        id: lvl,\n                        name: this.get('intl').t('user.userlevel.' + lvl),\n                    });\n                } else {\n                    ret.push({\n                        id: lvl.substring(0, 2),\n                        name: lvl.substring(2),\n                    });\n                }\n            }\n        }\n        return ret;\n    },\n    randomizeColor: function (value) {\n        var c, hash, i, j, k, len, string;\n        if (value.constructor === Array) {\n            string = value.join('');\n        } else {\n            string = value;\n        }\n        hash = 0;\n        for (i = j = 0, len = string.length; j < len; i = ++j) {\n            k = string[i];\n            hash = string.charCodeAt(i) + ((hash << 5) - hash);\n        }\n        c = (hash & 0x00ffffff).toString(16).toUpperCase();\n        return '#' + '00000'.substring(0, 6 - c.length) + c;\n    },\n    copyRecord: function (record) {\n        var field, form, j, json_record, len, ref;\n        form = record.get('constructor.modelName');\n        json_record = record.serialize();\n        ref = ['status'];\n        for (j = 0, len = ref.length; j < len; j++) {\n            field = ref[j];\n            if (!Ember.isEmpty(json_record[field])) {\n                json_record[field] = null;\n            }\n        }\n        record.eachRelationship((key, relationship) => {\n            var hasManyArr, ref1;\n            if (\n                ((ref1 = relationship.kind) === 'belongsTo' || ref1 === 'hasMany') &&\n                key !== 'export_salary' &&\n                key !== 'export_absence' &&\n                key !== 'row_info'\n            ) {\n                if (\n                    this.field(form, key).type === 'databasearray' ||\n                    this.field(form, key).type === 'work_permit_attachment'\n                ) {\n                    hasManyArr = [];\n                    record.get(key).forEach((hasManyRecord) => {\n                        return hasManyArr.push(this.copyRecord(hasManyRecord));\n                    });\n                    return Ember.set(json_record, key, hasManyArr);\n                } else {\n                    return Ember.set(json_record, key, record.get(key));\n                }\n            }\n        });\n        return this.get('store').createRecord(form, json_record);\n    },\n    getSideloads: function (form) {\n        var fields, sideloads;\n        fields = this.fieldArray(form);\n        sideloads = [];\n        fields.forEach(function (field) {\n            var ref;\n            if (\n                (ref = field.type) === 'database' ||\n                ref === 'databasearray' ||\n                ref === 'multiselect' ||\n                ref === 'work_permit_attachment'\n            ) {\n                return field.options.fields.forEach(function (option) {\n                    return sideloads.push(field.options.form + '.' + option);\n                });\n            }\n        });\n        return sideloads.uniq();\n    },\n    checkRowValidation: function (form, record, edit_mode = false) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var data, form_plural, json, json_str, params, ret;\n            if (edit_mode) {\n                resolve();\n                return;\n            }\n            form_plural = this.pluralize(form);\n            json = record.serialize();\n            data = {};\n            data[form] = json;\n            json_str = JSON.stringify(data);\n            params = {};\n            params.url = form_plural + '?validation=only';\n            params.data = json_str;\n            params.method = 'POST';\n            ret = this.ajax(params);\n            return ret.then(\n                function (ret) {\n                    return resolve(ret);\n                },\n                function (e) {\n                    return reject(e);\n                },\n            );\n        });\n    },\n});\n\nexport default collectorService;\n","define(\"tt4/services/collector\", [\"exports\", \"@movenium/ember-movenium/services/collector\"], function (_exports, _collector) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _collector.default;\n    }\n  });\n});\n","import CookiesService from 'ember-cookies/services/cookies';\n\nexport default CookiesService;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/country-lists.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CountryListsService,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nconst { computed, get } = Ember;\n\nCountryListsService = Ember.Service.extend({\n    countries: [\n        {\n            id: 'af',\n            name: 'Afghanistan',\n        },\n        {\n            id: 'ax',\n            name: 'Aland Islands',\n        },\n        {\n            id: 'al',\n            name: 'Albania',\n        },\n        {\n            id: 'dz',\n            name: 'Algeria',\n        },\n        {\n            id: 'as',\n            name: 'American Samoa',\n        },\n        {\n            id: 'ad',\n            name: 'Andorra',\n        },\n        {\n            id: 'ao',\n            name: 'Angola',\n        },\n        {\n            id: 'ai',\n            name: 'Anguilla',\n        },\n        {\n            id: 'aq',\n            name: 'Antarctica',\n        },\n        {\n            id: 'ag',\n            name: 'Antigua And Barbuda',\n        },\n        {\n            id: 'ar',\n            name: 'Argentina',\n        },\n        {\n            id: 'am',\n            name: 'Armenia',\n        },\n        {\n            id: 'aw',\n            name: 'Aruba',\n        },\n        {\n            id: 'au',\n            name: 'Australia',\n        },\n        {\n            id: 'at',\n            name: 'Austria',\n        },\n        {\n            id: 'az',\n            name: 'Azerbaijan',\n        },\n        {\n            id: 'bs',\n            name: 'Bahamas',\n        },\n        {\n            id: 'bh',\n            name: 'Bahrain',\n        },\n        {\n            id: 'bd',\n            name: 'Bangladesh',\n        },\n        {\n            id: 'bb',\n            name: 'Barbados',\n        },\n        {\n            id: 'by',\n            name: 'Belarus',\n        },\n        {\n            id: 'be',\n            name: 'Belgium',\n        },\n        {\n            id: 'bz',\n            name: 'Belize',\n        },\n        {\n            id: 'bj',\n            name: 'Benin',\n        },\n        {\n            id: 'bm',\n            name: 'Bermuda',\n        },\n        {\n            id: 'bt',\n            name: 'Bhutan',\n        },\n        {\n            id: 'bo',\n            name: 'Bolivia, Plurinational State Of',\n        },\n        {\n            id: 'bq',\n            name: 'Bonaire, Sint Eustatius And Saba',\n        },\n        {\n            id: 'ba',\n            name: 'Bosnia And Herzegovina',\n        },\n        {\n            id: 'bw',\n            name: 'Botswana',\n        },\n        {\n            id: 'bv',\n            name: 'Bouvet Island',\n        },\n        {\n            id: 'br',\n            name: 'Brazil',\n        },\n        {\n            id: 'io',\n            name: 'British Indian Ocean Territory',\n        },\n        {\n            id: 'bn',\n            name: 'Brunei Darussalam',\n        },\n        {\n            id: 'bg',\n            name: 'Bulgaria',\n        },\n        {\n            id: 'bf',\n            name: 'Burkina Faso',\n        },\n        {\n            id: 'bi',\n            name: 'Burundi',\n        },\n        {\n            id: 'kh',\n            name: 'Cambodia',\n        },\n        {\n            id: 'cm',\n            name: 'Cameroon',\n        },\n        {\n            id: 'ca',\n            name: \"Canada\",\n        },\n        {\n            id: 'cv',\n            name: 'Cape Verde',\n        },\n        {\n            id: 'ky',\n            name: 'Cayman Islands',\n        },\n        {\n            id: 'cf',\n            name: 'Central African Republic',\n        },\n        {\n            id: 'td',\n            name: 'Chad',\n        },\n        {\n            id: 'cl',\n            name: 'Chile',\n        },\n        {\n            id: 'cn',\n            name: 'China',\n        },\n        {\n            id: 'cx',\n            name: 'Christmas Island',\n        },\n        {\n            id: 'cc',\n            name: 'Cocos (keeling) Islands',\n        },\n        {\n            id: 'co',\n            name: 'Colombia',\n        },\n        {\n            id: 'km',\n            name: 'Comoros',\n        },\n        {\n            id: 'cg',\n            name: 'Congo',\n        },\n        {\n            id: 'cd',\n            name: 'Congo, The Democratic Republic Of The',\n        },\n        {\n            id: 'ck',\n            name: 'Cook Islands',\n        },\n        {\n            id: 'cr',\n            name: 'Costa Rica',\n        },\n        {\n            id: 'ci',\n            name: \"Cote D'ivoire\",\n        },\n        {\n            id: 'hr',\n            name: 'Croatia',\n        },\n        {\n            id: 'cu',\n            name: 'Cuba',\n        },\n        {\n            id: 'cw',\n            name: 'Curacao',\n        },\n        {\n            id: 'cy',\n            name: 'Cyprus',\n        },\n        {\n            id: 'cz',\n            name: 'Czech Republic',\n        },\n        {\n            id: 'dk',\n            name: 'Denmark',\n        },\n        {\n            id: 'dj',\n            name: 'Djibouti',\n        },\n        {\n            id: 'dm',\n            name: 'Dominica',\n        },\n        {\n            id: 'do',\n            name: 'Dominican Republic',\n        },\n        {\n            id: 'ec',\n            name: 'Ecuador',\n        },\n        {\n            id: 'eg',\n            name: 'Egypt',\n        },\n        {\n            id: 'sv',\n            name: 'El Salvador',\n        },\n        {\n            id: 'gq',\n            name: 'Equatorial Guinea',\n        },\n        {\n            id: 'er',\n            name: 'Eritrea',\n        },\n        {\n            id: 'ee',\n            name: 'Estonia',\n            number: '+372',\n        },\n        {\n            id: 'et',\n            name: 'Ethiopia',\n        },\n        {\n            id: 'fk',\n            name: 'Falkland Islands (malvinas)',\n        },\n        {\n            id: 'fo',\n            name: 'Faroe Islands',\n        },\n        {\n            id: 'fj',\n            name: 'Fiji',\n        },\n        {\n            id: 'fi',\n            name: 'Finland',\n            number: '+358',\n        },\n        {\n            id: 'fr',\n            name: 'France',\n            number: '+33',\n        },\n        {\n            id: 'gf',\n            name: 'French Guiana',\n        },\n        {\n            id: 'pf',\n            name: 'French Polynesia',\n        },\n        {\n            id: 'tf',\n            name: 'French Southern Territories',\n        },\n        {\n            id: 'ga',\n            name: 'Gabon',\n        },\n        {\n            id: 'gm',\n            name: 'Gambia',\n        },\n        {\n            id: 'ge',\n            name: 'Georgia',\n        },\n        {\n            id: 'de',\n            name: 'Germany',\n            number: '+49',\n        },\n        {\n            id: 'gh',\n            name: 'Ghana',\n        },\n        {\n            id: 'gi',\n            name: 'Gibraltar',\n        },\n        {\n            id: 'gr',\n            name: 'Greece',\n        },\n        {\n            id: 'gl',\n            name: 'Greenland',\n        },\n        {\n            id: 'gd',\n            name: 'Grenada',\n        },\n        {\n            id: 'gp',\n            name: 'Guadeloupe',\n        },\n        {\n            id: 'gu',\n            name: 'Guam',\n        },\n        {\n            id: 'gt',\n            name: 'Guatemala',\n        },\n        {\n            id: 'gg',\n            name: 'Guernsey',\n        },\n        {\n            id: 'gn',\n            name: 'Guinea',\n        },\n        {\n            id: 'gw',\n            name: 'Guinea-bissau',\n        },\n        {\n            id: 'gy',\n            name: 'Guyana',\n        },\n        {\n            id: 'ht',\n            name: 'Haiti',\n        },\n        {\n            id: 'hm',\n            name: 'Heard Island And Mcdonald Islands',\n        },\n        {\n            id: 'va',\n            name: 'Holy See (vatican City State)',\n        },\n        {\n            id: 'hn',\n            name: 'Honduras',\n        },\n        {\n            id: 'hk',\n            name: 'Hong Kong',\n        },\n        {\n            id: 'hu',\n            name: 'Hungary',\n            number: '+36',\n        },\n        {\n            id: 'is',\n            name: 'Iceland',\n        },\n        {\n            id: 'in',\n            name: 'India',\n        },\n        {\n            id: 'id',\n            name: 'Indonesia',\n        },\n        {\n            id: 'ir',\n            name: 'Iran, Islamic Republic Of',\n        },\n        {\n            id: 'iq',\n            name: 'Iraq',\n        },\n        {\n            id: 'ie',\n            name: 'Ireland',\n        },\n        {\n            id: 'im',\n            name: 'Isle Of Man',\n        },\n        {\n            id: 'il',\n            name: 'Israel',\n        },\n        {\n            id: 'it',\n            name: 'Italy',\n        },\n        {\n            id: 'jm',\n            name: 'Jamaica',\n        },\n        {\n            id: 'jp',\n            name: 'Japan',\n        },\n        {\n            id: 'je',\n            name: 'Jersey',\n        },\n        {\n            id: 'jo',\n            name: 'Jordan',\n        },\n        {\n            id: 'kz',\n            name: 'Kazakhstan',\n        },\n        {\n            id: 'ke',\n            name: 'Kenya',\n        },\n        {\n            id: 'ki',\n            name: 'Kiribati',\n        },\n        {\n            id: 'kp',\n            name: \"Korea, Democratic People's Republic Of\",\n        },\n        {\n            id: 'kr',\n            name: 'Korea, Republic Of',\n        },\n        {\n            id: 'xk',\n            name: 'Kosovo',\n        },\n        {\n            id: 'kw',\n            name: 'Kuwait',\n        },\n        {\n            id: 'kg',\n            name: 'Kyrgyzstan',\n        },\n        {\n            id: 'la',\n            name: \"Lao People's Democratic Republic\",\n        },\n        {\n            id: 'lv',\n            name: 'Latvia',\n            number: '+371',\n        },\n        {\n            id: 'lb',\n            name: 'Lebanon',\n        },\n        {\n            id: 'ls',\n            name: 'Lesotho',\n        },\n        {\n            id: 'lr',\n            name: 'Liberia',\n        },\n        {\n            id: 'ly',\n            name: 'Libyan Arab Jamahiriya',\n        },\n        {\n            id: 'li',\n            name: 'Liechtenstein',\n        },\n        {\n            id: 'lt',\n            name: 'Lithuania',\n        },\n        {\n            id: 'lu',\n            name: 'Luxembourg',\n        },\n        {\n            id: 'mo',\n            name: 'Macao',\n        },\n        {\n            id: 'mk',\n            name: 'Macedonia, The Former Yugoslav Republic Of',\n        },\n        {\n            id: 'mg',\n            name: 'Madagascar',\n        },\n        {\n            id: 'mw',\n            name: 'Malawi',\n        },\n        {\n            id: 'my',\n            name: 'Malaysia',\n        },\n        {\n            id: 'mv',\n            name: 'Maldives',\n        },\n        {\n            id: 'ml',\n            name: 'Mali',\n        },\n        {\n            id: 'mt',\n            name: 'Malta',\n        },\n        {\n            id: 'mh',\n            name: 'Marshall Islands',\n        },\n        {\n            id: 'mq',\n            name: 'Martinique',\n        },\n        {\n            id: 'mr',\n            name: 'Mauritania',\n        },\n        {\n            id: 'mu',\n            name: 'Mauritius',\n        },\n        {\n            id: 'yt',\n            name: 'Mayotte',\n        },\n        {\n            id: 'mx',\n            name: 'Mexico',\n        },\n        {\n            id: 'fm',\n            name: 'Micronesia, Federated States Of',\n        },\n        {\n            id: 'md',\n            name: 'Moldova, Republic Of',\n        },\n        {\n            id: 'mc',\n            name: 'Monaco',\n        },\n        {\n            id: 'mn',\n            name: 'Mongolia',\n        },\n        {\n            id: 'me',\n            name: 'Montenegro',\n        },\n        {\n            id: 'ms',\n            name: 'Montserrat',\n        },\n        {\n            id: 'ma',\n            name: 'Morocco',\n        },\n        {\n            id: 'mz',\n            name: 'Mozambique',\n        },\n        {\n            id: 'mm',\n            name: 'Myanmar',\n        },\n        {\n            id: 'na',\n            name: 'Namibia',\n        },\n        {\n            id: 'nr',\n            name: 'Nauru',\n        },\n        {\n            id: 'np',\n            name: 'Nepal',\n        },\n        {\n            id: 'nl',\n            name: 'Netherlands',\n            number: '+31',\n        },\n        {\n            id: 'nc',\n            name: 'New Caledonia',\n        },\n        {\n            id: 'nz',\n            name: 'New Zealand',\n        },\n        {\n            id: 'ni',\n            name: 'Nicaragua',\n        },\n        {\n            id: 'ne',\n            name: 'Niger',\n        },\n        {\n            id: 'ng',\n            name: 'Nigeria',\n        },\n        {\n            id: 'nu',\n            name: 'Niue',\n        },\n        {\n            id: 'nf',\n            name: 'Norfolk Island',\n        },\n        {\n            id: 'mp',\n            name: 'Northern Mariana Islands',\n        },\n        {\n            id: 'no',\n            name: 'Norway',\n            number: '+47',\n        },\n        {\n            id: 'om',\n            name: 'Oman',\n        },\n        {\n            id: 'pk',\n            name: 'Pakistan',\n        },\n        {\n            id: 'pw',\n            name: 'Palau',\n        },\n        {\n            id: 'ps',\n            name: 'Palestinian Territory, Occupied',\n        },\n        {\n            id: 'pa',\n            name: 'Panama',\n        },\n        {\n            id: 'pg',\n            name: 'Papua New Guinea',\n        },\n        {\n            id: 'py',\n            name: 'Paraguay',\n        },\n        {\n            id: 'pe',\n            name: 'Peru',\n        },\n        {\n            id: 'ph',\n            name: 'Philippines',\n        },\n        {\n            id: 'pn',\n            name: 'Pitcairn',\n        },\n        {\n            id: 'pl',\n            name: 'Poland',\n            number: '+48',\n        },\n        {\n            id: 'pt',\n            name: 'Portugal',\n        },\n        {\n            id: 'pr',\n            name: 'Puerto Rico',\n        },\n        {\n            id: 'qa',\n            name: 'Qatar',\n        },\n        {\n            id: 're',\n            name: 'Reunion',\n        },\n        {\n            id: 'ro',\n            name: 'Romania',\n        },\n        {\n            id: 'ru',\n            name: 'Russian Federation',\n        },\n        {\n            id: 'rw',\n            name: 'Rwanda',\n        },\n        {\n            id: 'bl',\n            name: 'Saint Barthelemy',\n        },\n        {\n            id: 'sh',\n            name: 'Saint Helena, Ascension And Tristan Da Cunha',\n        },\n        {\n            id: 'kn',\n            name: 'Saint Kitts And Nevis',\n        },\n        {\n            id: 'lc',\n            name: 'Saint Lucia',\n        },\n        {\n            id: 'mf',\n            name: 'Saint Martin (french Part)',\n        },\n        {\n            id: 'pm',\n            name: 'Saint Pierre And Miquelon',\n        },\n        {\n            id: 'vc',\n            name: 'Saint Vincent And The Grenadines',\n        },\n        {\n            id: 'ws',\n            name: 'Samoa',\n        },\n        {\n            id: 'sm',\n            name: 'San Marino',\n        },\n        {\n            id: 'st',\n            name: 'Sao Tome And Principe',\n        },\n        {\n            id: 'sa',\n            name: 'Saudi Arabia',\n        },\n        {\n            id: 'sn',\n            name: 'Senegal',\n        },\n        {\n            id: 'rs',\n            name: 'Serbia',\n        },\n        {\n            id: 'sc',\n            name: 'Seychelles',\n        },\n        {\n            id: 'sl',\n            name: 'Sierra Leone',\n        },\n        {\n            id: 'sg',\n            name: 'Singapore',\n        },\n        {\n            id: 'sx',\n            name: 'Sint Maarten (dutch Part)',\n        },\n        {\n            id: 'sk',\n            name: 'Slovakia',\n        },\n        {\n            id: 'si',\n            name: 'Slovenia',\n        },\n        {\n            id: 'sb',\n            name: 'Solomon Islands',\n        },\n        {\n            id: 'so',\n            name: 'Somalia',\n        },\n        {\n            id: 'za',\n            name: 'South Africa',\n        },\n        {\n            id: 'gs',\n            name: 'South Georgia And The South Sandwich Islands',\n        },\n        {\n            id: 'es',\n            name: 'Spain',\n            number: '+34',\n        },\n        {\n            id: 'lk',\n            name: 'Sri Lanka',\n        },\n        {\n            id: 'sd',\n            name: 'Sudan',\n        },\n        {\n            id: 'sr',\n            name: 'Suriname',\n        },\n        {\n            id: 'sj',\n            name: 'Svalbard And Jan Mayen',\n        },\n        {\n            id: 'sz',\n            name: 'Swaziland',\n        },\n        {\n            id: 'se',\n            name: 'Sweden',\n            number: '+46',\n        },\n        {\n            id: 'ch',\n            name: 'Switzerland',\n        },\n        {\n            id: 'sy',\n            name: 'Syrian Arab Republic',\n        },\n        {\n            id: 'tw',\n            name: 'Taiwan, Province Of China',\n        },\n        {\n            id: 'tj',\n            name: 'Tajikistan',\n        },\n        {\n            id: 'tz',\n            name: 'Tanzania, United Republic Of',\n        },\n        {\n            id: 'th',\n            name: 'Thailand',\n        },\n        {\n            id: 'tl',\n            name: 'Timor-leste',\n        },\n        {\n            id: 'tg',\n            name: 'Togo',\n        },\n        {\n            id: 'tk',\n            name: 'Tokelau',\n        },\n        {\n            id: 'to',\n            name: 'Tonga',\n        },\n        {\n            id: 'tt',\n            name: 'Trin{idad And Tobago',\n        },\n        {\n            id: 'tn',\n            name: 'Tunisia',\n        },\n        {\n            id: 'tr',\n            name: 'Turkey',\n        },\n        {\n            id: 'tm',\n            name: 'Turkmenistan',\n        },\n        {\n            id: 'tc',\n            name: 'Turks And Caicos Islands',\n        },\n        {\n            id: 'tv',\n            name: 'Tuvalu',\n        },\n        {\n            id: 'ug',\n            name: 'Uganda',\n        },\n        {\n            id: 'ua',\n            name: 'Ukraine',\n        },\n        {\n            id: 'ae',\n            name: 'United Arab Emirates',\n        },\n        {\n            id: 'gb',\n            name: 'United Kingdom',\n            number: '+44',\n        },\n        {\n            id: 'us',\n            name: 'United States',\n        },\n        {\n            id: 'um',\n            name: 'United States Minor Outlying Islands',\n        },\n        {\n            id: 'uy',\n            name: 'Uruguay',\n        },\n        {\n            id: 'uz',\n            name: 'Uzbekistan',\n        },\n        {\n            id: 'vu',\n            name: 'Vanuatu',\n        },\n        {\n            id: 'va',\n            name: 'Vatican City State',\n        },\n        {\n            id: 've',\n            name: 'Venezuela, Bolivarian Republic Of',\n        },\n        {\n            id: 'vn',\n            name: 'Viet Nam',\n        },\n        {\n            id: 'vg',\n            name: 'Virgin Islands, British',\n        },\n        {\n            id: 'vi',\n            name: 'Virgin Islands, U.s.',\n        },\n        {\n            id: 'wf',\n            name: 'Wallis And Futuna',\n        },\n        {\n            id: 'eh',\n            name: 'Western Sahara',\n        },\n        {\n            id: 'ye',\n            name: 'Yemen',\n        },\n        {\n            id: 'zm',\n            name: 'Zambia',\n        },\n        {\n            id: 'zw',\n            name: 'Zimbabwe',\n        },\n    ],\n    shortNordic: ['se', 'fi', 'pl', 'ee', 'lv', 'lt', 'no', 'dk', 'cz'],\n    shortList: computed(function () {\n        var filterBy;\n        filterBy = this.get('shortNordic');\n        return this.get('countries').filter((country) => {\n            var ref;\n            if (((ref = country.id), indexOf.call(filterBy, ref) >= 0)) {\n                return true;\n            }\n        });\n    }),\n    fullList: computed(function () {\n        return this.get('countries');\n    }),\n    phoneList: computed.filterBy('countries', 'number'),\n});\n\nexport default CountryListsService;\n","define(\"tt4/services/csv\", [\"exports\", \"ember-cli-data-export/services/csv\"], function (_exports, _csv) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _csv.default;\n    }\n  });\n  Object.defineProperty(_exports, \"initialize\", {\n    enumerable: true,\n    get: function get() {\n      return _csv.initialize;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/customer-settings.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CustomerSettingsService;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nCustomerSettingsService = Ember.Service.extend({\n    ttapi: Ember.inject.service(),\n    settings: Em.A([]),\n    getSettings: function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return this.get('ttapi')\n                ._get('/settings')\n                .then((data) => {\n                    this.set('settings', data);\n                    return resolve(data);\n                })\n                .catch((reason) => {\n                    return reject(reason);\n                });\n        });\n    },\n    /*\n  return new Em.RSVP.Promise( (resolve, reject) =>\n      url = config.APP.TTAPI+'/settings'\n      $.ajax(\n          url: url\n          type: 'GET'\n\n          success: (data) =>\n              @set \"settings\", data\n              resolve(data)\n\n          error: (reason) ->\n              reject(reason)\n      )\n  )\n  */\n    checkSetting: function (name) {\n        if (!this.get('settings')) {\n            return false;\n        }\n        if (Em.isEmpty(this.get('settings'))) {\n            return false;\n        }\n        if (!this.get('settings').findBy('key', name)) {\n            return false;\n        }\n        if (this.get('settings').findBy('key', name).value === 'on') {\n            return true;\n        } else if (\n            this.get('settings').findBy('key', name).value &&\n            this.get('settings').findBy('key', name).value !== 'off'\n        ) {\n            return this.get('settings').findBy('key', name).value;\n        } else {\n            return false;\n        }\n    },\n    setSetting: function (name, value, worktimegroup) {\n        var obj, settingsArr, url;\n        // do not change sessions settings if changing state of worktimegroup specific setting\n        if (!worktimegroup) {\n            if (this.get('settings') && !Em.isEmpty(this.get('settings'))) {\n                if (this.get('settings').findBy('key', name)) {\n                    //save new value and push to settings property\n                    obj = this.get('settings').findBy('key', name);\n                    obj.value = value;\n                    this.get('settings').removeObject(this.get('settings').findBy('key', name));\n                    this.get('settings').pushObject(obj);\n                } else {\n                    this.get('settings').pushObject({\n                        key: name,\n                        value: value,\n                    });\n                }\n            } else {\n                settingsArr = Em.A([]);\n                settingsArr.pushObject({\n                    key: name,\n                    value: value,\n                });\n                this.set('settings', settingsArr);\n            }\n        }\n        //save setting to the ttapi\n        url = '/settings/save';\n        return this.get('ttapi').request(url, {\n            type: 'POST',\n            dataType: 'text',\n            data: {\n                key: name,\n                value: value,\n                worktimegroup: worktimegroup,\n            },\n        });\n    },\n});\n\nexport default CustomerSettingsService;\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport config from '../config/environment';\nimport { get } from '@ember/object';\n/* global cordova */\n\nexport default Service.extend({\n    session: service(),\n    moment: service(),\n    flags: service(),\n    //initapp: service(),\n    collector: service('collector-service'),\n\n    // This would IMO be the more elegant solution but did not trigger at any point. Dunno why...\n    // init() {\n    //     this._super(...arguments)\n    //     this.initapp.one('appReady', this.start())\n    // },\n    start() {\n        this.setContext();\n    },\n\n    setContext() {\n        window.dap = {};\n        this.setLanguageMethod();\n        this.setUserContext();\n        this.setCompanyContext();\n        this.getCustomerProduct();\n    },\n\n    setLanguageMethod() {\n        if (!window.get_language) {\n            window.get_language = function () {\n                const lang = localStorage.getItem('lang')\n                    ? localStorage.getItem('lang')\n                    : moment.locale();\n                if (lang === 'en' || !lang) {\n                    return '';\n                } else {\n                    return lang;\n                }\n            };\n        }\n    },\n\n    getCustomerProduct() {\n        if (!window.getProduct) {\n            window.getProduct = function (product) {\n                return window.dap.company.products.indexOf(product) != -1 ? true : false;\n            };\n        }\n    },\n\n    async setUserContext() {\n        const userData = this.session.currentUser;\n\n        const userParsedData = {\n            key: userData.partnerid + '' + userData.id,\n            id: userData.id,\n            userlevel: parseInt(userData.userlevel),\n            application: window.cordova ? true : false,\n            version: config.APP.version,\n            userCreated: moment(get(userData.row_info, 'created')).valueOf(),\n            flags: this.flags.allFlags(),\n            firstname: userData.firstname,\n            lastname: userData.lastname,\n            language: localStorage.getItem('lang') ? localStorage.getItem('lang') : moment.locale(),\n        };\n\n        if (window.cordova) {\n            userParsedData.appVersion = await cordova.getAppVersion.getVersionNumber();\n        }\n\n        window.dap.user = userParsedData;\n\n        return;\n    },\n\n    setCompanyContext() {\n        const userData = this.session.currentUser;\n\n        let customProducts = {};\n        const companyParsedData = {\n            partnerid: userData.partnerid,\n            company_name: userData.company,\n            vatin: userData.company_info.company_vatin,\n            country: userData.company_info.country,\n            serviceType: config.brand,\n            serviceCreated: moment(get(userData.company_info.row_info, 'created')).valueOf(),\n            products: this.collector.products,\n        };\n        for (var product of this.collector.products) {\n            customProducts[product] = 1;\n        }\n        window.dap.product_objects = customProducts;\n        window.dap.company = companyParsedData;\n\n        return;\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/dialogs.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DialogsService;\n\nimport Ember from 'ember';\n\nimport { alertify } from '@labeg/alertify.js';\n\nDialogsService = Ember.Service.extend({\n    intl: Ember.inject.service(),\n    confirm: function (message) {\n        if ('function' !== typeof Promise) {\n            return new Ember.RSVP.Promise((resolve, reject) => {\n                var val;\n                val = confirm(message);\n                return resolve(val);\n            });\n        } else {\n            return alertify\n                .okBtn(this.get('intl').t('general.yes'))\n                .cancelBtn(this.get('intl').t('general.no'))\n                .confirm(message)\n                .then(function (resolvedValue) {\n                    resolvedValue.event.preventDefault();\n                    if (resolvedValue.buttonClicked === 'ok') {\n                        return true;\n                    } else {\n                        return false;\n                    }\n                });\n        }\n    },\n    alert: function (message) {\n        return alertify.okBtn('OK').alert(message);\n    },\n    prompt: function (message, def) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return alertify\n                .defaultValue(def)\n                .okBtn(this.get('intl').t('general.save'))\n                .cancelBtn(this.get('intl').t('general.cancel'))\n                .prompt(\n                    message,\n                    (str, e) => {\n                        e.preventDefault();\n                        return resolve(str);\n                    },\n                    (e) => {\n                        e.preventDefault();\n                        return resolve(false);\n                    },\n                );\n        });\n    },\n});\n\nexport default DialogsService;\n","import Service, { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport { isArray } from '@ember/array';\n\n/**\n * Handles all operations that have to do with errors\n *\n * ```js\n * @service errorHandler;\n * this.errorHandler.notify(<yourError>)\n * ```\n *\n * @class ErrorHandlerService\n * @constructor\n * @public\n */\n\nexport default class ErrorHandlerService extends Service {\n    @service private intl: any;\n    @service private notifications: any;\n\n    public toError(error: any) {\n        if (this._capiError(error)) return this._capiError(error);\n        if (this._networkError(error)) return this._networkError(error);\n\n        let message = JSON.stringify(error);\n        if (get(error, 'payload.message')) message = get(error, 'payload.message');\n        else if (error.message) message = error.message;\n        return {\n            type: 'unknown',\n            error,\n            message: this.tryToTranslateMessage(message),\n            meta: null,\n        };\n    }\n\n    /**\n     * Use notifications to show user to error. Can be used directly in promise fail\n     * EXAMPLE: promise.then(..., (reason) => get(this, 'error').notify(reason)))\n     * @method notify\n     * @param {*} error\n     */\n    public notify(error: any) {\n        this.notifications.error(this.errorToString(error), { autoClear: true });\n    }\n\n    public errorToString(error: any) {\n        if (!error) return;\n        // try to get message first from .message and if not found check also .error\n        return this.toError(error)!.message\n            ? this.toError(error)!.message\n            : this.toError(error)!.error;\n    }\n\n    private tryToTranslateMessage(message: any) {\n        if (typeof message !== 'string') return message;\n        const strippedMessage = message.toLowerCase().replace(/ /g, ' ');\n        if (this.intl.exists('error.' + strippedMessage)) {\n            return this.intl.t('error.' + strippedMessage);\n        }\n        return message;\n    }\n\n    /**\n     * FORMAT EXAMPLE\n     *  if application adapter has normalized error it looks like this\n     *  {\n     *      message: 'Request was rejected because user is not permitted to perform this operation.'\n     *      name: 'Error'\n     *      payload: {\n     *          error: 'overlap',\n     *          error_msg: 'two or more rows have overlapping dates'\n     *          meta: {hits: 'worktime', ids: Array(1)\n     *      }\n     *      stack: ....\n     *  }\n     *\n     *  OR\n     *  if application adapter has not normalized error it looks like this\n     *  {\n     *      errors: [\n     *          {\n     *              error: 'overlap'\n     *              errorMeta: {hits: 'absence', ids: Array(1)}\n     *              error_msg: 'two or more rows have overlapping dates'\n     *          }\n     *      ]\n     *      message: 'Ember Data Request POST http://localhost:30001/abcenses returned a 403 .....\n     *      name: 'Error'\n     *\n     *  @method _capiError\n     *  @param {any} error\n     *  @return {object}\n     */\n    private _capiError(error: any) {\n        if (typeof error !== 'object') return null;\n        let ret = null;\n        let errors = 'errors';\n        if (isArray(get(error, 'errors'))) {\n            errors = 'errors.0';\n        }\n\n        if (get(error, 'payload.error')) {\n            ret = {\n                type: 'capi',\n                error: get(error, 'payload.error'),\n                message: get(error, 'payload.error_msg'),\n                meta: get(error, 'payload.meta'),\n            };\n        } else if (get(error, errors + '.error')) {\n            ret = {\n                type: 'capi',\n                error: get(error, errors + '.error'),\n                message: get(error, errors + '.error_msg'),\n                meta: get(error, errors + '.errorMeta'),\n            };\n        } else {\n            return null;\n        }\n\n        switch (ret.error) {\n            case 'overlap':\n                if (ret.meta.hits === 'absence')\n                    ret.message = this.intl.t('validation.absence_overlap');\n                else if (ret.meta.hits === 'comp')\n                    ret.message = this.intl.t('validation.comp_overlap');\n                else ret.message = this.intl.t('validation.worktime_overlap');\n                break;\n            case 'no_holidays':\n                ret.message = this.intl.t('validation.no_holidays', {\n                    daysleft: ret.meta.daysleft,\n                });\n                break;\n            case 'no_holidaypays':\n                ret.message = this.intl.t('validation.no_holidaypays', {\n                    daysleft: ret.meta.daysleft,\n                });\n                break;\n            case 'id06checkfailed':\n                const errorCode = ret.meta.message;\n\n                if (errorCode === 'not found') {\n                    ret.message = this.intl.t('validation.error.id06_not_found');\n                } else if (errorCode) {\n                    const translationKey = `user.action.checkid06.reason_${errorCode}`;\n                    if (this.intl.exists(translationKey)) ret.message = this.intl.t(translationKey);\n                    else ret.message = this.intl.t('user.action.id06check');\n                }\n                break;\n            case 'not_only_row':\n                ret.message = this.intl.t('validation.worktime_not_only_row');\n                break;\n            case 'not_found':\n                ret.message = this.intl.t('validation.not_found.general');\n                break;\n            case 'validation_error':\n                ret.message = this.intl.exists('validation.' + ret.message)\n                    ? this.intl.t('validation.' + ret.message)\n                    : ret.message;\n                break;\n            case 'not_allowed':\n                ret.message = this.intl.exists('validation_error.' + ret.error)\n                    ? this.intl.t('validation_error.' + ret.error)\n                    : ret.message;\n        }\n\n        return ret;\n    }\n\n    /**\n     * FORMAT EXAMPLE\n     *  {\n     *      message: 'The ajax operation was aborted'\n     *      name: 'Error'\n     *      payload: null\n     *      stack: ....\n     *  @method _networkError\n     *  @param {any} error\n     *  @return {object}\n     */\n    private _networkError(error: any) {\n        if (typeof error !== 'object') return null;\n        if (error.message !== 'The ajax operation was aborted') return null;\n\n        return {\n            type: 'network',\n            error: error.message,\n            message: this.intl.t('validation.network_error'),\n            meta: null,\n        };\n    }\n}\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport { isArray } from '@ember/array';\nimport { htmlSafe } from '@ember/template';\n\nexport default Service.extend({\n    intl: service(),\n    notifications: service(),\n    store: service(),\n\n    toString(error) {\n        // try to get message first from .message and if not found check also .error\n        return this.toError(error).message\n            ? this.toError(error).message\n            : this.toError(error).error;\n    },\n\n    /**\n     * Same as toString but async so this is able to add meta.hits info also to response string\n     * return string as safeHtml\n     * @param {*} error\n     */\n    async toStringAsyncHTML(error) {\n        const errorObj = this.toError(error);\n\n        await this.addPossibleHitsToMessage(errorObj);\n\n        // try to get message first from .message and if not found check also .error\n        const message = errorObj.message ? errorObj.message : errorObj.error;\n\n        return htmlSafe(message.replace(/\\n/g, '<br>'));\n    },\n\n    toError(error) {\n        if (this._vastuuGroupError(error)) return this._vastuuGroupError(error);\n        if (this._capiError(error)) return this._capiError(error);\n        if (this._networkError(error)) return this._networkError(error);\n\n        let message = JSON.stringify(error);\n        if (get(error, 'payload.message')) message = get(error, 'payload.message');\n        else if (error.message) message = error.message;\n\n        return {\n            type: 'unknown',\n            error: error,\n            message: this.tryToTranslateMessage(message),\n            meta: null,\n        };\n    },\n\n    /**\n     * Use notifications to show user to error. Can be used directly in promise fail\n     * EXAMPLE: promise.then(..., (reason) => get(this, \"error\").notify(reason)))\n     * @param {*} error\n     */\n    async notify(error) {\n        const message = await this.toStringAsyncHTML(error);\n        get(this, 'notifications').error(message, { autoClear: true });\n    },\n\n    tryToTranslateMessage(message) {\n        if (typeof message !== 'string') return message;\n        const stripped_message = message.toLowerCase().replace(/ /g, '_');\n        if (get(this, 'intl').exists('error.' + stripped_message))\n            return get(this, 'intl').t('error.' + stripped_message);\n        return message;\n    },\n\n    /**\n     * FORMAT EXAMPLE\n     *  if application adapter has normalized error it looks like this\n     *  {\n     *      message: \"Request was rejected because user is not permitted to perform this operation.\"\n     *      name: \"Error\"\n     *      payload: {\n     *          error: \"overlap\",\n     *          error_msg: \"two or more rows have overlapping dates\"\n     *          meta: {hits: \"worktime\", ids: Array(1)\n     *      }\n     *      stack: ....\n     *  }\n     *\n     *  OR\n     *  if application adapter has not normalized error it looks like this\n     *  {\n     *      errors: [\n     *          {\n     *              error: \"overlap\"\n     *              errorMeta: {hits: \"absence\", ids: Array(1)}\n     *              error_msg: \"two or more rows have overlapping dates\"\n     *          }\n     *      ]\n     *      message: \"Ember Data Request POST http://localhost:30001/abcenses returned a 403 .....\n     *      name: \"Error\"\n     */\n    _capiError(error) {\n        if (typeof error !== 'object') return null;\n        let ret = null;\n        let errors = 'errors';\n        if (isArray(get(error, 'errors'))) {\n            errors = 'errors.0';\n        }\n        if (get(error, 'payload.error')) {\n            ret = {\n                type: 'capi',\n                error: get(error, 'payload.error'),\n                message: get(error, 'payload.error_msg'),\n                meta: get(error, 'payload.meta'),\n            };\n        } else if (get(error, errors + '.error')) {\n            ret = {\n                type: 'capi',\n                error: get(error, errors + '.error'),\n                message: get(error, errors + '.error_msg'),\n                meta: get(error, errors + '.errorMeta'),\n            };\n        } else {\n            return null;\n        }\n\n        switch (ret.error) {\n            case 'overlap':\n                if (ret.meta.hits == 'absence')\n                    ret.message = get(this, 'intl').t('validation.absence_overlap');\n                else if (ret.meta.hits == 'comp')\n                    ret.message = get(this, 'intl').t('validation.comp_overlap');\n                else ret.message = get(this, 'intl').t('validation.worktime_overlap');\n                break;\n            case 'not_only_row':\n                ret.message = get(this, 'intl').t('validation.worktime_not_only_row');\n                break;\n            case 'not_found':\n                ret.message = get(this, 'intl').t('validation.not_found.general');\n                break;\n            case 'validation_error':\n                ret.message = this.intl.exists('validation.' + ret.message)\n                    ? this.intl.t('validation.' + ret.message)\n                    : ret.message;\n                break;\n            case 'form_field_exists':\n                ret.message = get(this, 'intl').t('formeditor.field_exists');\n                break;\n        }\n\n        return ret;\n    },\n\n    /**\n     * FORMAT EXAMPLE\n     *  {\n     *      message: \"The ajax operation was aborted\"\n     *      name: \"Error\"\n     *      payload: null\n     *      stack: ....\n     */\n    _networkError(error) {\n        if (typeof error !== 'object') return null;\n        if (error.message !== 'The ajax operation was aborted') return null;\n\n        return {\n            type: 'network',\n            error: error.message,\n            message: get(this, 'intl').t('validation.network_error'),\n            meta: null,\n        };\n    },\n\n    /**\n     * FORMAT EXAMPLE for VastuuGroup Reliable Partner API errors\n     * Error object structure:\n     * {\n     *     message: \"Request failed with status code 403\"\n     *     payload: {\n     *         response_body: \"{\\\"detail\\\":\\\"No active license.\\\",\\\"error\\\":\\\"license_missing\\\",\\\"product_plan_id\\\":\\\"\\\",\\\"product_family_id\\\":\\\"Valvoja\\\",\\\"product_name\\\":\\\"Valvoja rajapinta\\\"}\"\n     *     }\n     * }\n     *\n     * Parsed response_body contains:\n     * - detail: Human-readable error message (required)\n     * - error: Error code for programmatic handling (optional)\n     * - product_name: Name of the product/service (optional)\n     * - product_family_id: Product family identifier (optional)\n     * - product_plan_id: Product plan identifier (optional)\n     *\n     * @see https://api.vastuugroup.fi/api-docs#tag/Luotettava-Kumppani-API-v1.1\n     */\n\n    _vastuuGroupError(error) {\n        // Validate error structure - must have response body\n        if (!error?.payload?.response_body) return null;\n\n        try {\n            // Parse JSON response body\n            const body = JSON.parse(error.payload.response_body);\n\n            // Detail field is required for vastuugroup errors\n            if (!body?.detail) return null;\n\n            // error message prefix\n            const errorPrefix = this.intl.t('general.error_prefix');\n\n            // Build error message, append product name if available\n            const message = body.product_name\n            ? `${errorPrefix} ${body.detail} (${body.product_name})`\n            : `${errorPrefix} ${body.detail}`;\n\n            // Return normalized error object\n            return {\n            type: 'vastuugroup',\n            error: body.error || 'unknown_error',\n            message,\n            meta: {\n                product_name: body.product_name,\n                product_family_id: body.product_family_id,\n                product_plan_id: body.product_plan_id,\n            },\n            };\n        } catch {\n            // Invalid JSON in response body\n            return error;\n        }\n    },\n\n    async addPossibleHitsToMessage(error) {\n        if (!error.meta) return;\n\n        if (error.meta.hits === 'absence') {\n            const absences = await this.store.query('abcense', {\n                id: error.meta.ids.join(','),\n                sideload: true,\n            });\n            absences.forEach((item) => {\n                error.message += `\\n - ${get(item, 'abcensetype.name')} ${moment(get(item, 'startdate')).format('L')} - ${moment(get(item, 'enddate')).format('L')}`;\n            });\n        }\n\n        if (error.meta.hits === 'worktime') {\n            const worktimes = await this.store.query('worktime', {\n                id: error.meta.ids.join(','),\n                sideload: true,\n            });\n            worktimes.forEach((item) => {\n                error.message += `\\n - ${moment(get(item, 'date')).format('L')} ${get(item, 'project.name')} ${get(item, 'starttime')} - ${get(item, 'endtime')}`;\n            });\n        }\n\n        if (error.meta.hits === 'comp') {\n            const worktimes = await this.store.query('worktime', {\n                id: error.meta.ids.join(','),\n                sideload: true,\n            });\n            worktimes.forEach((item) => {\n                error.message += `\\n - ${get(item, 'project.name')} ${moment(get(item, 'date')).format('L')}`;\n            });\n        }\n    },\n});\n","import Service from '@ember/service';\nimport Evented from '@ember/object/evented';\nimport { inject as service } from '@ember/service';\n\nexport default Service.extend(Evented, {\n    lastTimeResumed: null,\n    started: null,\n    sessionhelper: service(),\n\n    init() {\n        this._super();\n        this.lastTimeResumed = new Date();\n        this.started = new Date();\n    },\n\n    storeEvent(action, type, record) {\n        this.trigger('storeEvent', { action: action, type: type, record: record });\n    },\n\n    resumed(params = {}) {\n        // if token will expire in 5 minutes, do not trigger onResumed\n        // application-controller should handle token-refresh if token is about to expire\n        // also if app is in offline-mode do not trigger onResumed\n        if (this.sessionhelper.tokenWillExpireIn(5) || this.sessionhelper.isOffline()) {\n            // eslint-disable-next-line no-console\n            console.log('evented.resumed.tokenHasExpired'); // debugging why users are being logged off from dashboard, we should see this debugging-line in sentry if dashboard doesn't trigger onResumed when token was expired\n            return;\n        } else {\n            // eslint-disable-next-line no-console\n            console.log('evented.resumed triggering onResumed'); // if token wasn't expired, we should see this debugging-line in sentry\n        }\n\n        // duration is time from last event in seconds .. first resume is calculated from initilization\n        params.duration = (new Date() - this.lastTimeResumed) / 1000;\n        this.lastTimeResumed = new Date();\n        params.ontime = (new Date() - this.started) / 1000;\n        this.trigger('onResumed', params);\n    },\n\n    getOntime() {\n        return (new Date() - this.started) / 1000;\n    },\n\n    dashboardProjectChanged(project) {\n        this.trigger('dashboardProjectChanged', { project });\n    },\n\n    // this is triggered in components/collector/form-add/component.js\n    // when onChange action is called in form-add\n    // why? because we need to know when user has changed fields in form-add\n    // ie. when user has changed project, we need to know that so we can update distance to project\n    formAddFieldChanged(fieldName, value) {\n        this.trigger('formAddFieldChanged', { fieldName, value });\n    },\n\n    // this is triggered in services/gps2.js\n    // when gps position is changed or reset\n    // why? because we need to know when users gps position has changed\n    gpsLockedPositionChanged(lockedPosition) {\n        this.trigger('gpsLockedPositionChanged', { lockedPosition });\n    },\n});\n","define(\"tt4/services/excel\", [\"exports\", \"ember-cli-data-export/services/excel\"], function (_exports, _excel) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _excel.default;\n    }\n  });\n  Object.defineProperty(_exports, \"initialize\", {\n    enumerable: true,\n    get: function get() {\n      return _excel.initialize;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/export-file.coffee.old\n// Generated by CoffeeScript 2.6.1\nimport Service from '@ember/service';\n\nexport default Service.extend({\n    exportFile: function (content, filename = 'export', type = 'txt', base64 = false) {\n        var fullFileName;\n        fullFileName = filename + '.' + type;\n        if (typeof LocalFileSystem !== 'undefined' && LocalFileSystem !== null) {\n            return this._exportLocalFile(content, fullFileName, 'text/' + type);\n        } else {\n            //download file for desktop\n            return this._createExportLink(content, fullFileName, 'attachment/' + type, base64);\n        }\n    },\n    _exportLocalFile: function (content, fullFileName, mime) {\n        return window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) {\n            return fileSystem.root.getFile(\n                fullFileName,\n                {\n                    create: true,\n                },\n                function (entry) {\n                    var fileEntry;\n                    fileEntry = entry;\n                    return entry.createWriter(function (writer) {\n                        //write file and open\n                        writer.onwrite = function (evt) {\n                            return cordova.plugins.fileOpener2.open(fileEntry.toURL(), mime);\n                        };\n                        return writer.write(encodeURIComponent(content));\n                    });\n                },\n            );\n        });\n    },\n    _createExportLink: function (content, fullFileName, mime, base64) {\n        var a;\n        a = document.createElement('a');\n        if (base64) {\n            a.href = 'data:' + mime + ';base64,' + encodeURIComponent(content);\n        } else {\n            a.href = 'data:' + mime + ',' + encodeURIComponent(content);\n        }\n        a.target = '_blank';\n        a.download = fullFileName;\n        document.body.appendChild(a);\n        return a.click();\n    },\n});\n","/* eslint-disable ember/named-functions-in-promises */\nimport Service, { inject as service } from '@ember/service';\nimport { set, get } from '@ember/object';\nimport formReport from '../pods/collector/report-comp/component';\nimport { getSums } from 'tt4/utils/sumrow-util';\n\n/*\nThis service transforms json to excel via ttapi2\n\nfor createExcelFromJSON(json), the JSON should be like this:\nnote: only ROWS are required\n\n{\n\"filters\":[\n        [\"project:\", \"test project\"]\n        [\"date\", \"Ke, 1.5.2019 - Ti, 10.9.2019\"]\n    ],\n\"columns\":[\n        { \"name\": \"Name\", \"key\": \"name\"},\n        { \"name\": \"Other\", \"key\": \"key_other\"}\n    ],\n\"rows\":[\n        { \"name\": \"John Doe\", \"key_other\": \"other info\"},\n        { \"name\": \"Harry Barry\", \"key_other\": \"extra info\"}\n    ],\n\"name\": \"file name .xlsx extension is optional\"\n}\n\n*/\n\nexport default Service.extend({\n    ttapi2: service(),\n    collector: service('collector-service'),\n    session: service(),\n    sessionGlobals: service(),\n    store: service(),\n    intl: service(),\n    flags: service(),\n    dialogs: service(),\n\n    createExcelJSONFromForm(form, model, columns, filters = [], sumRow = false) {\n        let excelJSON = {};\n        const formatAsNumbers = ['hours'];\n\n        let excelColumns = columns.map((column) => {\n            const ret = {\n                name: get(column, 'name.string') || get(column, 'name'),\n                key: get(column, 'ext'),\n            };\n            if (\n                formatAsNumbers.includes(column.obj.type) &&\n                this.flags.test('excel-hours-with-decimals')\n            )\n                ret.numFmt = '0.000';\n            return ret;\n        });\n\n        let rows = this.formatModelToJSON(form, model, columns);\n\n        excelJSON['filters'] = filters;\n        excelJSON['columns'] = excelColumns;\n        excelJSON['rows'] = rows;\n        if (sumRow) {\n            excelJSON['sumrow'] = sumRow;\n        }\n\n        return excelJSON;\n    },\n\n    /*\n        Give this function the form, the model, and the columns/fields on the form (@get('defaultcolumns') or similar\n        It will format this information to be displayed properly in an excel, and return it as json\n    */\n    formatModelToJSON(form, model, columns) {\n        let formattedJSON = model.map((row) => {\n            let formattedRow = {};\n            columns.forEach((column) => {\n                let ext = get(column, 'ext');\n                let obj = get(column, 'obj');\n                let cell = get(row, ext);\n                let formatted = get(this, 'collector').format(\n                    cell,\n                    obj,\n                    null,\n                    row,\n                    'serverlessexcel',\n                    form,\n                );\n\n                // do not convert numbers to strings\n                let exportFormatted = null;\n                if (typeof formatted === 'number') {\n                    exportFormatted = formatted;\n                } else if (\n                    ['row_info.created', 'row_info.modified'].includes(ext) &&\n                    row.row_info\n                ) {\n                    exportFormatted = formatted\n                        ? moment(formatted).format('YYYY-MM-DD HH:mm')\n                        : null;\n                } else {\n                    exportFormatted = get(this, 'collector').format_export(formatted);\n                }\n\n                formattedRow[ext] = exportFormatted;\n            });\n            return formattedRow;\n        });\n\n        return formattedJSON;\n    },\n\n    /*\n        Give this function some json and an optional file name, it will call ttapi2 and return a presigned s3 url for the file\n        See json examples from the top\n        Now returns promise so we can close excel-modal when exporting is done\n    */\n    async createExcelFromJSON(json, fileName = null) {\n        return this.createExportFromJSON('excel', json, fileName);\n    },\n\n    async createCsv(form, data, columns) {\n        const json = this.createExcelJSONFromForm(form, data, columns);\n        return this.createExportFromJSON('csv', json);\n    },\n\n    async createExportFromJSON(type, json, fileName = null) {\n        if (!fileName) {\n            const name = get(this, 'session.currentUser.company') || 'movenium_export';\n            json['name'] = name;\n        }\n\n        try {\n            let payload = JSON.stringify(json);\n            let url = `export?type=${type}`;\n\n            // If the payload is larger than 5MB, use compression\n            // This is a workaround for 10MB limit on APIGateway for POST requests\n            // that might be encountered when trying to export large amounts of data.\n            if (payload.length > 5 * 1024 * 1024) {\n                const compressed = await this.compressAndEncodeBase64(json);\n                payload = { data: compressed };\n                url += '&compression=true';\n            }\n\n            const res = await get(this, 'ttapi2').request(url, {\n                data: payload,\n                dataType: 'json',\n                contentType: 'application/json',\n                method: 'POST',\n            });\n\n            this.handleResponse(res);\n        } catch (error) {\n            this.handleError(error);\n        }\n    },\n\n    /**\n     * Takes a JSON object, compresses it using GZIP, and encodes it as Base64\n     * @param {Object} obj Object to be compressed and encoded\n     * @returns {string} Base64 encoded string\n     */\n    async compressAndEncodeBase64(obj) {\n        // Convert the object to a JSON string\n        const jsonString = JSON.stringify(obj);\n\n        // Convert the JSON string to a Uint8Array\n        const encoder = new TextEncoder();\n        const uint8Array = encoder.encode(jsonString);\n\n        // Create a GZIP compression stream\n        const compressionStream = new window.CompressionStream('gzip');\n\n        // Stream the uint8Array through the compression stream\n        const compressedStream = new Blob([uint8Array]).stream().pipeThrough(compressionStream);\n\n        // Collect the compressed chunks into a single Uint8Array\n        const reader = compressedStream.getReader();\n        const chunks = [];\n        let done, value;\n        while ((({ done, value } = await reader.read()), !done)) {\n            chunks.push(value);\n        }\n\n        // Concatenate all chunks into a single Uint8Array\n        const compressedArray = new Uint8Array(\n            chunks.reduce((sum, chunk) => sum + chunk.length, 0),\n        );\n        let offset = 0;\n        for (const chunk of chunks) {\n            // eslint-disable-next-line ember/use-ember-get-and-set\n            compressedArray.set(chunk, offset);\n            offset += chunk.length;\n        }\n\n        // Encode the compressed Uint8Array as Base64\n        // Process the array in chunks to avoid \"too many arguments\" error that would occur with large data\n        let binary = '';\n        const chunkSize = 8192;\n        for (let i = 0; i < compressedArray.length; i += chunkSize) {\n            binary += String.fromCharCode.apply(null, compressedArray.subarray(i, i + chunkSize));\n        }\n        const base64String = window.btoa(binary);\n\n        return base64String;\n    },\n\n    async createBase64ExcelFromJSON(json, fileName = null) {\n        if (!fileName) {\n            let name = get(this, 'session.currentUser.company') || 'movenium_export';\n            json['name'] = name;\n        }\n        try {\n            const response = await get(this, 'ttapi2').request('export?type=excel', {\n                data: JSON.stringify(json),\n                dataType: 'json',\n                contentType: 'application/json',\n                method: 'POST',\n            });\n            if (!response.url) throw new Error('Url not found from response');\n            return await this.getBase64(response);\n        } catch (e) {\n            this.handleError(e);\n        }\n    },\n\n    async getBase64(response) {\n        const resp = await fetch(response.url);\n        const blob = await resp.blob();\n        const reader = new FileReader();\n        const base64 = await new Promise((resolve) => {\n            reader.onload = () => {\n                resolve(reader.result);\n            };\n            reader.readAsDataURL(blob);\n        });\n        return base64.split(',')[1];\n    },\n\n    handleResponse(res) {\n        if (res.url) {\n            const target = window.cordova ? '_system' : undefined;\n            window.open(res.url, target);\n        }\n    },\n\n    handleError(e) {\n        this.dialogs.alert(e.message || e);\n    },\n\n    async createPdfElement(data, selected, settings, columns, params = {}, includeAllRows = false) {\n        const rows = selected.length > 0 && !includeAllRows ? selected : await data;\n        let component = this.createComponent(rows, settings);\n        if (params.statusInfo)\n            await set(\n                component,\n                'statusInfoRows',\n                await this.getStatusInfoRows(settings.form, await data),\n            );\n        set(component, 'data', data);\n        set(component, 'pdfSettings', params);\n        let formattedSumrow = getSums(\n            rows,\n            columns,\n            settings.form,\n            this.collector,\n            'sumrow',\n        ).firstObject;\n        set(component, 'pdf_formatted_sumRow', formattedSumrow);\n        return await get(component, 'asPdfElement');\n    },\n\n    async createPdfFull(form, selected, filters, showColumns, params = {}, format = null) {\n        let type = form === 'diary' ? 'diary' : 'row';\n        // This is used to create a new stylish pdf with headers on side\n        if (params.layoutOption === 'sideHeaders') type = 'horizontal';\n\n        let url = 'pdf/' + type;\n\n        let postParams = {\n            form: form,\n            lang: moment.locale(),\n            filters: JSON.stringify(filters),\n        };\n\n        if (selected.length !== 0) {\n            postParams.id = selected.mapBy('id').join(',');\n        }\n\n        if (showColumns) {\n            postParams.showColumns = showColumns;\n        }\n\n        if (params.template) {\n            postParams.template = get(params, 'template.id');\n        }\n\n        if (params.signature) {\n            postParams.signature = params.signature;\n        }\n\n        if (params.dateAndPlace) {\n            postParams.dateAndPlace = params.dateAndPlace;\n        }\n\n        if (format) {\n            postParams.type = format;\n        }\n\n        let request = await this.collector.ttapi({\n            method: 'post',\n            dataType: 'text',\n            url: url,\n            data: postParams,\n        });\n\n        if (format === 'base64') {\n            return request;\n        } else {\n            let data = JSON.parse(request);\n            if (data.url) {\n                if (window.cordova) {\n                    window.open(\n                        data.url,\n                        '_system',\n                        'location=yes,enableViewportScale=yes,hidden=no,usewkwebview=yes',\n                    );\n                } else {\n                    window.open(data.url);\n                }\n            }\n        }\n    },\n\n    createComponent(selected, settings) {\n        return formReport.create({\n            store: this.store,\n            intl: this.intl,\n            Collector: this.collector,\n            sessionGlobals: this.sessionGlobals,\n            rowsPerPage: 'all',\n            renderer: this,\n            checked_rows: selected ? selected.map((item) => get(item, 'id')) : [],\n            settings: settings,\n        });\n    },\n\n    async getStatusInfoRows(form, data) {\n        const row_ids = data.mapBy('id');\n        return this.collector.ttapi({\n            url: 'get_status_info',\n            method: 'post',\n            data: {\n                ids: row_ids,\n                form: form,\n            },\n        });\n    },\n});\n","define(\"tt4/services/file-queue\", [\"exports\", \"ember-file-upload/services/file-queue\"], function (_exports, _fileQueue) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _fileQueue.default;\n    }\n  });\n});\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\nimport config from '../config/environment';\nimport RSVP from 'rsvp';\nimport { run } from '@ember/runloop';\nimport { getOwner } from '@ember/application';\nimport { warn, assert } from '@ember/debug';\nimport * as LDClient from 'launchdarkly-js-client-sdk';\n/* global cordova */\n\nconst NON_EXISTANT_FLAG_VALUE = 'LD_FLAG_NON_EXISTANT';\n\nexport default Service.extend({\n    session: service(),\n    collector: service('collector-service'),\n\n    test: function (name) {\n        if (window.overrideFlags && window.overrideFlags[name] !== undefined) {\n            return window.overrideFlags[name];\n        }\n\n        const flags = [\n            {\n                name: 'test',\n                filters: ['beta'],\n            },\n        ];\n\n        const flag = flags.findBy('name', name);\n\n        if (!flag) {\n            return this.variation(name, false);\n        }\n\n        return this.testFlagFilters(flag);\n    },\n\n    testFlagFilters(flag) {\n        if (!flag.filters) return true;\n\n        let all_ok = true;\n        flag.filters.forEach((filter) => {\n            if (filter === 'beta') {\n                if (!this.isBetaService()) all_ok = false;\n            }\n            if (filter === 'A/B') {\n                if (!this.isABtesting()) all_ok = false;\n            }\n        });\n\n        return all_ok;\n    },\n\n    isBetaService() {\n        const betaServices = {\n            dev: [30416],\n            next: [30559, 30547],\n            production: [100132],\n        };\n\n        if (betaServices[this.getENV()].includes(get(this, 'session.currentUser.partnerid')))\n            return true;\n        else return false;\n    },\n\n    isABtesting() {\n        const ABServices = {\n            dev: [],\n            next: [],\n            production: [\n                100132, 102051, 101940, 101852, 101759, 101548, 101100, 100925, 100475, 84285,\n                86547, 30665, 83003, 102120, 102033, 102013, 31620, 86022, 82776, 86043, 30684,\n                82564, 82313, 82373, 31808, 31139,\n            ],\n        }[this.getENV()];\n\n        if (ABServices.includes(get(this, 'session.currentUser.partnerid'))) return true;\n        else return false;\n    },\n\n    getENV() {\n        if (config.target === 'development') return 'dev';\n        if (config.target === 'release-next' || config.target === 'next') return 'next';\n        return 'production';\n    },\n\n    /* LaunchDarkly stuff from here, the above can be removed when old flags are not needed anymore */\n\n    async initialize(data = {}) {\n        let { clientSideId, streaming = false } = this._config();\n\n        const NullClient = {\n            initialize() {},\n            allFlags() {\n                return {};\n            },\n            variation(_, defaultValue) {\n                if (defaultValue !== undefined) {\n                    return defaultValue;\n                }\n\n                return false;\n            },\n        };\n\n        if (!Array.isArray(data['userrow'].user) || !data['userrow'].user.length) {\n            // no need to write logs full of these on tests\n            //warn('data.userrow not specified. Defaulting all feature flags to \"false\"', false, { id: 'launch-darkly.user-data-not-specified' });\n\n            set(this, '_client', NullClient);\n\n            return RSVP.resolve();\n        }\n        // parse partnerid to int if it seems to be numeric\n        const partnerid = isNaN(data.partnerid) ? data.partnerid : parseInt(data.partnerid, 10);\n        const userrow = data['userrow'].user[0];\n        const context = {\n            kind: 'user',\n            key: partnerid + '' + userrow.id,\n            userid: userrow.id,\n            country: data.country,\n            partnerid: partnerid,\n            serviceType: config.brand,\n            userlevel: parseInt(userrow.userlevel, 10),\n            application: window.cordova ? true : false,\n            version: config.APP.version,\n            serviceCreated: moment(data.company_info.row_info.created).valueOf(),\n            products: this.collector.getProducts().join(','),\n        };\n\n        if (window.cordova) {\n            context.custom = {\n                appVersion: await cordova.getAppVersion.getVersionNumber(),\n            };\n        }\n\n        assert(\n            'ENV.launchDarkly.clientSideId must be specified in config/environment.js',\n            clientSideId,\n        );\n\n        if (!clientSideId) {\n            warn(\n                'ENV.launchDarkly.clientSideId not specified. Defaulting all feature flags to \"false\"',\n                false,\n                { id: 'launch-darkly.client-id-not-specified' },\n            );\n\n            set(this, '_client', NullClient);\n\n            return RSVP.resolve();\n        }\n\n        assert('user.key must be specified in initilize payload', context.key);\n\n        if (!context.key) {\n            warn(\n                'user.key not specified in initialize payload. Defaulting all feature flags to \"false\"',\n                false,\n                { id: 'launch-darkly.user-key-not-specified' },\n            );\n\n            set(this, '_client', NullClient);\n\n            return RSVP.resolve();\n        }\n\n        if (!LDClient) {\n            warn(\n                'Launch Darkly JS client not found. Defaulting all feature flags to \"false\"',\n                false,\n                { id: 'launch-darkly.client-not-found' },\n            );\n\n            set(this, '_client', NullClient);\n\n            return RSVP.resolve();\n        }\n\n        if (sessionStorage.overrideFlags) {\n            window.overrideFlags = JSON.parse(sessionStorage.overrideFlags);\n        }\n\n        return this._initialize(clientSideId, context, streaming);\n    },\n\n    _config() {\n        let appConfig = getOwner(this).resolveRegistration('config:environment');\n\n        return appConfig.launchDarkly || {};\n    },\n\n    _initialize(id, context) {\n        return new RSVP.Promise((resolve, reject) => {\n            let client = LDClient.initialize(id, context, {\n                bootstrap: 'localStorage',\n            });\n\n            client.on('ready', () => {\n                set(this, '_client', client);\n                run(null, resolve);\n            });\n\n            // NOTE: Not following changes on flags currently, can be implemented later if we think we need them\n            //   client.on('change', settings => {\n            //     Object.keys(settings).forEach(key => {\n            //         this.trigger(key);\n            //     });\n            //   });\n\n            run.later(\n                this,\n                () => {\n                    if (!get(this, '_client')) {\n                        run(null, reject);\n                    }\n                },\n                5000,\n            );\n        });\n    },\n\n    allFlags() {\n        return get(this, '_client').allFlags();\n    },\n\n    variation(key, defaultValue = false) {\n        if (!get(this, '_client')) {\n            //warn(`client is not initialized. Defaulting feature flag to '${defaultValue}'`, false, { id: 'launch-darkly.client-not-initialized' });\n            return defaultValue;\n        }\n        let nonExistantFlagValue = `${NON_EXISTANT_FLAG_VALUE}: ${key}`;\n        let value = get(this, '_client').variation(key, nonExistantFlagValue);\n\n        if (value === nonExistantFlagValue) {\n            // no need to write logs full of these on tests\n            //warn(`Feature flag with key '${key}' has not been defined. Returning default value of '${defaultValue}'`, false, { id: 'launch-darkly.feature-flag-not-defined' });\n\n            return defaultValue;\n        }\n\n        return value;\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/form-json.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormJsonService;\n\nimport Ember from 'ember';\n\nFormJsonService = Ember.Service.extend({\n    store: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    _validateErrors: [],\n    /*\n  export form as json .. format example\n\n  {\n    \"formname\": {\n      \"objects\": {\n        \"fieldname\": {\n          \"type\": \"date\",\n          \"features\": {\n            \"mandatory\": true\n          }\n        },\n          \"user\": {\n              \"type\": \"database\",\n              \"options\": {\n                \"form\": \"user\",\n                \"fields\": [\n                  \"lastname\",\n                  \"firstname\",\n                  \"number\"\n                ]\n              },\n      },\n      \"features\": {\n          \"mandatory\": true\n      }\n    }\n\n  */\n    exportForm: function (form) {\n        var form_array, json_array;\n        form_array = this._getForm(form);\n        if (form_array) {\n            json_array = {};\n            json_array[form] = form_array;\n            return json_array;\n        }\n    },\n    /*\n  import form or multiple forms from json array\n  */\n    import: function (json) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var form, form_array, promises;\n            promises = [];\n            for (form in json) {\n                form_array = json[form];\n                promises.push(this._importForm(form, form_array));\n            }\n            return Ember.RSVP.Promise.all(promises).then((results) => {\n                var saved;\n                saved = results.filter(function (item) {\n                    return item === 'saved';\n                });\n                return resolve(saved.length > 0);\n            }, reject);\n        });\n    },\n    /*\n  Find changes that are needed and add all fields and settings that aren't found yet\n  */\n    _importForm: function (form, form_array) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var changes, existing_form_array, message, this_is_a_new_form;\n            this.set('_validateErrors', []);\n            existing_form_array = this._getForm(form);\n            changes = this._getNeededChanges(form_array, existing_form_array);\n            this_is_a_new_form = existing_form_array === null;\n            if (!this_is_a_new_form && changes.add.length < 1) {\n                this.get('dialogs').alert('file did not contain anything new');\n                resolve('no_changes');\n                return;\n            }\n            if (this.get('_validateErrors.length') > 0) {\n                this.get('dialogs').alert(\n                    '<b>Importing cannot be done because of these errors:</b><br><br>' +\n                        this.get('_validateErrors').join('<br>'),\n                );\n                resolve('errors');\n                return;\n            }\n            message = this._getConfirmMessage(this_is_a_new_form, form, changes.add);\n            return this.get('dialogs')\n                .confirm(message)\n                .then((ret) => {\n                    var form_name, form_record;\n                    if (!ret) {\n                        resolve('cancelled');\n                        return;\n                    }\n                    console.info('Importing', form);\n                    // form does not exist .. let's create it\n                    if (this_is_a_new_form) {\n                        form_name = form_array.name != null ? form_array.name : '$lang(10)';\n                        form_record = this.get('store').createRecord('form', {\n                            name: form_name,\n                            external_type: form,\n                        });\n                    } else {\n                        form_record = this.get('store')\n                            .peekAll('form')\n                            .findBy('external_type', form);\n                    }\n                    this._addNeededRecords(\n                        form_record,\n                        changes.add,\n                        this._normalizeForm(form_array),\n                    );\n                    return this._saveAllDirtyFormRecords().then(() => {\n                        this.get('dialogs').alert('Form ' + form + ' added and saved to backend');\n                        return resolve('saved');\n                    });\n                });\n        });\n    },\n    // when called all dirty form, form-setting,form-field and form-field-detting records are saved.\n    // records are saved in given order by calling this function recursively\n    _saveAllDirtyFormRecords: function (type = 'form') {\n        return new Ember.RSVP.Promise((resolve) => {\n            var dirtyRecords, promises, save_order;\n            save_order = ['form', 'form-setting', 'form-field', 'form-field-setting'];\n            promises = [];\n            dirtyRecords = this.get('store')\n                .peekAll(type)\n                .filter(function (record) {\n                    return record.get('hasDirtyAttributes');\n                });\n            dirtyRecords.forEach(function (record) {\n                return promises.push(record.save());\n            });\n            return Ember.RSVP.Promise.all(promises).then(() => {\n                var save_next_index;\n                save_next_index = save_order.indexOf(type) + 1;\n                if (save_next_index >= save_order.length) {\n                    resolve();\n                    return;\n                }\n                return this._saveAllDirtyFormRecords(save_order[save_next_index]).then(function () {\n                    return resolve();\n                });\n            });\n        });\n    },\n    // make confirmation message for user to decide whether to import given file or not\n    _getConfirmMessage: function (new_form, form, addChanges) {\n        var message, new_features, new_fields;\n        if (!new_form) {\n            message = 'Add these to exiting form <b>' + form + '</b>?';\n        } else {\n            message = 'Add new form named <b>' + form + '</b>?';\n        }\n        new_fields = addChanges.filter((item) => {\n            return this._testType(item) === 'form-field';\n        });\n        if (new_fields.length > 0) {\n            message += '<br><br><b>Fields:</b> <br>' + new_fields.join('<br>');\n        }\n        new_features = addChanges.filter((item) => {\n            return this._testType(item) === 'form-setting';\n        });\n        new_features = new_features.map(function (item) {\n            return item.split('@')[1].split(':')[0];\n        });\n        if (new_features.length > 0) {\n            message += '<br><br><b>Settings:</b> <br>' + new_features.join('<br>');\n        }\n        return message;\n    },\n    // go through every needed add and create correct type record for it\n    _addNeededRecords: function (form_record, adds, values) {\n        var add, j, len, results1, type;\n        results1 = [];\n        for (j = 0, len = adds.length; j < len; j++) {\n            add = adds[j];\n            type = this._testType(add);\n            results1.push(\n                this.get('store').createRecord(\n                    type,\n                    this._createRecordParams(form_record, add, values[add]),\n                ),\n            );\n        }\n        return results1;\n    },\n    // from key test what is the type of object: form-setting, form-field-setting or form-field\n    _testType: function (key) {\n        if (key.substring(0, 1) === '@') {\n            return 'form-setting';\n        } else if (key.indexOf('@') !== -1) {\n            return 'form-field-setting';\n        } else {\n            return 'form-field';\n        }\n    },\n    // get all the needed parameters to create a record of needed type\n    _createRecordParams: function (form_record, key, values) {\n        var feature_name, field_name, field_record, form_fields, type;\n        type = this._testType(key);\n        if (type === 'form-field') {\n            field_name = values.name || '$lang(10)';\n            return {\n                form: form_record,\n                type: values.type,\n                name: field_name,\n                external_type: key,\n                options: values.options,\n                nro: values.nro,\n            };\n        }\n        if (type === 'form-field-setting') {\n            field_name = key.split('@')[0];\n            feature_name = key.split('@')[1].split(':')[0];\n            form_fields = this.get('store')\n                .peekAll('form-field')\n                .filter(function (item) {\n                    return item.get('form.id') === form_record.get('id');\n                });\n            field_record = form_fields.findBy('external_type', field_name);\n            return {\n                field: field_record,\n                name: feature_name,\n                value: values.value,\n                userlevel: values.userlevel,\n            };\n        }\n        if (type === 'form-setting') {\n            feature_name = key.split('@')[1].split(':')[0];\n            return {\n                form: form_record,\n                name: feature_name,\n                value: values.value,\n                userlevel: values.userlevel,\n            };\n        }\n    },\n    // normalize current forms and needed forms and diff those to get what needs to added and removed\n    _getNeededChanges: function (new_form, old_form) {\n        var add, normalizedCurrent, normalizedNeeded, remove;\n        if (old_form) {\n            normalizedCurrent = this._normalizeForm(old_form);\n        } else {\n            normalizedCurrent = {};\n        }\n        normalizedNeeded = this._normalizeForm(new_form);\n        add = this._array_diff(Object.keys(normalizedNeeded), Object.keys(normalizedCurrent));\n        remove = this._array_diff(Object.keys(normalizedCurrent), Object.keys(normalizedNeeded));\n        return {\n            add: add,\n            remove: remove,\n        };\n    },\n    _array_diff: function (arr1, arr2) {\n        return arr1.filter(function (i) {\n            return arr2.indexOf(i) < 0;\n        });\n    },\n    // get json array and normalize it to array format:\n    // field: <values>\n    // field2: <values>\n    // field2@mandatory: <values>\n    // @somefature: <values>\n    _normalizeForm: function (form_array) {\n        var feature, field_name, field_object, key, normalized, options, ref, ref1, ref2, values;\n        normalized = {};\n        ref = form_array.objects;\n        for (field_name in ref) {\n            field_object = ref[field_name];\n            key = field_name;\n            options = this._encodeOptions(field_object.type, field_object.options, field_name);\n            normalized[key] = {\n                type: field_object.type,\n                name: field_object.name,\n                options: options,\n                nro: field_object.nro,\n            };\n            ref1 = field_object.features;\n            for (feature in ref1) {\n                values = ref1[feature];\n                key =\n                    field_name + '@' + feature + ':' + 'u' + values.userlevel + 'v' + values.value;\n                normalized[key] = values;\n            }\n        }\n        ref2 = form_array.features;\n        for (feature in ref2) {\n            values = ref2[feature];\n            key = '@' + feature + ':' + 'u' + values.userlevel + 'v' + values.value;\n            normalized[key] = values;\n        }\n        return normalized;\n    },\n    // fetch form from store and return it as array\n    _getForm: function (form) {\n        var formRecord, form_array;\n        formRecord = this.get('store').peekAll('form').findBy('external_type', form);\n        if (!formRecord) {\n            return null;\n        }\n        form_array = {};\n        if (formRecord.get('name') !== '$lang(10)') {\n            form_array.name = formRecord.get('name');\n        }\n        form_array.objects = this._getFormFields(formRecord.get('id'));\n        form_array.features = this._getFormFeatures(formRecord.get('id'));\n        return form_array;\n    },\n    _getFormFields: function (formid) {\n        var field_json, formFields, store;\n        store = this.get('store');\n        formFields = store.peekAll('form-field').filter(function (item) {\n            return item.get('form.id') === formid;\n        });\n        field_json = {};\n        formFields.forEach((formField) => {\n            var formname;\n            formname = formField.get('external_type');\n            field_json[formname] = {\n                type: formField.get('type'),\n                features: this._getFormFieldFeatures(formField),\n                options: this._decodeOptions(formField.get('type'), formField.get('options')),\n                nro: formField.get('nro'),\n            };\n            if (formField.get('name') !== '$lang(10)') {\n                return (field_json[formname].name = formField.get('name'));\n            }\n        });\n        return field_json;\n    },\n    // decode field options to form and fields. options are list of ids in database but we want external_types\n    _decodeOptions: function (type, options) {\n        var fields, id, j, len, options_arr, parsed_options;\n        if (type !== 'database') {\n            return options;\n        }\n        options_arr = options.split(/\\r\\n|\\r|\\n/);\n        if (options_arr.lenght < 1) {\n            return '';\n        }\n        fields = [];\n        for (j = 0, len = options_arr.length; j < len; j++) {\n            id = options_arr[j];\n            fields.push(this.get('store').peekRecord('form-field', id));\n        }\n        parsed_options = {\n            form: fields[0].get('form.external_type'),\n            fields: fields.map(function (item) {\n                return item.get('external_type');\n            }),\n        };\n        return parsed_options;\n    },\n    // encode external_type options back to list of object ids. Add errors to _validateErrors if some linkings cannot\n    // be satisfied\n    _encodeOptions: function (type, options, field_name = '') {\n        var all_form_fields, field, fieldRecord, field_ids, j, len, ref;\n        if (type !== 'database') {\n            return options;\n        }\n        if (!options || options.form == null) {\n            this.get('_validateErrors').push('Field ' + field_name + \" doesn't have link options\");\n            return '';\n        }\n        all_form_fields = this.get('store')\n            .peekAll('form-field')\n            .filter(function (item) {\n                return item.get('form.external_type') === options.form;\n            });\n        if (all_form_fields.length < 1) {\n            this.get('_validateErrors').push(\n                'Field ' +\n                    field_name +\n                    ' has link to form ' +\n                    options.form +\n                    ' which does not exist',\n            );\n            return '';\n        }\n        field_ids = [];\n        ref = options.fields;\n        for (j = 0, len = ref.length; j < len; j++) {\n            field = ref[j];\n            fieldRecord = all_form_fields.findBy('external_type', field);\n            if (!fieldRecord) {\n                this.get('_validateErrors').push(\n                    'Field ' +\n                        field_name +\n                        ' has link to form field ' +\n                        options.form +\n                        '.' +\n                        field +\n                        ' which does not exist',\n                );\n            } else {\n                field_ids.push(fieldRecord.get('id'));\n            }\n        }\n        return field_ids.join('\\n');\n    },\n    _getFormFeatures: function (formid) {\n        var feature_json, formFeatures;\n        formFeatures = this.get('store')\n            .peekAll('form-setting')\n            .filter(function (item) {\n                return item.get('form.id') === formid;\n            });\n        feature_json = {};\n        formFeatures.forEach((formFeature) => {\n            return (feature_json[formFeature.get('name')] = {\n                value: formFeature.get('value'),\n                userlevel: formFeature.get('userlevel'),\n            });\n        });\n        return feature_json;\n    },\n    _getFormFieldFeatures: function (field) {\n        var feature_json, formFieldFeatures;\n        formFieldFeatures = this.get('store')\n            .peekAll('form-field-setting')\n            .filter(function (item) {\n                return item.get('field.id') === field.get('id');\n            });\n        feature_json = {};\n        formFieldFeatures.forEach((formFieldFeature) => {\n            return (feature_json[formFieldFeature.get('name')] = {\n                value: formFieldFeature.get('value'),\n                userlevel: formFieldFeature.get('userlevel'),\n            });\n        });\n        return feature_json;\n    },\n});\n\nexport default FormJsonService;\n","import { isEmpty, isPresent } from '@ember/utils';\nimport Service, { inject as service } from '@ember/service';\nimport { decamelize, underscore } from '@ember/string';\nimport { assert } from '@ember/debug';\nimport EmberError from '@ember/error';\nimport {\n    IFormsInterface,\n    IForms,\n    IField,\n    IFormField,\n    IFormObjects,\n} from 'tt4/ember-movenium/interfaces/forms';\nimport CollectorService from 'tt4/injections/services/collector-service';\n\n/**\n * Handles all operations that have to do with collector forms\n *\n * <strong>Forms must be set for this service to function</strong>\n *\n * From your application, assign your forms to this service's forms property\n * ```js\n * @service forms;\n * this.forms.forms = <yourForms>\n * ```\n *\n * @class FormsService\n * @constructor\n * @public\n */\nexport default class FormsService extends Service implements IForms {\n    @service private intl: any;\n    @service('collector-service' as any) protected Collector: CollectorService;\n\n    /**\n     * Internal property to store the forms for future use.\n     * To get or set forms use `this.forms`\n     * @property { object } _forms\n     * @private\n     */\n    private _forms = {};\n\n    constructor() {\n        super(...arguments);\n    }\n\n    get forms(): IFormsInterface {\n        return this._forms;\n    }\n\n    /**\n     * Forms must be set for this service to function\n     * From your application, assign your forms to this property\n     * ```js\n     * @service forms;\n     * this.forms.forms = <yourForms>\n     * ```\n     * @property { object } forms\n     */\n    set forms(forms: IFormsInterface) {\n        this._forms = forms;\n    }\n\n    /**\n     * Returns all fields of a form\n        @method fields\n        @param {string} form\n        @return {object}\n    */\n    public fields(form: string): IFormObjects {\n        if (isEmpty(this.forms)) {\n            return {};\n        }\n        if (!form) {\n            {\n                return {};\n            }\n        }\n\n        form = decamelize(form);\n        form = underscore(form);\n\n        if (!this.forms.hasOwnProperty(form)) {\n            throw new EmberError(\"forms service fields: form '\" + form + \"' not found\");\n        }\n\n        return this.forms[form].objects;\n    }\n\n    /**\n     * Returns the field of a form with additional properties\n     * @method field\n     * @param {string} form\n     * @param {string} fieldName\n     * @return {object}\n     */\n    public field(form: string, fieldName: string): IFormField {\n        form = decamelize(underscore(form));\n        const field = this.formField(form, fieldName);\n        assert('Field ' + fieldName + ' is not found from form ' + form, field);\n        return {\n            form,\n            name: fieldName,\n            type: field.type,\n            translated_name: this.Collector.getTranslationForColumn(form, fieldName),\n            options: field.options,\n            features: field.features,\n        };\n    }\n\n    /**\n     * Returns the <strong>raw, unaltered</strong> field of a form\n     * @method formField\n     * @param {string} form\n     * @param {string} field\n     * @return {object}\n     */\n    public formField(form: string, field: string): IField {\n        return this.fields(form)[field];\n    }\n\n    public fieldArray(form: string): IFormField[] {\n        form = decamelize(underscore(form));\n        const fields: IFormObjects = this.fields(form);\n        const ret: IFormField[] = [];\n        Object.keys(fields).forEach((key) => {\n            const field = fields[key];\n            ret.push({\n                form,\n                name: key,\n                translated_name: this.Collector.getTranslationForColumn(form, key),\n                type: field.type,\n                options: field.options,\n                features: field.features,\n            });\n        });\n        return ret;\n    }\n\n    public formExists(name: string) {\n        if (!this.forms) return;\n        return this.forms[name];\n    }\n\n    public fieldExists(form: string, name: string): boolean {\n        if (!this.formExists(form)) return false;\n        return isPresent(this.forms[form].objects[name]);\n    }\n}\n","define(\"tt4/services/google-charts\", [\"exports\", \"ember-google-charts/services/google-charts\"], function (_exports, _googleCharts) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _googleCharts.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/google.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GoogleService;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport { computed } from '@ember/object';\n\nimport $ from 'jquery';\n\nGoogleService = Ember.Service.extend({\n    directionsService: computed(function () {\n        if (Em.testing) {\n            return;\n        }\n        return new window.google.maps.DirectionsService();\n    }),\n    key: config.APP.GM_KEY,\n    // this tries to fetch metadata from streetview\n    // and use that data to determine if streetview-image is available or not\n    getMetadata: function (lat, lon) {\n        return new Em.RSVP.Promise((resolve) => {\n            return $.ajax({\n                beforeSend: function (request) {},\n                //request.setRequestHeader 'Authorization', ' '\n                url:\n                    'https://maps.googleapis.com/maps/api/streetview/metadata?size=600x300&location=' +\n                    lat +\n                    ',' +\n                    lon +\n                    '&heading=0&pitch=-0.76&key=' +\n                    this.get('key'),\n                type: 'GET',\n                success: (metadata) => {\n                    return resolve(metadata);\n                },\n            });\n        });\n    },\n    streetViewUrl: function (coords) {\n        var lat, lon, url;\n        lat = coords.latitude;\n        lon = coords.longitude;\n        url =\n            'https://maps.googleapis.com/maps/api/streetview?size=600x300&location=' +\n            lat +\n            ',' +\n            lon +\n            '&heading=0&pitch=-0.76';\n        if (this.get('key')) {\n            url += '&key=' + this.get('key');\n        }\n        return url;\n    },\n    routeDistance: function (from, to) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var request;\n            request = {\n                origin: from,\n                destination: to,\n                travelMode: 'DRIVING',\n                provideRouteAlternatives: true,\n            };\n            return this.get('directionsService').route(request, (response, status) => {\n                var minDist;\n                if (status === 'OK') {\n                    minDist = 1000000000;\n                    response.routes.forEach((route) => {\n                        var dist;\n                        dist = route.legs[0].distance.value / 1000;\n                        if (dist < minDist) {\n                            return (minDist = dist);\n                        }\n                    });\n                    return resolve(minDist.toFixed(0));\n                } else {\n                    return reject();\n                }\n            });\n        });\n    },\n    routeDistanceAndTime: function (from, to) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var date, request;\n            // google directions do not like dates in past\n            // so we must make sure to use date in future\n            if (moment().isAfter(moment().format('YYYY-MM-DD 03:00'))) {\n                date = moment().add(1, 'day').hour(3);\n            } else {\n                date = moment().hour(3);\n            }\n            request = {\n                origin: from,\n                destination: to,\n                travelMode: 'DRIVING',\n                provideRouteAlternatives: true,\n                drivingOptions: {\n                    departureTime: date.toDate(),\n                },\n            };\n            return this.get('directionsService').route(request, (response, status) => {\n                var minDist, time;\n                if (status === 'OK') {\n                    minDist = 1000000000;\n                    time = 0;\n                    response.routes.forEach((route) => {\n                        var dist;\n                        dist = route.legs[0].distance.value / 1000;\n                        if (dist < minDist) {\n                            minDist = dist;\n                            return (time = route.legs[0].duration.value / 60);\n                        }\n                    });\n                    return resolve({\n                        dist: minDist.toFixed(0),\n                        time: time.toFixed(0),\n                    });\n                } else {\n                    return reject();\n                }\n            });\n        });\n    },\n});\n\nexport default GoogleService;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/gps-locator.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GpsLocatorService;\n\nimport Ember from 'ember';\n\nGpsLocatorService = Ember.Service.extend({\n    getLocation: function (options = {}) {\n        return new Em.RSVP.Promise(function (resolve, reject) {\n            if (navigator.geolocation) {\n                return navigator.geolocation.getCurrentPosition(\n                    function (position) {\n                        return resolve(position);\n                    },\n                    function (error) {\n                        return reject(error);\n                    },\n                    options,\n                );\n            } else {\n                return reject('Geolocation is not supported by this browser.');\n            }\n        });\n    },\n    GetLocationByAddress: function (address) {\n        return new Em.RSVP.Promise(function (resolve, reject) {\n            var geocoder;\n            geocoder = new google.maps.Geocoder();\n            //address = document.getElementById('txtAddress').value\n            return geocoder.geocode(\n                {\n                    address: address,\n                },\n                function (results, status) {\n                    if (status === google.maps.GeocoderStatus.OK) {\n                        return resolve({\n                            latitude: results[0].geometry.location.lat(),\n                            longitude: results[0].geometry.location.lng(),\n                        });\n                    } else {\n                        return resolve({\n                            error: 'could not get address-info',\n                        });\n                    }\n                },\n            );\n        });\n    },\n});\n\nexport default GpsLocatorService;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/gps.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Service;\n\nimport Ember from 'ember';\n\nService = Ember.Service.extend(Ember.Evented, {\n    customerSettings: Ember.inject.service(),\n    lockAccuracy: 200,\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    inUse: false,\n    startIfGpsIsOn: function () {\n        if (this.get('Collector').testNeeds(['modules.gps||modules.plgps||project.location_map'])) {\n            return this.start();\n        }\n    },\n    start: function () {\n        if (this.get('inUse')) {\n            return;\n        }\n        this.set('inUse', true);\n        this.set('status', 'searching');\n        this.set('lastError', null);\n        this.set(\n            'allowed_distance',\n            this.get('customerSettings').checkSetting('gps_distance') || 700,\n        );\n        Ember.run.later(\n            this,\n            function () {\n                if (!this.get('lockedPosition')) {\n                    return this.setLastError('CUSTOMTIMEOUT');\n                }\n            },\n            8000,\n        );\n        if (navigator.geolocation) {\n            navigator.geolocation.getCurrentPosition(\n                this.showPosition.bind(this),\n                this.positionError.bind(this),\n            );\n            return navigator.geolocation.watchPosition(\n                this.showPosition.bind(this),\n                this.positionError.bind(this),\n                {\n                    enableHighAccuracy: true,\n                },\n            );\n        } else {\n            return alert('Geolocation is not supported by this browser.');\n        }\n    },\n    getCurrentPosition: function () {},\n    getLockedPosition: Ember.computed('lockedPosition', function () {\n        if (this.get('lockedLatitude') && this.get('lockedLongitude')) {\n            return {\n                latitude: this.get('lockedLatitude'),\n                longitude: this.get('lockedLongitude'),\n            };\n        }\n    }),\n    searchingLocation: Ember.computed('status', function () {\n        if (this.get('status') === 'searching') {\n            return true;\n        }\n    }),\n    debug: 'start searching gps',\n    counter: 0,\n    status: 'searching',\n    lastError: null,\n    currentLatitude: null,\n    currentLongitude: null,\n    currentAccuracy: null,\n    lockedLatitude: null,\n    lockedLongitude: null,\n    lockedAccuracy: null,\n    lockedPosition: Ember.computed('lockedLatitude', 'lockedLongitude', function () {\n        return this.get('lockedLatitude') && this.get('lockedLongitude');\n    }),\n    resetPosition: function () {\n        this.setProperties({\n            currentLatitude: null,\n            currentLongitude: null,\n            lockedLatitude: null,\n            lockedLongitude: null,\n        });\n        return this.trigger('lockedPositionChanged');\n    },\n    positionError: function (error) {\n        this.resetPosition();\n        if (error.code === error.PERMISSION_DENIED) {\n            return this.setLastError('PERMISSION_DENIED');\n        } else if (error.code === error.POSITION_UNAVAILABLE) {\n            return this.setLastError('POSITION_UNAVAILABLE');\n        } else if (error.code === error.TIMEOUT) {\n            return this.setLastError('TIMEOUT');\n        } else {\n            return this.setLastError('UNKNOWN_ERROR');\n        }\n    },\n    setLastError: function (error) {\n        this.set('lastError', error);\n        return this.set('status', 'error');\n    },\n    showErrorTooltip: function (message) {\n        return this.set('errorTooltipText', message);\n    },\n    lastErrorHeader: Ember.computed('lastError', function () {\n        return (\n            'gps.errors.' +\n            function () {\n                switch (this.get('lastError')) {\n                    case 'PERMISSION_DENIED':\n                        return 'permissiondenied';\n                    case 'TIMEOUT':\n                    case 'CUSTOMTIMEOUT':\n                        return 'timeout';\n                    default:\n                        return 'unknownerror';\n                }\n            }.call(this)\n        );\n    }),\n    lastErrorMessage: Ember.computed('lastError', function () {\n        return (\n            'gps.errorhelpers.' +\n            function () {\n                switch (this.get('lastError')) {\n                    case 'PERMISSION_DENIED':\n                        return 'permissiondenied';\n                    case 'TIMEOUT':\n                    case 'CUSTOMTIMEOUT':\n                        return 'timeout';\n                    default:\n                        return 'unknownerror';\n                }\n            }.call(this)\n        );\n    }),\n    showPosition: function (position) {\n        var counter;\n        counter = this.get('counter');\n        this.set('lastError', null);\n        if (this.get('status') === 'error') {\n            this.set('status', 'searching');\n        }\n        this.set('counter', counter + 1);\n        this.set(\n            'debug',\n            '[' +\n                position.coords.latitude +\n                ',' +\n                position.coords.longitude +\n                '] - ' +\n                position.coords.accuracy +\n                ' #' +\n                counter,\n        );\n        this.set('currentAccuracy', position.coords.accuracy);\n        this.set('currentLongitude', position.coords.longitude);\n        this.set('currentLatitude', position.coords.latitude);\n        return this.tryToLockLocation(\n            position.coords.accuracy,\n            position.coords.latitude,\n            position.coords.longitude,\n        );\n    },\n    tryToLockLocation: function (accuracy, lat, lon) {\n        if (!this.isMapsLoaded()) {\n            Ember.run.later(\n                this,\n                () => {\n                    return this.tryToLockLocation(accuracy, lat, lon);\n                },\n                3000,\n            );\n            return;\n        }\n        if (accuracy < this.get('lockAccuracy')) {\n            if (this.checkLocationChange(lat, lon, 50)) {\n                this.set('lockedLatitude', lat);\n                this.set('lockedLongitude', lon);\n                this.set('lockedAccuracy', this.get('currentAccuracy'));\n                this.trigger('lockedPositionChanged');\n            }\n            return this.set('status', 'located');\n        }\n    },\n    checkLocationChange: function (lat, lon, change) {\n        var dist;\n        if (!this.get('lockedLatitude') || !this.get('lockedLongitude')) {\n            return true;\n        }\n        dist = this.getDistance(\n            {\n                lat: this.get('lockedLatitude'),\n                lon: this.get('lockedLongitude'),\n            },\n            {\n                lat: lat,\n                lon: lon,\n            },\n        );\n        return dist > change;\n    },\n    isMapsLoaded: function () {\n        if (window.google && window.google.maps) {\n            return true;\n        } else {\n            return false;\n        }\n    },\n    getDistance: function (loc1, loc2) {\n        var distance, gloc1, gloc2;\n        gloc1 = new window.google.maps.LatLng(loc1.lat, loc1.lon);\n        gloc2 = new window.google.maps.LatLng(loc2.lat, loc2.lon);\n        distance = window.google.maps.geometry.spherical.computeDistanceBetween(gloc1, gloc2);\n        return distance;\n    },\n    withinAcceptedDistance: function (loc1, loc2) {\n        return this.getDistance(loc1, loc2) < this.get('allowed_distance');\n    },\n    haversine: function (...args) {\n        var R, a, dLat, dLon, lat1, lat2, lon1, lon2, radians;\n        R = 6372.8;\n        radians = args.map(function (deg) {\n            return (deg / 180.0) * Math.PI;\n        });\n        lat1 = radians[0];\n        lon1 = radians[1];\n        lat2 = radians[2];\n        lon2 = radians[3];\n        dLat = lat2 - lat1;\n        dLon = lon2 - lon1;\n        a =\n            Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n            Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2);\n        return R * 2 * Math.asin(Math.sqrt(a));\n    },\n    iconClass: Ember.computed('searchingLocation', function () {\n        if (this.get('searchingLocation')) {\n            return 'searching';\n        }\n    }),\n    GetLocationByAddress: function (address) {\n        return new Em.RSVP.Promise(function (resolve, reject) {\n            var geocoder;\n            geocoder = new google.maps.Geocoder();\n            //address = document.getElementById('txtAddress').value\n            return geocoder.geocode(\n                {\n                    address: address,\n                },\n                function (results, status) {\n                    if (status === google.maps.GeocoderStatus.OK) {\n                        return resolve({\n                            latitude: results[0].geometry.location.lat(),\n                            longitude: results[0].geometry.location.lng(),\n                        });\n                    } else {\n                        return resolve({\n                            error: 'could not get address-info',\n                        });\n                    }\n                },\n            );\n        });\n    },\n    GetLocationByLatLng: function (latlng) {\n        return new Em.RSVP.Promise(function (resolve, reject) {\n            var geocoder;\n            geocoder = new google.maps.Geocoder();\n            //address = document.getElementById('txtAddress').value\n            return geocoder.geocode(\n                {\n                    location: latlng,\n                },\n                function (results, status) {\n                    if (status === google.maps.GeocoderStatus.OK) {\n                        return resolve(results[0].formatted_address);\n                    } else {\n                        return resolve({\n                            error: 'could not get address-info',\n                        });\n                    }\n                },\n            );\n        });\n    },\n    GetFullObjectByAddress: function (address) {\n        return new Em.RSVP.Promise(function (resolve, reject) {\n            var geocoder;\n            geocoder = new google.maps.Geocoder();\n            //address = document.getElementById('txtAddress').value\n            return geocoder.geocode(\n                {\n                    address: address,\n                },\n                function (results, status) {\n                    if (status === google.maps.GeocoderStatus.OK) {\n                        return resolve(results[0]);\n                    } else {\n                        return reject();\n                    }\n                },\n            );\n        });\n    },\n});\n\nexport default Service;\n","import Service, { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { later } from '@ember/runloop';\nimport { htmlSafe } from '@ember/template';\n\ninterface IGpsService {\n    inUse: boolean;\n    allowedDistance: number;\n    mapsLoaded: boolean;\n    status: string;\n    errorTooltipText: SafeString | null;\n    lockAccuracy: number;\n    lockedLatitude: string | null;\n    lockedLongitude: string | null;\n    lockedAccuracy: number | null;\n    lockedPosition: IPosition | null;\n    positionFromWatch: boolean;\n    intl: any;\n    start(): void;\n}\n\ninterface IPosition {\n    longitude: string;\n    latitude: string;\n    distance?: number | null;\n    coords?: any;\n}\n\ninterface IGpsWindow {\n    google: any;\n}\n\ndeclare const window: IGpsWindow;\n\n/**\n * This service handles the application's gps.\n *\n * @class GpsService\n * @public\n */\nexport default class GpsService extends Service implements IGpsService {\n    @service public intl!: any;\n    @service public evented!: any;\n    @service public customerSettings!: any;\n\n    public allowedDistance: number = this.customerSettings.checkSetting('gps_distance') || 700;\n    public lockAccuracy: number = 200;\n    public inUse: boolean = false;\n\n    public errorTooltipText: SafeString | null = null;\n    public lockedLatitude: string | null = null;\n    public lockedLongitude: string | null = null;\n    public lockedAccuracy: number | null = null;\n    public notSupported: boolean = false;\n    // @tracked public notAccurateEnough: boolean = false\n    @tracked public lockedPosition: IPosition | null = null;\n    @tracked public positionFromWatch: boolean = false;\n    @tracked public distanceToProject: number | null = null;\n    @tracked public errorMsg: string | null = null;\n    @tracked public status: string = 'unknown';\n\n    protected currentLatitude: string | null = null;\n    protected currentLongitude: string | null = null;\n    protected currentAccuracy: number | null = null;\n\n    private errorShown: boolean = false;\n    private _lastError: string | null = null;\n\n    /**\n     * Call this method to fetch the user's initlal location and to set up location watching. <br>\n     * This method will check if GPS service is already in use so it will not start twice. <br>\n     * Uses `navigator.geolocation`\n     *\n     * @method start\n     * @public\n     * @return {void}\n     */\n    /* istanbul ignore next */\n    public start(): void {\n        if (this.inUse) return;\n        this.inUse = true;\n\n        later(\n            this,\n            () => {\n                if (!this.lockedPosition) {\n                    this.lastError = 'CUSTOMTIMEOUT';\n                    if (this.currentAccuracy && this.currentAccuracy > this.lockAccuracy)\n                        this.setLastError('NOT_ACCURATE_ENOUGH');\n                }\n            },\n            8000,\n        );\n\n        if (navigator.geolocation) {\n            // we have to fetch initial position with getCurrentPosition\n            // if we just used watchPosition on its own, it would might not set the position because gps1 service might have already fetched the position\n            // and watchPosition would not trigger the callback (because the position has not changed)\n            // we also use maximumAge option to get the last known position from cache\n            // otherwise getCurrentPosition might only return timeout if watchPosition is running (because watchPosition is somehow blocking the getCurrentPosition from getting the actual position)\n            navigator.geolocation.getCurrentPosition(\n                this.setPosition.bind(this),\n                this.positionError.bind(this),\n                { enableHighAccuracy: true, timeout: 20000, maximumAge: 20000 },\n            );\n            navigator.geolocation.watchPosition(\n                (position: any) => {\n                    this.positionFromWatch = true;\n                    this.setPosition(position);\n                },\n                this.positionError.bind(this),\n                { enableHighAccuracy: true },\n            );\n        } else {\n            this.notSupported = true;\n        }\n\n        // this.allowedDistance = this.customerSettings.checkSetting('gps_distance') || 700\n    }\n\n    /**\n     * Get the distance between two `location: IPosition` objects.\n     * @method getDistance\n     * @param {IPosition} loc1\n     * @param {IPosition} loc2\n     * @public\n     * @return {Number}\n     */\n    /* istanbul ignore next */\n    public getDistance(loc1: IPosition, loc2: IPosition): number {\n        const gloc1 = new window.google!.maps.LatLng(loc1.latitude, loc1.longitude);\n        const gloc2 = new window.google!.maps.LatLng(loc2.latitude, loc2.longitude);\n\n        return window.google!.maps.geometry.spherical.computeDistanceBetween(gloc1, gloc2);\n    }\n\n    /**\n     * Success Callback for navigator.geolocation <br>\n     * Sets user's current location, and calls lockLocation to lock the user's current position.\n     * @method setPosition\n     * @param {IPosition} position\n     * @private\n     * @return {Void}\n     */\n    private setPosition(position: IPosition): void {\n        this.lastError = null;\n\n        if (this.status === 'error') {\n            this.status = 'searching';\n        }\n        this.currentAccuracy = position.coords.accuracy;\n        this.currentLongitude = position.coords.longitude;\n        this.currentLatitude = position.coords.latitude;\n\n        this.lockLocation(\n            position.coords.latitude,\n            position.coords.longitude,\n            position.coords.accuracy,\n        );\n    }\n\n    /**\n     * Error Callback for navigator.geolocation. <br>\n     * Sets this service's last seen error message\n     * @method positionError\n     * @param {any} error\n     * @private\n     * @return {Void}\n     */\n    private positionError(error: any) {\n        // positionError may be called after gps2 service has already been destroyed.\n        // That would cause \"Can not call `.lookup` after the owner has been destroyed\"\n        // errors in this.resetPosition and this.setLastError calls.\n        if (this.isDestroyed) {\n            return;\n        }\n        this.resetPosition();\n        if (error.code === error.PERMISSION_DENIED) this.setLastError('PERMISSIONDENIED');\n        else if (error.code === error.POSITION_UNAVAILABLE)\n            this.setLastError('POSITION_UNAVAILABLE');\n        else if (error.code === error.TIMEOUT) this.setLastError('TIMEOUT');\n        else this.setLastError('UNKNOWN_ERROR');\n    }\n\n    /**\n     * Called by `setPosition`, which is called by `navigator.geolocation.getCurrentPosition` and `navigator.geolocation.watchPosition`\n     *\n     * Sets the following public properties:\n     * ```\n     *  this.lockedLatitude = lat\n     *  this.lockedLongitude = lon\n     *  this.lockedPosition = {latitude: lat, longitude: lon}\n     *  this.lockedAccuracy = this.currentAccuracy\n     * ```\n     * @method lockLocation\n     * @param {String} lat\n     * @param {String} long\n     * @param {Number} accuracy\n     * @private\n     * @return {Void}\n     */\n    private lockLocation(lat: string, lon: string, accuracy: number): void {\n        /* istanbul ignore next */\n        if (!this.mapsLoaded) {\n            later(\n                this,\n                () => {\n                    this.lockLocation(lat, lon, accuracy);\n                },\n                3000,\n            );\n            return;\n        }\n\n        if (accuracy < this.lockAccuracy) {\n            if (this.checkLocationChange(lat, lon, 50)) {\n                this.lockedLatitude = lat;\n                this.lockedLongitude = lon;\n                this.lockedPosition = { latitude: lat, longitude: lon };\n                this.lockedAccuracy = this.currentAccuracy;\n                this.evented.gpsLockedPositionChanged(this.lockedPosition);\n            }\n            this.status = 'located';\n        }\n        if (accuracy > this.lockAccuracy) {\n            this.setLastError('NOT_ACCURATE_ENOUGH');\n            this.lockedPosition = null;\n            this.positionFromWatch = false;\n        }\n    }\n\n    /**\n     * Checks if the gps location has changed enough.\n     * Calls `getDistance`, comparing the method's parameters to lockedLatitude and lockedLongitude\n     * returns true if the distance between is greater than the change param\n     * @method checkLocationChange\n     * @param {String} latitude\n     * @param {String} longitude\n     * @param {Number} change\n     * @private\n     * @return {Boolean}\n     */\n    private checkLocationChange(latitude: string, longitude: string, change: number): boolean {\n        if (!this.lockedLatitude || !this.lockedLongitude) return true;\n\n        const loc1 = { latitude: this.lockedLatitude, longitude: this.lockedLongitude };\n        const loc2 = { latitude, longitude };\n        const dist = this.getDistance(loc1, loc2);\n\n        return dist > change;\n    }\n\n    /**\n     * Rests currentLatitude, currentLongitude, lockedLatitude, and lockedLongitude\n     * @method resetPosition\n     * @private\n     * @return {Void}\n     */\n    private resetPosition(): void {\n        this.currentLatitude =\n            this.currentLongitude =\n            this.lockedLatitude =\n            this.lockedLongitude =\n            this.lockedPosition =\n                null;\n        this.positionFromWatch = false;\n        this.evented.gpsLockedPositionChanged(this.lockedPosition);\n    }\n\n    private setLastError(error: any) {\n        if (!this.errorShown) {\n            this.errorTooltipText = htmlSafe(\n                this.intl.t('gps.errors.general_tooltip').replace(/\\n/g, '<br>'),\n            );\n            this.errorShown = true;\n        }\n        this.lastError = error;\n        this.status = 'error';\n        this.errorMsg = this.intl.t('gps.errors.' + error.toLowerCase());\n    }\n\n    get mapsLoaded(): boolean {\n        return window.google?.maps ? true : false;\n    }\n\n    get lastError(): string | null {\n        return this._lastError;\n    }\n\n    set lastError(error: string | null) {\n        this._lastError = error;\n    }\n}\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/gui.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GuiService;\n\nimport Ember from 'ember';\n\nimport format from 'ember-moment/computeds/format';\n\nimport $ from 'jquery';\n\nimport config from 'tt4/config/environment';\n\nGuiService = Ember.Service.extend({\n    moment: Ember.inject.service(),\n    fullScreen: false,\n    partialFullScreen: false,\n    overlay_loader: false,\n    breakpoints: {\n        md: 992,\n    },\n    stickyValue: 0,\n    buttonText: 'default',\n    showStickyNote: false,\n    setBreakpointObserver: function (bp) {\n        var breakPointGetter;\n        Ember.assert('Supported breakpoints are md', bp === 'md');\n        breakPointGetter = 'isBelow' + bp.charAt(0).toUpperCase() + bp.slice(1);\n        return $(window).on('resize', () => {\n            return this.set(\n                breakPointGetter,\n                document.documentElement.clientWidth < this.breakpoints[bp],\n            );\n        });\n    },\n    removeBreakpointObserver: function () {\n        return $(window).off('resize');\n    },\n    isBelowMd: Em.computed(function () {\n        return document.documentElement.clientWidth < this.breakpoints.md;\n    }),\n    togglefullScreen: function () {\n        this.toggleProperty('fullScreen');\n        return true;\n    },\n    toggleCustomFullScreen: function () {\n        this.toggleProperty('customFullScreen');\n        return true;\n    },\n    abort: function () {\n        this.get('requestObject').abort();\n        return Em.run.later(\n            this,\n            () => {\n                return this.set('showStickyNote', false);\n            },\n            4000,\n        );\n    },\n    getBrand: function () {\n        return config.brand;\n    },\n    isSafari: !!navigator.userAgent.match(/Version\\/[\\d\\.]+.*Safari/),\n    isIE: Ember.computed(function () {\n        var msie, ua;\n        ua = window.navigator.userAgent;\n        msie = ua.indexOf('MSIE ');\n        if (msie.length > 0 || !!navigator.userAgent.match(/Trident.*rv\\:11\\./)) {\n            return true;\n        }\n        return false;\n    }),\n    isAndroid: Ember.computed(function () {\n        return typeof cordova !== 'undefined' && cordova !== null && device.platform === 'Android';\n    }),\n    isIOS: Ember.computed(function () {\n        return typeof cordova !== 'undefined' && cordova !== null && device.platform === 'iOS';\n    }),\n    platform: Ember.computed(function () {\n        return device.platform;\n    }),\n    isCordova: Ember.computed(function () {\n        return typeof cordova !== 'undefined' && cordova !== null;\n    }),\n    isAndroidBrowser:\n        navigator.userAgent.match(/Android/i) &&\n        (typeof cordova === 'undefined' || cordova === null),\n    // Check is mobile depending on screen width\n    // http://caniuse.com/#feat=matchmedia\n    isMobile: function (width = 760) {\n        return window.matchMedia('only screen and (max-width: ' + width + 'px)').matches;\n    },\n    isMobileComputed: Ember.computed(function () {\n        return this.isMobile();\n    }),\n    tzOffset: format(new Date(), 'Z'),\n    sidebar: Ember.computed(function () {\n        var state;\n        state = localStorage.getItem('sidebar');\n        if (state === null || state === 'open') {\n            return false;\n        } else if (state === 'collapsed' || state === void 0) {\n            return true;\n        }\n    }),\n    resetSidebar: function () {\n        var state;\n        state = localStorage.getItem('sidebar');\n        if (state === null || state === 'open') {\n            return this.set('sidebar', false);\n        } else if (state === 'collapsed' || state === void 0) {\n            return this.set('sidebar', true);\n        }\n    },\n    version: function () {\n        var buildtime, commit;\n        buildtime = moment(config.APP.BUILD_TIMESTAMP).utc().format('YYYY.MM.DD');\n        commit = config.APP.version.split('+')[1];\n        return buildtime + '+' + commit;\n    },\n    version_timestamp: function () {\n        return config.APP.BUILD_TIMESTAMP;\n    },\n});\n\nexport default GuiService;\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport collector from '../classes/collector';\nimport { Promise as EmberPromise, allSettled } from 'rsvp';\nimport Evented from '@ember/object/evented';\nimport { get, set } from '@ember/object';\nimport 'moment-timezone';\nimport config from 'tt4/config/environment';\nimport { configureScope } from '@sentry/browser';\nimport chatBot from 'tt4/utils/chatBot';\nimport snowplowinit from 'tt4/utils/snowplowinit';\nimport initStonly from 'tt4/utils/stonly';\n\n/*global FirebasePlugin*/\n\nexport default Service.extend(Evented, {\n    capi: service(),\n    store: service(),\n    session: service(),\n    Collector: service('collector-service'),\n    moment: service(),\n    loadTranslations: service(),\n    customerSettings: service('customer-settings'),\n    userSettings: service(),\n    router: service(),\n    gps: service(),\n    analytics: service(),\n    flags: service(),\n    modelCreator: service('model-creator'),\n    forms: service(),\n    dap: service(),\n    notifications: service(),\n\n    appReady: false,\n\n    start() {\n        return new EmberPromise(async (resolve) => {\n            const isLogged = get(this, 'session.session.authenticated.access_token') ? true : false;\n            const promises = [];\n            // set default lang by localStorage or browser default lang\n            this.setDefaultLang(isLogged);\n\n            // fetch translations\n            promises.push(this.loadLangs());\n            if (isLogged) {\n                // fetch me2\n                const me2Promise = this.getMe2().then(this.createFromsAndSetInformation.bind(this));\n                promises.push(this.initFlags(me2Promise));\n                promises.push(me2Promise);\n                promises.push(this.getCustomerSettings());\n                promises.push(this.configureSentry(me2Promise));\n                allSettled(promises).then(this.configureChatBot.bind(this, me2Promise));\n                allSettled(promises).then(this.configureSnowPlow.bind(this, me2Promise));\n            }\n            // after /me2 and langs are settled everything is ready for loading first route\n            allSettled(promises).then(this.allDoneMarkAppReady.bind(this, isLogged, resolve));\n            allSettled(promises).then(this.addStonly.bind(this));\n        });\n    },\n\n    configureSnowPlow(me2Promise) {\n        if (this.flags.test('use-snowplow')) {\n            snowplowinit(me2Promise);\n        }\n    },\n\n    configureChatBot(me2Promise) {\n        me2Promise.then((me2) => {\n            const zendesk_key = config.APP.ZENDESK_KEY;\n            chatBot(me2, this.flags, zendesk_key);\n        });\n    },\n\n    addStonly() {\n        if (this.flags.test('stonly-user-guidance')) {\n            initStonly(config.APP.STONLY_WID);\n        }\n    },\n\n    async configureSentry(me2Promise) {\n        const data = await me2Promise;\n\n        return configureScope((scope) => {\n            scope.setUser({\n                id: data.userid,\n                service: data.company_info.company_name,\n            });\n            scope.setTag('environment', config.environment);\n            scope.setExtra('products', JSON.stringify(collector.products));\n            scope.setExtra('sentryIsEnabled', this.flags.test('sentry-enabled'));\n        });\n    },\n    // initialize launch darkly feature flags\n    initFlags(data) {\n        return data.then((userdata) => {\n            return get(this, 'flags').initialize(userdata);\n        });\n    },\n    allDoneMarkAppReady(isLogged, resolve) {\n        if (isLogged) {\n            get(this, 'gps').startIfGpsIsOn();\n            get(this, 'dap').start();\n            set(this, 'appReady', true);\n            this.trigger('appReady');\n        }\n\n        this.handleAppLinks();\n\n        resolve();\n    },\n\n    /**\n     * This is used to handle app links from outside of the app\n     *\n     * there are two possible scenarios:\n     *\n     * 1) app was not runinng before and index.html couldn't use window.globalInitAppServiceGotoRoute\n     *      method .. so index.html just saves the app link url to global globalInitAppServiceGotoUrl\n     *      and this initialization makes the transition to correct route\n     * 2) App Link was used when app was already running .. so index.html could useglobalInitAppServiceGotoRoute\n     *      and nothing more needs to be done\n     */\n    handleAppLinks() {\n        window.globalInitAppServiceGotoRoute = this.gotoRoute.bind(this);\n\n        if (window.globalInitAppServiceGotoUrl) this.gotoRoute(window.globalInitAppServiceGotoUrl);\n    },\n\n    /**\n     * All different kind of app link paths must be registered here\n     * @param {*} urlString\n     * @returns\n     */\n    gotoRoute(urlString) {\n        // cannot use URL class because it works differenty in safari and chrome\n        const splittedUrl = urlString.split(':');\n\n        // Extract components\n        const protocol = splittedUrl[0] + ':';\n        const path = splittedUrl[1].substring(2); // remove leading '//'\n\n        if (protocol !== 'devenor:') {\n            this.notifications.error(`unknown applink protocol: '${protocol}'`, {\n                autoClear: true,\n            });\n            return `unknown applink protocol: '${protocol}'`;\n        }\n\n        const pathParts = path.split('/');\n\n        // different routes needs to be registered here .. reason for this is that\n        // I do not know how to do a general route transition with query params\n        if (pathParts[0] === 'token') {\n            this.router.transitionTo(pathParts[0], pathParts[1]);\n        } else {\n            this.notifications.error(`unknown path: '${urlString}'`, {\n                autoClear: true,\n            });\n            return `unknown path: '${urlString}'`;\n        }\n    },\n\n    createFromsAndSetInformation(data) {\n        function preventMouseWheelScrollOnNumberFields() {\n            document.addEventListener('wheel', function () {\n                if (document.activeElement.type === 'number') {\n                    document.activeElement.blur();\n                }\n            });\n        }\n\n        // Call the function to add the event listener\n        preventMouseWheelScrollOnNumberFields();\n\n        // load forms and create models\n        // this must be always done first so store can be used by other init's\n        this.createForms(data['forms']);\n\n        // push currentUser to store\n        this.pushCurrentUser(data['userrow']);\n\n        // push companyInfo to store\n        this.pushCompanyInfo(data['company_info']);\n\n        // set some session variables to support all kind of legacy code in tt4\n        this.setSessionVariables(data);\n\n        this.setAnalyticsContext();\n\n        // Put trigger on user models didUpdate to update user info to me2 cache\n        if (data['userrow'].user) {\n            this.updateCachedUserOnSave(data['userrow'].user[0].id);\n        }\n\n        // set correct timeZone by service country\n        this.setTimezone(data);\n\n        this.checkCompanyInfo();\n\n        this.userSettings.setUserSettings();\n\n        return data;\n    },\n\n    clearInit() {\n        this.unsetStorage('me2');\n        this.unsetStorage('customerSettings');\n    },\n\n    createForms(data) {\n        get(this, 'modelCreator').createModels(collector.addCommonForms(data));\n        //ember-movenium addon\n        this.forms.forms = collector.addCommonForms(data).forms;\n    },\n\n    getMe2() {\n        return new EmberPromise((resolve) => {\n            let alreadyResolved = false;\n\n            if (this.getStorage('me2')) {\n                resolve(this.getStorage('me2'));\n                alreadyResolved = true;\n            }\n\n            const prevent_caching = '&sid=' + Math.random().toString(36).substring(14);\n\n            get(this, 'capi')\n                .request('me2?get=all' + prevent_caching)\n                .then((data) => this._resolveGetMe2(data, alreadyResolved, resolve));\n        });\n    },\n\n    updateDataFromMe2(data) {\n        // TODO: here is just one of these .. also company_info etc should be updated\n        const currentUser = get(this, 'store').peekRecord('user', data.userid);\n        if (currentUser) {\n            set(currentUser, 'firstname', data['userrow']['user'][0]['firstname']);\n            set(currentUser, 'lastname', data['userrow']['user'][0]['lastname']);\n        }\n\n        // recreate forms\n        this.createForms(data['forms']);\n    },\n\n    updateCachedUserOnSave(id) {\n        get(this, 'store')\n            .peekRecord('user', id)\n            .on('didUpdate', () => {\n                let me2 = this.getStorage('me2');\n                const user = get(this, 'store').peekRecord('user', id);\n                me2.userrow.user = [user.serialize({ includeId: true })];\n                this.setStorage('me2', me2);\n            });\n    },\n    pushCurrentUser(rows) {\n        get(this, 'store').pushPayload(rows);\n    },\n\n    pushCompanyInfo(row) {\n        get(this, 'store').pushPayload({ companyInfo: row });\n    },\n\n    setSessionVariables(data) {\n        set(this, 'session.saveUserId', data.userid);\n        set(this, 'session.currentUser', get(this, 'store').peekRecord('user', data.userid));\n        // signed_token is not used any more because all tokens are jwt\n        //set(this, \"session.signed_token\", data.signed_token)\n        // parse partnerid to int if it seems to be numeric\n        const partnerid = isNaN(data.partnerid) ? data.partnerid : parseInt(data.partnerid, 10);\n        set(this, 'session.currentUser.partnerid', partnerid);\n\n        set(\n            this,\n            'session.currentUser.company',\n            get(get(this, 'store').peekAll('companyInfo'), 'firstObject.company_name'),\n        );\n        set(\n            this,\n            'session.currentUser.company_info',\n            get(get(this, 'store').peekAll('companyInfo'), 'firstObject'),\n        );\n\n        set(this, 'session.currentUser.services', {\n            linkings: data.linkings,\n            partnerid: partnerid,\n        });\n\n        set(this, 'session.modelscreated', true);\n        set(this, 'session.session.alldone', true);\n    },\n\n    setTimezone(data) {\n        if (data.country == 'se') get(this, 'moment').changeTimeZone('Europe/Stockholm');\n        else get(this, 'moment').changeTimeZone('Europe/Helsinki');\n    },\n\n    /**\n     * 1) call ttapi to get saved language\n     * 2) if lang type is not \"saved\" in response -> user does not have saved lang yet .. so send users lang to ttapi .. then return\n     * 3) if lang type is saved and saved lang is different that in localstorage -> change tt4 lang\n     */\n    async fetchSavedLanguageFromTtapi(lang) {\n        // 1.\n        const ttapiLang = await this.Collector.ttapi({\n            url: 'api/getUserLang',\n            method: 'get',\n        });\n        // 2.\n        if (ttapiLang.type != 'saved') {\n            return this.Collector.ttapi({\n                url: 'api/setUserLang?lang=' + lang,\n                method: 'post',\n            });\n        }\n        // 3.\n        // TODO\n    },\n\n    async setDefaultLang(isLogged) {\n        let defaultLang = 'en';\n        const acceptedLangs = ['en', 'fi', 'sv'];\n        let setLang = null;\n        if (Modernizr.localstorage && localStorage.getItem('lang')) {\n            setLang = localStorage.getItem('lang');\n        } else {\n            const browser = window.navigator.userLanguage || window.navigator.language;\n            setLang = browser.substring(0, 2).toLowerCase();\n        }\n        if (acceptedLangs.indexOf(setLang) !== -1) {\n            moment.locale(setLang);\n            get(this, 'moment').setLocale(setLang);\n        } else {\n            moment.locale(defaultLang);\n            get(this, 'moment').setLocale(defaultLang);\n        }\n\n        if (isLogged) this.fetchSavedLanguageFromTtapi(moment.locale());\n    },\n\n    loadLangs() {\n        return get(this, 'loadTranslations').fetch(true);\n    },\n\n    getCustomerSettings() {\n        if (this.getStorage('customerSettings')) {\n            get(this, 'customerSettings').settings = this.getStorage('customerSettings');\n            let promise = get(this, 'customerSettings').getSettings();\n            promise.then(() => {\n                this.setStorage('customerSettings', get(this, 'customerSettings').settings);\n            });\n            return new EmberPromise((resolve) => {\n                resolve();\n            });\n        } else {\n            let promise = get(this, 'customerSettings').getSettings();\n            promise.then(() => {\n                this.setStorage('customerSettings', get(this, 'customerSettings').settings);\n            });\n            return promise;\n        }\n    },\n\n    getStorage(key) {\n        if (!Modernizr.localstorage) return null;\n\n        if (localStorage.getItem(key)) {\n            return JSON.parse(localStorage.getItem(key));\n        }\n\n        return null;\n    },\n\n    setStorage(key, object) {\n        if (!Modernizr.localstorage) return;\n        localStorage.setItem(key, JSON.stringify(object));\n    },\n\n    unsetStorage(key) {\n        if (!Modernizr.localstorage) return;\n        localStorage.removeItem(key);\n    },\n\n    setAnalyticsContext() {\n        const currentUser = get(this, 'session.currentUser');\n        if (window.cordova && FirebasePlugin) {\n            FirebasePlugin.setAnalyticsCollectionEnabled(true);\n            FirebasePlugin.setUserProperty('brand', config.brand);\n            FirebasePlugin.setUserProperty('partnerid', get(currentUser, 'partnerid').toString());\n            FirebasePlugin.setUserProperty(\n                'company_name',\n                get(currentUser, 'company_info.company_name'),\n            );\n            FirebasePlugin.setUserProperty('userlevel', get(currentUser, 'userlevel').toString());\n        }\n    },\n\n    checkCompanyInfo() {\n        if (get(this, 'session.currentUser.userlevel') === '5') {\n            //check that company country is not null\n            const companyInfo = get(get(this, 'store').peekAll('companyInfo'), 'firstObject');\n            if (companyInfo && !get(companyInfo, 'country')) {\n                set(companyInfo, 'country', 'fi');\n                companyInfo.save();\n            }\n        }\n    },\n\n    _resolveGetMe2(data, alreadyResolved, resolve) {\n        this.setStorage('me2', data);\n\n        // if there is differences in /me request response and ls .. we make updates\n        if (alreadyResolved) this.updateDataFromMe2(data);\n\n        if (!alreadyResolved) resolve(data);\n    },\n});\n","define(\"tt4/services/intl\", [\"exports\", \"ember-intl/services/intl\"], function (_exports, _intl) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _intl.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/load-translations.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar LoadTranslationsService;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nLoadTranslationsService = Ember.Service.extend({\n    intl: Ember.inject.service(),\n    cdn: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    ajax: Ember.inject.service(),\n    fetch: function (use_cache = false) {\n        var lang, lang_cache, path, promise;\n        lang = moment.locale();\n        if (config.environment === 'test') {\n            return;\n        }\n        path = this.get('cdn').url('crowdin/tt4/' + lang + '.json');\n        promise = this.get('ajax').request(path, {\n            dataType: 'json',\n        });\n        promise.then((trans) => {\n            this.makeWordChanges(trans);\n            this.makeBrandingWordChanges(trans, config.brand);\n            this.formatTranslations(trans);\n            if (trans) {\n                localStorage.setItem('lang_cache', JSON.stringify(trans));\n            }\n            return this._addTranslations(trans);\n        });\n        lang_cache = localStorage.getItem('lang_cache');\n        if (use_cache && lang_cache) {\n            return this._addTranslations(JSON.parse(lang_cache));\n        } else {\n            return promise;\n        }\n    },\n    termsSettingStr: Ember.computed('intl.locale', function () {\n        return 'terms_' + moment.locale();\n    }),\n    getTermsIndex: function () {\n        var saved;\n        saved = this.get('customerSettings').checkSetting(this.get('termsSettingStr'));\n        if (!saved) {\n            return localStorage.getItem(this.get('termsSettingStr'));\n        } else {\n            localStorage.setItem(this.get('termsSettingStr'), saved);\n            return saved;\n        }\n    },\n    saveTermsIndex: function (index) {\n        this.get('customerSettings').setSetting(this.get('termsSettingStr'), index);\n        return localStorage.setItem(this.get('termsSettingStr'), index);\n    },\n\n    /**\n     * This method is used to make branding changes to translations\n     * @param {*} translations\n     * @param {string} brand\n     */\n    makeBrandingWordChanges(translations, brand) {\n        if (brand === 'default' && translations['user.userlevel.6.movenium']) {\n            translations['user.userlevel.6'] = translations['user.userlevel.6.movenium'];\n        }\n    },\n\n    makeWordChanges: function (arr) {\n        var change, changeCounter, changes, changesArr, keys, skipThese, term;\n        change = {};\n        term = this.getTermsIndex();\n\n        // we default to 0 if we are in finnish and brand is default ... this makes old fi-CON lang obsolete\n        if (config.brand === 'default' && moment.locale() === 'fi' && term === null) {\n            term = 0;\n        }\n\n        skipThese = ['terms.project'];\n        if (term === null) {\n            return;\n        }\n        changes = arr['terms.project'];\n        if (!changes) {\n            return;\n        }\n        changesArr = changes.split(/\\n/g);\n        changesArr.forEach((item) => {\n            var termList;\n            termList = item.split(/,/g);\n\n            // terms 2...6 will translate both terms työmaa and projekti because there are both in translations.. but this is only for finnish\n            if (term !== 0) change[termList[0]] = termList[term];\n            if (term !== 1 && moment.locale() === 'fi') change[termList[1]] = termList[term];\n        });\n        changeCounter = 0;\n        keys = Object.keys(arr);\n        return keys.forEach((key) => {\n            var str;\n            str = arr[key];\n            if (skipThese.indexOf(key) !== -1) {\n                return;\n            }\n            if (Ember.typeOf(str) !== 'string') {\n                return;\n            }\n            return (arr[key] = str.replace(\n                new RegExp('\\\\b(' + Object.keys(change).join('|') + ')\\\\b', 'gi'),\n                (item) => {\n                    var replaceWith, startsWithUppercase;\n                    changeCounter++;\n                    startsWithUppercase = item[0] === item[0].toUpperCase();\n                    replaceWith = change[item.toLowerCase()];\n                    if (startsWithUppercase) {\n                        replaceWith = replaceWith.charAt(0).toUpperCase() + replaceWith.slice(1);\n                    }\n                    return replaceWith;\n                },\n            ));\n        });\n    },\n    // console.log \"Changed \" + changeCounter + \" strings\"\n    formatTranslations: function (json) {\n        var keys;\n        keys = Object.keys(json);\n        keys.forEach((key) => {\n            var newStr, str;\n            str = json[key];\n            if (!str) return; // continue if translated text is null\n            newStr = str.replace(new RegExp(/\\{{(.*?)\\}}/g), (item) => {\n                return item.slice(1, -1);\n            });\n            return (json[key] = newStr);\n        });\n        return json;\n    },\n    _addTranslations: function (json) {\n        var intl;\n        intl = this.get('intl');\n        return intl.addTranslations(moment.locale(), json);\n    },\n});\n\nexport default LoadTranslationsService;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/local-storage-wrapper.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar localStorageWrapper;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport $ from 'jquery';\n\nlocalStorageWrapper = Ember.Service.extend({\n    session: Em.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    ttapi: Ember.inject.service(),\n    // this is true when syncing is under way\n    syncing: false,\n    namespace: 'movenium',\n    getUserSetting: function (key, defaultValue) {\n        var hashed, setting;\n        hashed = this.getHashedKey(key);\n        setting = this.getItem(hashed, defaultValue);\n        return setting;\n    },\n    setUserSetting: function (key, value) {\n        var hashed;\n        hashed = this.getHashedKey(key);\n        return this.setItems(hashed, value);\n    },\n    removeUserSetting: function (key) {\n        var hashed;\n        hashed = this.getHashedKey(key);\n        return localStorage.removeItem(this._namespacedKey(hashed));\n    },\n    getHashedKey: function (key) {\n        var combined, id;\n        id = this.get('session.currentUser.id');\n        combined = id + '_' + key;\n        //TODO: Could actually create a hash out of the key\n        return combined;\n    },\n    createId: function (length = 32) {\n        var id;\n        id = '';\n        while (id.length < length) {\n            id += Math.random().toString(36).substr(2);\n        }\n        return id.substr(0, length);\n    },\n    setItem: function (key, object) {\n        var objects;\n        object.id = this.createId();\n        objects = this.getItem(key);\n        if (objects == null) {\n            objects = [];\n        }\n        objects.push(object);\n        this.setItems(key, objects);\n        return object.id;\n    },\n    getItem: function (key, defaultValue) {\n        var item;\n        item = localStorage.getItem(this._namespacedKey(key));\n        if (!item && defaultValue) {\n            return Em.A(defaultValue);\n        } else if (item === 'undefined') {\n            return Em.A([]);\n        } else {\n            return Em.A(JSON.parse(item));\n        }\n    },\n    setItemsWithBackend: function (key, object) {\n        var data;\n        this.setItems(key, object);\n        data = {};\n        data[key] = object;\n        return this.get('ttapi')._post('lssave', data);\n    },\n    getItemWithBackend: function (key, object) {\n        return {\n            local: this.getItem(key, object),\n            backend: this.get('ttapi')._get('lssave?key=' + key, []),\n        };\n    },\n    setSavedUsername: function (username) {\n        return localStorage.setItem('username_save', username);\n    },\n    getSavedUsername: function () {\n        return localStorage.getItem('username_save');\n    },\n    // Does not work with async\n    //    deleteItem: (key, index) ->\n    //        objects = @getItem(key)\n    //        if !objects?\n    //            return false\n    //        objects.splice(index,1)\n    //        console.log objects\n    //        @setItems(key, objects)\n\n    //find objects with object name and value\n    find: function (key, obj_key, value) {\n        var i, item, items, len, re, return_items;\n        //console.log \"finding \" + key + \" with \" + obj_key + \" = \" + value\n        items = this.getItem(key);\n        return_items = Em.A([]);\n        if (items != null) {\n            for (i = 0, len = items.length; i < len; i++) {\n                item = items[i];\n                re = new RegExp(value);\n                if (item[obj_key] != null) {\n                    if (item[obj_key].search(re) !== -1) {\n                        return_items.push(item);\n                    }\n                }\n            }\n        }\n        //console.log \"found\", return_items\n        return return_items;\n    },\n    findBelongsTo: function (belongsToId) {\n        var arr;\n        if (belongsToId.substring == null) {\n            return null;\n        }\n        if (belongsToId.substring(0, 10) !== 'belongsTo:') {\n            return null;\n        }\n        arr = belongsToId.substring(10).split('#');\n        if (arr.length < 2) {\n            return null;\n        }\n        return this.find(arr[0], 'id', arr[1])[0];\n    },\n    update: function (key, updated) {\n        var i, item, items, len, new_items;\n        items = this.getItem(key);\n        new_items = [];\n        for (i = 0, len = items.length; i < len; i++) {\n            item = items[i];\n            if (item.id === updated.id) {\n                if (!updated.remove_flag) {\n                    new_items.push(updated);\n                }\n            } else {\n                new_items.push(item);\n            }\n        }\n        return this.setItems(key, new_items);\n    },\n    setItems: function (key, objects) {\n        var stringified;\n        stringified = JSON.stringify(objects);\n        return localStorage.setItem(this._namespacedKey(key), stringified);\n    },\n    _namespacedKey: function (key) {\n        return this.get('namespace') + '_' + key;\n    },\n    getBelongsToId: function (model, id) {\n        return 'belongsTo:' + model + '#' + id;\n    },\n    synchronize: function (keys) {\n        var promiseArray, self;\n        if (this.get('syncing')) {\n            return;\n        }\n        this.set('syncing', true);\n        self = this;\n        promiseArray = [];\n        $.each(keys, function () {\n            var items, param;\n            items = self.getItem(this.key);\n            //console.log items\n            param = this;\n            return items.forEach(function (item) {\n                return promiseArray.push(self.synchronizeItem(item, param));\n            });\n        });\n        return $.when(promiseArray).done(function () {\n            return self.set('syncing', false);\n        });\n    },\n    synchronizeItem: function (item, param) {\n        var data_to_server, self, to;\n        self = this;\n        //delete item if synced and 3 days old\n        if (item.sync === 'ok') {\n            //check if 3 days old or older\n            if (moment().diff(item.date, 'days') >= 3) {\n                //set remove flag\n                item.remove_flag = true;\n                //and update items\n                self.update(param.key, item);\n            }\n            return;\n        }\n        self = this;\n        to = param.to != null ? param.to : param.key;\n        if (!self.isFilter(item, param.filter)) {\n            return;\n        }\n        //console.log param.key + ' #'+ item.id + \" sync state \" + item.sync\n        // this would be needed if we wanted to check if item already exists in backend\n        //                if @pairing?\n        //                    self.getId to, @pairing, item[@pairing], (id) ->\n        //                        item.backend = id\n        //                        item.sync = 'ok'\n        //                        self.update key, item\n        //                        return\n        //                    , ->\n        //                        self.send to, item\n        //                else\n\n        //console.log \"item before \",item\n        data_to_server = this.resolveBelongsTo(item);\n        //console.log \"item after \",item\n        return self.send(to, data_to_server, item, param.key, item.sync === 'dirty');\n    },\n    resolveBelongsTo: function (item) {\n        var ret, self;\n        self = this;\n        ret = {};\n        $.each(item, function (key, value) {\n            var belongsToItem;\n            if (typeof value === 'object') {\n                return (ret[key] = parseInt(value.id));\n            } else {\n                belongsToItem = self.findBelongsTo(value);\n                return (ret[key] = belongsToItem ? belongsToItem.backend : value);\n            }\n        });\n        return ret;\n    },\n    isFilter: function (item, filter_array) {\n        var ret, self;\n        if (!filter_array) {\n            return true;\n        }\n        ret = true;\n        self = this;\n        $.each(filter_array, function (key, value) {\n            if (!self.isOneFilter(item, key, value)) {\n                return (ret = false);\n            }\n        });\n        return ret;\n    },\n    isOneFilter: function (item, key, value) {\n        var a, id, key_arr, test;\n        key_arr = key.split('.');\n        if (key_arr.length > 1) {\n            id = item[key_arr[0]];\n            if (!id) {\n                return false;\n            }\n            a = this.findBelongsTo(id);\n            test = a ? a[key_arr[1]] : null;\n        } else {\n            //console.log \"testing: \" + key_arr[0] + \" id: \" + id + \" test = \" + test + \" == \" + value,a\n            test = item[key];\n        }\n        if (value === true) {\n            return test;\n        } else {\n            return test === value;\n        }\n    },\n    getId: function (form, field, value, found, notfound) {\n        var json_data, realdata, type, url;\n        //console.log \"finding \"+form + \" where \" + field + \" = \" + value\n        url = collector.api_url() + '/' + form + 's?validation=off';\n        type = 'POST';\n        realdata = {};\n        realdata[form] = data;\n        json_data = JSON.stringify(realdata);\n        return $.ajax(url, {\n            contentType: 'application/json',\n            data: json_data,\n            type: type,\n            error: function (err) {\n                console.log('could not send stamp, trying later again');\n                return console.log(err);\n            },\n            success: function (ret) {\n                return success(ret[form].id);\n            },\n        });\n    },\n    send: function (form, data, item, key, update) {\n        var json_data, realdata, self, type, url;\n        self = this;\n        //console.log \"sending\", data\n        if (update && item.backend) {\n            url = collector.api_url() + '/' + form + 's/' + item.backend + '?validation=off';\n            type = 'PUT';\n        } else {\n            url = collector.api_url() + '/' + form + 's?validation=off';\n            type = 'POST';\n        }\n        realdata = {};\n        realdata[form] = data;\n        json_data = JSON.stringify(realdata);\n        return $.ajax(url, {\n            contentType: 'application/json',\n            data: json_data,\n            type: type,\n            error: function (err) {\n                return self.set('syncing', false);\n            },\n            success: function (ret) {\n                //console.log 'stamp sent succesfully, setting stamp id', ret\n                item.backend = ret[form].id;\n                item.sync = 'ok';\n                return self.update(key, item);\n            },\n        });\n    },\n});\n\nexport default localStorageWrapper;\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport Ember from 'ember';\n\nexport default Service.extend({\n    namespace: 'tt4',\n    session: service(),\n\n    setItem(key, value) {\n        localStorage.setItem(this.createKey(key), JSON.stringify(value));\n    },\n\n    getItem(key) {\n        const str = localStorage.getItem(this.createKey(key));\n        if (str === 'undefined') return null;\n        return JSON.parse(str);\n    },\n\n    removeItem(key) {\n        localStorage.removeItem(this.createKey(key));\n    },\n\n    createKey(str) {\n        const currentuser = Ember.testing ? 'testid' : get(this, 'session.currentUser.id');\n        if (!currentuser)\n            throw new Error('Cannot use localstorage service because currentUser is not set');\n        return this.namespace + '.' + currentuser + '.' + str;\n    },\n});\n","import Service, { inject as service } from '@ember/service';\nimport { computed, action } from '@ember/object';\nimport { A } from '@ember/array';\nimport config from '../config';\nimport { singularize, pluralize } from 'ember-inflector';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class MenuService extends Service {\n    @service('collector-service') Collector;\n    @service session;\n    @service intl;\n    @service localStorageWrapper;\n    @service flags;\n    @service router;\n    @tracked path;\n    @tracked visibleItems = [];\n    @tracked hiddenItems = [];\n    @tracked moreIsActive = false;\n    @tracked paddingPlusMarginForItem = 0;\n\n    containerWidth = 0;\n\n    // Desired order for the menu items for diffrerent brands\n    // the rest of the items will be appended to the end of the menu as they are in the config.staticMenus\n    ottaMenuOrder = [\n        'dashboard',\n        'worktime',\n        'my-sites',\n        'users',\n        'absence',\n        'projects',\n        'resource-planning',\n        'own-report',\n        'material',\n        'drivinglog',\n        'messages',\n        'settings',\n    ];\n    moveMenuOrder = [\n        'dashboard',\n        'worktime',\n        'presence',\n        'my-sites',\n        'projects',\n        'users',\n        'diary',\n        'resource-planning',\n        'absence',\n        'site-safety',\n        'orientation',\n        'worktask',\n        'own-report',\n        'taxman',\n        'salary',\n        'material',\n        'employers',\n        'drivinglog',\n        'messages',\n        'settings',\n    ];\n\n    constructor() {\n        super(...arguments);\n        this.path = this.router.currentRouteName.split('.');\n        this.router.on('routeDidChange', this.regenerateMenu);\n    }\n\n    // can be called from the outside to regenerate the menu\n    // for example when screen size changes\n    regenerateMenu = () => {\n        this.path = this.router.currentRouteName.split('.');\n        this.getMenus();\n    };\n\n    // returns the visible and hidden items based on the current container width\n    @action\n    getMenus() {\n        let visibleItems = [];\n        let hiddenItems = [];\n        let elementSizeWithWithPaddingAndMargin = 0;\n        let restToHidden = false;\n        let menuObject = this.getMenuObject();\n        if (this.containerWidth) {\n            let menuWidth = 0;\n            // we calculate the width of the \"more\" button here manually\n            const moreWidth = this.getTextWidth(\n                this.intl.t('report.more_button'),\n                config.brand === 'otta' ? '16px OttaRaisonne' : '16px Open sans',\n            );\n            // go through the menu items and calculate the width of the menu\n            for (let item of menuObject) {\n                // try to calculate the width of the item\n                elementSizeWithWithPaddingAndMargin = item.width + this.paddingPlusMarginForItem;\n                if (\n                    menuWidth + elementSizeWithWithPaddingAndMargin + moreWidth <=\n                        this.containerWidth &&\n                    !restToHidden\n                ) {\n                    menuWidth += elementSizeWithWithPaddingAndMargin;\n                    visibleItems.push(item);\n                    if (item.active) {\n                        this.moreIsActive = false;\n                    }\n                } else {\n                    restToHidden = true;\n                    if (item.active) {\n                        this.moreIsActive = true;\n                    }\n                    hiddenItems.push(item);\n                }\n            }\n        }\n        return { visibleItems: visibleItems, hiddenItems: hiddenItems, allItems: menuObject };\n    }\n\n    // used for getting static menu-items (tems that are common for all the customers)\n    @computed\n    get staticMenu() {\n        let staticMenuItems = [];\n        let ref = config.staticMenus;\n\n        // Desired order for the new menu\n        const newMenuOrder = config.brand === 'otta' ? this.ottaMenuOrder : this.moveMenuOrder;\n\n        // Reorder based on the new menu order\n        let reorderedItems = [];\n\n        // Add items that are explicitly ordered\n        newMenuOrder.forEach((orderId) => {\n            // use filter to get the item(s) with the correct id\n            let menuItems = ref.filter((item) => item.id === orderId);\n            if (menuItems.length > 0) {\n                reorderedItems.push(...menuItems);\n            }\n        });\n\n        // Append the rest of the items (those not explicitly ordered)\n        ref.forEach((item) => {\n            if (!newMenuOrder.includes(item.id)) {\n                reorderedItems.push(item);\n            }\n        });\n        staticMenuItems = reorderedItems;\n        return staticMenuItems;\n    }\n    translate(menus) {\n        let form, name, split;\n        return menus.map((item) => {\n            if (typeof item.text !== 'string') {\n                return item;\n            }\n            split = item.text.split('.');\n            form = false;\n            name = split[1];\n            if (typeof name === 'string') {\n                if (name.startsWith('add_')) {\n                    name = name.slice(4);\n                }\n                if (this.Collector.formExists(name)) {\n                    form = this.Collector.forms()[name];\n                } else if (this.Collector.formExists(singularize(name))) {\n                    form = this.Collector.forms()[singularize(name)];\n                }\n            }\n            item.name = item.text;\n            if (form && form.name) {\n                item.translated = form.name;\n            } else {\n                item.translated = this.intl.t(item.text);\n            }\n            return item;\n        });\n    }\n\n    // generates the menu object from the static menus and the user forms\n    getMenuObject() {\n        let collector = this.Collector;\n        let menus = A(this.translate(this.staticMenu).concat(this.getOwnForms()));\n        let active = this.active_menu;\n        menus = menus.map((item) => {\n            let current = item.link[0].split('.')[0];\n            if (current === 'site_safety') {\n                current = item.link.length === 2 ? item.link[1] : item.link[0].split('.')[1];\n            }\n            if (current === 'forms') {\n                current = item.link[1];\n            }\n            item.active = active === current;\n            item.width = Math.floor(\n                this.getTextWidth(\n                    item.translated,\n                    config.brand === 'otta' ? '16px OttaRaisonne' : '16px Open sans',\n                ),\n            );\n            return item;\n        });\n        let ret = collector.needsOfArray(menus.map((item) => Object.assign({}, item)));\n\n        return ret;\n    }\n\n    // returns the active menu based on the current route\n    get active_menu() {\n        let custom, split, toppath;\n        if (!this.path) {\n            return '';\n        }\n        toppath = this.path[0];\n        if (location.href.includes('custom')) {\n            custom = location.href.split('/').filter((item) => {\n                return item.includes('custom');\n            });\n            return custom[0];\n        }\n        if (toppath === 'workday') {\n            return 'worktimes';\n        }\n        if (toppath === 'site_safety') {\n            return this.path[1];\n        }\n        if (toppath === 'forms') {\n            split = location.href.split('/');\n            return split[split.indexOf('forms') + 1];\n        } else {\n            return toppath;\n        }\n    }\n\n    // Get the width of a text in a specific font\n    getTextWidth(text, font) {\n        // Create a temporary element\n        const canvas = document.createElement('canvas');\n        const context = canvas.getContext('2d');\n\n        // Set the font style to match the target element\n        context.font = font;\n\n        // Measure the width of the text\n        const metrics = context.measureText(text);\n        return metrics.width;\n    }\n\n    // fetches the customer own forms\n    getOwnForms(asAddingLinks) {\n        let ret = [];\n        let forms = this.Collector.forms();\n        // map staticMenu to mappedMenu so it can be used in includes\n        const mappedMenu = this.staticMenu.map((item) => (item.link?.[0] ? item.link[0] : item.id));\n\n        Object.keys(forms).forEach((key) => {\n            let item = forms[key];\n            let name = this.parseMeasurementName(key, item);\n\n            if (item.privileges && item.privileges.access !== true) {\n                return; // Skip rest of the loop if access is not true.\n            }\n\n            // Skip if item is already included based on staticMenu\n            if (mappedMenu.includes(pluralize(key)) || mappedMenu.includes(key)) {\n                return;\n            }\n\n            if (name) {\n                let short_key = key.substring(12).toLowerCase();\n\n                let menuItem = {\n                    needs: [`${key}@add`],\n                    text: name,\n                    translated: name,\n                    icon: 'move move-Length',\n                    id: key,\n                };\n\n                if (asAddingLinks) {\n                    menuItem.link = ['site_safety.measurement.add', 'add', short_key];\n                } else {\n                    menuItem.link = ['site_safety.measurement.graphs', short_key];\n                    menuItem.submenus = [\n                        { text: 'own_measurement.graphs', link: 'site_safety.measurement.graphs' },\n                        { text: 'own_measurement.data', link: 'site_safety.measurement.data' },\n                        {\n                            text: 'own_measurement.notices',\n                            link: 'site_safety.measurement.notices',\n                        },\n                    ];\n                }\n\n                ret.push(menuItem);\n            } else if (item.name) {\n                let menuItem = {\n                    text: item.name.toLowerCase(),\n                    translated: item.name,\n                    icon: 'move move-CopyRow',\n                    id: key,\n                };\n                if (asAddingLinks) {\n                    menuItem.link = ['forms.form-add', key];\n                    menuItem.needs = [`${key}@add`]; // needs should be only for adding links\n                } else {\n                    menuItem.link = ['forms.form-report', key];\n                }\n\n                ret.push(menuItem);\n            }\n        });\n        return ret;\n    }\n\n    parseMeasurementName(key, item) {\n        if (key.substring(0, 11) !== 'measurement') {\n            return;\n        }\n        let name = key.substring(12).toLowerCase();\n        if (item.name != null) {\n            name = item.name;\n        }\n        return name;\n    }\n}\n","/* eslint-disable no-irregular-whitespace */\nimport Service from '@ember/service';\nimport config from '../config/environment';\n\nexport default class MetaService extends Service {\n    updateDescription(content) {\n        // When calling from translateMetaTags, content is passed as a parameter\n        // If content is not passed, then we are calling from application route and content is set empty.\n        if (!content) {\n            content = '';\n        }\n        let metaDescription = document.querySelector('meta[name=\"description\"]');\n        if (metaDescription) {\n            metaDescription.setAttribute('content', content);\n        }\n    }\n\n    updateTitle(title) {\n        // When calling from translateMetaTags, title is passed as a parameter\n        // If title is not passed, then we are calling from application route\n        if (title) {\n            document.querySelector('title').textContent = title;\n            return;\n        }\n        // Change Page title according the brand\n        if (config.brand === 'default') {\n            title = 'Movenium';\n        } else if (config.brand === 'otta') {\n            title = 'Otta';\n        }\n        document.querySelector('title').textContent = title;\n    }\n\n    translateMetaTags() {\n        // Get browser language\n        let browser = window.navigator.userLanguage || window.navigator.language;\n        let language = browser.substring(0, 2).toLowerCase();\n\n        // If language is not Finnish, then use English as default\n        if (language !== 'fi') {\n            if (config.brand === 'default') {\n                this.updateTitle('Log in to Movenium | Log in');\n                this.updateDescription(\n                    'Log in to the Movenium Site Management System with your credentials or via Visma Connect.',\n                );\n            } else if (config.brand === 'otta') {\n                this.updateTitle('Log in to Otta | Log in');\n                this.updateDescription(\n                    'Log in to the Otta time tracking system with your credentials or via Visma Connect.',\n                );\n            }\n        }\n    }\n}\n","define(\"tt4/services/metrics\", [\"exports\", \"ember-metrics/services/metrics\"], function (_exports, _metrics) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _metrics.default;\n    }\n  });\n});\n","import { computed } from '@ember/object';\nimport Service from '@ember/service';\nimport ENV from '../config/environment';\n\nfunction computedFromConfig(prop) {\n  return computed(function(){\n    return ENV['ember-modal-dialog'] && ENV['ember-modal-dialog'][prop];\n  });\n}\n\nexport default Service.extend({\n  hasEmberTether: computedFromConfig('hasEmberTether'),\n  hasLiquidWormhole: computedFromConfig('hasLiquidWormhole'),\n  hasLiquidTether: computedFromConfig('hasLiquidTether'),\n  destinationElementId: null, // injected by initializer\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/modal-scroller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ModalScrollerService;\n\nimport Scroller from 'tt4/services/scroller';\n\nimport $ from 'jquery';\n\nModalScrollerService = Scroller.extend({\n    scrollVertical: function () {\n        this.notifyPropertyChange('scrollVerticalCalled');\n        return this._super(...Array.from(arguments));\n    },\n    scrollable: Em.computed('scrollVerticalCalled', function () {\n        return $('.record-comp-content');\n    }),\n});\n\nexport default ModalScrollerService;\n","import Service from '@ember/service';\nimport DS from 'ember-data';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\nimport { getOwner } from '@ember/application';\nimport { assert } from '@ember/debug';\nimport EmberError from '@ember/error';\nimport { Promise as EmberPromise } from 'rsvp';\n\nimport CollectorModel from 'tt4/models/collector';\nimport CollectorValidationMixin from 'tt4/mixins/collector-validation';\n\n//importing the old collector class for now because of legacy support (need to replace everywhere in tt4 otherwise)\n//should move all the functionality from it into this service, but it requires a lot of work in tt4\nimport Collector from 'tt4/classes/collector';\n// import Promise from 'rsvp';\n\nexport default Service.extend({\n    store: service(),\n    capi: service(),\n    forms: service(),\n    collector: service('collector-service'),\n\n    createEmberModels() {\n        //does capi request to get forms and then call createModels to create models\n        return new EmberPromise(async (resolve, reject) => {\n            try {\n                const forms = await get(this, 'capi').request('/forms');\n                this.createModels(forms);\n                resolve();\n            } catch (e) {\n                localStorage.removeItem('ember_simple_auth-session');\n                location.reload();\n                reject(e);\n            }\n        });\n    },\n\n    createModels(data) {\n        assert('Data must have a forms object: data.forms', data.forms);\n\n        //need to set some stuff in collector class because tt4 depends on them,\n        //should move collector class functionality into this service and make tt4 use this instead\n        set(Collector, 'forms', Collector.reparse_dropdown_options(data.forms));\n        if (data.updater) {\n            set(Collector, 'products', data.updater.products);\n            set(Collector, 'modules', data.updater.modules);\n        }\n        set(Collector, 'tt3flag', data.tt3flag);\n\n        const relationFields = ['database', 'databasearray', 'timerlink', \"work_permit_attachment\"];\n        const asyncRelations = [\n            'materiallog.type',\n            'multitask.taskname',\n            'user.employer',\n            'urakkalog.type',\n            'customlog.type',\n            'worktask.project',\n            'holiday.user',\n            'user.worktimegroup',\n            'ccbuttonexecution.ccbutton',\n            'user.superior',\n        ];\n        const attributeNamesWithoutInverse = ['parent', 'superior', 'contact_user', 'workpermit_owner'];\n\n        let allAttributes = {};\n        let relationObjects = {};\n\n        const forms = data.forms;\n\n        //iterate every form and make it into an ember model\n        // forms is json object like\n        for (let form in forms) {\n            //form name must be \"classified\"\n            //because ember model names are like that\n            //e.g. wage_periods => WagePeriods\n            let formName = form.classify();\n            //create new object for the attributes\n            let modelAttributes = {};\n\n            //get form objects\n            let formObjects = forms[form].objects;\n            //iterate every object\n            for (let attributeName in formObjects) {\n                let type = formObjects[attributeName].type;\n                let attr = null;\n                //check if attribute has a type that indicates a relation to another model\n                if (relationFields.includes(type) && formObjects[attributeName].options) {\n                    //the other model that this relation is related to\n                    let relation = formObjects[attributeName].options.form;\n\n                    //if array does not exist, create empty array so that push method works\n                    if (typeof relationObjects[relation] === 'undefined') {\n                        relationObjects[relation] = [];\n                    }\n                    //put relation to helper array\n                    relationObjects[relation].push = formName;\n\n                    // make sure async is always boolean ..\n                    const async =\n                        asyncRelations.includes(formName.toLowerCase() + '.' + attributeName) ||\n                        (formObjects[attributeName].async ? true : false);\n\n                    //add belongs-to relation to attibute\n                    if (type === 'databasearray' || type === 'work_permit_attachment') attr = DS.hasMany(relation, { async: true });\n                    else if (attributeNamesWithoutInverse.includes(attributeName))\n                        attr = DS.belongsTo(relation, { inverse: null, async: async });\n                    else attr = DS.belongsTo(relation, { async: async });\n                } else {\n                    //otherwise just create a normal attribute\n                    attr = DS.attr();\n                }\n                //put the attribute into the modelAttributes object\n                modelAttributes[attributeName] = attr;\n            }\n            //put model attributes object into the allattributes object\n            allAttributes[formName] = modelAttributes;\n        }\n\n        //add workday models to allattributes\n        allAttributes = this.createWorkdayModels(allAttributes, forms);\n\n        //iterate over relations\n        for (let relation in relationObjects) {\n            let formName = relation.classify();\n            //create a dummy model if not already found (has only name field and relations)\n            if (!allAttributes[formName]) {\n                //create only name field for empty model\n                let attributes = {};\n                attributes.name = DS.attr();\n                allAttributes[formName] = attributes;\n            }\n        }\n\n        //iterate over all attribute objects and create Ember Data Models from them\n        for (let object in allAttributes) {\n            let model = 'model:' + object;\n\n            let modelAttributes = allAttributes[object];\n            try {\n                getOwner(get(this, 'store')).register(\n                    model,\n                    CollectorModel.extend(CollectorValidationMixin, modelAttributes),\n                );\n            } catch (e) {\n                if (e.message && e.message.includes('Cannot re-register: ')) continue;\n\n                let error = e.message || e;\n                throw new EmberError(error);\n            }\n        }\n\n        // ember-movenium addon\n        // this needs to be redone always when models are recreated ... initapp also sets this.forms.forms but this is the only place where this\n        // set should be needed to be done\n        this.forms.forms = data.forms;\n    },\n\n    createWorkdayModels(allAttributes, forms) {\n        allAttributes['WorkdayDay'] = {\n            date: DS.attr('string'),\n            minutes: DS.attr('number'),\n            own: DS.attr('boolean'),\n            desc: DS.attr('string'),\n            country: DS.attr('string'),\n            absence_minutes: DS.attr('number'),\n        };\n\n        allAttributes['WorkdayWeek'] = {\n            day: DS.attr('string'),\n            starttime: DS.attr('string'),\n            endtime: DS.attr('string'),\n            minutes: DS.attr('number'),\n            own: DS.attr('boolean'),\n            overtimerule: DS.belongsTo('WorkdayOvertimeRule'),\n            max_minutes: DS.attr('number'),\n            absence_minutes: DS.attr('number'),\n        };\n\n        allAttributes['WorkdayOvertimeRule'] = {\n            name: DS.attr('string'),\n            rules: DS.attr('string'),\n            workdayWeeks: DS.hasMany('WorkdayWeek'),\n        };\n\n        if (forms.worktimegroup) {\n            (allAttributes['WorkdayDay'].worktimegroup = DS.belongsTo('worktimegroup')),\n                (allAttributes['WorkdayWeek'].worktimegroup = DS.belongsTo('worktimegroup'));\n        }\n\n        if (this.collector.testNeedsOne('products.midweek_holiday_pay')) {\n            allAttributes['WorkdayDay'].midweek_holiday_pay = DS.attr('boolean');\n            allAttributes['WorkdayDay'].midweek_holiday_length = DS.attr('number');\n        }\n\n        return allAttributes;\n    },\n});\n","import Ember from 'ember';\nimport MomentService from 'ember-moment/services/moment';\nimport config from '../config/environment';\n\nconst { get } = Ember;\n\nexport default MomentService.extend({\n  defaultFormat: get(config, 'moment.outputFormat')\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/my-sites.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MySitesService;\n\nimport Ember from 'ember';\n\nimport { getImageFromUrl, resizeImage } from 'tt4/utils/file-util';\n\nMySitesService = Ember.Service.extend({\n    localStorageWrapper: Em.inject.service(),\n    google: Em.inject.service(),\n    session: Em.inject.service(),\n    store: Em.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    ttapi: Ember.inject.service(),\n    saveToLocalStorage: function (mySitesArray) {\n        return this.get('localStorageWrapper').setItemsWithBackend('mySites', mySitesArray);\n    },\n    loadFromLocalStorage: function () {\n        return this.get('localStorageWrapper').getItem('mySites');\n    },\n    loadFromLocalStorageWithBackend: function () {\n        return this.get('localStorageWrapper').getItemWithBackend('mySites');\n    },\n    hasMySites: function () {\n        return this.loadFromLocalStorage().length > 0;\n    },\n    /*\n  project: project record\n  item: if given item is modified\n  */\n    getMySiteObject: function (project, item) {\n        var company, image, partnerid, projectimage;\n        projectimage = project.get('image');\n        // show projects image or if not set get url for google streetview\n        if (projectimage != null && projectimage.length > 0) {\n            image = projectimage[0].s3url || projectimage[0].url;\n        } else if (project.get('image.url')) {\n            image = project.get('image.url');\n        } else if (project.get('location_map')) {\n            // save this image to db so we don't have to call streetview-api everytime\n            image = this.get('google').streetViewUrl(JSON.parse(project.get('location_map')));\n            new Ember.RSVP.Promise((resolve) => {\n                return getImageFromUrl(image).then((file) => {\n                    var file_data;\n                    file_data = {};\n                    file_data.name = 'file';\n                    return resizeImage(file, 600, 300, 60).then((resized) => {\n                        file_data.file = resized;\n                        return resizeImage(resized, 200, 100, 60).then((resized) => {\n                            file_data.preview = resized;\n                            return resolve(file_data);\n                        });\n                    });\n                });\n            })\n                .then((file) => {\n                    return this.get('ttapi').request('/save_project_image', {\n                        type: 'POST',\n                        dataType: 'text',\n                        data: {\n                            projectid: project.get('id'),\n                            image: file,\n                        },\n                    });\n                })\n                .catch((err) => {\n                    return console.log(err);\n                });\n        } else {\n            image = null;\n        }\n        if (!item) {\n            item = {\n                id: project.get('id'),\n            };\n        }\n        partnerid = this.get('session.currentUser.services.partnerid');\n        company = this.get('session.currentUser.company_info.company_name');\n        Em.assert(partnerid, 'currentUser.services.partnerid was empty');\n        Em.set(item, 'name', project.get('name'));\n        Em.set(item, 'number', project.get('number'));\n        Em.set(item, 'image', image);\n        Em.set(item, 'partnerid', partnerid);\n        Em.set(item, 'company', company);\n        Em.set(item, 'used', moment().format('YYYY-MM-DD HH:mm:ss'));\n        return item;\n    },\n    addSite: function (projectid, setToDefault) {\n        return this.get('store')\n            .findRecord('project', projectid)\n            .then((record) => {\n                this.addSiteObject(this.getMySiteObject(record));\n                if (setToDefault) {\n                    return this.setCurrentSite(record);\n                }\n            });\n    },\n    addSiteObject: function (object) {\n        var mySites;\n        mySites = this.loadFromLocalStorage();\n        if (mySites.findBy('id', object.id)) {\n            return;\n        }\n        mySites.push(object);\n        return this.saveToLocalStorage(mySites);\n    },\n    // projects can be added with only projectid.. all the other data is loaded when mysites is loading\n    addSiteWithJustId: function (projectid) {\n        var mySites;\n        mySites = this.loadFromLocalStorage();\n        if (mySites.findBy('id', projectid)) {\n            return;\n        }\n        mySites.push({\n            id: '' + projectid,\n        });\n        return this.saveToLocalStorage(mySites);\n    },\n    setCurrentSite: function (siteRecord) {\n        this.get('localStorageWrapper').setUserSetting(\n            'currentMySite',\n            parseInt(siteRecord.get('id'), 10),\n        );\n        return this.set('session.currentUser.currentMySite', siteRecord);\n    },\n    removeAllSites: function () {\n        return this.get('Collector').ttapi({\n            method: 'post',\n            url: 'empty_mysites',\n        });\n    },\n});\n\nexport default MySitesService;\n","// noinspection TypeScriptValidateTypes\nimport Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { isArray } from '@ember/array';\n\nimport FormsService from 'tt4/injections/services/forms';\nimport { decamelize } from '@ember/string';\n\ninterface ICurrentUser {\n    [key: string]: string;\n}\n\nexport default class NeedsService extends Service {\n    @service private session: any;\n    @service private forms: FormsService;\n\n    public test(needs: string | string[]): boolean {\n        if (!needs) return true;\n        if (!isArray(needs)) needs = [needs];\n\n        for (let need of needs) {\n            let inverse = false;\n            if (need.substring(0, 1) === '!') {\n                inverse = true;\n                need = need.substring(1);\n            }\n            const ok = inverse ? !this.testOne(need) : this.testOne(need);\n            if (!ok) return false;\n        }\n\n        return true;\n    }\n\n    public testOne(need: string): boolean {\n        if (need.substring(0, 9) === 'userlevel') return this.testUserlevel(need.split('=')[1]);\n        if (need.includes('@')) return this.testFormPrivilege(need);\n        if (need.includes('.')) return this.testFieldExistance(need);\n\n        return false;\n    }\n\n    private testUserlevel(userlevels: string): boolean {\n        const splitUserlevels = userlevels.split(',');\n\n        return splitUserlevels.includes(\n            (this.session.currentUser as ICurrentUser).userlevel.toString(),\n        );\n    }\n\n    private testFormPrivilege(need: string): boolean {\n        const split = need.split('@');\n        const form = decamelize(split[0]);\n        const privilege = split[1];\n\n        if (!this.forms.formExists(form)) return false;\n\n        if (privilege === 'errors') return this.forms.forms[form].errors ? true : false;\n        if (!this.forms.forms[form].privileges) return false;\n\n        return !!this.forms.forms[form].privileges![privilege];\n    }\n\n    private testFieldExistance(need: string): boolean {\n        const split = need.split('.');\n        return this.forms.fieldExists(split[0], split[1]);\n    }\n}\n","import Service, { inject as service } from '@ember/service';\nimport { isArray } from '@ember/array';\n\nexport default Service.extend({\n    collector: service('collector-service'),\n    test(need) {\n        if (!isArray(need)) {\n            need = [need];\n        }\n        return this.collector.testNeeds(need);\n    },\n});\n","define(\"tt4/services/notifications\", [\"exports\", \"ember-cli-notifications/services/notifications\"], function (_exports, _notifications) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _notifications.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/online-checker.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OnlineChecker;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nOnlineChecker = Ember.Service.extend({\n    is_online: true,\n    check: function () {\n        var self, url;\n        //checking connection..\n        url = collector.api_url() + '/status';\n        self = this;\n        return $.get(url, function (data) {\n            return self.set('is_online', true);\n        }).fail(function (err) {\n            return self.set('is_online', false);\n        });\n    },\n});\n\nexport default OnlineChecker;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/own-cordova-service.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OwnCordovaService;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\n//import cordova from 'ember-cli-cordova/services/cordova'\nOwnCordovaService = Ember.Service.extend({\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    moment: Ember.inject.service(),\n    ajax: Ember.inject.service(),\n    hasBeenCalled: false,\n    setup: function () {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            if (window.cordova) {\n                if (this.get('hasBeenCalled')) {\n                    resolve();\n                    return;\n                }\n                this.set('hasBeenCalled', true);\n                return document.addEventListener(\n                    'deviceready',\n                    () => {\n                        //                    cordova.plugins.Keyboard.disableScroll(true);\n                        //                    cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);\n\n                        //                    window.addEventListener('native.keyboardshow', keyboardShowHandler);\n                        //                    window.addEventListener('native.keyboardhide', keyboardHideHandler);\n                        StatusBar.backgroundColorByHexString(config.statusBarColor);\n                        StatusBar.overlaysWebView(false);\n                        StatusBar.styleLightContent();\n                        StatusBar.show();\n                        this.checkAppVersion();\n                        this.createFolder('Movenium');\n                        window.open = cordova.InAppBrowser.open;\n\n                        // Catch links that are supposed to open in system browser\n                        // and explicitly open them in the system browser using JS\n                        $ = jQuery;\n                        $(document).on('click', 'a[target=_system]', function (event) {\n                            event.preventDefault();\n                            return window.open($(this).attr('href'), '_system');\n                        });\n\n                        return resolve();\n                    },\n                    false,\n                );\n            } else {\n                return resolve();\n            }\n        });\n    },\n    createFolder: function (name) {\n        return window.requestFileSystem(\n            LocalFileSystem.PERSISTENT,\n            1,\n            (fileSys) => {\n                return fileSys.root.getDirectory(\n                    name,\n                    {\n                        create: true,\n                        exclusive: false,\n                    },\n                    (directory) => {\n                        return this.set('folder', directory);\n                    },\n                    (e) => {\n                        console.log(e);\n                        return this.get('dialogs').alert(\n                            this.get('intl').t('cordova.error.folder_create_failed'),\n                        );\n                    },\n                );\n            },\n            (e) => {\n                console.log(e);\n                return this.get('dialogs').alert(\n                    this.get('intl').t('cordova.error.folder_create_failed'),\n                );\n            },\n        );\n    },\n    // Takes binary data and a name\n    saveFile: function (data, name, type) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var appDir;\n            appDir = this.get('folder');\n            name = (name + ' ' + moment().format('YYYYMMDDhmmss') + '.' + type).replace(\n                new RegExp(' ', 'gi'),\n                '_',\n            );\n            return appDir.getFile(\n                name,\n                {\n                    create: true,\n                    exclusive: false,\n                },\n                (fileEntry) => {\n                    return fileEntry.createWriter(\n                        (writer) => {\n                            return this.fileWrite(writer, data).then(function (retWriter) {\n                                return resolve(fileEntry.toURL());\n                            });\n                        },\n                        (e) => {\n                            reject(e);\n                            this.get('dialogs').alert(\n                                this.get('intl').t('cordova.error.file_create_failed'),\n                            );\n                            return console.log(e);\n                        },\n                    );\n                },\n                (e) => {\n                    reject(e);\n                    this.get('dialogs').alert(\n                        this.get('intl').t('cordova.error.file_create_failed'),\n                    );\n                    return console.log(e);\n                },\n            );\n        });\n    },\n    fileWrite: function (writer, data) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            writer.onwriteend = function (evt) {\n                if (writer.length === 0) {\n                    writer.write(data);\n                } else {\n                    resolve(writer);\n                }\n                return writer;\n            };\n            writer.onerror = (e) => {\n                this.get('dialogs').alert(this.get('intl').t('cordova.error.file_create_failed'));\n                return reject(e);\n            };\n            return writer.truncate(0);\n        });\n    },\n    openFile: function (url, mime) {\n        var self;\n        self = this;\n        return cordova.plugins.fileOpener2.open(url, mime, {\n            error: (e) => {\n                self.get('dialogs').alert(self.get('intl').t('cordova.error.file_open_failed'));\n                return console.log(e);\n            },\n            success: () => {\n                return console.log('opening file url');\n            },\n        });\n    },\n    checkAppVersion: function () {\n        if (device.platform === 'Android') {\n            return cordova.getAppVersion.getVersionNumber().then((version) => {\n                return this.get('ajax')\n                    .request(config.APP.ADMINTOOLURL + 'app_version', {\n                        'Content-Type': 'application/json',\n                    })\n                    .then((data) => {\n                        var conf, intl;\n                        if (data && data[0] && data[0].version && data[0].version > version) {\n                            intl = this.get('intl');\n                            conf = config.mobile_links.Android;\n                            return this.get('dialogs').alert(\n                                '<h4>' +\n                                    intl.t('cordova.old_version_text') +\n                                    '</h4><br><a href=\"https://play.google.com/store/apps/details?id=fi.movenium.app\">' +\n                                    intl.t('cordova.download_app') +\n                                    '<br><img class=\"app-icon app-icon-popup\" alt=' +\n                                    conf.img_alt +\n                                    ' src=' +\n                                    conf.img +\n                                    ' ></a>',\n                            );\n                        }\n                    });\n            });\n        }\n    },\n});\n\nexport default OwnCordovaService;\n","define(\"tt4/services/power-calendar\", [\"exports\", \"ember-power-calendar/services/power-calendar\"], function (_exports, _powerCalendar) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerCalendar.default;\n    }\n  });\n});\n","import Service, { inject as service } from '@ember/service';\n\nexport default Service.extend({\n    admintool: service(),\n    flags: service(),\n\n    async getMessages(data) {\n        const messages = await this.admintool.ajax({\n            url: 'promoMessages',\n            method: 'get',\n            data: data,\n        });\n\n        messages.data = messages.data.filter((message) => {\n            return this.testFlags(message.flags);\n        });\n        messages.count = messages.data.length;\n\n        return messages;\n    },\n\n    //check that user has all the same flags as the message\n    testFlags(msgFlags) {\n        if (!msgFlags) return true;\n        return msgFlags.split(',').every((flag) => {\n            flag = flag.replace(/\\s/g, ''); // remove all whitespace\n            const negation = flag.substring(0, 1) == '!';\n            if (negation) flag = flag.substring(1);\n            return negation ? !this.flags.test(flag) : this.flags.test(flag);\n        });\n    },\n});\n","import Service, { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\n/*eslint-disable no-console*/\n/*global FirebasePlugin*/\n\nexport default Service.extend({\n    ttapi: service(),\n    router: service(),\n    session: service(),\n\n    permission: false,\n\n    setupPermission() {\n        if (!window.cordova || !FirebasePlugin) return;\n\n        FirebasePlugin.hasPermission((permission) => {\n            if (permission) {\n                this.permission = true;\n            } else {\n                FirebasePlugin.grantPermission((permission) => {\n                    this.permission = permission;\n                    // Try to register immediately after obtaining permission\n                    // May fail if the user has not yet logged in\n                    if (permission) {\n                        this.register();\n                    }\n                });\n            }\n        });\n    },\n\n    register() {\n        if (!window.cordova) return;\n        if (!FirebasePlugin) return;\n\n        get(this, 'ttapi').request('/user', {\n            method: 'post',\n            data: {\n                lang: moment.locale(),\n            },\n        });\n\n        FirebasePlugin.onTokenRefresh(\n            (token) => {\n                let currentAcceesToken = get(this, 'session.session.authenticated.access_token');\n                if (!currentAcceesToken) return; // Not logged in\n\n                get(this, 'ttapi').request('/saveFCMid', {\n                    method: 'post',\n                    data: {\n                        id: token,\n                    },\n                });\n            },\n            (error) => {\n                console.error(error);\n            },\n        );\n\n        //register the messageReceived listener\n        FirebasePlugin.onMessageReceived(\n            (notification) => {\n                //If the notification is tapped and it has redirection info, we need to redirect\n                if (notification.tap && notification.redirectRoute) {\n                    let route = notification.redirectRoute;\n                    let params = notification.redirectParams;\n                    if (params) {\n                        get(this, 'router').transitionTo(route, {\n                            queryParams: JSON.parse(params),\n                        });\n                    } else {\n                        get(this, 'router').transitionTo(route);\n                    }\n                }\n            },\n            (error) => {\n                console.error(error);\n            },\n        );\n    },\n\n    unregister() {\n        return new Promise((resolve) => {\n            if (!window.cordova) resolve();\n            if (!FirebasePlugin) resolve();\n\n            FirebasePlugin.getToken(\n                (token) => {\n                    console.log('Sending token to ttapi for unregistering');\n                    get(this, 'ttapi').request('/removeFCMid', {\n                        method: 'post',\n                        data: {\n                            id: token,\n                        },\n                    });\n                    FirebasePlugin.unregister();\n                    localStorage.removeItem('tt4-push-token');\n                    resolve();\n                },\n                (error) => {\n                    console.error(error);\n                    resolve();\n                },\n            );\n        });\n    },\n});\n","import Em from 'ember';\nimport { get } from '@ember/object';\nconst DURATION = 750;\n\nexport default Em.Service.extend({\n    animateElement(element, from, to) {\n        return new Promise((resolve) => {\n            const easeOutQuad = (x, t, b, c, d) => {\n                return -c * (t /= d) * (t - 2) + b;\n            };\n\n            const start = new Date().getTime();\n\n            // animation\n            (function animate() {\n                var now = new Date().getTime() - start;\n                var ease = easeOutQuad(0, now, 0, 1, DURATION);\n                element.scrollTop = from + (to - from) * ease;\n                if (now < DURATION) {\n                    setTimeout(animate, 1000 / 60);\n                } else {\n                    resolve();\n                }\n            })();\n        });\n    },\n\n    getScrollableTop() {\n        // because the target elements top is calculated relative to the document,\n        // and if the scrollable container is not the document,\n        // we need to normalize the target elements top based on the top and current scrolled position of the scrollable\n\n        if (document.querySelector('html').offsetTop) {\n            return document.querySelector('html').offsetTop - get('scrollable', this).offsetTop;\n        } else {\n            return 0;\n        }\n    },\n\n    getVerticalCoord(target, offset = 0) {\n        return this.getScrollableTop() + target.offsetTop + offset;\n    },\n\n    scrollVertical(target, opts = {}) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            this.animateElement(\n                document.querySelector('html'),\n                document.querySelector('html').scrollTop,\n                this.getVerticalCoord(target, opts.offset),\n            ).then(resolve, reject);\n        });\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/servicehandler.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Service;\n\nimport Ember from 'ember';\n\nService = Ember.Service.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    /*\n  Manipulate service to have or to remove fields\n\n  Adding example:\n  {\"worktime.field\": {type: \"hours\", name: \"ownhoursfield\"}}\n\n  Removing example:\n  {\"!worktime.field\": {}}\n\n  */\n    manipulateService: function (fieldList) {\n        console.log('manipulaitn', fieldList);\n        return this.get('store')\n            .findAll('form')\n            .then(() => {\n                var keyList;\n                keyList = Object.keys(fieldList);\n                return this.traverseList(keyList, fieldList);\n            });\n    },\n    traverseList: function (keyList, fieldList) {\n        var firstKey, promise;\n        if (keyList.length < 1) {\n            return;\n        }\n        firstKey = keyList.shift();\n        promise = this._modify(firstKey, fieldList[firstKey]);\n        if (promise) {\n            return promise.then(() => {\n                return this.traverseList(keyList, fieldList);\n            });\n        } else {\n            return this.traverseList(keyList, fieldList);\n        }\n    },\n    _getKeyType: function (key) {\n        var splitted;\n        splitted = key.split('.');\n        if (splitted.length === 1) {\n            return 'form';\n        } else if (splitted.length === 2) {\n            return 'field';\n        } else if (splitted.length === 3) {\n            return 'fieldSetting';\n        }\n    },\n    _parseKey: function (key) {\n        var splitted;\n        key = this._cleanKey(key);\n        splitted = key.split('.');\n        switch (this._getKeyType(key)) {\n            case 'field':\n                return {\n                    form: splitted[0],\n                    field: splitted[1],\n                };\n            case 'fieldSetting':\n                return {\n                    form: splitted[0],\n                    field: splitted[1],\n                    setting: splitted[2].substring(1),\n                };\n        }\n    },\n    _isKeyNegation: function (key) {\n        return key.substring(0, 1) === '!';\n    },\n    _cleanKey: function (key) {\n        if (this._isKeyNegation(key)) {\n            return key.substring(1);\n        } else {\n            return key;\n        }\n    },\n    _modify: function (key, fieldobj) {\n        var isKeyOn;\n        switch (this._getKeyType(key)) {\n            case 'fieldSetting':\n                isKeyOn = this.isFieldSettingOn(this._cleanKey(key));\n                break;\n            default:\n                isKeyOn = this.get('Collector').testNeeds([this._cleanKey(key)]);\n        }\n        if (!isKeyOn && !this._isKeyNegation(key)) {\n            // needs to be turned on\n            return this._turnOn(this._cleanKey(key), fieldobj);\n        } else if (isKeyOn && this._isKeyNegation(key)) {\n            return this._turnOff(this._cleanKey(key), fieldobj);\n        }\n    },\n    _turnOn: function (key, fieldobj) {\n        var func;\n        console.log('turn on', key);\n        func = '_turnOn_' + this._getKeyType(key);\n        return this[func](key, fieldobj);\n    },\n    _turnOff: function (key, fieldobj) {\n        var func;\n        console.log('turn off', key);\n        func = '_turnOff_' + this._getKeyType(key);\n        return this[func](key, fieldobj);\n    },\n    _turnOn_field: function (key, fieldobj) {\n        var field, form, nro, parsed;\n        parsed = this._parseKey(key);\n        form = this.get('store').peekAll('form').findBy('external_type', parsed.form);\n        Ember.assert(\"Form id for form '\" + parsed.form + \"' not found\", form.get('id'));\n        nro =\n            this.get('store')\n                .peekAll('form-field')\n                .filterBy('form.id', form.get('id'))\n                .sortBy('nro')\n                .get('lastObject.nro') + 1;\n        field = this.get('store').createRecord('form-field', {\n            form: form,\n            nro: nro,\n            type: fieldobj.type,\n            external_type: parsed.field,\n            name: fieldobj.name,\n        });\n        return field.save();\n    },\n    _turnOff_field: function (key, fieldobj) {\n        var field, form, parsed;\n        parsed = this._parseKey(key);\n        form = this.get('store').peekAll('form').findBy('external_type', parsed.form);\n        Ember.assert(\"Form id for form '\" + parsed.form + \"' not found\", form.get('id'));\n        field = this.get('store')\n            .peekAll('form-field')\n            .filterBy('form.id', form.get('id'))\n            .findBy('external_type', parsed.field);\n        return field.destroyRecord();\n    },\n    _turnOn_fieldSetting: function (key, fieldobj) {\n        var field, fieldSetting, form, parsed, promise;\n        parsed = this._parseKey(key);\n        form = this.get('store').peekAll('form').findBy('external_type', parsed.form);\n        Ember.assert(\"Form id for form '\" + parsed.form + \"' not found\", form.get('id'));\n        field = this.get('store')\n            .peekAll('form-field')\n            .filterBy('form.id', form.get('id'))\n            .findBy('external_type', parsed.field);\n        Ember.assert(\"Field id for field '\" + parsed.field + \"' not found\", field.get('id'));\n        fieldSetting = this.get('store').createRecord('form-field-setting', {\n            field: field,\n            name: parsed.setting,\n            value: fieldobj,\n        });\n        promise = fieldSetting.save();\n        return promise;\n    },\n    _turnOff_fieldSetting: function (key, fieldobj) {\n        var field, fieldSetting, form, parsed;\n        parsed = this._parseKey(key);\n        form = this.get('store').peekAll('form').findBy('external_type', parsed.form);\n        Ember.assert(\"Form id for form '\" + parsed.form + \"' not found\", form.get('id'));\n        field = this.get('store')\n            .peekAll('form-field')\n            .filterBy('form.id', form.get('id'))\n            .findBy('external_type', parsed.field);\n        Ember.assert(\"Field id for field '\" + parsed.field + \"' not found\", field.get('id'));\n        fieldSetting = this.get('store')\n            .peekAll('form-field-setting')\n            .filterBy('field.id', field.get('id'))\n            .findBy('name', parsed.setting);\n        return fieldSetting.destroyRecord();\n    },\n    isFieldSettingOn: function (key) {\n        var field, fieldSetting, form, parsed;\n        parsed = this._parseKey(key);\n        form = this.get('store').peekAll('form').findBy('external_type', parsed.form);\n        if (!form.get('id')) {\n            return false;\n        }\n        field = this.get('store')\n            .peekAll('form-field')\n            .filterBy('form.id', form.get('id'))\n            .findBy('external_type', parsed.field);\n        if (!field.get('id')) {\n            return false;\n        }\n        fieldSetting = this.get('store')\n            .peekAll('form-field-setting')\n            .filterBy('field.id', field.get('id'))\n            .findBy('name', parsed.setting);\n        return fieldSetting != null;\n    },\n});\n\nexport default Service;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/session-globals.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SessionGlobalsService;\n\nimport Ember from 'ember';\n\nSessionGlobalsService = Ember.Service.extend({\n    set: function (name, value) {\n        if (window.globals == null) {\n            window.globals = {};\n        }\n        return (window.globals[name] = value);\n    },\n    get: function (name) {\n        if (window.globals == null) {\n            return null;\n        }\n        if (!window.globals[name]) {\n            return null;\n        }\n        return JSON.parse(JSON.stringify(window.globals[name]));\n    },\n});\n\nexport default SessionGlobalsService;\n","import SessionService from 'ember-simple-auth/services/session';\n\nexport default SessionService;\n","import Service from '@ember/service';\nimport { get, set } from '@ember/object';\nimport { later } from '@ember/runloop';\nimport { captureMessage } from '@sentry/browser';\nimport { inject as service } from '@ember/service';\nimport Evented from '@ember/object/evented';\n\nexport default Service.extend(Evented, {\n    session: service(),\n    router: service(),\n\n    refreshing: false,\n    refreshPromise: null,\n    expiredRecoveryStarted: false,\n\n    tokenHasExpired() {\n        return new Date().getTime() > get(this, 'session.data.authenticated.expires_at');\n    },\n\n    /**\n     * HELPER TO TEST OLD TOKENS IN TT4\n     *\n     * NOTE: the hardcoded access token is only for testing purposes and can be replaved with your own expired token when testing\n     *\n     * Usage:\n     *  1. go to /development and click \"sessionhelper to console\"\n     *  2. execute in console: `setTimeout(() => {$E.makeTokenOld();console.log(\"token is now old\")}, 3000)`\n     *  3. click tt4 so onResume action is called before token is old\n     *\n     */\n    makeTokenOld() {\n        const expiresIn = -3600;\n        set(\n            this.session,\n            'session.authenticated.access_token',\n            'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvYXBpLm1vdmVuaXVtLmNvbSIsImF1ZCI6Imh0dHBzOlwvXC9hcGkubW92ZW5pdW0uY29tIiwiZXhwIjoxNjQxMzgyNDU0LCJpYXQiOjE2NDEzODYwNTQsInVzZXJuYW1lIjoiZ2NmcmNsQG1haWwuY29tIiwidXNlcmlkIjoiMjMyNjgxIiwicGFydG5lcmlkIjoiMzA1MDYiLCJjbGllbnRfaWQiOiJlbWJlcl9hcHAiLCJ1c2VybGV2ZWwiOiI1IiwiY291bnRyeSI6ImZpIn0.MyV_VmCa2zyMZ3lVyL3z9llJLM6ysjQIb4RC-XHbdA4ze9fvwZDgLyXQSN0avZ4S0HOkPkNwrXY4MkGpMG9TUWDf0uhM2lWRWeQq3-4Du8aP7opS-nJHiNoTvZSz5i12KPyrzwY1BADUKBprEjUci8N3nuTi7aIrTKZ_pzxl58U'\n        );\n        //set(this.session, \"session.authenticated.refresh_token\", \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvYXBpLm1vdmVuaXVtLmNvbSIsImF1ZCI6Imh0dHBzOlwvXC9hcGkubW92ZW5pdW0uY29tIiwiZXhwIjoxNjQxNTM2NDE4LCJpYXQiOjE2NDE1NDAwMTgsInVzZXJuYW1lIjoiZ2NmcmNsQG1haWwuY29tIiwidXNlcmlkIjoiMjMyNjgxIiwicGFydG5lcmlkIjoiMzA1MDYiLCJjbGllbnRfaWQiOiJlbWJlcl9hcHAiLCJ0eXBlIjoicmVmcmVzaCJ9.UcRJBL7hhSu1nqGy6DJGr1aP8B-2fnZkwReHT7Z-m-OUBRaKT5B_HOi_gOvfC8Yu3ZJJ_KS85LbjqFdLZ9xyIwOfxbG-QTlKiAwf2Ezon_Y-nGjCwhpIl4u8kMExtdJqW-tAxvMsqiebXAgz4hV-sRKqrNZSfqNQJmBRL-eSMqI\")\n        set(this.session, 'session.authenticated.expires_in', expiresIn);\n        set(\n            this.session,\n            'session.authenticated.expires_at',\n            new Date(new Date().getTime() + expiresIn * 1000).getTime()\n        );\n\n        localStorage.setItem(\n            'ember_simple_auth-session',\n            JSON.stringify({\n                alldone: true,\n                authenticated: get(this.session, 'session.authenticated'),\n            })\n        );\n    },\n\n    refresh() {\n        this.refreshing = true;\n        this.refreshPromise = get(this, 'session').session.restore({\n            refresh_token: get(this, 'session.session.authenticated.refresh_token'),\n            expires_at: get(this, 'session.data.authenticated.expires_at'),\n        });\n\n        this.refreshPromise.then(() => {\n            this.refreshing = false;\n        });\n\n        return this.refreshPromise;\n    },\n\n    resumed() {\n        if (!this.tokenHasExpired()) this.trigger('resumed');\n    },\n\n    tokenWillExpireIn(minutes) {\n        return (\n            new Date().getTime() + minutes * 60000 >\n            get(this, 'session.data.authenticated.expires_at')\n        );\n    },\n    isOffline() {\n        return get(this, 'session.session.authenticated.offline');\n    },\n\n    // This method is called when ember data gets 401 from backend.\n    // Called by capi-3, application and ttapi-base adapters.\n    //\n    // why? onResume calls + simple auth timers should always make sure that token is never old when used ... BUT\n    // in production it happens quite often that the token is old for some reason and user is kicked out.\n    expiredRecovery(expiredRequest) {\n        // if recovery is already started, do nothing\n        if (this.expiredRecoveryStarted) return;\n        this.expiredRecoveryStarted = true;\n\n        // save the current route so we can go back to it after recovery\n        const currentRoute = this.router.currentRouteName;\n\n        // if refreshing is not started from somewhere else, start it now\n        if (!this.refreshing) this.refresh();\n\n        // goto to loading route so the whole route is rerendered after refresh is done\n        this.router.transitionTo('loading');\n\n        // wait for the refresh to complete and then reroute to the route where we were\n        this.refreshPromise.then(() => {\n            // eslint-disable-next-line no-console\n            console.log(\n                `expiredRecovery: failed request '${expiredRequest}' in route '${currentRoute}'`\n            );\n            captureMessage(\n                `expiredRecovery: failed request '${expiredRequest}' in route '${currentRoute}'`\n            );\n            this.router.transitionTo(currentRoute);\n        });\n\n        // wait 15 minutes before resetting the recovery system\n        // reason:\n        //  1) some old requests might resolve after the recovery is already done and recovery is reinitiated unnecessarily\n        //  2) if some problem causes infinite recovery loop .. it initiates max once every 15 minutes\n        later(() => (this.expiredRecoveryStarted = false), 15 * 60 * 1000);\n    },\n});\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\n\nexport default class SettingsService extends Service {\n    @service session;\n    @service('collector-service') Collector;\n\n    _refreshNeeded = false;\n\n    async setProducts(products) {\n        await Promise.all(this.Collector.setProducts(products));\n        await this.clearCacheAndRefreshNeeded();\n    }\n\n    async clearCacheAndRefreshNeeded() {\n        await this.Collector.ajax({\n            url: 'system/clear_memcache?partnerid=' + this.session.currentUser.partnerid,\n        });\n        this._refreshNeeded = true;\n    }\n\n    /**\n     * routes can ask is refresh needed or not by calling this method\n     */\n    refreshNeeded() {\n        return this._refreshNeeded;\n    }\n}\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { computed } from '@ember/object';\n\nexport default class SkvReport extends Service {\n  @service ttapi;\n  @service session;\n\n  @computed('session.currentUser')\n  get skvReportLink() {\n    const currentUser = this.session.currentUser;\n    if (!currentUser) {\n      return null;\n    }\n    return `${this.ttapi.host}/personalliggare?partnerid=${currentUser.partnerid}`;\n  }\n}\n","define(\"tt4/services/store\", [\"exports\", \"ember-data/store\"], function (_exports, _store) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _store.default;\n    }\n  });\n});\n","import config from 'tt4/config/environment';\nimport Service, { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport moment from 'moment';\nimport collector from 'tt4/classes/collector';\nimport getScript from 'tt4/utils/getScript';\n\nexport default class SurveysService extends Service {\n    @service session;\n    @service intl;\n    @service initapp;\n    @service flags;\n    @service router;\n\n    initializeAndRun(surveyType) {\n        // we skip showing if no flag\n        if (!this.flags.test('show-survey')) {\n            return;\n        }\n        const initapp = get(this, 'initapp');\n        if (get(initapp, 'appReady')) {\n            this.initWootric(surveyType);\n        } else {\n            initapp.on('appReady', () => {\n                this.initWootric(surveyType);\n            });\n        }\n    }\n\n    async initWootric(surveyType) {\n        if (!get(this, 'session.session.content.authenticated.scope')) {\n            if (config.environment === 'development' || get(this, 'testMode') === true) {\n                window.wootric_survey_immediately = true;\n                window.wootric_no_surveyed_cookie = true;\n            }\n            const user = get(this, 'session.currentUser');\n            const intl = get(this, 'intl');\n\n            // browser info\n            const { UAParser } = window;\n            const parser = new UAParser();\n            const bo = parser.setUA(navigator.userAgent).getResult();\n\n            // eg. 'Firefox 68.0 / Gecko 68.0 / Windows 10'\n            const browserString = `${bo.browser.name} ${bo.browser.version} / ${bo.engine.name} ${bo.engine.version} / ${bo.os.name} ${bo.os.version}`;\n\n            window.wootricSettings = {\n                email: get(user, 'email'),\n                created_at: moment(get(user, 'row_info.created')).format('X'),\n                language: get(intl, 'primaryLocale'),\n                dashboard_language: get(intl, 'primaryLocale'),\n                modal_footprint: 'compact',\n                disclaimer: {\n                    text: intl.t('wootric.disclamer.text').toString(),\n                    link: 'https://www.visma.com/privacy/customer-feedback/',\n                    link_word: intl.t('wootric.disclamer.link_word').toString(),\n                },\n                properties: {\n                    role: get(user, 'userlevel'),\n                    product: config.brand == 'otta' ? 'Otta' : 'Movenium',\n                    country: get(user, 'company_info.country')\n                        ? get(user, 'company_info.country').toUpperCase()\n                        : 'N/A',\n                    customer: get(user, 'company'),\n                    vatin: get(user, 'company_info.company_vatin'),\n                    partnerid: get(user, 'partnerid'),\n                    modules_array: collector.products.toString(),\n                    platform: typeof cordova !== 'undefined' ? device.platform : browserString, // eslint-disable-line\n                    page: this.router.currentRouteName,\n                },\n            };\n\n            if (this.WootricSurvey) {\n                this.run(surveyType);\n            } else {\n                await getScript('https://cdn.wootric.com/wootric-sdk.js');\n                this.WootricSurvey = WootricSurvey;\n                this.run(surveyType);\n            }\n        }\n    }\n\n    run(type) {\n        if (!type) return;\n        WootricSurvey.stop();\n        window.wootricSettings.account_token = 'NPS-EU-b52c0bfb';\n        window.wootricSettings.event_name = type;\n        window.wootricSettings.product_name = null;\n        WootricSurvey.run(window.wootricSettings);\n    }\n}\n","define(\"tt4/services/text-measurer\", [\"exports\", \"ember-text-measurer/services/text-measurer\"], function (_exports, _textMeasurer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _textMeasurer.default;\n    }\n  });\n});\n","import Clock from 'ember-cli-clock/services/clock';\n\nexport default Clock.extend({\n    interval: 1000,\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/tools.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ToolsService;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nToolsService = Ember.Service.extend({\n    routing: Ember.inject.service('-routing'),\n    Collector: Ember.inject.service('collector-service'),\n    localStorageWrapper: Ember.inject.service(),\n    store: Ember.inject.service(),\n    session: Ember.inject.service(),\n    admintool: Ember.inject.service(),\n    change_service: function (username, url) {\n        var c, params;\n        c = this.get('Collector');\n        params = {\n            url: 'login',\n            type: 'POST',\n            data: {\n                change_user: username,\n            },\n        };\n        if (url) {\n            url = window.location.href.split('#')[0] + url;\n        } else {\n            url = window.location.href;\n        }\n        return c.ajax(params).then((data) => {\n            return this.get('routing').transitionTo('token', [data.refresh_token], {\n                url: url,\n            });\n        });\n    },\n    initCurrentMySite: function () {\n        var ls, siteid;\n        ls = this.get('localStorageWrapper');\n        siteid = ls.getUserSetting('currentMySite')[0];\n        if (!siteid) {\n            return;\n        }\n        console.log(siteid);\n        return this.get('store')\n            .findRecord('project', siteid)\n            .then((record) => {\n                return this.set('session.currentUser.currentMySite', record);\n            });\n    },\n    login: function (params, url = null) {\n        var promise;\n        promise = this.get('admintool').ajax({\n            url: 'createToken',\n            method: 'POST',\n            data: {\n                username: params.username,\n                userid: params.userid,\n                partnerid: params.partnerid,\n            },\n            headers: {\n                Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n            },\n        });\n        return promise.then((token) => {\n            var win;\n            if (!url) {\n                url = config.APP.OWN_URL;\n            }\n            if (url.slice(-1) === '/') {\n                win = window.open(url + '#/token/' + token['token'], '_blank');\n            } else {\n                win = window.open(url + '/#/token/' + token['token'], '_blank');\n            }\n            return win.focus();\n        });\n    },\n    computerizeHumanInput: function (string, minLength = 8, maxLength = 24) {\n        var ref;\n        string = string.toLowerCase();\n        string = string.replace(/ä/g, 'a');\n        string = string.replace(/å/g, 'a');\n        string = string.replace(/ö/g, 'o');\n        string = string.replace(/ü/g, 'u');\n        string = string.replace(/[^a-z0-9]+/g, '');\n        if (string.length < minLength) {\n            string =\n                string +\n                Math.random()\n                    .toString(36)\n                    .substring(2, 2 + minLength - string.length);\n        }\n        if (string.length > maxLength) {\n            string = string.substring(0, maxLength);\n        }\n        if ((ref = string.substring(string.length - 1, 1)) === 's' || ref === 'y') {\n            string = string.substring(0, string.length - 1) + 'k';\n        }\n        return string;\n    },\n    cleanUnneededQueryParams: function (params) {\n        return Object.keys(params).forEach(function (key) {\n            if (Ember.typeOf(params[key]) === 'undefined' || key === 'page' || key === 'more') {\n                return delete params[key];\n            }\n        });\n    },\n});\n\nexport default ToolsService;\n","define(\"tt4/services/tour\", [\"exports\", \"ember-shepherd/services/tour\"], function (_exports, _tour) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _tour.default;\n    }\n  });\n});\n","import Clock from 'ember-cli-clock/services/clock';\n\nexport default Clock.extend({\n    interval: 7200000, // 2 hours should be enough\n});\n","import PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\nimport ObjectProxy from '@ember/object/proxy';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport AjaxService from 'ember-ajax/services/ajax';\nimport config from 'tt4/config/environment';\nimport { resolve } from 'rsvp';\n\n// const {inject: {service}, get, Object, ObjectProxy, PromiseProxyMixin, isPresent, A} = Ember;\n/* eslint-disable */\nexport default AjaxService.extend({\n    session: service(),\n    flags: service(),\n\n    host: computed('session.currentUser.partnerid', 'flags._client', function () {\n        if (config.environment !== 'development' && get(this, 'flags').test('ttapi_url')) {\n            return get(this, 'flags').test('ttapi_url');\n        }\n        return config.APP.TTAPI;\n    }),\n\n    headers: computed('session.session.authenticated.access_token', {\n        get() {\n            let headers = {};\n\n            let token = get(this, 'session.session.authenticated.access_token');\n            headers['Authorization'] = 'Bearer ' + token;\n\n            headers.clientv = config.APP.version;\n            headers['X-brand'] = config.brand;\n            // if (get(Ember, 'devModeOn') === true) headers['devMode'] = true;\n            return headers;\n        },\n    }),\n\n    _get(route, params) {\n        return this._request('get', route, params);\n    },\n\n    _post(route, params) {\n        return this._request('post', route, params);\n    },\n\n    _delete(route, params) {\n        return this._request('delete', route, params);\n    },\n\n    _request(method, route, params = {}) {\n        const promiseObject = ObjectProxy.extend(PromiseProxyMixin);\n\n        return promiseObject.create({\n            promise: this.request(route, { method: method, data: params }).then((data) =>\n                this._returnData(data),\n            ),\n        });\n    },\n\n    request() {\n        //skip ttapi requests if at2\n        if (config.target === 'at2') {\n            return resolve([]);\n        }\n        return this._super(...arguments);\n    },\n\n    _returnData(data) {\n        return data;\n    },\n});\n","import PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\nimport ObjectProxy from '@ember/object/proxy';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport AjaxService from 'ember-ajax/services/ajax';\nimport config from 'tt4/config/environment';\n\n// const {inject: {service}, get, Object, ObjectProxy, PromiseProxyMixin, isPresent, A} = Ember;\n\nexport default AjaxService.extend({\n    host: config.APP.TTAPI2,\n\n    session: service(),\n    headers: computed('session.session.authenticated.access_token', {\n        get() {\n            let headers = {};\n            let token = get(this, 'session.session.authenticated.access_token');\n            headers['Authorization'] = 'Bearer ' + token;\n            return headers;\n        },\n    }),\n\n    _get(route, params) {\n        return this._request('get', route, params);\n    },\n\n    _post(route, params) {\n        return this._request('post', route, params);\n    },\n\n    _delete(route, params) {\n        return this._request('delete', route, params);\n    },\n\n    _request(method, route, params = {}) {\n        const promiseObject = ObjectProxy.extend(PromiseProxyMixin);\n\n        return promiseObject.create({\n            promise: this.request(route, { method: method, data: params }).then((data) =>\n                this._returnData(data),\n            ),\n        });\n    },\n\n    _returnData(data) {\n        return data;\n    },\n});\n","define(\"tt4/services/user-agent\", [\"exports\", \"ember-useragent/services/user-agent\"], function (_exports, _userAgent) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _userAgent.default;\n    }\n  });\n});\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport { isEmpty } from '@ember/utils';\n\nexport default Service.extend({\n    collector: service('collector-service'),\n    ttapi: service(),\n    session: service(),\n    localstorage: service(),\n\n    hasSaldos: false,\n\n    async setUserSettings() {\n        this.hasSaldos = this.localstorage.getItem('saldosOn');\n        let hasSaldos = await this.checkIfUserHasSaldos();\n        this.localstorage.setItem('saldosOn', hasSaldos);\n        this.hasSaldos = hasSaldos;\n    },\n\n    checkIfUserHasSaldos() {\n        if (!this.collector.testNeedsOne('products.saldo')) return false;\n        if (!this.collector.testNeedsOne('worktimegroup')) return true;\n\n        const userWorktimegroup = get(this.session, 'currentUser.worktimegroup.id');\n        if (!userWorktimegroup) return true; //user is not in a worktimegroup so calculation is on\n\n        return this.getSaldoSettings(userWorktimegroup);\n    },\n\n    async getSaldoSettings(userWorktimegroup) {\n        const saldoSettings = await this.ttapi._get('saldo/saldoSettings');\n        if (saldoSettings.skip_worktimegroups && !isEmpty(saldoSettings.skip_worktimegroups)) {\n            //safety net\n            //if user's worktimegroup is not included in the list of worktime groups to be skipped\n            return !saldoSettings.skip_worktimegroups.split(',').includes(userWorktimegroup);\n        } else {\n            return true;\n        }\n    },\n});\n","import Service, { inject as service } from '@ember/service';\nimport { htmlSafe } from '@ember/template';\n\nexport default class VastuuGroup extends Service{\n    @service('collector-service') collector;\n    @service store;\n    @service error;\n    @service intl;\n    @service session;\n    @service ttapi;\n    @service notifications;\n\n    /**\n     * Updates reliable partner statuses and reports in batch for the given employers.\n     * @async\n     * @param {Object[]} employers - Array of employer objects to update\n     * @returns {Promise<Object>} The response data from the API\n     */\n    async updateReliablePartnerStatusesAndReports(employers) {\n        try {\n            const response = await this.ttapi.request('api/reliablepartner/updateStatusesAndReports', {\n                method: 'post',\n                data: { employers }\n            });\n\n            return response;\n        } catch (error) {\n            throw error;\n        }\n    }\n\n    /**\n     * Generates a PDF download link for the reliable partner report of a given base64 string.\n     *\n     * @async\n     * @param {string} base64String - The base64-encoded PDF data\n     * @returns {Promise<string|undefined>} Returns an HTML-safe string containing a download link for a PDF report.\n     */\n    getReliablePartnerPdfLink(base64String) {\n\n        const linkToPdf = `data:application/pdf;base64,${base64String}`;\n        const linkText = this.intl.t('vastuu_group.reliable_partner.download_pdf_report');\n\n        return htmlSafe(\n            '<div>' +\n                '<h4>&nbsp;&nbsp;&nbsp;' +\n                '<a href=' + linkToPdf + ' download=\"report.pdf\">' +\n                linkText +\n                '</a>' +\n                '</h4></div>',\n        );\n    }\n\n    /**\n     * Retrieves reliable partner status and report for single business ID.\n     *\n     * @async\n     * @param {string} businessId - The business ID to get partner status and report for\n     * @returns {Promise<Object|undefined>} The partner data object, or undefined if an error occurred\n     */\n    async getReliablePartnerStatusAndReport(businessId) {\n        try {\n            // Ensure businessId is a string\n            if (typeof businessId !== 'string') {\n                businessId = String(businessId);\n            }\n\n            const response = await this.ttapi.request('api/reliablepartner/getStatusAndReport', {\n                method: 'get',\n                data: { businessId }\n            });\n\n            return response;\n\n        } catch (error) {\n            throw error;\n        }\n    }\n\n    //make request to vastuu group api, with the customer id as a parameter\n    async request(url, data, inviteCreator = null) {\n        const vgCustomerId = await this.getCustomerId(inviteCreator);\n        if (!vgCustomerId) {\n            this.error.notify(this.intl.t('general.vastuu_group.customer_id_not_found'));\n            throw new Error('VG_CUSTOMER_ID_NOT_FOUND');\n        }\n\n        return this.collector.ccapi({\n            url: this.formatUrl(url),\n            data: { ...data, 'customer-identifier': vgCustomerId },\n        })\n\n    }\n\n    // get the vastuu group customer id\n    // if the user is not authenticated, and the invite creator is not null, get the customer id from ttapi with the invite creator as a parameter\n    // if the user is authenticated, get the customer id from the store\n    // peek if the customer id is already in the store, if not, fetch the customer id from the store\n    async getCustomerId(inviteCreator) {\n\n        if (!this.session.isAuthenticated && inviteCreator) {\n            return this.getVgCustomerId(inviteCreator);\n        }\n\n        let vgCustomerId = await this.store.peekAll('vastuugroupsetting');\n        if (!vgCustomerId.length) {\n            vgCustomerId = await this.store.findAll('vastuugroupsetting');\n        }\n\n        return vgCustomerId.length ? vgCustomerId.firstObject.customerIdentifier : null;\n    }\n\n    async getVgCustomerId(creator) {\n        return this.collector.ttapi({\n            url: 'getVgCustomerId',\n            method: 'get',\n            dataType: 'text',\n            data: {\n                creator,\n            }\n        });\n    }\n\n    async getCustomerLicenses(customerIdentifier) {\n        return this.ttapi.request('api/vastuuGroupLicenses', {\n            method: 'get',\n            data: { customerIdentifier },\n        });\n    }\n\n    formatUrl(url) {\n        // remove slash from the beginning of the url if it exists\n        return url.startsWith('/') ? url.substring(1) : url;\n    }\n}\n\n\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/weather.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WeatherService;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport $ from 'jquery';\n\nWeatherService = Ember.Service.extend({\n    store: Em.inject.service(),\n    gps: Ember.inject.service(),\n    fetchWeatherPosition: function (proj = false, date = false) {\n        if (date) {\n            this.set('date', date);\n        }\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var id;\n            if (proj) {\n                id = proj.get('id');\n                if (proj.get('location_map')) {\n                    return this.fetchWeatherByProject(proj).then((weather) => {\n                        return resolve(weather);\n                    });\n                } else {\n                    return this.get('store')\n                        .findRecord('project', id, {\n                            reload: true,\n                        })\n                        .then((project) => {\n                            var projectLocation;\n                            projectLocation = project.get('location_map');\n                            if (projectLocation) {\n                                return this.fetchWeatherByProject(project).then((weather) => {\n                                    return resolve(weather);\n                                });\n                            } else {\n                                return this.fetchByGPS().then((weather) => {\n                                    return resolve(weather);\n                                });\n                            }\n                        });\n                }\n            } else {\n                return this.fetchByGPS().then((weather) => {\n                    return resolve(weather);\n                });\n            }\n        });\n    },\n    fetchWeatherByProject: function (project, date) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var projectLocation;\n            projectLocation = JSON.parse(project.get('location_map'));\n            return this.fetchWeather(projectLocation.latitude, projectLocation.longitude, date)\n                .then(function (json) {\n                    return resolve(json);\n                })\n                .catch(function (e) {\n                    return reject(e);\n                });\n        });\n    },\n    fetchWeather: function (lat, lon, date) {\n        var url;\n        date = moment(date).format('YYYYMMDD');\n        url = config.APP.WEATHER_HISTORY_API;\n        //test-data\n        /*\n    weather = {\n        temperature: \"8\"\n        humidity: \"95\"\n        windspeed: \"3\"\n        weather: \"Clouds\"\n        dew_point: 7\n    }\n    #@set 'value', weather\n    new Ember.RSVP.Promise (resolve,reject) =>\n        console.log weather\n        resolve weather\n\n     */\n        if (date === moment().format('YYYYMMDD')) {\n            url = config.APP.WEATHER_API;\n        }\n        return $.getJSON(\n            url + '?lat=' + lat + '&lon=' + lon + '&date=' + date + '&hour=12',\n            (json) => {\n                var dew_point;\n                dew_point = json.temperature - (100 - json.humidity) / 5;\n                json.dew_point = Math.round(dew_point * 100) / 100;\n                return json;\n            },\n        );\n    },\n    fetchByGPS: function (position, date) {\n        return this.fetchWeather(position.latitude, position.longitude, date)\n            .then(function (json) {\n                return json;\n            })\n            .catch(function (e) {\n                return e;\n            });\n    },\n    calcDewPoint: function (temp, humidity) {\n        var dew_point;\n        dew_point = temp - (100 - humidity) / 5;\n        return Math.round(dew_point * 100) / 100;\n    },\n});\n\nexport default WeatherService;\n","/* eslint-disable no-unreachable */\nimport Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { computed, get, set } from '@ember/object';\n\nexport default Service.extend({\n    tour: service(),\n    intl: service(),\n    gui: service(),\n    collector: service('collector-service'),\n    localStorageWrapper: service(),\n    screenLimit: 768,\n\n    isMobile: computed(function () {\n        if (window.innerWidth >= get(this, 'screenLimit')) {\n            return false;\n        } else {\n            return true;\n        }\n    }),\n\n    plusButton: computed(function () {\n        return window.innerWidth >= this.screenLimit ? '#add-menu-desktop' : '#add-menu-button';\n    }),\n\n    async start() {\n        // 🚫 Welcome-tour is currently disabled!! 🚫\n        // Reason: The tour is currently incompatible with the new menu design.\n        // Action needed: Update the tour steps to align with the new menu structure before re-enabling.\n        return;\n        // skip this if mobile\n        const hasRequiredElements =\n            document.querySelector(this.plusButton) !== null &&\n            document.querySelector('.hamburger-link') !== null;\n        if (\n            hasRequiredElements &&\n            !get(this, 'isMobile') &&\n            !this.collector.testNeedsOne('products.mini_entry')\n        ) {\n            await this.createTourSteps();\n            this.tour.start();\n            this.localStorageWrapper.setUserSetting('tourShown', true);\n            return document.addEventListener('keydown', (e) => {\n                if (e.keyCode === 13) {\n                    return this.tour.next();\n                } else if (e.keyCode === 27) {\n                    return this.tour.cancel();\n                }\n            });\n        } else if (get(this, 'isMobile')) {\n            return set(this.gui, 'mobileWelcomeTour', true);\n        }\n    },\n\n    async createTourSteps() {\n        set(this.tour, 'defaultStepOptions', {\n            scrollTo: false,\n            showCancelLink: true,\n        });\n        let steps = [];\n        steps.push({\n            id: 'plus',\n            attachTo: { element: this.plusButton, on: 'bottom' },\n            buttons: [\n                {\n                    classes: 'shepherd-button-secondary',\n                    text: this.intl.t('tour.exit'),\n                    type: 'cancel',\n                },\n                {\n                    classes: 'shepherd-button-primary',\n                    text: this.intl.t('tour.next'),\n                    type: 'next',\n                },\n            ],\n            classes: 'shepherd-plus-button',\n            highlightClass: 'highlight',\n            scrollTo: true,\n            title: this.intl.t('tour.headers.first_time'),\n            text: this.intl.t('tour.steps.plus'),\n        });\n        if (window.innerWidth >= get(this, 'screenLimit')) {\n            steps.push({\n                id: 'left-menu',\n                attachTo: { element: '.sidebar', on: 'right' },\n                buttons: [\n                    {\n                        classes: 'shepherd-button-secondary',\n                        text: this.intl.t('tour.exit'),\n                        type: 'cancel',\n                    },\n                    {\n                        classes: 'shepherd-button-primary',\n                        text: this.intl.t('tour.back'),\n                        type: 'back',\n                    },\n                    {\n                        classes: 'shepherd-button-primary',\n                        text: this.intl.t('tour.next'),\n                        type: 'next',\n                    },\n                ],\n                classes: 'shepherd-side-menu',\n                highlightClass: 'highlight',\n                showCancelLink: true,\n                title: this.intl.t('tour.headers.first_time'),\n                text: this.intl.t('tour.steps.left_menu'),\n            });\n        }\n        steps.push({\n            id: 'hamburger',\n            attachTo: { element: '.hamburger-link span', on: 'right' },\n            buttons: [\n                {\n                    classes: 'shepherd-button-primary',\n                    text: this.intl.t('tour.exit'),\n                    type: 'cancel',\n                },\n                {\n                    classes: 'shepherd-button-secondary',\n                    text: this.intl.t('tour.back'),\n                    type: 'back',\n                },\n            ],\n            classes: 'shepherd-hamburger-menu',\n            copyStyles: false,\n            highlightClass: 'highlight',\n            showCancelLink: true,\n            title: this.intl.t('tour.headers.first_time'),\n            text: this.intl.t('tour.steps.hamburger'),\n        });\n        set(this.tour, 'modal', true);\n        return this.tour.addSteps(steps);\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/wt-service.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Service;\n\nimport Ember from 'ember';\n\nService = Ember.Service.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    params: {\n        date:\n            moment().subtract(1, 'day').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n        endtime: '(empty)',\n        user: 'self',\n        sideload: true,\n    },\n    unlessOpenWt: function (site) {\n        if (this.get('Collector').testNeedsOne('products.timetracker_clockcard')) {\n            return this.get('store')\n                .query('worktime', this.params)\n                .then((data) => {\n                    var openWt;\n                    openWt = data.get('firstObject');\n                    this.set('openWt', openWt);\n                    if (openWt) {\n                        if (site) {\n                            site = Em.Object.create(site);\n                            if (openWt.get('project.id') !== site.get('id')) {\n                                return Em.RSVP.Promise.reject();\n                            }\n                        } else {\n                            return Em.RSVP.Promise.reject();\n                        }\n                    }\n                });\n        } else {\n            return Em.RSVP.Promise.resolve();\n        }\n    },\n    showOpenWtError: function (msg) {\n        var message;\n        message =\n            msg ||\n            this.get('intl').t('mysites.open_worktime_error') +\n                ' ' +\n                this.get('openWt.project.name');\n        return this.get('dialogs').alert(message);\n    },\n});\n\nexport default Service;\n","import Adaptive from 'ember-simple-auth/session-stores/adaptive';\n\nexport default Adaptive.extend();\n","export default Ember.HTMLBars.template({\"id\":\"1IhbtaaQ\",\"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,\\\"survicate-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","import { get } from '@ember/object';\nimport moment from 'moment';\nimport collector from 'tt4/classes/collector';\n\n/**\n * Userlevels that count as \"professional\" reporting users for Survicate's\n * mandatory Visma reporting trait. Userlevel is a STRING in the session\n * ('4'/'5'), but we coerce defensively in case a number is passed.\n */\nconst PROFESSIONAL_USERLEVELS = new Set(['4', '5']);\n\n/**\n * Userlevels for which the survey must NOT be initialized at all.\n */\nconst SKIP_INIT_USERLEVELS = new Set(['7', '8']);\n\n/**\n * Map userlevel → standardized \"functional role\" (slide-29 recommended attr).\n * Userlevel is a STRING in the session; coerce defensively.\n */\nconst USER_ROLE_FUNCTIONAL = {\n    '5': 'Strategic Owner',\n    '4': 'Technical Owner',\n    '1': 'Operational User',\n    '2': 'Operational User',\n    '3': 'Operational User',\n    '6': 'Operational User',\n    '9': 'Operational User',\n};\n\n/**\n * Map userlevel → standardized \"persona\" (slide-29 recommended attr).\n */\nconst USER_ROLE_PERSONA = {\n    '4': 'External Stakeholder',\n    '7': 'External Stakeholder',\n    '8': 'External Stakeholder',\n    '9': 'External Stakeholder',\n    '1': 'Internal Employee',\n    '2': 'Internal Employee',\n    '3': 'Internal Employee',\n    '5': 'Internal Employee',\n    '6': 'Internal Employee',\n};\n\n/**\n * Standardized functional role for a userlevel. Returns undefined for\n * unrecognized/missing userlevels.\n */\nexport function userRoleFunctional(userlevel) {\n    return USER_ROLE_FUNCTIONAL[String(userlevel)];\n}\n\n/**\n * Standardized persona for a userlevel. Returns undefined for\n * unrecognized/missing userlevels.\n */\nexport function userRolePersona(userlevel) {\n    return USER_ROLE_PERSONA[String(userlevel)];\n}\n\n/**\n * Build the traits object sent to Survicate for the current user.\n *\n * Pure: derived only from `user` + `locale`. Values that depend on the brand\n * config or the browser/cordova environment (product, platform) are added by\n * the component, not here.\n */\nexport function surveyTraits(user, locale) {\n    const userlevel = get(user, 'userlevel');\n    const country = get(user, 'company_info.country');\n    const id = get(user, 'id');\n\n    const traits = {\n        email: get(user, 'email'),\n        signed_up: moment(get(user, 'row_info.created')).toISOString(),\n        language: locale,\n        role: userlevel,\n        user_role_functional: userRoleFunctional(userlevel),\n        user_role_persona: userRolePersona(userlevel),\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        mandatory_visma_reporting_user_is_professional_user:\n            PROFESSIONAL_USERLEVELS.has(String(userlevel)),\n        mandatory_visma_reporting_user_works_in_accounting_office: false,\n    };\n\n    // Standardized ISO country (slide-29). Omit entirely when absent.\n    if (country) {\n        traits.user_country = country.toUpperCase();\n    }\n\n    // Survicate respondent identifier. Internal user id (tenant-scoped), sent\n    // as a string per Survicate's user_id contract. Omit entirely when absent.\n    if (id !== undefined && id !== null) {\n        traits.user_id = String(id);\n    }\n\n    return traits;\n}\n\n/**\n * Decide whether the Survicate SDK should be initialized at all.\n */\nexport function shouldInitSurvicate({ showSurveyFlag, isAuthenticated, scope, userlevel }) {\n    return (\n        Boolean(showSurveyFlag) &&\n        Boolean(isAuthenticated) &&\n        !scope &&\n        !SKIP_INIT_USERLEVELS.has(String(userlevel))\n    );\n}\n","define(\"tt4/utils/validations\", [\"exports\", \"@movenium/ember-movenium/utils/validations\"], function (_exports, _validations) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _validations.default;\n    }\n  });\n});\n","/* eslint-disable ember/named-functions-in-promises */\n/* eslint-disable no-undef */\nexport function initializeVersionInfo(component) {\n    component.version = '';\n\n    if (typeof cordova !== 'undefined' && cordova !== null) {\n      cordova.getAppVersion.getVersionNumber().then((version) => {\n        component.version = `${component.intl.t('application.version')}: ${component.gui.version()} APP: ${version}`;\n      });\n    } else {\n      component.version = `${component.intl.t('application.version')}: ${component.gui.version()}`;\n    }\n  }\n","define(\"tt4/utils/weather\", [\"exports\", \"@movenium/ember-movenium/utils/weather\"], function (_exports, _weather) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _weather.default;\n    }\n  });\n});\n","// function to get default work permit type for a given country\nexport function getDefaultWorkPermitType(country) {\n    // if country is some eu or eea country, set work permit type to 'identification' else set it to 'residencepermit'\n    const countries = [\n        'at', // Austria\n        'be', // Belgium\n        'bg', // Bulgaria\n        'hr', // Croatia\n        'cy', // Cyprus\n        'cz', // Czech Republic\n        'dk', // Denmark\n        'ee', // Estonia\n        'fi', // Finland\n        'fr', // France\n        'de', // Germany\n        'gr', // Greece\n        'hu', // Hungary\n        'ie', // Ireland\n        'it', // Italy\n        'lv', // Latvia\n        'lt', // Lithuania\n        'lu', // Luxembourg\n        'mt', // Malta\n        'nl', // Netherlands\n        'pl', // Poland\n        'pt', // Portugal\n        'ro', // Romania\n        'sk', // Slovakia\n        'si', // Slovenia\n        'es', // Spain\n        'se', // Sweden\n        'is', // Iceland (eea country)\n        'li', // Liechtenstein (eea country)\n        'no', // Norway (eea country)\n    ];\n\n    return countries.includes(country) ? 'identification' : 'residencepermit';\n}\n","define('tt4/config/environment', [], function() {\n  var prefix = 'tt4';\ntry {\n  var metaName = prefix + '/config/environment';\n  var rawConfig = document.querySelector('meta[name=\"' + metaName + '\"]').getAttribute('content');\n  var config = JSON.parse(decodeURIComponent(rawConfig));\n\n  var exports = { 'default': config };\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n}\ncatch(err) {\n  throw new Error('Could not read config from meta tag with name \"' + metaName + '\".');\n}\n\n});\n","\n          if (!runningTests) {\n            require(\"tt4/app\")[\"default\"].create({\"defaultLocale\":\"en\",\"MAIN_TTAPI\":\"https://api.moveniumtest.com/ttapi\",\"COLLECTOR_API_URL\":\"https://at2capi-fargate.moveniumtest.com\",\"BEACONBACKENDURL\":\"https://7e4atcva26.execute-api.eu-west-1.amazonaws.com/prod\",\"ONLY_CC_URL\":\"https://cc.moveniumprod.com\",\"CC_URL\":\"https://cc.moveniumprod.com/trigger\",\"CC_TVEMP\":\"/tvemployer\",\"CC_TVREP\":\"/tvreport\",\"CC_URL_TVPER\":\"https://cc.moveniumprod.com/trigger/tvperson\",\"CC_URL_TVCARD\":\"https://cc.moveniumprod.com/trigger/tvcard\",\"CC_TVCARDIMAGE\":\"/tvcardimage\",\"CC_TVPERAPI\":\"/tvpersonapi\",\"TTAPI_HOST\":\"https://api.moveniumtest.com/ttapi\",\"TTAPI_FOLDER\":\"\",\"TTAPI\":\"https://api.moveniumtest.com/ttapi\",\"REALTTAPI\":\"https://api.moveniumtest.com/ttapi\",\"TTAPI2\":\"https://ttapi2.moveniumtest.com\",\"TT4CAPIURL\":\"https://api.moveniumtest.com\",\"ID06_CARD_URL\":\"id06cardstatus\",\"ID06_VERIFY_URL\":\"id06-verify_new\",\"WEATHER_API\":\"https://cc.moveniumprod.com/trigger/foreca\",\"WEATHER_HISTORY_API\":\"https://cc.moveniumprod.com/trigger/foreca-history\",\"CDN_URL\":\"https://cdn.moveniumprod.com\",\"GM_KEY\":\"AIzaSyAs4VICTCYaHFGnkUgd1tCGGn8OktjIFOI\",\"ADMINTOOLURL\":\"https://at2-fargate.moveniumtest.com/\",\"ENTRY_URL\":\"https://otta.moveniumtest.com/\",\"devMode\":false,\"SELFONBOARDURL\":\"https://api.moveniumtest.com/ttapi/code?code=\",\"password_recovery_callbackurl\":\"https://app.moveniumtest.com/\",\"OWN_URL\":\"https://app.moveniumtest.com/\",\"COMMANDS_URL\":\"https://5fm228o1k6.execute-api.eu-west-1.amazonaws.com/next\",\"BLOCKS_URL\":\"https://2iraovvbxk.execute-api.eu-west-1.amazonaws.com/dev\",\"GOOGLESSOURL\":null,\"VISMASSOURL\":null,\"PRODUCT_UPDATES_URL\":\"\",\"ZENDESK_KEY\":\"\",\"name\":\"tt4\",\"version\":\"1.1.56+d9d1f9d3\",\"BUILD_TIMESTAMP\":\"2026-06-11T05:17:10.747Z\"});\n          }\n        \n"]}